<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GLSL &#8211; Gary Michael Angelone Jr.</title>
	<atom:link href="https://garyangelonejr.me/tag/glsl-it/feed/" rel="self" type="application/rss+xml" />
	<link>https://garyangelonejr.me</link>
	<description></description>
	<lastBuildDate>Tue, 03 Feb 2026 00:01:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Ripple Shader</title>
		<link>https://garyangelonejr.me/ripple-shader/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 21:18:56 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Megadroid 90]]></category>
		<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HLSL]]></category>
		<guid isPermaLink="false">https://garyangelonejr.me/?p=3625</guid>

					<description><![CDATA[Steven asked me to write a ripple effect shader for his upcoming shmup title for android and iOS.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-1 translate lang-en "><p>Steven asked me to write a ripple effect shader for his upcoming shmup title for android and iOS.</p>
</div><div class="fusion-text fusion-text-2 translate lang-de"><p>Steven hat mich gebeten, einen Shader mit Schmelzeffekt für sein neues Shoot 'em up-Spiel für Android und iOS zu schreiben.</p>
</div><div class="fusion-text fusion-text-3 translate lang-it"><p>Steven mi ha chiesto di scrivere uno shader con effetto a catena per il suo prossimo titolo shmup per Android e iOS.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_1" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_1" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_1" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">sampler2D background_texture : register(s1)  = sampler_state{
    AddressU = Clamp;
    AddressV = Clamp;
};

float freq;
float speed;
float amplitude ;
float centerx;
float centery;

float effect;

struct PS_INPUT
{
    float4 p : POSITION;
    float2 v_texcoord0 : TEXCOORD0;
};

struct PS_OUTPUT
{
    float4 c     : COLOR0;
};

PS_OUTPUT ps_main(PS_INPUT input)
{
    PS_OUTPUT output;   

    float2 center=float2(centerx,centery);

    float2 toUV = input.v_texcoord0 - center;
    float distanceFromCenter = length(toUV);
    float2 normToUV = toUV / distanceFromCenter;

    float wave = cos(freq * distanceFromCenter - speed * effect);
    float offset1 = effect * wave * amplitude;
    float offset2 = (1.0 - effect) * wave * amplitude;
    
    float2 newUV1 = center + normToUV * (distanceFromCenter + offset1);
    float2 newUV2 = center + normToUV * (distanceFromCenter + offset2);
    
    float4 c1 = tex2D(background_texture, newUV1); 
    float4 c2 = tex2D(background_texture, newUV2);

    output.c=lerp(c1, c2, effect);

    return output;
    
}

technique tech_main
{
    pass P0
    {
        VertexShader = NULL;
        PixelShader  = compile ps_2_a ps_main();
    }  
}</textarea></div><div class="video has-mask" style='mask-position:center center;mask-size:cover;mask-image:url("https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-03.png");'><div class="fusion-video fusion-selfhosted-video mask  wrapped" style="margin-bottom:3em;max-width:100%;"><div class="video-wrapper"><video playsinline="true" width="100%" style="object-fit: cover;" autoplay="true" muted="true" loop="true" preload="auto"><source src="/vid/post/Ripple-Shader.mp4" type="video/mp4">Sorry, your browser doesn't support embedded videos.</source></video></div></div></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:2em;--awb-padding-bottom:6em;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-1 fusion-button-default-span fusion-button-default-type fusion-animated" data-animationtype="flipiny" data-animationduration="0.3" data-animationoffset="top-into-view" target="_blank" rel="noopener noreferrer" href="https://github.com/KoschKX/Shader-Ripple"><i class="fa-arrow-circle-down fas awb-button__icon awb-button__icon--default button-icon-left" aria-hidden="true"></i><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Melt Shader</title>
		<link>https://garyangelonejr.me/melt-shader/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 09 Mar 2024 20:53:30 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Megadroid 90]]></category>
		<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HLSL]]></category>
		<guid isPermaLink="false">https://garyangelonejr.me/?p=1571</guid>

					<description><![CDATA[Steven asked me to write a melting effect shader for his upcoming shmup title for android and iOS.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-4 translate lang-en "><p>Steven asked me to write a melting effect shader for his upcoming shmup title for android and iOS.</p>
</div><div class="fusion-text fusion-text-5 translate lang-de"><p>Steven hat mich gebeten, einen Shader mit Schmelzeffekt für sein neues Shoot 'em up-Spiel für Android und iOS zu schreiben.</p>
</div><div class="fusion-text fusion-text-6 translate lang-it"><p>Steven mi ha chiesto di scrivere uno shader con effetto di fusione per il suo prossimo titolo shmup per Android e iOS.</p>
</div><div class="fusion-text fusion-text-7 translate lang-en "><p>First, we sample the foreground and background textures.</p>
</div><div class="fusion-text fusion-text-8 translate lang-de"><p>Zuerst nehmen wir Proben der Vordergrund- und Hintergrundtexturen.</p>
</div><div class="fusion-text fusion-text-9 translate lang-it"><p>Per prima cosa, campioniamo le texture in primo piano e sullo sfondo.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_2" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_2" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_2" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// Background
  // float4 back = tex2D(bkd,textureCoordinate);
// Foreground
  // fore = tex2D(img,textureCoordinate);
</textarea></div><div class="fusion-text fusion-text-10 translate lang-en "><p>Then we prepare the warp effect.</p>
</div><div class="fusion-text fusion-text-11 translate lang-de"><p>Dann bereiten wir den Warp-Effekt vor.</p>
</div><div class="fusion-text fusion-text-12 translate lang-it"><p>Quindi prepariamo l'effetto warp.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_3" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_3" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_3" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">  // Sin
    float sinX = textureCoordinate.x;
	float sinY = textureCoordinate.y + (sin((textureCoordinate.y+frequency)*periods)*amplitude);
    float2 sinE = float2(sinX,sinY);

  // Warp
    float4 TexTL; float4 TexBL; float4 TexBR; float4 TexTR;
    float4 TexBTL; float4 TexBBL; float4 TexBBR; float4 TexBTR;
  	TexTL.rgba = tex2D(imgTexture, float2(sinE.x-blur,sinE.y-blur));
    TexBL.rgba = tex2D(imgTexture, float2(sinE.x-blur,sinE.y+blur));
  	TexBR.rgba = tex2D(imgTexture, float2(sinE.x+blur,sinE.y+blur));
  	TexTR.rgba = tex2D(imgTexture, float2(sinE.x+blur,sinE.y-blur));
  	float4 fore = tex2D(imgTexture, sinE.xy);
	fore.rgba = (fore.rgba+TexTL.rgba+TexBL.rgba+TexBR.rgba+TexTR.rgba)/5.0;</textarea></div><div class="fusion-text fusion-text-13 translate lang-en "><p>Apply the effect.</p>
</div><div class="fusion-text fusion-text-14 translate lang-de"><p>Wende den Effekt an.</p>
</div><div class="fusion-text fusion-text-15 translate lang-it"><p>Applica l'effetto.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_4" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_4" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_4" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// Apply Color
  float md = (frequency*10.0)+(sinE.y*3.0);
  float tick = cos(md);
  float3 melt = lerp(fore.rgb+(colorB.rgb*0.5),fore.rgb*(colorA.rgb*2.0),sinE.y);
  float3 anim = lerp(melt,fore.rgb,tick);
  fore.rgb = lerp(fore.rgb,anim,intensity);</textarea></div><div class="video has-mask" style='mask-position:center center;mask-size:cover;mask-image:url("https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-03.png");'><div class="fusion-video fusion-selfhosted-video mask  wrapped" style="margin-bottom:3em;max-width:100%;"><div class="video-wrapper"><video playsinline="true" width="100%" style="object-fit: cover;" autoplay="true" muted="true" loop="true" preload="auto"><source src="/vid/post/Melt-Shader.mp4" type="video/mp4">Sorry, your browser doesn't support embedded videos.</source></video></div></div></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:2em;--awb-padding-bottom:6em;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-2 fusion-button-default-span fusion-button-default-type fusion-animated" data-animationtype="flipiny" data-animationduration="0.3" data-animationoffset="top-into-view" target="_self" href="https://github.com/KoschKX/Shader-Melt"><i class="fa-arrow-circle-down fas awb-button__icon awb-button__icon--default button-icon-left" aria-hidden="true"></i><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Shield Shader</title>
		<link>https://garyangelonejr.me/shield-shader/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 09 Mar 2024 20:12:55 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Megadroid 90]]></category>
		<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HLSL]]></category>
		<guid isPermaLink="false">https://garyangelonejr.me/?p=1548</guid>

					<description><![CDATA[Steven asked me to write a shield shader for his upcoming shmup title for Android and iOS.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-16 translate lang-en "><p>Steven asked me to write a shield shader for his upcoming shmup title for Android and iOS.</p>
</div><div class="fusion-text fusion-text-17 translate lang-de"><p>Steven hat mich gebeten, einen Shield-Shader für seinen kommenden Shmup-Titel für Android und iOS zu schreiben.</p>
</div><div class="fusion-text fusion-text-18 translate lang-it"><p>Steven mi ha chiesto di scrivere uno shader per il suo prossimo titolo shmup per Android e iOS.</p>
</div><div class="fusion-text fusion-text-19 translate lang-en "><p>First, we offset the texture coordinates.</p>
</div><div class="fusion-text fusion-text-20 translate lang-de"><p>Zunächst verschieben wir die Texturkoordinaten.</p>
</div><div class="fusion-text fusion-text-21 translate lang-it"><p>Per prima cosa, compensiamo le coordinate della texture.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_5" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_5" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_5" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// TEXTURE OFFSET
vec2 Pos = vec2(textureCoordinate.x+(offsetX*0.1),textureCoordinate.y+(offsetY*0.1));</textarea></div><div class="fusion-text fusion-text-22 translate lang-en "><p>Convert the bullet angle to radians.</p>
</div><div class="fusion-text fusion-text-23 translate lang-de"><p>Wandeln Sie den Geschosswinkel in Radianten um.</p>
</div><div class="fusion-text fusion-text-24 translate lang-it"><p>Converti l'angolo del proiettile in radianti.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_6" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_6" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_6" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// CLAMP AND CONVERT INPUT VALUES
hit=clamp(hit,0.0,1.0);
cover=clamp(cover,0.0,1.0);
hitangle = radians(hitangle - 90.0);</textarea></div><div class="fusion-text fusion-text-25 translate lang-en "><p>Allow the hexagonal patterns to scroll.</p>
</div><div class="fusion-text fusion-text-26 translate lang-de"><p>Lassen Sie die sechseckigen Muster scrollen.</p>
</div><div class="fusion-text fusion-text-27 translate lang-it"><p>Consenti lo scorrimento dei motivi esagonali.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-7 > .CodeMirror, .fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-7 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_7" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_7" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_7" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// SCROLL TEXTURE
float tx = 2.0 * (textureCoordinate.x - 0.5);
float ty = 2.0 * (textureCoordinate.y - 0.5);
float x = 2.0 * (Pos.x - 0.5);
float y = 2.0 * (Pos.y - 0.5);
float r = sqrt(tx * tx + ty * ty);
float d = (r != 0.0) ? asin(r) / r : 0.0;
float x2 = d * x;
float y2 = d * y;
float x3 = mod(x2 / (4.0 * PI) + 0.5 + time, 1.0);
float y3 = y2 / (2.0 * PI) + 0.5;
vec2 Out = vec2(0.0,0.0);
Out.x = x3;
Out.y = y3;</textarea></div><div class="fusion-text fusion-text-28 translate lang-en "><p>Initialize the shield colors.</p>
</div><div class="fusion-text fusion-text-29 translate lang-de"><p>Initialisieren Sie die Schildfarben.</p>
</div><div class="fusion-text fusion-text-30 translate lang-it"><p>Inizializza i colori dello scudo.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-8 > .CodeMirror, .fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-8 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_8" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_8" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_8" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">// INIT COLORS
vec4 final = vec4(0,0,0,0);
vec4 blank = vec4(0,0,0,0);</textarea></div><div class="fusion-text fusion-text-31 translate lang-en "><p>Make the gradients and clip within the sphere.</p>
</div><div class="fusion-text fusion-text-32 translate lang-de"><p>Erstellen Sie die Farbverläufe und schneiden Sie sie innerhalb der Kugel zu.</p>
</div><div class="fusion-text fusion-text-33 translate lang-it"><p>Crea le sfumature e ritaglia all'interno della sfera.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-9 > .CodeMirror, .fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-9 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_9" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_9" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_9" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">  if (r &lt;= 1.0){
      final = texture2D(img,Out.xy);
      vec4 tfinal = texture2D(tex,Out.xy);

      vec2 pos_ndc = vec2(2.0 * textureCoordinate.x - 1.0,2.0 * textureCoordinate.y - 1.0);
      float dist = length(pos_ndc);

      // GET HIT ANGLE
        vec2 ang=textureCoordinate.xy;
        ang.xy = vec2(ang.x - 0.5, ang.y - 0.5);
        float s = sin( hitangle );
        float c = cos( hitangle );
        mat2 rotationMatrix = mat2(c, -s, s, c);
        rotationMatrix *= 0.5f;
        rotationMatrix += 0.5f;
        rotationMatrix = rotationMatrix * 2.0f - 1.0f;
        ang = rotationMatrix * ang;
        ang.xy = vec2(ang.x + 0.5, ang.y + 0.5);
        float hitf = (hit*0.5);

      // MAX ALPHA
        colorA.a = 1.0;
        colorB.a = 1.0;

      // FADE GRADIENT
        float step1 = 0.0;
        float step2 = 1.0 - cover;
        float step3 = 1.0;

      // MIX
        final *= mix(final, colorA, smoothstep(step1, step2*( 1.0 - hitf), dist));
        final = mix(final,tfinal*colorB,ang.x*hit);
        final *= mix(blank, final, smoothstep(step2*(1.0 - hitf), step3, dist));
  }</textarea></div><div class="video has-mask" style='mask-position:center center;mask-size:cover;mask-image:url("https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-04.png");'><div class="fusion-video fusion-selfhosted-video mask  overlay opacity_50 dark_mesh  wrapped" style="margin-bottom:3em;max-width:100%;"><div class="video-wrapper"><video playsinline="true" width="100%" style="object-fit: cover;" autoplay="true" muted="true" loop="true" preload="auto"><source src="/vid/post/Shield-Shader.mp4" type="video/mp4">Sorry, your browser doesn't support embedded videos.</source></video></div></div></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:2em;--awb-padding-bottom:6em;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-3 fusion-button-default-span fusion-button-default-type fusion-animated" data-animationtype="flipiny" data-animationduration="0.3" data-animationoffset="top-into-view" target="_self" href="https://github.com/KoschKX/Shader-Shield"><i class="fa-arrow-circle-down fas awb-button__icon awb-button__icon--default button-icon-left" aria-hidden="true"></i><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zen Shader</title>
		<link>https://garyangelonejr.me/zen-shader/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 04 Oct 2022 13:45:23 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Okinawa Rush]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HLSL]]></category>
		<guid isPermaLink="false">http://localhost/?p=149</guid>

					<description><![CDATA[Steven added a feature to the game that allows the player to meditate to gain spiritual powers.
He required an effect that would express a zen state.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-34 translate lang-en "><p>Steven added a feature to <a href="https://store.steampowered.com/app/777670/Okinawa_Rush/">the game</a> that allows the player to meditate to gain spiritual powers.<br>
He required an effect that would express a zen state.</p>
</div><div class="fusion-text fusion-text-35 translate lang-de"><p>Steven fügte <a href="https://store.steampowered.com/app/777670/Okinawa_Rush/">dem Spiel</a> eine Funktion hinzu, mit der der Spieler meditieren kann, um spirituelle Kräfte zu erlangen.<br>
Er benötigte einen Effekt, der einen Zen-Zustand ausdrücken würde.</p>
</div><div class="fusion-text fusion-text-36 translate lang-it"><p>Steven ha aggiunto una funzione <a href="https://store.steampowered.com/app/777670/Okinawa_Rush/">al gioco</a> che permette al giocatore di meditare per acquisire poteri spirituali.<br>
Aveva bisogno di un effetto che esprimesse uno stato zen.</p>
</div><div class="fusion-text fusion-text-37 translate lang-en "><p>Color warping of the background seemed to fit the requirement. I started by its texture and applying the effect.</p>
</div><div class="fusion-text fusion-text-38 translate lang-de"><p>Die Farbverzerrung des Hintergrunds schien den Anforderungen zu entsprechen. Ich begann mit der Textur und wandte den Effekt an.</p>
</div><div class="fusion-text fusion-text-39 translate lang-it"><p>La distorsione cromatica dello sfondo sembrava soddisfare il requisito. Ho iniziato dalla sua texture e ho applicato l'effetto.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-10 > .CodeMirror, .fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-10 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_10" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_10" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_10" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">/* INPUT SAMPLER */
sampler2D background_texture : register(s1)  = sampler_state{ AddressU = Wrap; AddressV = Wrap; MipFilter = Point; MinFilter = Linear; MagFilter = Linear; };

/* PIXEL SHADER IO STRUCTURES */
struct PS_INPUT { float4 p : POSITION; float2 v_texcoord0 : TEXCOORD0; };
struct PS_OUTPUT { float4 c : COLOR0; };</textarea></div><div class="fusion-text fusion-text-40 translate lang-en "><p>For more impact, I separated the red, green and blue color channels.</p>
</div><div class="fusion-text fusion-text-41 translate lang-de"><p>Um eine stärkere Wirkung zu erzielen, habe ich die roten, grünen und blauen Farbkanäle voneinander getrennt.</p>
</div><div class="fusion-text fusion-text-42 translate lang-it"><p>Per ottenere un effetto più incisivo, ho separato i canali di colore rosso, verde e blu.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-11 > .CodeMirror, .fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-11 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_11" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_11" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_11" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">PS_OUTPUT ps_main(PS_INPUT input)
{
	PS_OUTPUT output;

		// WARP BUBBLE
        float2 dir = input.v_texcoord0 - float2( .5, .5 );
        float d = .7 * length( dir );
        normalize( dir );
        float2 value = d * dir * Separation;

		// COLOR SHIFT
        float r = tex2D( background_texture, input.v_texcoord0 + value ).x;
        float g = tex2D( background_texture, input.v_texcoord0 - value ).y;
        float b = tex2D( background_texture, input.v_texcoord0 ).z;

        float4 c = float4(r,  g * 0.99, b, 1.0 );

        output.c = c;
        return output;
}</textarea></div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-12 > .CodeMirror, .fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-12 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_12" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_12" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_12" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">technique tech_main
{
    pass P0
    {
        VertexShader = NULL;
        PixelShader  = compile ps_2_a ps_main();
    }
}
</textarea></div><div class="video has-mask" style='mask-position:center center;mask-size:100% 100%;mask-image:url("https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-07.png");'><div class="fusion-video fusion-selfhosted-video mask  overlay opacity_50 dark_mesh  wrapped" style="max-width:100%;"><div class="video-wrapper"><video playsinline="true" width="100%" style="object-fit: cover;" autoplay="true" muted="true" loop="true" preload="auto"><source src="/vid/post/Zen-Shader.mp4" type="video/mp4">Sorry, your browser doesn't support embedded videos.</source></video></div></div></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-7 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:3em;--awb-padding-bottom:6em;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-4 fusion-button-default-span fusion-button-default-type fusion-animated" data-animationtype="flipiny" data-animationduration="0.3" data-animationoffset="top-into-view" target="_blank" rel="noopener noreferrer" href="https://github.com/KoschKX/Shader-Zen"><i class="fa-arrow-circle-down fas awb-button__icon awb-button__icon--default button-icon-left" aria-hidden="true"></i><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tree Auto-Animation Shader</title>
		<link>https://garyangelonejr.me/tree-auto-animation-shader/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 03 Oct 2022 15:16:52 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Okinawa Rush]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HLSL]]></category>
		<guid isPermaLink="false">http://localhost/?p=159</guid>

					<description><![CDATA[David was pressed for time. Our deadline was over a year away, but there would be much pixel art to complete. Animating trees per pixel is tedious work, especially since Steven's wind code would require multiple variants for each of the then static images. They approached me, hoping for a shader solution; that they might save time.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-8 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-43 translate lang-en "><p>David was pressed for time. Our deadline was over a year away, but there would be much pixel art to complete. Animating trees per pixel is tedious work, especially since Steven's wind code would require multiple variants for each of the then static images. They approached me, hoping for a shader solution; that they might save time.</p>
</div><div class="fusion-text fusion-text-44 translate lang-de"><p>David stand unter Zeitdruck. Unsere Deadline war zwar noch über ein Jahr entfernt, aber es gab noch viel Pixelkunst zu erstellen. Das Animieren von Bäumen pro Pixel ist mühsame Arbeit, zumal Stevens Windcode mehrere Varianten für jedes der damals statischen Bilder erfordern würde. Sie wandten sich an mich in der Hoffnung auf eine Shader-Lösung, mit der sie Zeit sparen könnten.</p>
</div><div class="fusion-text fusion-text-45 translate lang-it"><p>David era a corto di tempo. La nostra scadenza era tra più di un anno, ma c'era ancora molta pixel art da completare. Animare gli alberi pixel per pixel è un lavoro noioso, soprattutto perché il codice del vento di Steven richiedeva diverse varianti per ciascuna delle immagini allora statiche. Mi hanno contattato sperando in una soluzione shader che potesse far loro risparmiare tempo.</p>
</div><div class="fusion-text fusion-text-46 translate lang-en "><p>Knowing the artist in David would still desire control over the result, I decided to use a sampled bitmap to grade the effect so that he could adjust the effect.</p>
</div><div class="fusion-text fusion-text-47 translate lang-de"><p>Da ich wusste, dass David als Künstler weiterhin die Kontrolle über das Ergebnis haben wollte, entschied ich mich, eine gesampelte Bitmap zu verwenden, um den Effekt zu bewerten, damit er ihn anpassen konnte.</p>
</div><div class="fusion-text fusion-text-48 translate lang-it"><p>Sapendo che l'artista che è in David avrebbe comunque desiderato avere il controllo sul risultato, ho deciso di utilizzare una bitmap campionata per graduare l'effetto in modo che potesse regolarlo.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-13 > .CodeMirror, .fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-13 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_13" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_13" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_13" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">/* INPUT &amp; WEIGHT IMAGE SAMPLERS */
sampler2D img;
sampler2D Weights : register(s2)  = sampler_state { AddressU = Border; AddressV = Border; MipFilter = Point; };

/* PIXEL SHADER IO STRUCTURES */
struct PS_INPUT { float4 Position : POSITION; float2 Texture : TEXCOORD0; };
struct PS_OUTPUT { float4 Color : COLOR0; };</textarea></div><div class="fusion-text fusion-text-49 translate lang-en "><p>I hooked up the values from Steven's code for the angle, frequency and amplitude of the wind.</p>
</div><div class="fusion-text fusion-text-50 translate lang-de"><p>Ich habe die Werte aus Stevens Code für den Winkel, die Frequenz und die Amplitude des Windes übernommen.</p>
</div><div class="fusion-text fusion-text-51 translate lang-it"><p>Ho inserito i valori dal codice di Steven per l'angolo, la frequenza e l'ampiezza del vento.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-14 > .CodeMirror, .fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-14 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_14" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_14" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_14" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">/* GLOBALS */
float Amplitude; float Freq; float Angle;
static const float PI = 3.14159265f;</textarea></div><div class="fusion-text fusion-text-52 translate lang-en "><p>In my main program, I pushed the pixels according to their values and applied the amount based on the alpha channel from black to white.</p>
</div><div class="fusion-text fusion-text-53 translate lang-de"><p>In meinem Hauptprogramm habe ich die Pixel entsprechend ihren Werten verschoben und den Wert basierend auf dem Alphakanal von Schwarz bis Weiß angewendet.</p>
</div><div class="fusion-text fusion-text-54 translate lang-it"><p>Nel mio programma principale, ho spostato i pixel in base ai loro valori e ho applicato la quantità in base al canale alfa dal nero al bianco.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-15 > .CodeMirror, .fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-15 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_15" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_15" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_15" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">PS_OUTPUT ps_main( in PS_INPUT In )
{
    PS_OUTPUT Out;

    float w=tex2D(Weights, In.Texture.xy).a;

	/* APPLY WIND */
    float2 dir = float2(cos(Angle*PI/180)*In.Texture.x,sin(Angle*PI/180)*In.Texture.y);

    float posx = In.Texture.x - (sin((dir.x))*Amplitude*Freq+0.01)*w;
    float posy = In.Texture.y + (sin((dir.y))*Amplitude*Freq+0.01)*w;

    float4 col=tex2D(img, float2(posx,posy));</textarea></div><div class="fusion-text fusion-text-55 translate lang-en "><p>The effect was a little to blurry, so I stabilized the alpha output.</p>
</div><div class="fusion-text fusion-text-56 translate lang-de"><p>Der Effekt war etwas zu unscharf, daher habe ich die Alpha-Ausgabe stabilisiert.</p>
</div><div class="fusion-text fusion-text-57 translate lang-it"><p>L'effetto era un po' sfocato, quindi ho stabilizzato l'output alfa.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-16 > .CodeMirror, .fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-16 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_16" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_16" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_16" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">	// REMOVE ANTIALIASING
    col.a=floor(col.a+0.5);

 	  Out.Color=col;

    return Out;
}</textarea></div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-17 > .CodeMirror, .fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-17 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_17" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_17" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_17" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/css">technique tech_main
{
    pass P0
    {
        VertexShader = NULL;
        PixelShader  = compile ps_2_0 ps_main();
    }
}
</textarea></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-9 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:2em;--awb-padding-bottom:6em;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.072%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.072%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-image-element " style="text-align:center;--awb-margin-bottom:4em;--awb-max-width:100%;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);"><span class="fusion-imageframe imageframe-none imageframe-1 hover-type-none mask overlay opacity_25 dark_mesh fusion-animated has-mask" data-animationtype="fadeIn" data-animationduration="1.0" data-animationoffset="top-into-view" style="background-color:transparent;mask-position:center center;-webkit-mask-position:center center;mask-size:cover;-webkit-mask-size:cover;mask-image:url(https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-07.png);-webkit-mask-image:url(https://garyangelonejr.me/wp-content/themes/Avada-Child-Theme/img/masks/mask-07.png);"><img fetchpriority="high" decoding="async" width="1024" height="363" title="OkiThankYou_Cropped_x2" src="https://garyangelonejr.me/wp-content/uploads/2022/10/OkiThankYou_Cropped_x2.gif" alt class="img-responsive wp-image-3292"></span></div><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-5 fusion-button-default-span fusion-button-default-type fusion-animated" data-animationtype="flipiny" data-animationduration="0.3" data-animationoffset="top-into-view" target="_blank" rel="noopener noreferrer" href="https://github.com/KoschKX/Shader-TreeAutoAnimation"><i class="fa-arrow-circle-down fas awb-button__icon awb-button__icon--default button-icon-left" aria-hidden="true"></i><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
