对于我们的一位 3D 艺术家,我已将着色器从 Unity3D 移植并扩展至 Maya。Unity3D 中的着色器使用 PSD 文件作为纹理的输入,并利用其中一个纹理的 Alpha 通道作为高度图。
在 Maya 中,似乎 alpha 通道丢失了,因为它始终为 1。我们使用 PSD 和 PNG 文件对此进行了测试。但是,当使用 TGA 文件时,可以按预期使用高度图,并且着色器可以正常工作。
下面是一些 Cg 代码来说明我的意思:
float4 bottomColor = tex2D(RGBA_Texture2, IN.TexCoord.xy);
float4 height = float4(1.0f) - bottomColor.aaaa;
在上面的代码中,bottomColor.aaaa 在使用 PSD 纹理时始终为 (1.0, 1.0, 1.0, 1.0),但在使用 TGA 纹理时则不是。
注意:将所有纹理转换为 TGA(不幸的是)不是一种选择。