From cd53eb0231fb08f7b85ffe562bf37862fe1b5a51 Mon Sep 17 00:00:00 2001 From: FMS-Cat Date: Sat, 3 Apr 2021 09:54:06 +0900 Subject: [PATCH] fix: Fix crystal issues --- src/entities/Crystal.ts | 8 +++----- src/entities/SceneCrystals.ts | 1 + src/scene.ts | 26 +++++++++++++------------- src/shaders/crystal.frag | 2 +- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/entities/Crystal.ts b/src/entities/Crystal.ts index f2230d1..4b1df0a 100644 --- a/src/entities/Crystal.ts +++ b/src/entities/Crystal.ts @@ -69,11 +69,6 @@ export class Crystal extends Entity { } } - objectValuesMap( materials, ( material ) => { - material?.addUniform( 'size', '2f', width, height ); - material?.addUniform( 'noiseOffset', '1f', noiseOffset ); - } ); - // haha auto( 'Crystal/enableDepth', ( { uninit } ) => { if ( uninit ) { @@ -103,6 +98,9 @@ export class Crystal extends Entity { .inverse! .elements ); + + material?.addUniform( 'size', '2f', width, height ); + material?.addUniform( 'noiseOffset', '1f', noiseOffset ); } ); }, name: process.env.DEV && 'Crystal/updater', diff --git a/src/entities/SceneCrystals.ts b/src/entities/SceneCrystals.ts index 9685df1..c4eaf4c 100644 --- a/src/entities/SceneCrystals.ts +++ b/src/entities/SceneCrystals.ts @@ -93,6 +93,7 @@ export class SceneCrystals extends Entity { light1.transform.lookAt( new Vector3( [ 0.0, 4.0, 1.0 ] ) ); auto( 'SceneCrystals/light/amp', ( { value } ) => { + light1.active = value > 0.0; light1.color = [ 100.0 * value, 100.0 * value, 100.0 * value ]; } ); diff --git a/src/scene.ts b/src/scene.ts index b1f59d5..4d46911 100644 --- a/src/scene.ts +++ b/src/scene.ts @@ -179,6 +179,19 @@ if ( process.env.DEV && module.hot ) { } ); } +const replacerSceneCrystals = new EntityReplacer( + () => new SceneCrystals( { scenes: [ dog.root ] } ), + 'SceneCrystals', +); +if ( process.env.DEV && module.hot ) { + module.hot.accept( './entities/SceneCrystals', () => { + replacerSceneCrystals.current.lights.map( ( light ) => arraySetDelete( lights, light ) ); + replacerSceneCrystals.replace(); + lights.push( ...replacerSceneCrystals.current.lights ); + replacerSceneCrystals.current.setDefferedCameraTarget( deferredCamera.cameraTarget ); + } ); +} + const replacerSceneDynamic = new EntityReplacer( () => new SceneDynamic( { scenes: [ dog.root ] } ), 'SceneDynamic', @@ -207,19 +220,6 @@ if ( process.env.DEV && module.hot ) { } ); } -const replacerSceneCrystals = new EntityReplacer( - () => new SceneCrystals( { scenes: [ dog.root ] } ), - 'SceneCrystals', -); -if ( process.env.DEV && module.hot ) { - module.hot.accept( './entities/SceneCrystals', () => { - replacerSceneCrystals.current.lights.map( ( light ) => arraySetDelete( lights, light ) ); - replacerSceneCrystals.replace(); - lights.push( ...replacerSceneCrystals.current.lights ); - replacerSceneCrystals.current.setDefferedCameraTarget( deferredCamera.cameraTarget ); - } ); -} - const replacerScenePsy = new EntityReplacer( () => new ScenePsy( { scenes: [ dog.root ] } ), 'ScenePsy' diff --git a/src/shaders/crystal.frag b/src/shaders/crystal.frag index 8fbf39e..7fe66b2 100644 --- a/src/shaders/crystal.frag +++ b/src/shaders/crystal.frag @@ -135,7 +135,7 @@ void main() { float shadowDepth = linearstep( cameraNearFar.x, cameraNearFar.y, - length( cameraPos - rayPos ) + length( cameraPos - modelPos.xyz ) ); fragColor = vec4( shadowDepth, shadowDepth * shadowDepth, shadowDepth, 1.0 ); #endif