我正在计算多个光线和后处理着色器中屏幕空间位置的视图空间位置。 我目前的代码使用投影矩阵的逆来还原位置:
float depth = depthBuffer.Sample(sampler, uv).x;
float4 temp = mul(float4(uv.x * 2 - 1, (1 - uv.y) * 2 - 1, depth, 1), inverseProjectionMatrix);
float3 viewSpacePosition = temp.xyz / temp.w;
作为一项优化,我希望从我的着色器中删除矩阵乘法,并使用变量(如
aspect
、near-clip
和far-clip
)恢复视图空间位置。