我正在为自定义的瓦片图块网格创建一个自定义着色器,需要接收不同纹理的纹理2D数组和用于编码每个瓦片所对应纹理索引的数据纹理(本例中命名为IndexMap)。

为了让我的实验变得简单,我建立了一个10x10的正方形作为我的瓦片图块网格,纹理2D数组中包含3张2048x2048的纹理,以及10x10的IndexMap,每个像素的红通道都有一个在0-2范围的随机值。为了做到这一点,我只是生成了随机的红通道值,绿通道和蓝通道都是0,编码成PNG图片(不是理想的方法,但这只是用于实验)。

我的想法是将IndexMap采样,乘以255,用0.0-1.0范围转换到0-255范围,取整后把该值输入Sample Texture 2D节点的索引中。这将在每个瓦片处得出正确的纹理索引。至少,那是我的假设。在实际计算中,整个最终纹理就是这片草地纹理(纹理0在数组中)。即使我绕过对结果的四舍五入,也没有解决问题。

我怀疑可能是用于采样IndexMap的UVT错误,但是我始终无法确定到底是什么错误。

我可能在逻辑或计算上有所错误,所以我希望那些在ShaderGraph / 皮肤方面有经验的人可能知道我不知道的知识。