我正在使用基于纹理的DOT3照明来实现旧版iPhone上的凹凸贴图,我想知道是否有一种偷偷摸摸的方式让它看起来正确,即使视点发生变化。
通过“真实”照明,法线可以通过逆模型 - 视图矩阵进行变换。使用基于纹理的DOT3照明,没有变换。
使用基于着色器的凹凸贴图,法线贴图位于切线空间中。使用DOT3照明时,法线贴图需要在眼睛空间中。只有当你有一个固定的视点,或者你的几何形状恰好是一个平面时,这是可以的。
我应该接受这个作为DOT3照明的另一个限制吗?既然它也无法处理镜面反射,我开始质疑它究竟是多么有用。
答案 0 :(得分:5)
只要光矢量位于相同的坐标空间中,您的法线贴图就不需要位于任何特定空间中。对于固定功能硬件上的DOT3照明,最好将对象空间中的法线贴图保留在眼睛空间中。从这里开始,您只需要确保在渲染每个对象时,应用适当的变换将方向光矢量从世界空间移动到对象空间。