custommods

This commit is contained in:
samsonsin
2025-05-29 23:31:29 +02:00
committed by samsonsin
parent b2dc5eba36
commit ee85cdd98b
799 changed files with 19536 additions and 0 deletions

View File

@@ -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); }

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}