zoukankan      html  css  js  c++  java
  • 终于把Shader Instancing加到引擎里去了

    大概说一下
            因为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就不必这么辛苦了。
  • 相关阅读:
    js 提示框的实现---组件开发之(一)
    js 原型链
    js 哈希路由原理实现
    js 弹窗的实现
    js 滑动门的实现
    Delphi IDFtp用法,包含断点续传
    memortstream Base64编码和filestream base64编码不同
    Delphi另一个多线程函数:BeginThread用法
    delphi 讲的比较详细的多线程(推荐)
    多线程简单实用
  • 原文地址:https://www.cnblogs.com/oiramario/p/296845.html
Copyright © 2011-2022 走看看