shader编写规范
float half fixed
类型 | 精度 |
---|---|
float | 最高精度浮点值,32位 |
half | 中等精度,16位,-60000~+60000 |
fixed | 最低精度,11位,-2.0~+2.0 |
- 不同的值请选择不同的精度类型,减少内存的消耗
避免不必要的计算
- 不同的Shader Target,不同的着色器阶段,可以使用的临时寄存器和指令数目是不同的。
指令 | 描述 |
---|---|
#pragma target 2.0(Direct3D Shader Model 2.0) | 默认等级,不支持顶点纹理采样,不支持显示的LOD纹理采样 |
#pragma target 3.0(Direct3D Shader Model 3.0) | 支持顶点纹理采样 |
#pragma target 4.0(Direct3D Shader Model 4.0) | 支持几何着色器 |
#pragma target 5.0(Direct3D Shader Model 5 .0) |
慎用分支和循环语句
不鼓励在shader中使用流程控制语句,会降低GPU并行处理操作
如果大量使用,要把该使用尽量放在流水线上端
分支判断中的条件变量最好是常数,即不发生变化
每个分支包含的操作指令少
分支的嵌套数少
不要除以0
- 对除数可能为0的情况,强制截取到非0
- 使用很小的浮点数保证分母大于0
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雨夜!