GPU实例化的详细步骤

您所在的位置:网站首页 gpu实例化的限制条件有哪些 GPU实例化的详细步骤

GPU实例化的详细步骤

2024-07-12 12:45| 来源: 网络整理| 查看: 265

GPU Instancing

用于对多个对象(网格一样,材质一样,但是材质属性不一样)合批,单个合批最大上限为511个对象。 硬件要支持:OpenGL3.0以上支持。 C#代码: GameObject tree = Instantiate(prefab, pos, transform)

shader 实现 #pragma multi_compile_instancing 添加此指令后会使材质面板上曝露Instaning开关,同时会生成相应的Instancing变体 UNITY_VERTEX_INPUT_INSTANCE_ID 在顶点着色器的输入(appdata)和输出(v2f,可选项)中添加,声明一个InstanceID UNITY_INSTANCING_BUFFER_START(arrayName) UNITY_INSTANCING_BUFFER_END(arrayName) 将每个你需要实例化的属性都封装在这个常量寄存器中 UNITY_DEFINE_INSTANCED_PROP(type, name) 在上面的START和END间把需要的每条属性加进来 UNITY_SETUP_INSTANCE_ID(v); 需放在顶点着色器/片断着色器(可选)中最开始的地方,这样才能访问到全局的unity_InstanceID UNITY_TRANSFER_INSTANCE_ID(v, o); 当需要将实例化ID传到片断着色器时,在顶点着色器中添加 UNITY_ACCESS_INSTANCED_PROP(arrayName, propName) 在片断着色器中访问具体的实例化变量 在C#中使用材质属性块设置材质属性 MaterialPropertyBlock prop = new MaterialPropertyBlock(); prop.SetColor("_Color", newCol); // 这里修改的属性,一定要在shader中用instance声明好,不然会打断instance的批次. tree.GetComponentInChildren().SetPropertyBlock(prop);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3