图形学-着色频率与渲染管线

1.着色频率

根据不同的着色方式,有不同的着色频率,主要的着色频率分为三种——面着色,顶点着色和像素着色。主要的不同之处在于法线的选择方式不同。

  • 面着色 Flat Shading指的是计算每一个三角形平面的法线后对一个平面整体进行着色;
  • 顶点着色 Gouraud Shading 指的是计算每一个三角形三个顶点的法线后进行着色,最后在三角形内部插值得到颜色。顶点法线的计算是通过顶点相邻面的法线的(加权)平均值求出;
  • 像素着色 Phong Shading指的是计算出每一个像素的法线进行着色。三角形内部点法线的计算需要依靠重心坐标计算。

当几何体相对复杂,构造精细的时候,三种着色效果产生的结果不相上下。

2.渲染管线

管线 Pipeline是从模型到图片生成的过程。管线分为以下过程:
在这里插入图片描述
首先将顶点的三位向量作为输入,进行几何变换(mvpMatrix)后划分三角形区域。通过光栅化获得一个个小的碎片(或者是一个个小像素)后进行着色,得到我们的输出。

我们可以定义顶点或者像素的着色方式来提供不同的着色要求,这被称为 Shader。硬件中会提供这样的编程方式定制不同的着色方式,以 OpenGL 为例,我们可以定义以下的着色函数:

uniform sampler2D myTexture ;
 uniform vec3 lightDir ;
 varying vec2 uv ;
 varying vec3 norm ;

 void diffuseShader () {
 vec3 kd ;
 kd = texture2d ( myTexture , uv );
 kd *= clamp ( dot (- lightDir , norm ) , 0.0 , 1.0) ;
 gl_FragColor = (kd , 1.0) ;
 }

这里我们定义了一个简单的漫反射着色器。同时,着色器会自动应用到每一个顶点或者是像素上,不需要我们使用显式的 for 循环进行遍历。逐顶点,逐片元就是这个意思。逐个执行上面代码,每个顶点或片元执行的程序都一样。

3.纹理映射

对于任何一个三角形,我们在内部填充一个图形作为纹理。纹理(Texture)也就是我们在不同的位置所定义的漫反射系数。有点初始化片元状态的意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值