Gouraud 着色(双线性光强插值法)、Phong 着色、Blinn-Phong 反射模型区别

openGL系列文章目录

前言

openGL光照模型有三种:

  1. Gouraud 着色(双线性光强插值法)
  2. Phong 着色
  3. Blinn-Phong 反射模型
    有什么区别呢?

1.Gouraud 着色(双线性光强插值法)的效果
在这里插入图片描述
可以看到高光镜面,光斑有散开的伪影

2.Phong 着色
在这里插入图片描述可以考到phong光照,高光光斑比较自然一些

3.Blinn-Phong 反射模型效果

在这里插入图片描述

一、Gouraud 着色(双线性光强插值法)

Gouraud 着色过程如下。
(1)确定每个顶点的颜色,以及光照相关计算。
(2)允许正常的光栅化过程在插入像素时对颜色也进行插值(同时也对光照进行插值)。
在OpenGL 中,这表示大多数光照计算都是在顶点着色器中完成的,片段着色器仅做传
递并展示自动插值的光照后的颜色。

二、phong着色

Bui Tuong Phong 在犹他大学的研究生期间开发了一种平滑的着色算法,在1973 年的论
文[PH73]中对其进行了描述,并在[PH75]中发表。该算法的结构类似于Gouraud 着色的算法,其
不同之处在于光照计算是按像素而非顶点完成。由于光照计算需要法向量N 和光向量L,
但在模型中仅顶点包含这些信息,因此Phong 着色通常使用巧妙的“技巧”来实现,其中N
和L 在顶点着色器中进行计算,并在光栅化期间插值。

三、Blinn-Phong反射模型

虽然Phong 着色有着比Gouraud 着色更真实的效果,但这是建立在增大性能消耗的基础
上的。James Blinn 在1977 年提出了一种对于Phong 着色的优化方法[BL77],被称为Blinn-Phong
反射模型。这种优化是基于观察到Phong 着色中消耗最大的计算之一是解出反射向量R。
Blinn 发现向量R 在计算过程中并不是必需的——R 只是用来计算角φ 的手段。角φ 的
计算可以不用向量R,而通过L 与V 的角平分线向量H 得到。如图1 所示,H 和N 之
间的角α 刚好等于1⁄2(φ)。虽然α 与φ 不同,但Blinn 展示了使用α 代替φ 就已经可以获得
足够好的结果。
角平分线向量可以简单地使用L+V 得到(见图2),之后cos(α)可以通过•) )H N的点积计算。

在这里插入图片描述
图1
在这里插入图片描述
图二

总结

openGL三种光照模型
1.Gouraud 着色
2.phong着色
3.Blinn-Phong反射模型
这三种光照程序中都有,主程序是一样的,只有着色器不一样

源码下载

源码下载地址

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值