|
|
[em4] [em4]投影阴影,
我使用hlsl来实现的,先从灯光的角度,render一个512x512的图
但是在计算投影贴图的时候出现一个问题,贴图确实投影在表面上了,可是贴图是阵列重复贴出来,我如何不让他重复?
还有,我投影贴图的矩阵 = 世界转换矩阵 x 灯光观察矩阵 x 灯光投影矩阵 ,按照书上所说,就可以将贴图投影在正确的位置,可是我的程序显示出来,贴图的位置不对,有可能是那里出的问题?
书上说投影贴图矩阵最后要加一个 调整矩阵,即将顶点缩放1/2,再+ 1/2,让最后顶点值都在0~1之间,可是我加了这个矩阵就是错误的结果,不加反而正确
void VertScene( float4 Pos : POSITION,
float2 Tex : TEXCOORD0,
out float4 oPos : POSITION,
out float2 oTex : TEXCOORD0,
out float4 oTex1 : TEXCOORD1 )
{
oPos = mul( Pos, g_mCamFinal );
oPos = mul ( oPos , g_mCamProj);
//oTex1 = mul( Pos , g_mLightFinal );
oTex1 = mul( Pos , g_mLightWorld );
oTex1 = mul( oTex1 , g_mLightView );
oTex1 = mul( oTex1 , g_mLightProj );
//oTex1 = mul( oTex1 , g_mLightTemp ); //调整矩阵,去掉注释,结果就是错误的
oTex = Tex;
}
void PixScene( float2 oTex : TEXCOORD0,
float4 oTex1 : TEXCOORD1,
out float4 Color : COLOR )
{
float4 col = tex2D(g_samScene, oTex);
float4 colshadow= tex2Dproj(g_samShadow, oTex1);
Color = (col + colshadow) / 2;
}
|
|