Also erstens hinzufügen, ich bin mir dessen bewusst diesen Beitrag: ShaderMaterial fog parameter does not workWie Nebel Textur in Shader (Three.js R76)
Meine Frage ist ein bisschen anders ... Ich versuche, den Nebel gelten meine three.js-Szene zu einem Shader, der eine TEXTURE verwendet und ich kann es nicht herausfinden. Meine beste Vermutung, was in den frag gehen soll, war:
resultingColor = mix (texture2D (glowTexture, vUv), fogColor, fogFactor);
Dies funktioniert, wenn der texture2D Teil nur eine normale Farbe ist, aber als eine Textur es nicht rendert.
THREE.glowShader = {
vertexShader: [
`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
}
`
].join("\n"),
fragmentShader: [
"uniform sampler2D glowTexture;",
"varying vec2 vUv;",
"uniform vec3 fogColor;",
"uniform float fogNear;",
"uniform float fogFar;",
"void main() {",
`
vec4 resultingColor = texture2D(glowTexture, vUv);
`,
`#ifdef USE_FOG
#ifdef USE_LOGDEPTHBUF_EXT
float depth = gl_FragDepthEXT/gl_FragCoord.w;
#else
float depth = gl_FragCoord.z/gl_FragCoord.w;
#endif
#ifdef FOG_EXP2
float fogFactor = whiteCompliment(exp2(- fogDensity * fogDensity * depth * depth * LOG2));
#else
float fogFactor = smoothstep(fogNear, fogFar, depth);
#endif`,
// resultingColor = mix(texture2D(glowTexture, vUv), fogColor, fogFactor);
`#endif`,
"gl_FragColor = resultingColor;",
"}"
].join("\n")
}
Sie was sehen 'THREE.ShaderChunk [" fog_fragment "]' tut, indem er die [QUELLE] (https://github.com/mrdoob/three.js/blob/r76/src/rendere rs/shaders/ShaderChunk/fog_fragment.glsl) – 2pha
...... resultingColor = mix (Farbe, fogColor, fogFactor); "gl_FragColor = vec4 (ambient * vec3 (resultingColor), 1.0);" ...... Funktioniert für normale Farben mit Nebel, aber ich kann es immer noch nicht mit einer Textur mit der Mix-Funktion machen. –
Schwer zu helfen, ohne all Ihren neuen Code zu sehen. Aktualisieren Sie Ihre Frage – 2pha