unity3d在android上使用shader有什么限制?

关注者
31
被浏览
2343

3 个回答

主要是 sm1和sm2 sm3支持的很少
在开发时切换图形模拟环境看看shader是否报错
另外要注意渲染效率 shader中尽量不要有太复杂的计算
补充一下,wiki上面找到一张不错的表,方便查找sm的限制:High-Level Shading Language

现在主要还是针对sm2.0写shader,比较常遇到的两个限制就是
1、限制64个算术指令2、限制12个中间寄存器

shader写得比较浪的话就容易出现这两个错误啦。
ps:注意到上面图的最后一句,"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."32个纹理指令+64个算术指令 = 96,所以之前查到国内的一些资料上面直接写的96。搞得我一头雾水。
ps2:看到表中2.0的Temp registers 是 12 to 32,但是untiy里面用了12个以上就会报错了,知道怎么回事的大神请告诉我一声~