Javascript 如何消除阴影贴图的虚假瑕疵?
通过阴影贴图创建阴影时出现虚假瑕疵 我不明白为什么会画出许多阴影,它们是从哪里来的?Javascript 如何消除阴影贴图的虚假瑕疵?,javascript,webgl,shader,shadow,Javascript,Webgl,Shader,Shadow,通过阴影贴图创建阴影时出现虚假瑕疵 我不明白为什么会画出许多阴影,它们是从哪里来的? 示例:我想你指的是暗疮。渲染小曲面时,计算曲面点与灯光的距离,并将其与从阴影贴图读取的距离进行比较。现在,理想情况下,如果曲面被照亮,这些值应该相等,但是由于浮动精度误差,可能会有轻微的不精确,导致阴影不应该存在 解决方案是应用偏移,因此在从阴影贴图读取的距离上添加一个小数字,如0.001。实际偏移量应取决于世界的比例。看起来您的阴影贴图只覆盖了场景的一小部分,并且正在平铺(重复)以覆盖其余部分。将阴影贴图的环
示例:我想你指的是暗疮。渲染小曲面时,计算曲面点与灯光的距离,并将其与从阴影贴图读取的距离进行比较。现在,理想情况下,如果曲面被照亮,这些值应该相等,但是由于浮动精度误差,可能会有轻微的不精确,导致阴影不应该存在
解决方案是应用偏移,因此在从阴影贴图读取的距离上添加一个小数字,如0.001。实际偏移量应取决于世界的比例。看起来您的阴影贴图只覆盖了场景的一小部分,并且正在平铺(重复)以覆盖其余部分。将阴影贴图的环绕模式更改为
GL\u CLAMP\u到\u BORDER
:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
并将边框颜色设置为1.0f
或0.0f
,具体取决于您希望阴影贴图之外的东西亮起还是不亮起:
GLfloat borderColor[] = { 1.0f, 1.0f, 1.0f, 1.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
确保阴影摄影机的远平面足够高 您有多少光源?在场景1光源上是否有超反射曲面?否,反射不会影响阴影。本课程以webglacademy.com课程为例№ 28对不起,我只是在抛砖引玉,因为没有其他人在抛砖引玉;idk opengl。在我的示例中,bias=0.0022这不是,这个问题是一个重复的深度贴图与一个错误的阴影投影矩阵相结合,只覆盖场景的一个子区域。它不支持。GLаu夹钳аu至аu边框不支持@Аааааааааfn
ctx。夹钳аu至аu边缘