摘要: 这回的内容估计比较杂乱一些,因为都是些零碎的东西. 上回关于Shader组合的文章发到论坛上后,很多人都说可以用静态分支的方式来解决Shader组合爆炸的问题,比较让我惭愧的是,那时候我连静态分支是什么都不知道.Google了一下才知道,所谓的静态分支原来是指shader在正式运行前,可以把该怎么分支预先计算出来,然后在所有的后续计算中都统一按照这种分支来走计算流程.好像要SM3.0以上才能支持....
阅读全文
摘要: 多线程渲染模块自从写完后就一直放在那,没有用过,当时也没有大规模的场景可以测试.这两天终于把这堆被屏蔽掉的代码又激活了,并在一个规模比较大的场景中测了测.下面是一些测试数据: 测试场景,如下图: 这个场景大约使用了2000次左右的DrawCall.大部分模型使用diffusemap+lightmap绘制,少部分有法线贴图和高光贴图.没有很复杂的PixelShader.Render Targ...
阅读全文
摘要: Shader是很奇怪的代码,它的长度受到限制,它的动态分支能力很弱,它的指令很昂贵,这些都使得你很难使用一个单一的Shader来处理所有的渲染要求.而各种渲染要求的种类如此之多,如果要为每一种渲染类型都写一段专一的代码的话,那会是一件非常吃力的活,假设我们现在要写一个材质系统,我们希望它能够支持各种效果.你会发现随着支持的效果越来越多,需要写的Shader的数量会急剧上升,比如: *.一开始我们...
阅读全文