当我们实现天空盒,天空球的时候经常会用到这个技术
当我们要得到某点p的颜色值时,从天空盒的中心指向某点p的射线和天空盒相交,相交点采样的纹理值就是p点的颜色值
在HLSL中,我们使用TextureCube来保存这种纹理
当我们想要反射周围的物体时,比如通过球将周围的环境反射出来
我们可以使用这个方式:
e为眼睛所在的位置,p是物体上的点,n是物体在p点的法线,v是e关于n的反射线
v和天空盒的交点,采样得到的颜色即为p点的颜色
这样就可以实现将周围的环境反射到物体上
效果如下:
那些球将周围的环境反射到表面上了
在实现显示天空盒/天空球时
VertexShader如下:
cbuffer PerMatrix : register( b0 )
{
float4x4 gWorldVie