Lecture8:Shading 2 (Shading, Pipeline and Texture Mapping)
- 本讲内容:
- 讲完布林-冯模型
- 着色频率
- 渲染管线
- 纹理映射(若有时间)
- 重心坐标(若有时间)
讲完布林-冯模型
- 漫反射项回顾
- 高光项
- 光滑的物体反射方向接近镜面反射
- 正常来说采用反射光线和目光的可视夹角
- 这个就是冯反射模型
- 布林-冯采用了半程向量和法线夹角,减小了计算量
- 布林-冯反射模型是冯反射模型的改进,因为半程向量很好算
- 布林-冯反射模型是冯反射模型的改进,因为半程向量很好算
- 在此略去了反射点对光线的吸收
- 一个指数p项,用于降低对夹角的容忍度
- 在布林-冯模型中,p值大概在100~200
- 在布林-冯模型中,p值大概在100~200
- 环境光项
- 实际上环境光很复杂,我们在此将其超级简化!
- 与h,v均无关,其实是个常数
- 三项相加!
- 目前埋下了一些辐射度量学的坑!
Shading Frequencies 着色频率
- 下图三球的模型相同
- 为什么着色之后结果各不相同?上中下
- 【Flat shading】着色应用在每一个平面上
- 【Gouraud shading】着色应用在每一个顶点上:每一个顶点算出法线进行一次着色,在三角形内部进行插值
- 【Phong shading】着色应用在每一个像素上:把每个三角形顶点的法线在三角形内部进行插值,每个像素都有一个自己的法线方向
- Blinn-Phong的Phong和这个Phong是一个人,但是那是反射模型,这是着色频率,Phong是天才但是英年早逝
- 这三种着色频率的区别
- 如果几何相对复杂,简单的着色频率效果也可
- 如果三角形面数多于了像素数,flat的工作量甚至会小于phong
- 如何计算逐顶点的法线?
- 对于球好说,其他情况呢?
- 一个顶点一定与多个三角形有关联:顶点法线是相邻面法线的 简单/加权 平均
- 如何计算逐像素(三角形内部)的法线?
- 用到重心坐标
Graphics (Real-time Rendering) Pipeline 渲染管线
- 把所有的东西合到一块就是 Graphics (Real-time Rendering) Pipeline:从场景到图像经历了什么?
- 以上操作是显卡中写好的
- 着色可能发生在顶点处理中(Gouroud),或者片段处理中(Phong)
- 纹理映射,还没讲
- 自己写shader,详见OpenGL笔记
- shader只管一个像素
- 顶点着色器&片段(像素)着色器
- https://www.shadertoy.com/view/ld3Gz2
- GPU实现光栅化
- 可编程的部分:着色器,几何着色器(见OpenGL笔记)
- 独立显卡&集成显卡
- GPU可以理解成高度并行化的处理器
Texture Mapping 纹理映射
- 对于一个物体上面的任何一个点有不同的基本属性
- 物体表面的点,三维物体的表面可以映射成二维的
- 纹理就是一张图 :例子
- 对于每个三角形的顶点在纹理上的映射,怎么知道咋映射
- 艺术家做
- 自动化做:这是个重大研究方向——参数化parameterazation
- 纹理上的坐标系:(u, v)坐标,u, v都在[0, 1]范围
- 纹理当然可以重复使用,处理纹理接缝自然化(tilable texture)是一个值得研究的课题。
- 知道三角形顶点纹理坐标,如何知道三角形内部纹理坐标?
- 又是插值!使用重心坐标!下节课再说!