DirectX11 Alpha通道

Alpha通道

1. 漫反射贴图控制Alpha通道

在RGB混合中,源alpha分量可以用来控制透明度。混合方程中的源颜色来自于像素着色器。我们会在最后一章中看到,我们将漫反射材质的alpha值作为像素着色器的alpha输出。也就是说,漫反射贴图的alpha通道可以用来控制透明度。

float4 PS(VertexOUT pin) : SV_Target
{
    …
    // 从漫反射材质和纹理中提取alpha
    litColor. a  =  gMaterial.Diffuse.a * texColor.a;

    return litColor;
}

2. 添加alpha通道

你可以使用任何一款流行的图像处理软件为纹理添加alpha通道,比如Adobe Photoshop,然后使用一种支持alpha通道的格式(例如,32位BMP格式或DDS格式)保存图像文件。不过,这里我们会展示另外一种方法,使用我们在前一章介绍的DXTex实用工具插入alpha通道。

假设我们有两幅图像:一幅是RGB彩色图像,另一幅是灰阶图像。这幅灰阶图像将作为alpha通道插入到彩色图像中(参见下图)。


( RGB图像(左)和灰阶图像(右)。灰阶图像将插入到纹理的alpha通道中。)

现在,运行DXTex工具程序,打开本章演示程序文件夹下的fire_rgb.bmp文件。火焰纹理会被自动载入为一个24位RGB纹理(即,D3DFMT_R8G8B8),其中红色、绿色和蓝色分量各占8位。我们必须为纹理指定一种支持alpha通道的格式,比如32位ARGB纹理格式D3DFMT_A8R8G8B8或支持alpha通道的D3DFMT_DXT5压缩格式。在菜单栏中选择Format>Change Surface Format命令,弹出如图9.7所示的对话框。选择DXT5格式,单击OK。


(修改纹理格式。这样就创建了一幅带有alpha通道的压缩纹理。)

我们下一步要做的是向alpha通道导入数据。我们要把图9.6所示的8位灰阶贴图导入到alpha通道中。在菜单栏中选择File>Open Onto Alpha Channel Of This Texture命令,然后再选择Format>Generate Mip Maps命令。此时会弹出一个对话框,要求我们指定包含alpha数据的图像文件的位置。选择本章演示程序文件夹下的fire_a.bmp文件。图9.8展示了插入alpha通道后的程序界面——可以看到纹理已经与背景颜色混合在一起了。我们可以通过选择View> Change Background Color…菜单命令改变背景颜色。或者选择View>Alpha Channel Only命令,让窗口只显示alpha通道。

DirectX11 Alpha通道_第1张图片
(带有一个alpha通道的纹理。火焰纹理已经与蓝色背景混合在一起了。)

现在,指定一个文件名(比如,fire.dds),保存纹理。

你可能感兴趣的:(透明,游戏开发,Direct3D,directx11,alpha通道)