【发布时间】:2016-03-05 23:38:51
【问题描述】:
使用 OpenGL 着色器,我想渲染一个立方体并应用漫反射照明。我的立方体由 8 个顶点和 12 个三角形组成。我通过找到三角形两条边之间的叉积来计算每个三角形的法线。然后,每个顶点的法线是它所接触的三角形的加权(按面积)平均值。在顶点着色器中,为了计算每个顶点的光照,然后计算顶点法线与光向量之间夹角的余弦值。
但是,这样做的问题是,虽然我的立方体的每个面都是平坦的,但面上每个像素的照明是在其四个顶点之间进行插值计算的。鉴于每个顶点有不同的法线,面部的光照在每个顶点之间平滑变化,而实际上整个面部应该只有一个光照值。
我应该怎么做才能解决这个问题?或者如果不沿立方体面添加额外的顶点就无法处理这个问题?
【问题讨论】: