custommods
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
//Thanks to Jessie for dithering
|
||||
float Bayer2 (vec2 c) { c = 0.5 * floor(c); return fract(1.5 * fract(c.y) + c.x); }
|
||||
float Bayer4 (vec2 c) { return 0.25 * Bayer2 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer8 (vec2 c) { return 0.25 * Bayer4 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer16 (vec2 c) { return 0.25 * Bayer8 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer32 (vec2 c) { return 0.25 * Bayer16 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer64 (vec2 c) { return 0.25 * Bayer32 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer128(vec2 c) { return 0.25 * Bayer64 (0.5 * c) + Bayer2(c); }
|
||||
float Bayer256(vec2 c) { return 0.25 * Bayer128(0.5 * c) + Bayer2(c); }
|
||||
@@ -0,0 +1,15 @@
|
||||
//Spheremap Transform from https://aras-p.info/texts/CompactNormalStorage.html
|
||||
vec2 EncodeNormal(vec3 n) {
|
||||
float f = sqrt(n.z * 8.0 + 8.0);
|
||||
return n.xy / f + 0.5;
|
||||
}
|
||||
|
||||
vec3 DecodeNormal(vec2 enc) {
|
||||
vec2 fenc = enc * 4.0 - 2.0;
|
||||
float f = dot(fenc,fenc);
|
||||
float g = sqrt(1.0 - f / 4.0);
|
||||
vec3 n;
|
||||
n.xy = fenc * g;
|
||||
n.z = 1.0 - f / 2.0;
|
||||
return n;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//Jitter offset from Chocapic13
|
||||
uniform float framemod8;
|
||||
uniform float velocity;
|
||||
|
||||
vec2 jitterOffsets[8] = vec2[8]( // LiteTAA Jitter
|
||||
vec2( 0.125,-0.375),
|
||||
vec2(-0.125, 0.375),
|
||||
vec2( 0.625, 0.125),
|
||||
vec2( 0.375,-0.625),
|
||||
vec2(-0.625, 0.625),
|
||||
vec2(-0.875,-0.125),
|
||||
vec2( 0.375,-0.875),
|
||||
vec2( 0.875, 0.875)
|
||||
);
|
||||
|
||||
vec2 TAAJitter(vec2 coord, float w) {
|
||||
vec2 offset = jitterOffsets[int(framemod8)] * (w / vec2(viewWidth, viewHeight));
|
||||
offset *= max(1.0 - velocity * 400.0, 0.0) * 0.125;
|
||||
return coord + offset;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//Jitter offset from Chocapic13
|
||||
uniform float framemod8;
|
||||
uniform float velocity;
|
||||
|
||||
vec2 jitterOffsets[8] = vec2[8]( // IntenseTAA Jitter
|
||||
vec2( 0.125,-0.375),
|
||||
vec2(-0.125, 0.375),
|
||||
vec2( 0.625, 0.125),
|
||||
vec2( 0.375,-0.625),
|
||||
vec2(-0.625, 0.625),
|
||||
vec2(-0.875,-0.125),
|
||||
vec2( 0.375,-0.875),
|
||||
vec2( 0.875, 0.875)
|
||||
);
|
||||
|
||||
vec2 TAAJitter(vec2 coord, float w) {
|
||||
vec2 offset = jitterOffsets[int(framemod8)] * (w / vec2(viewWidth, viewHeight));
|
||||
offset *= max(1.0 - velocity * 400.0, 0.0);
|
||||
return coord + offset;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
//Previous frame reprojection from Chocapic13
|
||||
vec2 Reprojection(vec3 pos) {
|
||||
pos = pos * 2.0 - 1.0;
|
||||
|
||||
vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0);
|
||||
viewPosPrev /= viewPosPrev.w;
|
||||
viewPosPrev = gbufferModelViewInverse * viewPosPrev;
|
||||
|
||||
vec3 cameraOffset = cameraPosition - previousCameraPosition;
|
||||
cameraOffset *= float(pos.z > 0.56);
|
||||
|
||||
vec4 previousPosition = viewPosPrev + vec4(cameraOffset, 0.0);
|
||||
previousPosition = gbufferPreviousModelView * previousPosition;
|
||||
previousPosition = gbufferPreviousProjection * previousPosition;
|
||||
return previousPosition.xy / previousPosition.w * 0.5 + 0.5;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
|
||||
#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)
|
||||
|
||||
vec3 ScreenToView(vec3 pos) {
|
||||
vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x,
|
||||
gbufferProjectionInverse[1].y,
|
||||
gbufferProjectionInverse[2].zw);
|
||||
vec3 p3 = pos * 2.0 - 1.0;
|
||||
vec4 viewPos = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];
|
||||
return viewPos.xyz / viewPos.w;
|
||||
}
|
||||
|
||||
vec3 ViewToWorld(vec3 pos) {
|
||||
return mat3(gbufferModelViewInverse) * pos + gbufferModelViewInverse[3].xyz;
|
||||
}
|
||||
|
||||
vec3 WorldToShadow(vec3 pos) {
|
||||
vec3 shadowpos = mat3(shadowModelView) * pos + shadowModelView[3].xyz;
|
||||
return projMAD(shadowProjection, shadowpos);
|
||||
}
|
||||
Reference in New Issue
Block a user