Unity|第二章 渲染流水线(下)---Shader语言与Draw Call

一.HLSL,GLSL,CG GLSL:OpenGL支持的。跨平台,编译结果依赖于硬件供应商。 HLSL:微软控制着色器编译,仅支持微软自己的产品。 CG:跨平台,与HLSL的语法非常像。
在unity shader 中,可以选择'CG/HLSL"或者"GLSL",但Unity shader语言并不是真正意义上的对应着色器语言,尽管它们的语法几乎一样。
二.Draw Call 1.Draw Call其实就是调用图像编程接口,如OpenGL 中的glDrawElements或者DirectX中的DrawIndexedPrimitive命令。 2.CPU 和 GPU通过命令缓冲区执行命令。 3.为什么Draw Call影响帧率 在每次调用Draw Call前,CPU需要向GPU 发送很多内容,包括数据,状态和命令等。 GPU渲染能力很强,渲染200还是2000三角网格通常没有区别,渲染速主要取决于CPU提交命令的速度。 如果DrawCall数量太多,CPU就会把大量时间花费在提交DrawCall上,造成CPU过载。
4.如何减少Draw Call 4.1 避免使用大量很小的网格,当不可避免时考虑是否合并它们。 4.2 避免使用过多材质,尽量在不同网格之间共同使用同一个材质。


    推荐阅读