对于我们的一个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;
在上面的代码中,当使用PSD纹理时,aaaa总是(1.0,1.0,1.0,1.0),但当使用TGA纹理时则不是。
注意:将所有纹理转换为TGA(不幸的是)不是一个选项。
1)双击hypershader
中的psd文件节点2)在psd文件路径下面的属性编辑器中,你会看到一个名为"alpha to use"的选项。
3)打开"默认"的下拉菜单,选择"Alpha 1"或者你在photoshop中叫它什么。