《图形编程技术学习》(三十五)Phong明暗处理
一.Gouraud明暗处理的问题
1.曲面分隔可能产生错误效果
2.高光的丢失
3.马赫带效应(即光亮度变化率不连续的边界处呈现亮带或黑带)
二.Phong明暗处理
1.Phong明暗处理的思想:
不是插值光亮度颜色,而是插值法向量。故而也称为”法向量插值明暗处理“
2.对多边形顶点处法向量做双线性插值,将插值计算得到的多边形内各片元的法向量代入光亮度计算公式,得到各片元的光亮度
step1:计算出多边形各顶点的法向;
step2:多边形中的某个片元,双线性插值计算其法向;
step3:计算出多边形内该片元的光亮度。
三.不同明暗处理效果比较
Phong明暗处理的缺点是计算量大。以往图形硬件中不常采用。
Phong明暗处理是为每一个片元点都计算光照明方程
四.Phong shading计算发生在哪里?
Step1:计算出多边形各顶点的法向;
——CPU
Step2: 对多边形中的某个片元,双线性插值计算其法向;
——Rasterization
Step3:计算出多边形内该片元的光亮度。
——Fragment operation
五.三种明暗处理方法
1.常数明暗处理
2.Gouraud明暗处理
3.Phong明暗处理
(1)三种方法效果越来越好
(2)但计算机量也越来越大
(3)前两者是顶点级别的光照计算;而Phong Shading则是像素级别的光照计算。
/问题:还有别的明暗处理方法吗?/
六.凹凸纹理映射
七.OpenGL中的相关函数
glShadeModel(GLenum mode)
GL_FLAT 即常数明暗处理
GL_SMOOTH 即采用Gouraud明暗处理
扩展链接:https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/