Gouraud Shading(高洛德着色法)和其优缺点详解


Gouraud是一种插值方法,Gouraud着色法是计算机图形学中的一种插值方法,可以为多边形网格表面生成连续的明暗变化。实际使用时,通常先计算三角形每个顶点的光照,再通过双线性插值计算三角形区域中其它像素的颜色。

在图形处理器流水线中,一般有几种着色方法:

固定着色(Pure shading, Constant shading)

不考虑光照,给片元进行着色

恒定着色(Flat shading)

通过一定方法,计算出每一个多边形的最终颜色(比如说光照计算),没有变化和插值

多用于实现卡通风格

《Minecraft》就是用的恒定着色

高洛德着色(Gouraud Shading)

通过计算顶点颜色,然后通过插值方法完成着色,在一个面上面也就可以有不同的颜色了

每一个顶点做一次光照计算,然后每一个三角形根据组成它的三角形进行插值给片段进行着色,计算非常快

《Final Fantasy VII》就是用的Gouraud Shading

冯氏着色(phone Shading)

包含ambient,diffuse,specular部分

每一个图元逐像素的法线进行光照计算,计算量较大,但是效果最好

 高洛德着色(Gouraud Shading)的优缺点

优点:只计算顶点的光照,计算快

缺点有下面几个:

高光区丢失:

如果在多边形的中心有高光,而且这个高光没有扩散到该多边形的任何顶点,使用Gouraud着色法就不会渲染出任何效果,如下图周围的顶点没有得到这个计算值,这块也就不可能产生高光效果,不过可以通过提高顶点数去解决

高光区不正常:

另外,而如果正好是多边形的顶点上有高光,那么这个点上的高光是正确的,但插值会导致高光以很不自然的形式扩散到相邻的多边形上,这个大大的五角形:

亮度信息不对: 

假设有这么一个场景,下面有个三角形片元,在片元上方正好有一个光源

 我们把三角形平着倾斜过来:

根据光照公式的点乘部分计算 

 

C点的光照强度等于A点的光照强度和B点光照强度的插值 

当a和b的夹角越小的时候,得到的光照强度越大,也就是C点的光照越强

但当把光源向下移动的时候:

 a和b的夹角更大了,这就意味着A和B的光照强度降低,所以根据A点和B点得到C点的光照也会减弱

光离面越近,这个面就会暗

这明显是个错误结果,但是随着面数的增加或者使用曲面细分着色器对面进行曲面细分,则可以减少它的缺点

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gouraud 着色是一个在 OpenGL 图形渲染中常用的技术。它是由 Henri Gouraud 在20世纪70年代提出的,用于计算并插值多边形的表面颜色。 在OpenGL中,多边形表面的着色是通过为每个顶点指定颜色,并利用 Gouraud 着色算法在顶点之间进行插值来实现的。这样,每个顶点都有一个颜色值,而在顶点之间,颜色会平滑地渐变。 Gouraud 着色的核心思想是对每个顶点进行逐顶点着色计算,计算得到每个顶点的颜色。然后,沿着多边形的边缘线段上进行线性插值,确定每个片段的颜色。最后,根据每个片段得到的颜色信息来细化多边形表面的颜色。 Gouraud 着色具有以下优点:首先,它处理效率,因为只需要在每个顶点上计算并插值颜色值,而不需要对每个像素进行计算。其次,它可以平滑地渐变多边形的颜色,使得表面看起来更加真实。此外,Gouraud 着色还可以应用于不同光源的场景中,使得图像更加逼真。 然而,Gouraud 着色也存在一些限制。最主要的是,它在处理锐利边缘和阴影效果时表现不佳。由于颜色插值是在顶点之间进行的,因此当有锐利的边缘或明暗转折时,插值效果可能不够精细,导致视觉上的不连续性。 总的来说,Gouraud 着色是一种简单且效的多边形着色算法。它通过在顶点之间进行颜色插值来平滑多边形的颜色,并在 OpenGL 渲染中得到广泛应用。对于表面光滑、真实感较强的图形渲染需求,Gouraud 着色可以提供良好的视觉效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值