import * as THREE from 'three'; export class SimulatorDepthMaterial extends THREE.MeshBasicMaterial { override onBeforeCompile(shader: { vertexShader: string; fragmentShader: string; uniforms: object; }) { shader.vertexShader = shader.vertexShader .replace( '#include ', [ '#include ', 'varying vec4 vViewCoordinates;', ].join('\n') ) .replace( '#include ', ['#include ', 'vViewCoordinates = mvPosition;'].join( '\n' ) ); shader.fragmentShader = shader.fragmentShader .replace( '#include ', [ '#include ', 'varying vec4 vViewCoordinates;', ].join('\n') ) .replace( '#include ', [ '#include ', 'gl_FragColor = vec4(-vViewCoordinates.z, 0.0, 0.0, 1.0);', ].join('\n') ); } }