当表面几乎与光线方向平行时,似乎无法消除这种透视锯齿。
我测试了几种不同的阴影祛痘技术:
从查看我在Google和我的书中找到的所有内容看来,这基本上是一个无法解决的问题。我知道必须有办法解决它,因为即使是一些独立游戏也有完美而流畅的阴影贴阴影。
是否有人愿意分享这个秘密?
答案 0 :(得分:1)
也许你已经找到了答案,因为这个问题已经有三年了,但是我仍然想说平行于光线方向的表面上的瑕疵必须用正常偏移来固定。至少我刚用这种方法解决了同样的问题。这是
vec4 shadowPosition = lightMatrix * vec4(_position, 1.0);
float bias = 0.0002;
float visibility = (texture(shadow, shadowPosition.xy / 2. + .5).r - .5) * 2. < shadowPosition.z - bias ? 0.1: 1.0;
现在是
float bias = 0.02;
vec4 shadowPosition = lightMatrix * vec4(_position + _normal * bias, 1.);
float visibility = (texture(shadow, shadowPosition.xy / 2. + .5).r - .5) * 2. < shadowPosition.z ? 0.1: 1.0;
是的,影子的边界现在是锯齿状的,但我希望其他一些技巧可以帮助我以后顺利进行。