Try to fix the ant problem
This commit is contained in:
parent
c8a07d0783
commit
81526052f2
4 changed files with 10 additions and 3 deletions
|
|
@ -47,6 +47,10 @@ export default class Renderer {
|
||||||
|
|
||||||
constructor(public canvas: HTMLCanvasElement) {
|
constructor(public canvas: HTMLCanvasElement) {
|
||||||
this.renderer = new THREE.WebGLRenderer({ canvas });
|
this.renderer = new THREE.WebGLRenderer({ canvas });
|
||||||
|
// clear alpha must be 0: UnsignedByte render targets (antsDiscreteRT) retain
|
||||||
|
// the clear value in pixels not covered by instanced draws. alpha=1 produces
|
||||||
|
// byte 255, which world.frag misinterprets as depositMatId=255.
|
||||||
|
this.renderer.setClearColor(0x000000, 0);
|
||||||
|
|
||||||
this.initResources();
|
this.initResources();
|
||||||
|
|
||||||
|
|
@ -181,6 +185,7 @@ export default class Renderer {
|
||||||
);
|
);
|
||||||
scenes.sandPhysics.material.uniforms.uFrame.value = this.frameCounter;
|
scenes.sandPhysics.material.uniforms.uFrame.value = this.frameCounter;
|
||||||
this.renderer.render(scenes.sandPhysics, scenes.sandPhysics.camera);
|
this.renderer.render(scenes.sandPhysics, scenes.sandPhysics.camera);
|
||||||
|
|
||||||
this.frameCounter++;
|
this.frameCounter++;
|
||||||
|
|
||||||
this.setViewportFromRT(this.resources.worldBlurredRenderTarget);
|
this.setViewportFromRT(this.resources.worldBlurredRenderTarget);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ const BUILTIN_MATERIALS: Material[] = [
|
||||||
name: "air",
|
name: "air",
|
||||||
behavior: BEHAVIOR_GAS,
|
behavior: BEHAVIOR_GAS,
|
||||||
density: 0,
|
density: 0,
|
||||||
color: [0, 0, 0, 0],
|
color: [0.53, 0.81, 0.92, 1.0],
|
||||||
hardness: 0,
|
hardness: 0,
|
||||||
angleOfRepose: 0,
|
angleOfRepose: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,8 @@ export default class ScreenScene extends AbstractScene {
|
||||||
constructor(renderer: Renderer) {
|
constructor(renderer: Renderer) {
|
||||||
super(renderer);
|
super(renderer);
|
||||||
|
|
||||||
|
const groundDefines = this.renderer.getCommonMaterialDefines();
|
||||||
|
|
||||||
const ground = new THREE.Mesh(
|
const ground = new THREE.Mesh(
|
||||||
new THREE.PlaneGeometry(1, 1),
|
new THREE.PlaneGeometry(1, 1),
|
||||||
new THREE.ShaderMaterial({
|
new THREE.ShaderMaterial({
|
||||||
|
|
@ -70,7 +72,7 @@ export default class ScreenScene extends AbstractScene {
|
||||||
},
|
},
|
||||||
vertexShader: vertexShaderGround,
|
vertexShader: vertexShaderGround,
|
||||||
fragmentShader: fragmentShaderGround,
|
fragmentShader: fragmentShaderGround,
|
||||||
defines: this.renderer.getCommonMaterialDefines(),
|
defines: groundDefines,
|
||||||
glslVersion: THREE.GLSL3,
|
glslVersion: THREE.GLSL3,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ void main() {
|
||||||
|
|
||||||
if (a == 0.) t = vec3(0);
|
if (a == 0.) t = vec3(0);
|
||||||
|
|
||||||
vec3 color = mix(vec3(1, 1, 1), t, a * 0.7);
|
vec3 color = mix(vec3(0.53, 0.81, 0.92), t, a * 0.7);
|
||||||
|
|
||||||
// non-air cells use material color as base, with pheromone tint
|
// non-air cells use material color as base, with pheromone tint
|
||||||
if (materialId != MAT_AIR) {
|
if (materialId != MAT_AIR) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue