From ea83dfb89221b6ad1d738e703c04396bbb9c8dbb Mon Sep 17 00:00:00 2001 From: ReVHeaDRaZ Date: Sat, 17 Dec 2022 23:14:51 +1100 Subject: [PATCH] Edited Bloom. Added Glowing Mouse. Updated README --- README.md | 2 ++ content/razbloom.frag | 52 ++++++++++++++++++++++++++----------------- content/razdot.frag | 18 +++++++-------- src/Main.cpp | 21 +++++++++++------ src/Razshaders.h | 4 ++-- src/ui.h | 12 +++++----- 6 files changed, 64 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index e8d7a47..e8ceb27 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ Spiromorph - A port of [mickjc750/Spiromorph](https://github.com/mickjc750/Spiro | HOME and END- | Change Amount of Envelopes In Phase| | INS and DEL- | Change Amplitude| | H- | HUD ON/OFF | +| W and S- | Bloom Shader Intensity | +| A and D- | Bloom Shader Sharpness | # Executable for WIN32 Just download the release, unzip and run SFML-Spiromorph.exe diff --git a/content/razbloom.frag b/content/razbloom.frag index 70d982d..09c9d5c 100644 --- a/content/razbloom.frag +++ b/content/razbloom.frag @@ -12,49 +12,59 @@ void main(){ vec4 sum=vec4(0); vec2 texcoord=gl_FragCoord.xy/iResolution.xy; float blurSize= 1. / blurSizeAmount; - //vec2 texcoord=gl_TexCoord[0].xy; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y))*.20; - sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y))*.13; - sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y))*.13; - sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+blurSize))*.13; - sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-blurSize))*.13; + sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+blurSize))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-blurSize))*.12; - sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y+blurSize))*.11; - sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y-blurSize))*.11; - sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y+blurSize))*.11; - sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y-blurSize))*.11; + sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y+blurSize))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x+blurSize,texcoord.y-blurSize))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y+blurSize))*.12; + sum+=texture2D(currentTexture,vec2(texcoord.x-blurSize,texcoord.y-blurSize))*.12; sum+=texture2D(currentTexture,vec2(texcoord.x+2.*blurSize,texcoord.y))*.09; sum+=texture2D(currentTexture,vec2(texcoord.x-2.*blurSize,texcoord.y))*.09; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+2.*blurSize))*.09; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-2.*blurSize))*.09; - sum+=texture2D(currentTexture,vec2(texcoord.x+2.*blurSize,texcoord.y+2*blurSize))*.08; - sum+=texture2D(currentTexture,vec2(texcoord.x+2.*blurSize,texcoord.y-2*blurSize))*.08; - sum+=texture2D(currentTexture,vec2(texcoord.x-2*blurSize,texcoord.y+2.*blurSize))*.08; - sum+=texture2D(currentTexture,vec2(texcoord.x-2*blurSize,texcoord.y-2.*blurSize))*.08; + sum+=texture2D(currentTexture,vec2(texcoord.x+2.*blurSize,texcoord.y+2*blurSize))*.09; + sum+=texture2D(currentTexture,vec2(texcoord.x+2.*blurSize,texcoord.y-2*blurSize))*.09; + sum+=texture2D(currentTexture,vec2(texcoord.x-2*blurSize,texcoord.y+2.*blurSize))*.09; + sum+=texture2D(currentTexture,vec2(texcoord.x-2*blurSize,texcoord.y-2.*blurSize))*.09; sum+=texture2D(currentTexture,vec2(texcoord.x+3.*blurSize,texcoord.y))*.07; sum+=texture2D(currentTexture,vec2(texcoord.x-3.*blurSize,texcoord.y))*.07; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+3.*blurSize))*.07; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-3.*blurSize))*.07; - sum+=texture2D(currentTexture,vec2(texcoord.x+3.*blurSize,texcoord.y+3*blurSize))*.06; - sum+=texture2D(currentTexture,vec2(texcoord.x+3.*blurSize,texcoord.y-3*blurSize))*.06; - sum+=texture2D(currentTexture,vec2(texcoord.x-3*blurSize,texcoord.y+3.*blurSize))*.06; - sum+=texture2D(currentTexture,vec2(texcoord.x-3*blurSize,texcoord.y-3.*blurSize))*.06; + sum+=texture2D(currentTexture,vec2(texcoord.x+3.*blurSize,texcoord.y+3*blurSize))*.07; + sum+=texture2D(currentTexture,vec2(texcoord.x+3.*blurSize,texcoord.y-3*blurSize))*.07; + sum+=texture2D(currentTexture,vec2(texcoord.x-3*blurSize,texcoord.y+3.*blurSize))*.07; + sum+=texture2D(currentTexture,vec2(texcoord.x-3*blurSize,texcoord.y-3.*blurSize))*.07; sum+=texture2D(currentTexture,vec2(texcoord.x+4.*blurSize,texcoord.y))*.05; sum+=texture2D(currentTexture,vec2(texcoord.x-4.*blurSize,texcoord.y))*.05; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+4.*blurSize))*.05; sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-4.*blurSize))*.05; - sum+=texture2D(currentTexture,vec2(texcoord.x+4.*blurSize,texcoord.y+4*blurSize))*.04; - sum+=texture2D(currentTexture,vec2(texcoord.x+4.*blurSize,texcoord.y-4*blurSize))*.04; - sum+=texture2D(currentTexture,vec2(texcoord.x-4*blurSize,texcoord.y+4.*blurSize))*.04; - sum+=texture2D(currentTexture,vec2(texcoord.x-4*blurSize,texcoord.y-4.*blurSize))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x+4.*blurSize,texcoord.y+4*blurSize))*.05; + sum+=texture2D(currentTexture,vec2(texcoord.x+4.*blurSize,texcoord.y-4*blurSize))*.05; + sum+=texture2D(currentTexture,vec2(texcoord.x-4*blurSize,texcoord.y+4.*blurSize))*.05; + sum+=texture2D(currentTexture,vec2(texcoord.x-4*blurSize,texcoord.y-4.*blurSize))*.05; + + sum+=texture2D(currentTexture,vec2(texcoord.x+5.*blurSize,texcoord.y))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x-5.*blurSize,texcoord.y))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y+5.*blurSize))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x,texcoord.y-5.*blurSize))*.04; + + sum+=texture2D(currentTexture,vec2(texcoord.x+5.*blurSize,texcoord.y+5*blurSize))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x+5.*blurSize,texcoord.y-5*blurSize))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x-5*blurSize,texcoord.y+5.*blurSize))*.04; + sum+=texture2D(currentTexture,vec2(texcoord.x-5*blurSize,texcoord.y-5.*blurSize))*.04; + //increase blur with intensity! gl_FragColor=sum*intensity+texture2D(currentTexture,texcoord); diff --git a/content/razdot.frag b/content/razdot.frag index 5b83c46..faeeb30 100644 --- a/content/razdot.frag +++ b/content/razdot.frag @@ -13,18 +13,18 @@ void main(void) vec2 uv=gl_FragCoord.xy/iResolution.xy;// x: <0, 1>, y: <0, 1> uv.x=uv.x-iMouse.x/iResolution.x; uv.y=uv.y+iMouse.y/iResolution.y; - uv.y-=16.6;// To adjust y position - + uv.y-=16;// To adjust y position + uv.x*=iResolution.x/iResolution.y;// x: * aspect ratio, y: > - + float d=length(uv)-.1;// signed distance function - - vec3 col=vec3(step(0.,-d),0,0);// create red circle with black background - + + vec3 col=vec3(0,0,step(0.,-d));// create blue circle with black background + float glow=.01/d;// create glow and diminish it with distance glow=clamp(glow,0.,1.);// remove artifacts - - col+=vec3(glow*35.,0,0);// add glow - + + col+=vec3(0,0,glow*8.);// add glow + gl_FragColor=vec4(col,1.);// output color } \ No newline at end of file diff --git a/src/Main.cpp b/src/Main.cpp index 96ed9ac..ca33da7 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -60,6 +60,7 @@ int main(int argc, char *argv[]) sf::RenderWindow window(sf::VideoMode(winW, winH), "Spiromorph", windowStyle); window.setFramerateLimit(60); + window.setMouseCursorVisible(false); // Initialize Shaders if(!InitShaders(winW,winH)) return -1; @@ -184,26 +185,26 @@ int main(int argc, char *argv[]) selectedSpiro = numberOfSpiros; SetTextForCurrentSpiro(); } - if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Num8){ + if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::W){ bloomIntensity += 0.5f; if(bloomIntensity > 10.0f) bloomIntensity = 10.0f; SetBloomShader(bloomIntensity, bloomBlurAmount); SetBloomText(bloomIntensity, bloomBlurAmount); } - if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Num7){ + if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::S){ bloomIntensity -= 0.5f; if(bloomIntensity < 0.0f) bloomIntensity = 0.0f; SetBloomShader(bloomIntensity, bloomBlurAmount); SetBloomText(bloomIntensity, bloomBlurAmount); } - if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Num0){ - bloomBlurAmount += 5.0f; + if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::D){ + bloomBlurAmount += 8.0f; if(bloomBlurAmount > 1000.0f) bloomBlurAmount = 1000.0f; SetBloomShader(bloomIntensity, bloomBlurAmount); SetBloomText(bloomIntensity, bloomBlurAmount); } - if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Num9){ - bloomBlurAmount -= 5.0f; + if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::A){ + bloomBlurAmount -= 8.0f; if(bloomBlurAmount < 0.0f) bloomBlurAmount = 0.0f; SetBloomShader(bloomIntensity, bloomBlurAmount); SetBloomText(bloomIntensity, bloomBlurAmount); @@ -214,7 +215,7 @@ int main(int argc, char *argv[]) UpdateSpiromorphs(spiromorphs, numberOfSpiros, frame_time); // Set shader parameters - UpdateShaderParameters(&clk, window.getSize().x/2, (window.getSize().y/2)+350); + UpdateShaderParameters(&clk, sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y); window.clear(); @@ -236,6 +237,12 @@ int main(int argc, char *argv[]) window.draw(render, &bloomshader); } + // Draw Glowing Mouse pointer + rendertexture.clear(sf::Color::Transparent); + rendertexture.display(); + render.setTexture(rendertexture.getTexture()); + window.draw(render, renderstate); + // Draw Hud if(drawHud){ DrawHud(window); diff --git a/src/Razshaders.h b/src/Razshaders.h index a09491e..d6b43a2 100644 --- a/src/Razshaders.h +++ b/src/Razshaders.h @@ -51,10 +51,10 @@ bool InitShaders(float WIN_WIDTH, float WIN_HEIGHT){ // Set Shader resolutions fireshader.setUniform("resolution", sf::Vector2f(45, 45)); - glowshader.setUniform("resolution", sf::Vector2f(45, 45)); + glowshader.setUniform("resolution", sf::Vector2f(WIN_WIDTH/16, WIN_HEIGHT/16)); bloomshader.setUniform("resolution", sf::Vector2f(WIN_WIDTH, WIN_HEIGHT)); - // Set Blend renderstate for glow + // Set Blend renderstate for glowing mouse renderstate.blendMode = sf::BlendAdd; renderstate.shader = &glowshader; diff --git a/src/ui.h b/src/ui.h index b41ca50..d53ffdf 100644 --- a/src/ui.h +++ b/src/ui.h @@ -10,8 +10,8 @@ "InPhase- Home/End\n"\ "Amplitude- Ins/Del\n"\ "Hide Hud- H\n"\ - "Glow Intensity- 7/8\n"\ - "Glow Sharpness- 9/0\n" + "Glow Intensity- W/S\n"\ + "Glow Sharpness- A/D\n" sf::Font font; sf::Text headingText, currentSpiroText, speedText, inphaseText, ampText, fpsText, controlsText, bloomText; @@ -83,13 +83,13 @@ void InitTextObjects(sf::RenderWindow* window) } void SetCurrentSpiroText(float _current){ - currentSpiroText.setString("SPIRO: " + to_string(_current)); + currentSpiroText.setString("SPIRO: " + to_string(_current)); } void SetSpeedText(float _speed){ - speedText.setString("SPEED: " + to_string(_speed)); + speedText.setString("SPEED: " + to_string(_speed)); } void SetInphaseText(int _inphase, int _numElements){ - inphaseText.setString("IN PHASE: " + to_string(_inphase) + " of " + to_string(_numElements)); + inphaseText.setString("IN PHASE: " + to_string(_inphase) + " of " + to_string(_numElements)); } void SetAmpText(float _amp){ ampText.setString("AMPLITUDE: " + to_string(_amp)); @@ -98,5 +98,5 @@ void SetFpsText(float _fps){ fpsText.setString("FPS: " + to_string(_fps)); } void SetBloomText(float _bloomintesity, float _bloomBlurAmount){ - bloomText.setString("*SHADERS*\nIntensity: " + to_string(_bloomintesity) + "\nSharpness: " + to_string(_bloomBlurAmount)); + bloomText.setString("*BLOOM SHADER*\n Intensity: " + to_string(_bloomintesity) + "\n Sharpness: " + to_string(_bloomBlurAmount)); } \ No newline at end of file