大概说一下
        因为ShaderConst数量有限
                1. VS1.0中有96个
                2. VS2.0中有256个
                每个是一个float4,所以可供描述Instance的信息量有限

        根据不同需要,实现分为3种:
        1.  需要3个轴Rotation和Translate的物件,使用float4x4描述一个Instance
                     VS1.0一个Batch可以提交20个,VS2.0是60个
        2.  需要Translate和y轴Rotation,使用float4描述一个Instance,xyz是position,w是rotation
                     VS1.0一个Batch可以提交80个,VS2.0是240个
        3.  植物,使用float4描述一个Instance,xyz是position,w是sway
                     VS1.0一个Batch可以提交80个,VS2.0是240个
                     顺便,在计算mvp时,直接忽略掉view matrix,即是billboard ^_^

        我在计算时都减去了16,预留给其他的uniform。
        而Instance index我没有修改Vertex的格式,而是直接插在了Diffuse.r中,取的时候int index = int(diffuse.r * 256);就好了。

        当然,如果是SM3.0就不必这么辛苦了。

相关文章:

  • 2021-11-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2021-10-09
  • 2022-12-23
猜你喜欢
  • 2022-01-08
  • 2022-01-19
  • 2022-03-06
  • 2022-01-09
  • 2022-12-23
  • 2021-05-23
  • 2022-02-09
相关资源
相似解决方案