Opengl Phong着色/插值和Phong照明模型之间的区别是什么?

Opengl Phong着色/插值和Phong照明模型之间的区别是什么?,opengl,graphics,lighting,Opengl,Graphics,Lighting,我的课堂笔记清楚地表明,这两个是不同的。我知道Phong照明模型是环境+漫反射+镜面反射,但说到照明,Phong着色在哪里发挥作用?BRDFs呢?Phong Shading是一种用于计算对象上的着色的方法。 要计算对象上点的着色,将插值顶点的法线。 相比之下,平面着色仅使用多边形的法线。Phong着色将产生更平滑、更弯曲的边,同时不需要很多多边形 另请参见,尤其是图片。照明模型(或反射模型)告诉您,对于给定的表面点、灯光和观察者,反射到观察者的光线量。Phong照明模型使用您描述的三个灯光组件实

我的课堂笔记清楚地表明,这两个是不同的。我知道Phong照明模型是环境+漫反射+镜面反射,但说到照明,Phong着色在哪里发挥作用?BRDFs呢?

Phong Shading是一种用于计算对象上的着色的方法。 要计算对象上点的着色,将插值顶点的法线。 相比之下,平面着色仅使用多边形的法线。Phong着色将产生更平滑、更弯曲的边,同时不需要很多多边形

另请参见,尤其是图片。

照明模型(或反射模型)告诉您,对于给定的表面点、灯光和观察者,反射到观察者的光线量。Phong照明模型使用您描述的三个灯光组件实现这一点,并且是BRDF的特例(仅漫反射和镜面反射部分;环境光部分不能使用标准BRDF建模)。照明模型是完全连续的,仅在物理空间中定义(尽管它们不需要遵循物理照明模型)


着色模型是一种基于形状和照明模型生成图像的策略。更具体地说,它定义了在何处评估照明模型以及如何处理结果。Phong着色模型评估每个像素处的照明模型,并将结果直接用作像素颜色。其他着色模型仅在顶点处评估照明模型,并混合颜色(Gouraud)或每个面一次(平面)。

着色模型通过考虑光线和曲面方向以及反射特性,计算单个点处的反射光

插值法用于计算法线已知点之间的反射光。你辨别

  • Gouraud着色:使用已知点处的反射模型计算灯光颜色,并对颜色进行插值

  • Phong着色:插值法线并在每个插值点应用反射模型


Phong成本更高,但更现实。

@NicoShertler谢谢你的回答。因此,需要明确的是:本教程中的照明使用Phong照明模型和平面着色模型?再次查看页面后,我发现它不可能使用平面着色,因为最终的图片有一个侧面没有平面着色。但在这种情况下,它使用的是什么着色模型?看起来既像Phong着色又像Phong照明。你怎么知道呢?你仍然在顶点着色器中对其求值,但你用
flat
限定符指定输出属性,例如
flat out vec4 color
。这将把非插值颜色传递给片段着色器。谢谢你的回答。我对Phong照明模型与Phong着色的匹配方式更为困惑。如果我对Nico答案的理解是正确的,那么着色模型决定了我们如何应用照明模型(每个三角形、每个顶点或每个片段一次)。在这种情况下,本教程中使用的着色模型是什么?谢谢,谢谢你的回答。我很难理解着色模型如何与照明模型交互。它们相互作用吗?@iaskdumbstuff着色模型和照明模型是同义的。在这种情况下,着色方法和插值方法是如何相互作用的?@iaskdumbstuff:这是我在回答中说的。那么在本教程中,使用的是哪种插值?谢谢