有没有办法在着色器中合并 Unity 中的纹理?

问题描述

我正在尝试在一个网格渲染器中使用多个重叠的图像层为 2D 游戏对象设置动画。我有好几层不同的纹理,每一层都是透明背景的图像。

我找到了一种以编程方式创建矩形网格并使用 UV 映射对其中的材质进行分层的方法。不幸的是,Unity 现在必须单独渲染这些材质层中的每一个,尽管它们都在一个网格中。这导致绘制调用的效率非常低。我可以看到每个材质现在也有自己的着色器。

我是否需要在 Unity 之外将我的所有图像编辑成一张巨大的图像,并在网格内的单一材质中使用 UV 映射显示其中的一部分?

或者有什么方法可以通过着色器实现这一点?

解决方法

创建您自己的着色器(代码或 ShaderGraph)。着色器可以渲染多个纹理(层)。您可以根据自己的喜好通过 alpha/transprency 进行混合。