我一直在尝试使用WebGL中的VSM和ESM技术实现一些阴影贴图,但是有一些事情会让我产生问题。
由于这两种方法均基于occluder – receiver
深度值,因此障碍物与我们想要点亮的点之间的差异越大,它接收的光线就越小。
所以根据我的理解,远离地面的一个物体会比1000个物体的物体投射出更弱的阴影吗?
我误解了什么吗?这是使用ESM的结果图片,问题是对象底部几乎没有阴影。
float c = 4.0;
vec4 texel = texture2D(uDepthMap, depth.xy);
shadow = clamp(exp(-c * (depth.z - unpack(texel))), 0.0, 1.0);
gl_FragColor = vec4(color*shadow, 1.0);
有关信息,我从http://devmaster.net/posts/3002/shader-effects-shadow-mapping
中获取了大部分代码