首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phong遮阳和Gouraud遮阳有什么区别?

Phong遮阳和Gouraud遮阳有什么区别?
EN

Stack Overflow用户
提问于 2020-09-18 15:22:50
回答 1查看 6.4K关注 0票数 2

据我所知,Gouraud阴影计算每个顶点的光色,并对该颜色进行插值,而Phong阴影则对每个像素进行法向插值,并根据该插值值计算光色。

然而,当我试图从数学上推导出浅色时,我最终得到了这两种方法的相同公式!

(其中n1和n2是两个顶点的法线,t是插值系数,L是光方向,顶部和虚线上的平面代表屏幕和像素。)

这两种方法的光色如下:

  • 古鲁德:L = t*dot(n1,L) + (1-t)*dot(n2,L)
  • Phong:L = dot(t*n1+(1-t)*n2,L)

结果是一样的。

有人能告诉我我的推导有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-18 15:38:18

而在Gouraud遮阳,光是计算每个顶点(顶点着色器),在Phong阴影,光是计算每个片段(碎片着色器)。

因此,Gouraud阴影计算一个原语的顶点(角)的光,并为原语覆盖的碎片插值光。

在Phong阴影下,对每个片段分别计算光。

通常,光是由双向反射分布函数计算的。该函数计算光在表面的反射率,并依赖于入射光的矢量、视点和表面的法线矢量。

Gouraud遮阳上,对顶点颜色(反射率)进行插值,在Phong阴影处,对3个矢量进行插值。如果函数c= brdf(l,v,n)是线性的,其中c是颜色,l是光方向,v是视图向量,n是法向量(例如Lambertian反射率),那就没有任何区别。但是,如果光模型不是线性的(如布林),则Gouraud阴影的线性插值将导致不同的结果。

比较Gouraud遮阳Phong阴影

另请参阅:

GLSL固定功能片段程序替换

Phong和Gouraud遮阳

Gouraud遮阳/ Phong遮阳

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63958531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档