36 lines
1.2 KiB
GLSL
36 lines
1.2 KiB
GLSL
#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
|