From 1e7fd38bb6b6575287f3e4867c4797f97125593d Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Sat, 8 Apr 2023 02:01:25 +0100 Subject: [PATCH] asdasd --- src/Orange/Render/Shaders/fs_HDRTest.frag | 62 +++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/Orange/Render/Shaders/fs_HDRTest.frag b/src/Orange/Render/Shaders/fs_HDRTest.frag index b8f5110..bfeea18 100644 --- a/src/Orange/Render/Shaders/fs_HDRTest.frag +++ b/src/Orange/Render/Shaders/fs_HDRTest.frag @@ -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);