Try to fix the ant problem

This commit is contained in:
Jared Miller 2026-03-12 20:14:54 -04:00
parent c8a07d0783
commit 81526052f2
Signed by: shmup
GPG key ID: 22B5C6D66A38B06C
4 changed files with 10 additions and 3 deletions

View file

@ -47,6 +47,10 @@ export default class Renderer {
constructor(public canvas: HTMLCanvasElement) {
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();
@ -181,6 +185,7 @@ export default class Renderer {
);
scenes.sandPhysics.material.uniforms.uFrame.value = this.frameCounter;
this.renderer.render(scenes.sandPhysics, scenes.sandPhysics.camera);
this.frameCounter++;
this.setViewportFromRT(this.resources.worldBlurredRenderTarget);

View file

@ -11,7 +11,7 @@ const BUILTIN_MATERIALS: Material[] = [
name: "air",
behavior: BEHAVIOR_GAS,
density: 0,
color: [0, 0, 0, 0],
color: [0.53, 0.81, 0.92, 1.0],
hardness: 0,
angleOfRepose: 0,
},

View file

@ -56,6 +56,8 @@ export default class ScreenScene extends AbstractScene {
constructor(renderer: Renderer) {
super(renderer);
const groundDefines = this.renderer.getCommonMaterialDefines();
const ground = new THREE.Mesh(
new THREE.PlaneGeometry(1, 1),
new THREE.ShaderMaterial({
@ -70,7 +72,7 @@ export default class ScreenScene extends AbstractScene {
},
vertexShader: vertexShaderGround,
fragmentShader: fragmentShaderGround,
defines: this.renderer.getCommonMaterialDefines(),
defines: groundDefines,
glslVersion: THREE.GLSL3,
}),
);

View file

@ -31,7 +31,7 @@ void main() {
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
if (materialId != MAT_AIR) {