ALU:
浮点数精度 选择性降低
shader 指令数 替换一些计算减小指令sqrt
, sin
, cos
, recip
光照 计算用lightmap(用memory sample换计算)
vertex light(tbdr 不推荐 vs开销太大)
look up texture
Mem:
最后一段 textuer fetch bound register pressure
CBV:
register counts
fragement shader的 变量也会成为flight的瓶颈 所以确认瓶颈很重要
因为register counts的限制 一个shader用了太多变量 并行起来的shader个数就会受到限制
还有个值得注意的地方
需要关注vs--ps之间插值数据大小
control flow:
分支 循环
数据同步的wait
从外面来解决这个问题 overdraw 直接把不需要计算的shader去掉(zprepass or hsr) 降低resolution
===================
vs
频繁更新的 vertex buffer 数据和基本不更新的数据分两块buffer放 有效利用cache