diff --git a/src/Renderer.ts b/src/Renderer.ts index 725e90e..f1cf488 100644 --- a/src/Renderer.ts +++ b/src/Renderer.ts @@ -206,6 +206,11 @@ export default class Renderer { this.resources.antsPresenceRenderTarget.texture; scenes.ants.material.uniforms.uMaterialProps.value = this.materialPropsTexture; + scenes.ants.material.uniforms.uAntSpawn.value.copy( + scenes.screen.antSpawnRequest, + ); + // clear after reading + scenes.screen.antSpawnRequest.set(0, 0, 0, 0); this.renderer.render(scenes.ants, scenes.ants.camera); this.setViewportFromRT(this.resources.antsDiscreteRenderTarget); diff --git a/src/scenes/AntsComputeScene.ts b/src/scenes/AntsComputeScene.ts index 93332d8..db464af 100644 --- a/src/scenes/AntsComputeScene.ts +++ b/src/scenes/AntsComputeScene.ts @@ -24,6 +24,7 @@ export default class AntsComputeScene extends AbstractScene { tPresence: { value: null }, uMaterialProps: { value: null }, uForagerRatio: { value: 0 }, + uAntSpawn: { value: new THREE.Vector4(0, 0, 0, 0) }, }, vertexShader, fragmentShader, diff --git a/src/scenes/ScreenScene.ts b/src/scenes/ScreenScene.ts index 4254cdb..6965a04 100644 --- a/src/scenes/ScreenScene.ts +++ b/src/scenes/ScreenScene.ts @@ -21,6 +21,12 @@ export default class ScreenScene extends AbstractScene { public ants!: THREE.InstancedMesh; public readonly groundMaterial: THREE.ShaderMaterial; public readonly pointerPosition: THREE.Vector2 = new THREE.Vector2(); + public readonly antSpawnRequest: THREE.Vector4 = new THREE.Vector4( + 0, + 0, + 0, + 0, + ); public drawMode: number = -1; // zoom stored in Config.cameraZoom private isPointerDown: boolean = false;