我使用此处演示的技术实现了一个镜像: http://threejs.org/examples/webgl_mirror.html
我想让我的反射略微不透明,这样反射的“更深”的东西看起来更暗。我想劫持碎片着色器,但不确定用于创建这种关系的最佳属性是什么。
目前我的镜像片段着色器:
vec4 color = texture2DProj(mirrorSampler, mirrorCoord);
color = vec4(blendOverlay(mirrorColor.r, color.r), blendOverlay(mirrorColor.g, color.g), blendOverlay(mirrorColor.b, color.b), 1.0);
vec3 outgoingLight = color.rgb;
${THREE.ShaderChunk[ "fog_fragment" ]}
gl_FragColor = vec4(outgoingLight,1.0);
答案 0 :(得分:0)
您所描述的实际上并不是镜像是如何工作的。但是,只需在最初的通行证上涂上黑雾。
然而,您可以通过跳过雾来获得您真正想要的结果,而是应用dot(Normal,View)
- 又名"面对比率"的某些功能。 - 到反射项的亮度。 Fresnel方程的常见近似," Schlick近似,"是(pow((1.0-abs(dot(N,V))),5.0))
- 这样反射在掠射角时就会变得更强,但在深邃时会变暗。直接的。这将更像许多真实的镜子。