Instancing with Hardware Skinning
九十九夜,失落的奥德赛,似乎都用到这些技术。以前一直认为instancing很容易地就带上了hardware skining的,认真看了以后发觉不是这么回事。
不过,在sm 3.0上如果vertex texture fetch代价还是很大的情况下,很难将bone matrix编码在fp texture中,更何况每帧更新texture还很成问题。
所以想想在vs_2_0 的256 constant register配置下,bone matrix压缩为2个float4——translation和rotation,matrix到shader中再展开,这样20根骨骼的一个instance data只需要2×20=40个constant register,这样256个register中可以容纳6个instance data。如果同屏2000个人的话,勉强333次draw call可以对付对付……
不过,在sm 3.0上如果vertex texture fetch代价还是很大的情况下,很难将bone matrix编码在fp texture中,更何况每帧更新texture还很成问题。
所以想想在vs_2_0 的256 constant register配置下,bone matrix压缩为2个float4——translation和rotation,matrix到shader中再展开,这样20根骨骼的一个instance data只需要2×20=40个constant register,这样256个register中可以容纳6个instance data。如果同屏2000个人的话,勉强333次draw call可以对付对付……