【发布时间】:2015-12-02 23:13:06
【问题描述】:
使用 OpenGL 着色器,我想使用漫反射光照渲染一个实心立方体。为此,我计算每个顶点的法线,然后计算该法线与光的方向之间的点积。这样做的问题是立方体上的每一对平面具有相同的法线方向,因此具有相同的光照强度。但如果光源在立方体的正上方,那么顶面应该是亮的,底面应该是暗的——它们不应该是一样的。
解决办法是什么?
【问题讨论】:
标签: opengl
使用 OpenGL 着色器,我想使用漫反射光照渲染一个实心立方体。为此,我计算每个顶点的法线,然后计算该法线与光的方向之间的点积。这样做的问题是立方体上的每一对平面具有相同的法线方向,因此具有相同的光照强度。但如果光源在立方体的正上方,那么顶面应该是亮的,底面应该是暗的——它们不应该是一样的。
解决办法是什么?
【问题讨论】:
标签: opengl
立方体顶部的法线应该与底部的法线方向相反。因此,点积的结果将是上侧的 1 和底部平面的 -1。如果将点积限制在 [0, 1] 范围内,则底边会变暗。
【讨论】: