据我所知,Gouraud阴影计算每个顶点的光色,并对该颜色进行插值,而Phong阴影则对每个像素进行法向插值,并根据该插值值计算光色。
然而,当我试图从数学上推导出浅色时,我最终得到了这两种方法的相同公式!

(其中n1和n2是两个顶点的法线,t是插值系数,L是光方向,顶部和虚线上的平面代表屏幕和像素。)
这两种方法的光色如下:
L = t*dot(n1,L) + (1-t)*dot(n2,L)L = dot(t*n1+(1-t)*n2,L)结果是一样的。
有人能告诉我我的推导有什么问题吗?
发布于 2020-09-18 15:38:18
而在Gouraud遮阳,光是计算每个顶点(顶点着色器),在Phong阴影,光是计算每个片段(碎片着色器)。
因此,Gouraud阴影计算一个原语的顶点(角)的光,并为原语覆盖的碎片插值光。
在Phong阴影下,对每个片段分别计算光。
通常,光是由双向反射分布函数计算的。该函数计算光在表面的反射率,并依赖于入射光的矢量、视点和表面的法线矢量。
在Gouraud遮阳上,对顶点颜色(反射率)进行插值,在Phong阴影处,对3个矢量进行插值。如果函数c= brdf(l,v,n)是线性的,其中c是颜色,l是光方向,v是视图向量,n是法向量(例如Lambertian反射率),那就没有任何区别。但是,如果光模型不是线性的(如布林),则Gouraud阴影的线性插值将导致不同的结果。


另请参阅:
https://stackoverflow.com/questions/63958531
复制相似问题