图形学相关
点积和叉积的物理意义
两矢量点积,其中一矢量为单位矢量,结果为另一矢量在单位矢量上投影的长度。
两矢量叉积,其结果为一垂直于两矢量的新矢量。
GPU的渲染流程
本部分总结来自我对《Unity Shader 入门精要》一书的笔记
https://www.cnblogs.com/errornull/p/10026725.html
应用阶段
首先将数据加载到内存中,将网格、纹理加载到显存中,然后设置渲染状态,如摄像机、灯光等,最后调用drawcall渲染命令,输出图元列表到顶点着色器。
几何阶段
图元列表中的每个顶点都会调用一次顶点着色器,将顶点变换到齐次裁剪坐标系,得到归一化的设备坐标NDC。然后对图元进行裁剪,裁剪后的坐标经过屏幕映射得到屏幕坐标,和z坐标一起构成窗口坐标系。
光栅化阶段
通过三角形设置得到三角网格的表示数据,根据数据来检查每个像素是否被一个三角网格所覆盖,被覆盖的话就用三角网格的顶点信息对覆盖区域的像素进行插值,被覆盖的像素生成一个片元。然后片元经过片元着色器时会进行纹理采样,计算出其覆盖的片元的输出颜色。
最后进行逐片元操作,又成输出合并阶段,对每一个片元进行模板测试、深度测试和混合,模板测试用来限制渲染区域,深度测试舍弃被遮挡的片元提升性能,合并操作可以实现半透明等效果。最后这些使用颜色缓冲区的颜色值的像素就会显示到屏幕上。