第一张 游戏模型
1.底层渲染图形API包括Direct3D(windows)和Opengl(跨平台框架),这些API定义了对GPU的操作接口,Direct3d仅支持三角形网格,Opengl支持同面的任意凸多边形。
2.网格的细分和简化操作
3.存储网格定点数据:一般采用索引三角形的形式存储,即从顶点阵列或顶点缓冲区(顶点阵列是opengl的叫法,顶点缓冲区是direct3d的叫法)读取完全不重复的顶点数据,索引缓冲区则记录每个三角形顶点在顶点缓冲区的位置
4.ACMR(平均缓存缺失率):每个三角形所处理的平均顶点数量,该数据用来测量渲染性能。在典型的封闭网络中,三角形数量约等于两倍的顶点数量,理想的ACMR值为0.5,理想的取值范围为0.5~1,最坏的情况是3
5.欧拉多面体公式:V-E+F=2 V表示顶点,e表示边,f表示面,优化ACMR的方法是对三角形中的顶点进行排序
第二章 顶点处理机制
1.渲染管线包括4个过程:顶点处理,光栅化,片元处理,输出合并
渲染管线可分为:可编程管线,固定管线,顶点处理和片元处理是可编程管线
2.顶点处理过程主要包括:转换操作,光照操作和动画操作
顶点处理的转换操作主要包括:世界转换(世界空间),视见转换(相机空间),投影转换(裁剪空间)
放射转换:矩阵或者齐次坐标的缩放旋转平移操作
齐次坐标中的w为0表示该数据是一个向量,否则是一个顶点
需要会用矩阵表示一个坐标的放射转换过程
3.逐顶点光照和逐片元光照
逐顶点光照对于每个顶点计算光源到顶点和顶点法线的夹角确定光照亮,同时根据反射光线和法线的夹角计算相机接收的反射光,最终定义相机接收的顶点的颜色值
4.投影转换
视见体:场景中的可见区域
视椎体:用近裁剪面和远裁剪面截取视见体之后的区域
视椎体测试:cpu计算多边形网格是否在视椎体内部
第五章 光照和着色
光照模型分为两种类型:局部光照和全局光照
局部光照需要考虑的因素有:直接光源,对象表面照度,表面材质,对象自己的光源,主要计算的视觉颜色有4个:漫反射光,镜面光,环境光,发射光
Phong光照模型:已经简化版本的局部光照技术
漫反射计算:S(d)XM(d)=max(n*l,0)S(d)XM(d)
如果光源颜色:S(d)=(1,1,0),漫反射M(d)为(1,1,1)则漫反射的结果为每个分量相乘:(1,1,0)
镜面光:镜面反射通过高光让表面更为光亮,主要取决于反射光线跟视见方向的夹角,夹角超过反射椎体则高光不可见
环境光:光线从场景中经过多次反射到达物体表面,在物体表面以等强度反射 S(a)XM(a),S(a)表示颜色值,M(a)表示材质的环境反射系数
发射光:表面自身发射的光线量
全局光照:将场景中的物体视为潜在的光源对象
unity3d图形学:
在资源导入unity3d的过程中,会把组成模型的面片(Meshes)转成三角形,三角形的数量以及顶点的数量是影响游戏渲染速度的一个重要因素之一。在游戏场景的建模中,应该在模型效果和顶点数量之间取得一个平衡。
提高渲染效率的一些方法:层次细节(LOD)和遮挡剔除(occlusion culling)