Unity3d 有没有办法在着色器中合并统一的纹理?

Unity3d 有没有办法在着色器中合并统一的纹理?,unity3d,shader,uv-mapping,Unity3d,Shader,Uv Mapping,我正在尝试在一个网格渲染器中使用多个图像叠加层来设置2D游戏对象的动画。我有几层不同的纹理,每一层都是一个透明背景的图像 我找到了一种通过编程创建矩形网格并使用UV贴图对其中的材质进行分层的方法。不幸的是,Unity现在必须分别渲染每个材质层,尽管它们都在一个网格内。这会导致绘制调用的数量非常低。我可以看到,每种材质现在都有自己的着色器 我是否需要在Unity之外将所有图像编辑成一个巨大的图像,并在网格内的单个材质中使用UV贴图显示其中的一部分 或者有什么方法可以通过着色器实现这一点?创建自己的

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

我找到了一种通过编程创建矩形网格并使用UV贴图对其中的材质进行分层的方法。不幸的是,Unity现在必须分别渲染每个材质层,尽管它们都在一个网格内。这会导致绘制调用的数量非常低。我可以看到,每种材质现在都有自己的着色器

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


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

创建自己的着色器(代码或ShaderGraph)。着色器可以渲染多个纹理(层)。你可以通过alpha/transparency任意混合。

是的-你想要的是一个可以将它们混合在一起的着色器。@Fattie,我是一个非常熟悉着色器的新手。你能给我介绍一个例子着色器,它可以在Unity中实现这一点吗?或者是一些可以参考的教程或文档?谢谢你。@Mir-我也能帮忙。但是我们需要更多的信息。统一版本?渲染管道?(内置、HDRP、URP(以前称为LWRP))等。您更喜欢代码还是Shadergraph?如果你一点也不在乎,最简单的方法就是使用ShaderGraph。@KYL3R,我现在使用的是Unity的最新版本2020.2.7,带有内置管道。我更喜欢代码,但我计划很快研究Shadergraph。对于内置代码着色器,曲面着色器是最简单的。(与顶点片段着色器相比)。在您的情况下,定义多个输入,并使用alpha作为因子将它们添加到图层中。