我正在尝试使用 Webgl2 为点光源实现阴影贴图。为此,我使用深度缓冲区的立方体贴图,从灯光位置渲染 6 轴对齐的视图。
在我用来渲染光照的片段着色器中,我使用这些行查询这个立方体贴图:
vec3 lightToPos = lightPos-fragPos;
float closestDepth = texture(shadowMap, lightToPos).r;
请注意,lightPos 和 fragPos 在“视图”引用中,即:viewMat * worldMat * objPos
. 在我所遵循的教程中,这应该处于世界位置(http://ogldev.atspace.co.uk/www/tutorial43/tutorial43.html)。现在,我不明白为什么我的方法行不通,因为无论它们的坐标表达的角度如何,两个位置的差异都应该是相同的,对吧?我得到的结果不是我所期望的,一切都在阴影中。我可能在其他地方犯了错误,但我想确定我理解它是如何工作的,并且错误不是来自这里。