#if !defined REPROJECTION_FILE #define REPROJECTION_FILE // Previous frame reprojection from Chocapic13 vec2 Reprojection(vec3 pos, vec3 cameraOffset) { pos = pos * 2.0 - 1.0; vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0); viewPosPrev /= viewPosPrev.w; viewPosPrev = gbufferModelViewInverse * viewPosPrev; vec4 previousPosition = viewPosPrev + vec4(cameraOffset, 0.0); previousPosition = gbufferPreviousModelView * previousPosition; previousPosition = gbufferPreviousProjection * previousPosition; return previousPosition.xy / previousPosition.w * 0.5 + 0.5; } vec3 FHalfReprojection(vec3 pos) { pos = pos * 2.0 - 1.0; vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0); viewPosPrev /= viewPosPrev.w; viewPosPrev = gbufferModelViewInverse * viewPosPrev; return viewPosPrev.xyz; } vec2 SHalfReprojection(vec3 playerPos, vec3 cameraOffset) { vec4 proPos = vec4(playerPos + cameraOffset, 1.0); vec4 previousPosition = gbufferPreviousModelView * proPos; previousPosition = gbufferPreviousProjection * previousPosition; return previousPosition.xy / previousPosition.w * 0.5 + 0.5; } #endif