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