其实很简单,
首先创建三维纹理
D3DXCreateVolumeTextureFromFile(pd3dDevice, szFile, &m_pVolumeTexture);
然后在shader里进行天空颜色和云颜色的插值即可;使用红色扰动时,采样三维纹理
//天空颜色
float4 sky = float4(0.0, 0.0, 1.0, 1.0 );
//云彩颜色
float4 cloudColor = float4(1.0, 1.0, 1.0, 1.0 );
//返回红色
float noisy = tex3D(MeshVolumeSampler, In.my3d.xyz / 115.0 ).r;
float lrp = noisy * 4 - 1.0;
//在天空和云彩之间插值
return lerp( cloudColor, sky, saturate(lrp));
如果想让云彩动起来,进行纹理动画即可。