37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { ShaderMaterial, Texture } from "three";
|
|
|
|
export function createDebugViewMaterial(fieldTexture: Texture) {
|
|
return new ShaderMaterial({
|
|
uniforms: {
|
|
fieldTex: { value: fieldTexture },
|
|
},
|
|
vertexShader: `
|
|
// void main() {
|
|
// gl_Position = vec4(position, 1.0);
|
|
// }
|
|
varying vec2 vUv;
|
|
void main() { vUv = uv; gl_Position = vec4(position.xy, 0.0, 1.0); }
|
|
`,
|
|
fragmentShader: `
|
|
uniform sampler2D fieldTex;
|
|
varying vec2 vUv;
|
|
void main() {
|
|
// gl_FragColor = texture2D(fieldTex, vUv);
|
|
|
|
float field = texture2D(fieldTex, vUv).r;
|
|
field = pow(field * 2.0, 0.5); // optional tone mapping
|
|
gl_FragColor = vec4(vec3(field), 1.0);
|
|
}
|
|
|
|
// precision highp float;
|
|
// uniform sampler2D fieldTex;
|
|
|
|
// void main() {
|
|
// vec2 uv = gl_FragCoord.xy / vec2(textureSize(fieldTex, 0));
|
|
// float field = texture2D(fieldTex, uv).r;
|
|
// // visualize the field as grayscale
|
|
// gl_FragColor = vec4(vec3(field), 1.0);
|
|
// }
|
|
`,
|
|
});
|
|
}
|