11302016上午

    xiaoxiao2021-12-13  19

    今天上午收获挺多的,最重要的是终于对于渲染管线理解了一部分。对于GPU的渲染流程,首先是顶点变换,将顶点由自身坐标系,转换到世界坐标系,再转换到摄像机坐标系,最终转化到屏幕坐标系。然后进行面处理,顶点能够构成三角形,最终构成复杂的几何体的mesh网格。面处理包括面组装,顶点组装成面;面截取,不在摄像机范围的直接截取,分为全部在摄像机之外,部分在摄像机之外等等,算法也不相同;面剔除,反面剔除,视锥剔除,在摄像机视锥体之内,但是深度值不满足要求,剔除,遮挡提出,深度值不同的物体要显示在屏幕的同一点上,剔除深度值大的物体。光栅化,主要是计算机进行处理。将上一步组装好的面,由矢量图转化为点阵图,才能显示到屏幕上。最后进行像素处理,因为上一步光栅化的输出,才能进行这一步的像素处理。对每个像素区域进行着色,透明度值设置等等。但是到了最后的逐片元测试的模板测试,深度测试和混合还是不理解。

    多次调用DrawCall指令会影响性能,因为CPU发出DrawCall指令跟不上GPU执行速度,解决的办法可以是将DrawCall的物体合成为较大的物体,让GPU可以执行一会,不至于立马就执行完了,而CPU还没发出下个指令。

    又了解了以下unity的shaderlab框架,开头格式,属性(一些属性值),多个subshader,subshader中可以有多个pass通道,fallback调用后援shader等等。不理解的还挺多的,不过也不用着急,慢慢来吧,随着后面的学习我相信是可以慢慢明白前面不理解的部分,尤其是渲染管线流程。

    转载请注明原文地址: https://ju.6miu.com/read-950106.html

    最新回复(0)