2
我正在渲染一個場景到紋理,然後使用投影繪製具有該紋理的水平面。最我所看到的幅材上的樣品通過在視圖/投影矩陣的頂點着色器和變換頂點,然後在像素着色器他們這樣做:HLSL投影着色器
projection.x = input.projectionCoords.x/input.projectionCoords.w/2.0 + 0.5;
projection.y = input.projectionCoords.y/input.projectionCoords.w/2.0 + 0.5;
我有一個着色器執行以下操作和它也可以工作,但我不知道我在哪裏找到這個特定的代碼,或者它如何使用上面的代碼給出相同的結果。這裏是我的代碼有
頂點着色器:(世界是一個identityMatrix,viewProj是我的相機結合viewProjection矩陣):
output.position3D = mul(float4(vsin.position,1.0), world).xyz;
output.position = mul(float4(output.position3D,1.0), viewProj);
output.reflectionTexCoord.x = 0.5 * (output.position.w + output.position.x);
output.reflectionTexCoord.y = 0.5 * (output.position.w - output.position.y);
output.reflectionTexCoord.z = output.position.w;
像素着色器:
float2 projectedTexCoord = (input.reflectionTexCoord.xy/input.reflectionTexCoord.z);
什麼混淆我是使用0.5 * (output.position.w + output.position.x)
和0.5 * (output.position.w - output.position.y)
。這是如何產生相同的效果,以及w組件在這裏的含義是什麼?