Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int y = id.x / int(_ScreenWidth);
- int x = id.x % int(_ScreenWidth);
- // the depth-information. We get _DepthTexture from a pixelshader.
- float4 depthInfo = _DepthTexture[uint2(x, y)];
- float depthValue = depthInfo.z * _CamFar;
- // world X and Y components of our target vector
- float tanFov = tan(radians(_CamFOV / 2));
- float screenDimY = tanFov * _CamNear;
- float screenDimX = screenDimY * _CamAspect;
- // normalize screenpos from range 0..1 to range -1..1
- float4 normPos = depthInfo * 2 - 1;
- float screenPosX = screenDimX * normPos.x;
- float screenPosY = screenDimY * normPos.y;
- float screenPosZ = -_CamNear;
- float4 objInEyeSpaceVector;
- objInEyeSpaceVector.xyz = float3(screenPosX, screenPosY, screenPosZ) * depthValue / _CamNear;
- objInEyeSpaceVector.w = 1;
- float4x4 camWorldMat = float4x4(_CamWorldMatrix0, _CamWorldMatrix1, _CamWorldMatrix2, _CamWorldMatrix3);
- float4 pixelPosition = mul(camWorldMat, objInEyeSpaceVector);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement