This commit is contained in:
Joshua Ashton 2023-04-08 02:01:25 +01:00
parent 7899b08f3b
commit 1e7fd38bb6
1 changed files with 62 additions and 0 deletions

View File

@ -41,6 +41,30 @@ vec3 pqToNits(vec3 pq)
return 10000.0 * pow(num / den, vec3(oo_m1));
}
vec3 linearToSrgb(vec3 color) {
bvec3 isLo = lessThanEqual(color, vec3(0.0031308f));
vec3 loPart = color * 12.92f;
vec3 hiPart = pow(color, vec3(5.0f / 12.0f)) * 1.055f - 0.055f;
return mix(hiPart, loPart, isLo);
}
vec4 linearToSrgb(vec4 color) {
return vec4(linearToSrgb(color.rgb), color.a);
}
vec3 srgbToLinear(vec3 color) {
bvec3 isLo = lessThanEqual(color, vec3(0.04045f));
vec3 loPart = color / 12.92f;
vec3 hiPart = pow((color + 0.055f) / 1.055f, vec3(12.0f / 5.0f));
return mix(hiPart, loPart, isLo);
}
vec4 srgbToLinear(vec4 color) {
return vec4(srgbToLinear(color.rgb), color.a);
}
float gold_noise(vec2 xy, float seed)
{
const float PHI = 1.61803398874989484820459;
@ -83,12 +107,50 @@ vec3 hsv_to_rgb(vec3 hsv)
return vec3( 0 );
}
vec4 plagfrog_o(vec4 outcolor, vec4 color, vec2 coord, float x, float y, float sqr, float h, float w)
{
float sqd = ( ( coord.x - x ) / w ) * ( ( coord.x - x ) / w ) + ( ( coord.y - y ) / h ) * ( ( coord.y - y ) / h );
float a = 1.0 - clamp(sqd-sqr,0.0,1.0);
vec4 ret = (color * a) + (outcolor * (1-a));
return ret;
}
void main()
{
outColor = vec4(0.0, 0.0, 0.0, 1.0);
int nextTest = 0;
if (test == nextTest++)
{
float bodyBrightness = targetNits * 0.15;
vec2 coord = (gl_FragCoord.xy / 2.2) + vec2(-20, 50);
vec4 colg = srgbToLinear(vec4( 0.46, 0.69, 0.33, 1.0 ));
vec4 collg = srgbToLinear(vec4( 0.77, 0.89, 0.70, 1.0 ));
vec4 coldg = srgbToLinear(vec4( 0.36, 0.56, 0.23, 1.0 ));
vec4 colw = vec4(0.0);
vec4 colb = srgbToLinear(vec4( 100000.0, 0.0, 0.0, 1.0 ));
vec4 sdfOutColor = vec4( 0.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colg, coord, 192.0, 165.0, 1280.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colg, coord, 320.0, 165.0, 1280.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colg, coord, 256.0, 256.0, 16384.0, 0.75, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, collg, coord, 256.0, 365.0, 16384.0, 0.75, 1.25 ) * sdfOutColor.a;
sdfOutColor = plagfrog_o( sdfOutColor, colw, coord, 192.0, 165.0, 512.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colw, coord, 320.0, 165.0, 512.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colb, coord, 192.0, 165.0, 128.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, colb, coord, 320.0, 165.0, 128.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, coldg, coord, 224.0, 240.0, 64.0, 1.0, 1.0 );
sdfOutColor = plagfrog_o( sdfOutColor, coldg, coord, 288.0, 240.0, 64.0, 1.0, 1.0 );
sdfOutColor *= bodyBrightness;
outColor = vec4(nitsToPq(sdfOutColor.rgb), 1.0);
}
else if (test == nextTest++)
{
const vec3 start = vec3(0.0);
const vec3 end = vec3(targetNits);