Lec8 Shading2 (Shading, Pipeline and Texture Mapping)
漫反射项
- 光到了某一个shading point,向四周发散出去
- 途中有衰减
高光项 (Specular Term)
- 观察方向和镜面反射接近
- Blinn-Phong
-
法线方向 n 与半程向量 h 接近
- 半程向量h:
- 入射方向l + 出射方向v就是半程向量的方向
- 点乘,越接近1越接近
- 半程向量h:
-

- ks:镜面反射系数,一般是白色的
- 多少能量被吸收?
- 因为Blinn-Phong是经验性模型,所以简化了
- 指数p
-

-
通过加上指数,能够提高函数敏感度,能够减小高光面积
-
正常是用上100-200的p
-
p增大,高光越小
-

-
-
环境光
假设每个点环境光都一样

是个常数,和v没关系
blinn-Phong 模型
就是把前面三种光加起来

着色频率

就是着色是应用在哪些点上(shading points)
- 三种着色频率
- Flat shading (逐三角形)
- 每一个三角形法线求出来(两条边叉积),求出一个shading point的结果
- Gouraud shading (逐顶点)
- 假设顶点法线能求,每个顶点做一次着色,三角形内部的点做插值求出当前点的光照
- Phong shading (逐像素)
- 计算出三角形每个顶点的法线,对三角形内每个点做插值,得到每个像素的法线,用来算光照
- Flat shading (逐三角形)
其实还是看模型本身的精细程度

- 算顶点的法线
- 把顶点所关联的面的法线,根据面的面积做加权平均
- 所有法线都是方向,求完之后需要归一化
渲染管线
实时渲染管线
输入
- 空间中的点
- 投影到屏幕上
- 点形成三角形
- 离散成fragment(类比像素)
- 着色
- 最后知道屏幕效果

现代GPU允许对顶点和像素着色进行编程
- shader
- 每一个像素(fragment)都会这么执行
- 如果是顶点操作,那么就叫顶点着色器
- 如果是像素操作,那么就是像素着色器
GPU
整个图形管线的硬件实现
-
可编程:顶点着色器,像素着色器
-
还有其他的shader: compute shader
-
高度并行的处理器,核心数多
Texture Mapping (纹理映射)
-
纹理
任何一个三维物体表面都是二维的
纹理就是一张图,可以蒙在任何一个三维物体表面
纹理上有坐标,有一个坐标系(uv坐标系)
一个UV的范围,都是u∈[0,1],v∈[0,1]u\in[0,1], v\in[0,1]u∈[0,1],v∈[0,1]
-
三角形内部uv
三角形三个顶点有各自不同的属性
通过插值解决
1611

被折叠的 条评论
为什么被折叠?



