- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,Gouraud shading 计算每个顶点的光色并对该颜色进行插值,而 Phong shading 为每个像素插值法线并根据该插值计算光色。
然而,当我试图从数学上推导出浅色时,我最终得到了两种方式相同的公式!
(其中n1和n2是两个顶点的法线,t是插值系数,L是光线方向,上面的平面和虚线表示屏幕和一个像素。)
两种方法的光色推导如下:
L = t*dot(n1,L) + (1-t)*dot(n2,L)
L = dot(t*n1+(1-t)*n2,L)
最佳答案
在 Gouraud shading 处,光按顶点计算(顶点着色器),而在 Phong shading 处,光按片段(片段着色器)计算。
因此,Gouraud 着色计算图元顶点(角)的光,并为图元覆盖的片段插入光。
使用 Phong 着色,为每个片段单独计算光。
通常,灯光由 Bidirectional reflectance distribution function 计算。该函数计算光在表面上的反射率,并取决于入射光的矢量、视点和表面的法线矢量。
在 Gouraud shading 处插入顶点颜色(反射率),在 Phong shading 处插入 3 个向量。如果函数 c = brdf(l, v, n) 是线性的,其中 c 是颜色,l 是光方向,v 是 View 向量,n 是法线向量(例如 Lambertian reflectance ),那不会有任何区别.但是如果光模型不是线性的(例如 Blinn–Phong ),那么 Gouraud shading 的线性插值会导致不同的结果。
比较 Gouraud shading 和 Phong shading
也可以看看:
GLSL fixed function fragment program replacement
Phong and Gouraud Shading
Gouraud shading / Phong shading
关于graphics - Phong 阴影和 Gouraud 阴影有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63958531/
我正在尝试使用解释的方法用 Cairo 获得一个 Gouraud 阴影三角形 here . 我有以下代码: cairo_surface_t *surface = cairo_image_surface
据我了解,Gouraud shading 计算每个顶点的光色并对该颜色进行插值,而 Phong shading 为每个像素插值法线并根据该插值计算光色。 然而,当我试图从数学上推导出浅色时,我最终得到
我是 Open GL 的新手,我对 Gouraud 着色有点困惑。我主要处理共面三角形。我的理解是,在 Gouraud 着色中,我必须为三个顶点中的每一个找到法线,然后在插入顶点之前,我必须插入它的法
我读到,在 Gouraud Shading 中,片段的颜色是在顶点着色器中计算的。而在 Phong Shading 中,片段的颜色是在片段着色器中计算的。 在此实现中,我们使用其中哪些? 我不太明白它
我正在使用 OpenGL ES在 low-resolution, embedded device . 我已经使用顶点着色将垂直颜色渐变应用到用作渲染场景背景的大多边形上。我可以在颜色渐变中看到清晰可见
我坚持实现 Gouraud 平滑着色。我遗漏了一些东西,我需要帮助。 首先是漫射照明。为了获得漫射光,我使用了这个公式: Id * Kd * max( dot(N,L), 0.0) 我应该得到我的漫反
我刚开始学习 C++ 和 OpenGL。我正在尝试在 OpenGL 中计算顶点法线。 我知道有一个函数 glNormal3f。但是,我不允许使用该功能。相反,我必须使用代码和 obj 文件来计算顶点法
我试图让一个形状因光源而具有一些阴影,但我希望所有形状都是一种颜色。 我的问题是,无论我多么努力,我似乎都无法在单一颜色模型上获得任何阴影。我已将我的模型简化为单个三角形以使此示例更清晰: #in
我注意到 here在 Gouraud Shading 部分,它说“具有相邻多边形的 T-Junction 有时会导致视觉异常。一般来说,应该避免 T-Junction”。 下图中的 T 形接头似乎是共
我是一名优秀的程序员,十分优秀!