From c7fb068ae5b51256a2ca0bd5fe44147443c62ccc Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 14 Jul 2020 19:51:15 +0800 Subject: [PATCH] add XorColor.frag --- shader/XorColor.frag | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 shader/XorColor.frag diff --git a/shader/XorColor.frag b/shader/XorColor.frag new file mode 100644 index 0000000..0ebdfa7 --- /dev/null +++ b/shader/XorColor.frag @@ -0,0 +1,49 @@ +#version 450 core + +layout(location=0) out vec4 FragColor; + +layout(binding=1) uniform ColorMaterial +{ + vec4 color; +} color_material; + +layout(binding=10) uniform WorldMatrix // hgl/math/Math.h +{ + mat4 ortho; + + mat4 projection; + mat4 inverse_projection; + + mat4 modelview; + mat4 inverse_modelview; + + mat4 mvp; + mat4 inverse_mvp; + + vec4 view_pos; + vec2 canvas_resolution; + vec2 viewport_resolution; +}fs_world; + +void main() +{ + vec2 p = 256.0 * gl_FragCoord.xy/fs_world.canvas_resolution.x; + + float x = 0.0; + + for( int i=0; i<7; i++ ) + { + vec2 a = floor(p); + vec2 b = fract(p); + + x += mod( a.x + a.y, 2.0 ) * + + // the following line implements the smooth xor + mix( 1.0, 1.5*pow(4.0*(1.0-b.x)*b.x*(1.0-b.y)*b.y,0.25), 0.0 ); + + p /= 2.0; + x /= 2.0; + } + + FragColor=vec4(color_material.color.rgb*x,1.0); +}