三个不透明的镜子

时间:2015-10-07 12:25:50

标签: three.js webgl

我使用此处演示的技术实现了一个镜像: 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);

1 个答案:

答案 0 :(得分:0)

您所描述的实际上并不是镜像是如何工作的。但是,只需在最初的通行证上涂上黑雾。

然而,您可以通过跳过雾来获得您真正想要的结果,而是应用dot(Normal,View) - 又名"面对比率"的某些功能。 - 到反射项的亮度。 Fresnel方程的常见近似," Schlick近似,"是(pow((1.0-abs(dot(N,V))),5.0)) - 这样反射在掠射角时就会变得更强,但在深邃时会变暗。直接的。这将更像许多真实的镜子。