Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. int y = id.x / int(_ScreenWidth);
  2. int x = id.x % int(_ScreenWidth);
  3. // the depth-information. We get _DepthTexture from a pixelshader.
  4. float4 depthInfo = _DepthTexture[uint2(x, y)];
  5. float depthValue = depthInfo.z * _CamFar;
  6. // world X and Y components of our target vector
  7. float tanFov = tan(radians(_CamFOV / 2));
  8. float screenDimY = tanFov * _CamNear;
  9. float screenDimX = screenDimY * _CamAspect;
  10. // normalize screenpos from range 0..1 to range -1..1
  11. float4 normPos = depthInfo * 2 - 1;
  12. float screenPosX = screenDimX * normPos.x;
  13. float screenPosY = screenDimY * normPos.y;
  14. float screenPosZ = -_CamNear;
  15. float4 objInEyeSpaceVector;
  16. objInEyeSpaceVector.xyz = float3(screenPosX, screenPosY, screenPosZ) * depthValue / _CamNear;
  17. objInEyeSpaceVector.w = 1;
  18. float4x4 camWorldMat = float4x4(_CamWorldMatrix0, _CamWorldMatrix1, _CamWorldMatrix2, _CamWorldMatrix3);
  19. float4 pixelPosition = mul(camWorldMat, objInEyeSpaceVector);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement