现在我正在做一个项目,该项目涉及将 splatmaps 应用于生成的网格。我正在尝试使用内置的地形着色器来实现这一点,但我遇到了一个涉及“FirstPass”和“AddPass”着色器的问题。
很清楚这些着色器应该如何工作。应用 FirstPass 并处理 4 个纹理和一个控制(splat)纹理。如果用户应用超过 4 个纹理,则 AddPass(与 FirstPass 非常相似)在编译时被“添加”为另一个着色器通道。根据用户对地形应用的纹理数量(每次通过 4 个纹理),添加任意次数的 AddPass。
地形引擎是如何实现这种多通道效果的呢?所需的通行证数量可以在编译时确定,所以我不认为这是不可能的......我只是不知道从这里去哪里。我认为这可能与 FirstPass 底部的 Dependency 属性有关,但我不确定。
Dependency "AddPassShader" = "Hidden/TerrainEngine/Splatmap/Standard-AddPass"
Dependency "BaseMapShader" = "Hidden/TerrainEngine/Splatmap/Standard-Base"
如果有人对此有任何见解,请告诉我。为方便起见,我已将Unity 存档中的FirstPass、AddPass和TerrainEngine.cginc着色器文件上传到 pastebin。
谢谢!