|
|
@@ -0,0 +1,35 @@
|
|
|
+vec4 GetScreenPos(vec4 clipPos)
|
|
|
+{
|
|
|
+ return vec4(
|
|
|
+ clipPos.x * cGBufferOffsets.z + cGBufferOffsets.x * clipPos.w,
|
|
|
+ -clipPos.y * cGBufferOffsets.w + cGBufferOffsets.y * clipPos.w,
|
|
|
+ 0.0,
|
|
|
+ clipPos.w);
|
|
|
+}
|
|
|
+
|
|
|
+vec2 GetScreenPosPreDiv(vec4 clipPos)
|
|
|
+{
|
|
|
+ return vec2(
|
|
|
+ clipPos.x / clipPos.w * cGBufferOffsets.z + cGBufferOffsets.x,
|
|
|
+ -clipPos.y / clipPos.w * cGBufferOffsets.w + cGBufferOffsets.y);
|
|
|
+}
|
|
|
+
|
|
|
+vec3 GetFarRay(vec4 clipPos)
|
|
|
+{
|
|
|
+ vec3 viewRay = vec3(
|
|
|
+ clipPos.x / clipPos.w * cFrustumSize.x,
|
|
|
+ clipPos.y / clipPos.w * cFrustumSize.y,
|
|
|
+ cFrustumSize.z);
|
|
|
+
|
|
|
+ return cCameraRot * viewRay;
|
|
|
+}
|
|
|
+
|
|
|
+vec3 GetNearRay(vec4 clipPos)
|
|
|
+{
|
|
|
+ vec3 viewRay = vec3(
|
|
|
+ clipPos.x / clipPos.w * cFrustumSize.x,
|
|
|
+ clipPos.y / clipPos.w * cFrustumSize.y,
|
|
|
+ 0.0);
|
|
|
+
|
|
|
+ return (cCameraRot, viewRay) * cDepthMode.z;
|
|
|
+}
|