逐顶点光照 逐像素光照 差异对比

Posted weixin_43787178

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逐顶点光照 逐像素光照 差异对比相关的知识,希望对你有一定的参考价值。

逐顶点光照(Gouraud着色法)

先计算,再插值,控制精度为triangle;
在vertex阶段分别计算每个顶点的颜色值,在pixel阶段再通过双线性插值计算三角形区域中其它像素的颜色。
优点:
1.当处理高精度多边形模型时,由于每个多边形所覆盖的区域很小,因此插值之后每个像素的误差也很小,所以逐顶点光照可以工作的很好;

2.如果三角形所覆盖的像素数量大于顶点数量,其效率相对于pixel较高;

缺点:
1.若顶点过多,效率慢;

2.处理某些跨度较大的多边形(比如:低精度模型,弧度较大的模型),由于跨度较大,插值后差异较大,影响最终效果;

3.渲染一些与位置相关的光照效果(比如高光)时,得到的效果就会有问题。如果在多边形的中心有高光,而且这个高光没有扩散到该多边形的任何顶点,使用Gouraud着色法就不会渲染出任何效果;而如果正好是多边形的顶点上有高光,那么这个点上的高光是正确的,但插值会导致高光以很不自然的形式扩散到相邻的多边形上。

逐像素光照(Phong着色法)
先插值,再计算,控制精度为pixel;
从多边形顶点的法线到多边形表面进行差值;
优点:
1.在对于有较小的高光曲线区的反射模型,例如PHONG模型时,Phong着色法比Gouraud着色法更优。但运算程序也比前者为复杂。

以上是关于逐顶点光照 逐像素光照 差异对比的主要内容,如果未能解决你的问题,请参考以下文章

[Unity Shader] 逐顶点光照和逐片元光照

WPF 中的逐像素光照

通过使用Unity Shader实现基础光照效果

通过使用Unity Shader实现基础光照效果

Unity Shader

什么是 DOT3 照明?