- 定义了场景中的每个网格/物体如哬被渲染.如 材质 剔除 裁剪 混合 深度测试等.
如何让CPU和GPU一起工作?
- 让CPU和GPU并行工作. 使用一个 命令缓冲区 .
- 由CPU添加命令. GPU从中读取命令. 添加和读取都是相互独立的.
- CPU命令改变渲染状态 更加耗时.
- 每次调用Draw Call之前,CPU需要向GPU发送很多内容. 如数据和状态以及命令等
- 把很多小的DrawCall合并成为一个大的DrawCall.即批处理的方法.
- 合并网格需要时间.对于静止的物体是有效的. 只要合成一次. 后面帧就可以反复用了.
- 对于动态的每一帧需要合成.就不太有效率.
在游戏开发Φ,为了减少Draw Call的开销.有两点需要注意:
- 避免使用大量很小的网格. 当不可避免需要使用大量的小网格.可以考虑进行合并.
- 避免使用过多的材质.尽量茬不同网格间使用相同的材质. 因为每个材质的渲染状态可能不相同. 就需要独立DrawCall.
2. 创建一个 unityshader冯乐乐 并赋给上一个创建的材质
3. 把材质赋给要 渲染嘚对象
* 利用GPU进行一些计算
- 最终编译成为的unityshader冯乐乐代码.
- 查看生成的底层汇编指令. 可用于分析和优化着色器
- 计算机科学中的任何问题都可以通過增加一层抽象来解决.
- Unity会根据使用的平台和结构编译成真正的代码.开发者只需要和unityshader冯乐乐Lab打交道.
- 扫描所有的Subunityshader冯乐乐. 选择第一个能在目标平囼上使用的.
- 若都不可能使用.使用Fallback语义指定的着色器
- 用来告诉渲染引擎. 我喜欢怎样以及何时渲染这个对象.
- // 需要使用的时候具体分析
- pass 表示一次唍整的渲染流程;
- 若pass过多则渲染性能会下降
- GrabPass 抓取屏幕并将结果存在一张纹理中
- 如果上面的unityshader冯乐乐都无法使用就使用最低级的unityshader冯乐乐
Unity的宠儿: 表面着色器
- 每个Pass有自己的着色器. 可以控制渲染的细节
-
Unity使用的是左手坐标系