From 34eb32071137ce2903ec650fac50b1ed42b01cd8 Mon Sep 17 00:00:00 2001 From: FMS-Cat Date: Sun, 14 Mar 2021 12:13:32 +0900 Subject: [PATCH] feature: even more flicky patterns --- src/shaders/flicky-particles-render.frag | 20 +++++++++++++----- src/shaders/flicky-particles-render.vert | 27 +++++++++++++----------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/shaders/flicky-particles-render.frag b/src/shaders/flicky-particles-render.frag index c88a8a9..040d7ec 100644 --- a/src/shaders/flicky-particles-render.frag +++ b/src/shaders/flicky-particles-render.frag @@ -7,11 +7,12 @@ const int MTL_UNLIT = 1; const int MODE_RECT = 0; const int MODE_GRID = 1; const int MODE_CIRCLE = 2; -const int MODE_TAMBO = 3; -const int MODE_C = 4; -const int MODE_THEREFORE = 5; -const int MODE_SPEEN = 6; -const int MODES = 7; +const int MODE_SLASHER = 3; +const int MODE_TAMBO = 4; +const int MODE_C = 5; +const int MODE_THEREFORE = 6; +const int MODE_SPEEN = 7; +const int MODES = 8; const float PI = 3.14159265; const float TAU = 6.28318531; @@ -23,6 +24,7 @@ const float TAU = 6.28318531; in float vLife; in float vMode; in vec2 vUv; +in vec2 vSize; in vec3 vNormal; in vec4 vPosition; in vec4 vDice; @@ -57,6 +59,7 @@ void main() { vec2 uv = vUv; vec2 deltaUv = abs( vec2( dFdx( uv.x ), dFdy( uv.y ) ) ); + vec2 p = ( uv * 2.0 - 1.0 ) * vSize; vec3 color = vec3( 0.0 ); @@ -100,6 +103,13 @@ void main() { color = vec3( 1.0 ); + } else if ( mode == MODE_SLASHER ) { + float shape = step( 0.0, sin( 40.0 * ( p.x + p.y + 0.3 * time ) ) ); + + if ( shape < 0.5 ) { discard; } + + color = vec3( 1.0 ); + } else if ( mode == MODE_TAMBO ) { // 田 if ( vLife < 0.7 ) { discard; } diff --git a/src/shaders/flicky-particles-render.vert b/src/shaders/flicky-particles-render.vert index dc9ed07..34a348b 100644 --- a/src/shaders/flicky-particles-render.vert +++ b/src/shaders/flicky-particles-render.vert @@ -3,11 +3,12 @@ const int MODE_RECT = 0; const int MODE_GRID = 1; const int MODE_CIRCLE = 2; -const int MODE_TAMBO = 3; -const int MODE_C = 4; -const int MODE_THEREFORE = 5; -const int MODE_SPEEN = 6; -const int MODES = 7; +const int MODE_SLASHER = 3; +const int MODE_TAMBO = 4; +const int MODE_C = 5; +const int MODE_THEREFORE = 6; +const int MODE_SPEEN = 7; +const int MODES = 8; const float HUGE = 9E16; const float PI = 3.14159265; const float TAU = 6.283185307; @@ -25,6 +26,7 @@ in vec2 position; out float vLife; out float vMode; out vec2 vUv; +out vec2 vSize; out vec3 vNormal; out vec4 vPosition; out vec4 vDice; @@ -67,23 +69,24 @@ void main() { // == compute size =============================================================================== vPosition = vec4( tex0.xyz, 1.0 ); - vec2 size; - if ( mode == MODE_RECT ) { - size = 1.0 * dice.xy; + vSize = 1.0 * dice.xy; } else if ( mode == MODE_GRID ) { - size = vec2( 0.25 ); + vSize = vec2( 0.25 ); } else if ( mode == MODE_CIRCLE ) { - size = vec2( 3.0 * dice.x * dice.x ); + vSize = vec2( 3.0 * dice.x * dice.x ); + + } else if ( mode == MODE_SLASHER ) { + vSize = vec2( 0.6, 0.2 ) * dice.xy; } else if ( mode == MODE_TAMBO || mode == MODE_C || mode == MODE_THEREFORE || mode == MODE_SPEEN ) { - size = vec2( 0.2 * dice.x ); + vSize = vec2( 0.2 * dice.x ); } - vec2 shape = position * size; + vec2 shape = position * vSize; vPosition.xy += shape;