<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Why some Shaders don&#39;t work !</title>
		<link>http://www.allegro.cc/forums/view/616619</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 29 Nov 2016 03:51:00 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k2">[</span>Vertex_Shader<span class="k2">]</span>
<span class="number">  2</span><span class="k1">void</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>  gl_Position <span class="k3">=</span> ftransform<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> gl_MultiTexCoord0<span class="k2">;</span>
<span class="number">  6</span><span class="k2">}</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k2">[</span>Pixel_Shader<span class="k2">]</span>
<span class="number">  9</span>uniform sampler2D al_tex<span class="k2">;</span> <span class="c">// 0</span>
<span class="number"> 10</span>uniform vec2 center<span class="k2">;</span> <span class="c">// Mouse position</span>
<span class="number"> 11</span>uniform <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span> <span class="c">// effect elapsed time</span>
<span class="number"> 12</span>uniform vec3 shockParams<span class="k2">;</span> <span class="c">// 10.0, 0.8, 0.1</span>
<span class="number"> 13</span><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span> 
<span class="number"> 14</span><span class="k2">{</span> 
<span class="number"> 15</span>  vec2 uv <span class="k3">=</span> gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.xy<span class="k2">;</span>
<span class="number"> 16</span>  vec2 texCoord <span class="k3">=</span> uv<span class="k2">;</span>
<span class="number"> 17</span>  <span class="k1">float</span> distance <span class="k3">=</span> distance<span class="k2">(</span>uv, center<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>distance <span class="k3">&lt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">+</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> 
<span class="number"> 19</span>       <span class="k2">(</span>distance <span class="k3">&gt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">-</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k2">)</span> 
<span class="number"> 20</span>  <span class="k2">{</span>
<span class="number"> 21</span>    <span class="k1">float</span> diff <span class="k3">=</span> <span class="k2">(</span>distance <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 22</span>    <span class="k1">float</span> powDiff <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>diff<span class="k3">*</span>shockParams.x<span class="k2">)</span>, 
<span class="number"> 23</span>                                shockParams.y<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 24</span>    <span class="k1">float</span> diffTime <span class="k3">=</span> diff  <span class="k3">*</span> powDiff<span class="k2">;</span> 
<span class="number"> 25</span>    vec2 diffUV <span class="k3">=</span> normalize<span class="k2">(</span>uv <span class="k3">-</span> center<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 26</span>    texCoord <span class="k3">=</span> uv <span class="k3">+</span> <span class="k2">(</span>diffUV <span class="k3">*</span> diffTime<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="k2">}</span> 
<span class="number"> 28</span>  gl_FragColor <span class="k3">=</span> texture2D<span class="k2">(</span>al_tex, texCoord<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><span class="k2">}</span>
</div></div><p>

Effect : It&#39;s just a simple shockwave effect but don&#39;t work!</p><p>but this one work fine :
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k2">[</span>Vertex_Shader<span class="k2">]</span>
<span class="number">  2</span>I use <span class="s">"al_get_default_shader_source(ALLEGRO_SHADER_GLSL, ALLEGRO_VERTEX_SHADER)"</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k2">[</span>Pixel_Shader<span class="k2">]</span>
<span class="number">  5</span>uniform sampler2D al_tex<span class="k2">;</span>
<span class="number">  6</span>uniform <span class="k1">float</span> radius<span class="k2">;</span>
<span class="number">  7</span>varying vec2 varying_texcoord<span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">void</span> main <span class="k2">(</span><span class="k2">)</span>
<span class="number"> 10</span><span class="k2">{</span>
<span class="number"> 11</span>    vec2 pos <span class="k3">=</span> mod<span class="k2">(</span>gl_FragCoord.xy, vec2<span class="k2">(</span><span class="n">40</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">-</span> vec2<span class="k2">(</span><span class="n">20</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>    <span class="k1">float</span> dist_squared <span class="k3">=</span> dot<span class="k2">(</span>pos, pos<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    vec4 tmp <span class="k3">=</span> texture2D<span class="k2">(</span>al_tex, varying_texcoord<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    <span class="k1">if</span> <span class="k2">(</span>dist_squared <span class="k3">&lt;</span> radius <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>tmp.r&gt;0 <span class="k3">|</span><span class="k3">|</span> tmp.g&gt;0 <span class="k3">|</span><span class="k3">|</span> tmp.b&gt;0<span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 16</span>        gl_FragColor <span class="k3">=</span> vec4<span class="k2">(</span>.<span class="n">0</span><span class="k3">+</span>tmp.r, .<span class="n">0</span><span class="k3">+</span>tmp.g, .<span class="n">0</span><span class="k3">+</span>tmp.b, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">else</span>
<span class="number"> 18</span>        gl_FragColor <span class="k3">=</span> vec4<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>
Effect : tile of filled circles with settable radius ! <br />why <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Mon, 28 Nov 2016 02:57:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check your return values.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 28 Nov 2016 03:14:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t have any errors.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Mon, 28 Nov 2016 03:21:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>All your shaders compiled and bound without error?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 28 Nov 2016 03:31:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes I checked them, step by step.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Mon, 28 Nov 2016 03:33:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t understand shaders very well, so I can&#39;t help much. Perhaps the error is in the way you&#39;re using your shaders? Have you set the correct drawing targets? Did you bind the shaders and then use them right afterwards?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 28 Nov 2016 03:47:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I do exactly the same method with the Two Shaders above ( Shockwave &amp; Tile circle).<br />One works the other not.</p><p>Unfortunately, It&#39;s really really hard to find some shader&#39;s tutorials using with Allegro 5.</p><p>The examples are not really explicative. I have to guess when I read.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Mon, 28 Nov 2016 04:04:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try and post code if you can. Create the smallest example possible to demonstrate that one shader works and the other doesn&#39;t.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 28 Nov 2016 04:06:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><u>Vertex Shader :</u> &quot;myShaderVert.glsl&quot;
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><span class="k1">void</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 2</span><span class="k2">{</span>
<span class="number"> 3</span>    gl_Position <span class="k3">=</span> ftransform<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>    gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> gl_MultiTexCoord0<span class="k2">;</span>
<span class="number"> 5</span>    gl_FrontColor <span class="k3">=</span> gl_Color<span class="k2">;</span>
<span class="number"> 6</span><span class="k2">}</span>
</div></div><p>

<u>Fragment Shader :</u> &quot;myShaderFrag.glsl&quot;
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>uniform sampler2D texture<span class="k2">;</span> <span class="c">// 0</span>
<span class="number">  2</span>uniform vec2 center<span class="k2">;</span> <span class="c">// Mouse position</span>
<span class="number">  3</span>uniform <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span> <span class="c">// effect elapsed time</span>
<span class="number">  4</span>uniform vec3 shockParams<span class="k2">;</span> <span class="c">// 10.0, 0.8, 0.1</span>
<span class="number">  5</span><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>  vec2 uv <span class="k3">=</span> gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.xy<span class="k2">;</span>
<span class="number">  8</span>  vec2 texCoord <span class="k3">=</span> uv<span class="k2">;</span>
<span class="number">  9</span>  <span class="k1">float</span> distance <span class="k3">=</span> distance<span class="k2">(</span>uv, center<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>distance <span class="k3">&lt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">+</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 11</span>       <span class="k2">(</span>distance <span class="k3">&gt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">-</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 12</span>  <span class="k2">{</span>
<span class="number"> 13</span>    <span class="k1">float</span> diff <span class="k3">=</span> <span class="k2">(</span>distance <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k1">float</span> powDiff <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>diff<span class="k3">*</span>shockParams.x<span class="k2">)</span>,
<span class="number"> 15</span>                                shockParams.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    <span class="k1">float</span> diffTime <span class="k3">=</span> diff  <span class="k3">*</span> powDiff<span class="k2">;</span>
<span class="number"> 17</span>    vec2 diffUV <span class="k3">=</span> normalize<span class="k2">(</span>uv <span class="k3">-</span> center<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    texCoord <span class="k3">=</span> uv <span class="k3">+</span> <span class="k2">(</span>diffUV <span class="k3">*</span> diffTime<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k2">}</span>
<span class="number"> 20</span>  gl_FragColor <span class="k3">=</span> texture2D<span class="k2">(</span>texture, texCoord<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span><span class="k2">}</span>
</div></div><p>

<u>Here is my Simple Shader code :</u> &quot;simple_Shader_Allegro_5.cpp&quot;
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">   2</span><span class="c">// --- Includes ---</span>
<span class="number">   3</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">  11</span><span class="c">// --- Global variables ---</span>
<span class="number">  12</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">  13</span>
<span class="number">  14</span><a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keyState<span class="k2">;</span>
<span class="number">  15</span><a href="http://www.allegro.cc/manual/ALLEGRO_MOUSE_STATE"><span class="a">ALLEGRO_MOUSE_STATE</span></a> mouseState<span class="k2">;</span>
<span class="number">  16</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span> windowDisplay<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> windowBuffer<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span> eventQueue<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span><a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span> framerateTimer<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="k1">int</span> framerate<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="c">// User data</span>
<span class="number">  24</span>ALLEGRO_SHADER <span class="k3">*</span> myShader<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span> myShaderVertFileName<span class="k2">(</span><span class="s">"myShaderVert.glsl"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span> myShaderFragFileName<span class="k2">(</span><span class="s">"myShaderFrag.glsl"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> myImage<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span> myImageFileName<span class="k2">(</span><span class="s">"bg0.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span><span class="c">// Window setting</span>
<span class="number">  31</span><span class="k1">int</span> screenW<span class="k2">(</span><span class="n">640</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span><span class="k1">int</span> screenH<span class="k2">(</span><span class="n">360</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span><span class="k1">int</span> zoom<span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span><span class="c">// Absolute mouse position</span>
<span class="number">  35</span><span class="k1">int</span> mouseXi<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span><span class="k1">int</span> mouseYi<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span><span class="c">// Relative mouse position</span>
<span class="number">  38</span><span class="k1">float</span> mouseXf<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span><span class="k1">float</span> mouseYf<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span><span class="c">// Window  position in the desktop</span>
<span class="number">  41</span><span class="k1">int</span> xWindow<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span><span class="k1">int</span> yWindow<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">  45</span><span class="c">// --- Global Methods ---</span>
<span class="number">  46</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number">  47</span>
<span class="number">  48</span><span class="k1">template</span> <span class="k3">&lt;</span><span class="k1">class</span> M&gt;
<span class="number">  49</span><span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a> <span class="k2">(</span><span class="k1">int</span> error, M msg<span class="k2">)</span>
<span class="number">  50</span><span class="k2">{</span>
<span class="number">  51</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> msg<span class="k2">;</span>
<span class="number">  52</span>
<span class="number">  53</span>    <span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  54</span><span class="k2">}</span>
<span class="number">  55</span>
<span class="number">  56</span><span class="k1">void</span> setFramerate<span class="k2">(</span><span class="k1">int</span> fps<span class="k2">)</span>
<span class="number">  57</span><span class="k2">{</span>
<span class="number">  58</span>    eventQueue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>    framerate <span class="k3">=</span> fps<span class="k2">;</span>
<span class="number">  60</span>    framerateTimer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">000</span><span class="k3">/</span>framerate<span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>
<span class="number">  62</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a> <span class="k2">(</span>eventQueue,<a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>framerateTimer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>framerateTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span><span class="k2">}</span>
<span class="number">  65</span>
<span class="number">  66</span><span class="k1">void</span> drawGrid<span class="k2">(</span><span class="k1">int</span> screenW, <span class="k1">int</span> screenH,
<span class="number">  67</span>              <span class="k1">int</span> sizeX, <span class="k1">int</span> sizeY,
<span class="number">  68</span>              <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k2">)</span>
<span class="number">  69</span><span class="k2">{</span>
<span class="number">  70</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span> i<span class="k3">&lt;</span><span class="k2">(</span>screenW<span class="k3">/</span>sizeX<span class="k2">)</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  71</span>    <span class="k2">{</span>
<span class="number">  72</span>        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>i<span class="k3">*</span>sizeX<span class="k3">+</span>.<span class="n">5</span>, .<span class="n">5</span>, i<span class="k3">*</span>sizeX<span class="k3">+</span>.<span class="n">5</span>, screenH<span class="k3">+</span>.<span class="n">5</span>, color,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>    <span class="k2">}</span>
<span class="number">  74</span>
<span class="number">  75</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span> i<span class="k3">&lt;</span><span class="k2">(</span>screenH<span class="k3">/</span>sizeY<span class="k2">)</span><span class="k3">+</span><span class="n">1</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  76</span>    <span class="k2">{</span>
<span class="number">  77</span>        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>.<span class="n">5</span>, i<span class="k3">*</span>sizeY<span class="k3">+</span>.<span class="n">5</span>, screenW<span class="k3">+</span>.<span class="n">5</span>, i<span class="k3">*</span>sizeY<span class="k3">+</span>.<span class="n">5</span>, color,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>    <span class="k2">}</span>
<span class="number">  79</span><span class="k2">}</span>
<span class="number">  80</span>
<span class="number">  81</span>ALLEGRO_SHADER<span class="k3">*</span> create_shader<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> fileNameVert, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> fileNameFrag <span class="k2">)</span>
<span class="number">  82</span><span class="k2">{</span>
<span class="number">  83</span>    ALLEGRO_SHADER<span class="k3">*</span> shader <span class="k3">=</span> al_create_shader<span class="k2">(</span>ALLEGRO_SHADER_GLSL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span><span class="c">//    if(!al_attach_shader_source(shader,</span>
<span class="number">  85</span><span class="c">//                                ALLEGRO_VERTEX_SHADER,</span>
<span class="number">  86</span><span class="c">//                                al_get_default_shader_source(ALLEGRO_SHADER_GLSL, ALLEGRO_VERTEX_SHADER)))</span>
<span class="number">  87</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>al_attach_shader_source_file<span class="k2">(</span>shader, ALLEGRO_VERTEX_SHADER, fileNameVert<span class="k2">)</span><span class="k2">)</span>
<span class="number">  88</span>    <span class="k2">{</span>
<span class="number">  89</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>        <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number">  91</span>    <span class="k2">}</span>
<span class="number">  92</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>al_attach_shader_source_file<span class="k2">(</span>shader, ALLEGRO_PIXEL_SHADER, fileNameFrag<span class="k2">)</span><span class="k2">)</span>
<span class="number">  93</span>    <span class="k2">{</span>
<span class="number">  94</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>        <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number">  96</span>    <span class="k2">}</span>
<span class="number">  97</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>al_build_shader<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span>
<span class="number">  98</span>    <span class="k2">{</span>
<span class="number">  99</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>        <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 101</span>    <span class="k2">}</span>
<span class="number"> 102</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" &gt;&gt;&gt; "</span><span class="k3">&lt;</span><span class="k3">&lt;</span> al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" \n"</span><span class="k2">;</span>
<span class="number"> 103</span>
<span class="number"> 104</span>    <span class="k1">return</span> shader<span class="k2">;</span>
<span class="number"> 105</span><span class="k2">}</span>
<span class="number"> 106</span>
<span class="number"> 107</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 108</span><span class="c">// ---- INIT ---</span>
<span class="number"> 109</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 110</span><span class="k1">int</span> init<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 111</span><span class="k2">{</span>
<span class="number"> 112</span><span class="c">// Init Allegro 5</span>
<span class="number"> 113</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 114</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Init ALLEGRO_5 ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>
<span class="number"> 116</span><span class="c">// Init &amp; Install : Modules &amp; Addon</span>
<span class="number"> 117</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 118</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Install Keyboard ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 121</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Install Keyboard ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>
<span class="number"> 123</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 124</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Init Image addon ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>
<span class="number"> 126</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 127</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Init Primitives addon ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>
<span class="number"> 129</span><span class="c">// Settings</span>
<span class="number"> 130</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>    <span class="c">//al_set_new_display_flags(ALLEGRO_PROGRAMMABLE_PIPELINE | ALLEGRO_OPENGL);</span>
<span class="number"> 133</span>
<span class="number"> 134</span>    setFramerate<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>
<span class="number"> 136</span><span class="c">// Create All</span>
<span class="number"> 137</span>    windowDisplay <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>screenW<span class="k3">*</span>zoom, screenH<span class="k3">*</span>zoom<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>windowDisplay<span class="k2">)</span>
<span class="number"> 139</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Create display ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>
<span class="number"> 141</span>    windowBuffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>screenW, screenH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>windowDisplay<span class="k2">)</span>
<span class="number"> 143</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">"Unable to Create Buffer ! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>
<span class="number"> 145</span>    <a href="http://www.allegro.cc/manual/al_show_mouse_cursor"><span class="a">al_show_mouse_cursor</span></a><span class="k2">(</span>windowDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>
<span class="number"> 147</span>    myImage <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span>myImageFileName<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>
<span class="number"> 149</span>
<span class="number"> 150</span>    myShader <span class="k3">=</span> create_shader<span class="k2">(</span>myShaderVertFileName,myShaderFragFileName<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>
<span class="number"> 152</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>myShader<span class="k2">)</span>
<span class="number"> 153</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>,<span class="s">" Error in create myShader !\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>
<span class="number"> 155</span>    <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">0</span>,<span class="s">"--- init OK !\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span><span class="k2">}</span>
<span class="number"> 157</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 158</span><span class="c">// --- DONE ---</span>
<span class="number"> 159</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 160</span><span class="k1">int</span> done<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 161</span><span class="k2">{</span>
<span class="number"> 162</span><span class="c">// Destroy All</span>
<span class="number"> 163</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>myImage<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>    <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>framerateTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>    al_destroy_shader<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>windowBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>windowDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>    <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">0</span>,<span class="s">"--- done OK !\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 171</span><span class="k2">}</span>
<span class="number"> 172</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 173</span><span class="c">// --- RUN ---</span>
<span class="number"> 174</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 175</span><span class="k1">int</span> run<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 176</span><span class="k2">{</span>
<span class="number"> 177</span>
<span class="number"> 178</span>    <span class="k1">bool</span> quit<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</span>
<span class="number"> 180</span>    <span class="k1">float</span> centerX<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 181</span>    <span class="k1">float</span> centerY<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>    <span class="k1">float</span> radius<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>    <span class="k1">float</span> maxRadius<span class="k2">(</span><span class="n">200</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>    <span class="k1">float</span> speed<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>
<span class="number"> 186</span>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span>
<span class="number"> 187</span>    <span class="k2">{</span>
<span class="number"> 188</span>    <span class="c">// --- Update ---</span>
<span class="number"> 189</span>
<span class="number"> 190</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number"> 191</span>        <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>eventQueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>
<span class="number"> 193</span>        <span class="c">// Keyboard Input !</span>
<span class="number"> 194</span>        <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 195</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState, ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 196</span>            quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 197</span>
<span class="number"> 198</span>        <span class="c">// Mouse Input !</span>
<span class="number"> 199</span>        <a href="http://www.allegro.cc/manual/al_get_mouse_state"><span class="a">al_get_mouse_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>mouseState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>        <a href="http://www.allegro.cc/manual/al_get_window_position"><span class="a">al_get_window_position</span></a> <span class="k2">(</span>windowDisplay, <span class="k3">&amp;</span>xWindow, <span class="k3">&amp;</span>yWindow<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>        <a href="http://www.allegro.cc/manual/al_get_mouse_cursor_position"><span class="a">al_get_mouse_cursor_position</span></a><span class="k2">(</span><span class="k3">&amp;</span>mouseXi, <span class="k3">&amp;</span>mouseYi<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>        mouseXf <span class="k3">=</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">(</span>mouseXi-xWindow<span class="k2">)</span><span class="k3">-</span><span class="n">2</span><span class="k2">)</span><span class="k3">/</span>zoom<span class="k2">;</span>
<span class="number"> 203</span>        mouseYf <span class="k3">=</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">(</span>mouseYi-yWindow<span class="k2">)</span><span class="k3">-</span><span class="n">24</span><span class="k2">)</span><span class="k3">/</span>zoom<span class="k2">;</span>
<span class="number"> 204</span>
<span class="number"> 205</span>        <span class="k1">if</span> <span class="k2">(</span>mouseState.buttons <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 206</span>        <span class="k2">{</span>
<span class="number"> 207</span>            centerX <span class="k3">=</span> mouseXf<span class="k2">;</span>
<span class="number"> 208</span>            centerY <span class="k3">=</span> mouseYf<span class="k2">;</span>
<span class="number"> 209</span>            radius <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 210</span>            speed <span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 211</span>        <span class="k2">}</span>
<span class="number"> 212</span>
<span class="number"> 213</span>        <span class="c">// ShockWave Update !</span>
<span class="number"> 214</span>        radius <span class="k3">+</span><span class="k3">=</span> speed<span class="k2">;</span>
<span class="number"> 215</span>        <span class="k1">if</span> <span class="k2">(</span>radius <span class="k3">&gt;</span> maxRadius<span class="k2">)</span>
<span class="number"> 216</span>        <span class="k2">{</span>
<span class="number"> 217</span>            radius <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 218</span>            speed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 219</span>        <span class="k2">}</span>
<span class="number"> 220</span>
<span class="number"> 221</span>    <span class="c">// --- Render ---</span>
<span class="number"> 222</span>
<span class="number"> 223</span>        <span class="c">// clear windowbuffer !</span>
<span class="number"> 224</span>        <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>windowBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>        <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">25</span>,<span class="n">40</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 226</span>
<span class="number"> 227</span>        <span class="c">// Begin drawing !</span>
<span class="number"> 228</span>
<span class="number"> 229</span>        <span class="c">// Use shader here before blit buffer to display !!</span>
<span class="number"> 230</span>        al_use_shader<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 231</span>        al_set_shader_sampler<span class="k2">(</span><span class="s">"texture"</span>, myImage, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 232</span>
<span class="number"> 233</span>        <span class="k1">float</span> center<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> centerX, centerY <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 234</span>        <span class="k1">float</span> shockParams<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">10</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">8</span>, <span class="n">0</span>.<span class="n">1</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 235</span>
<span class="number"> 236</span>        al_set_shader_float<span class="k2">(</span><span class="s">"time"</span>, radius<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 237</span>        al_set_shader_float_vector<span class="k2">(</span><span class="s">"center"</span>, <span class="n">2</span>, <span class="k3">&amp;</span>center<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>        al_set_shader_float_vector<span class="k2">(</span><span class="s">"shockParams"</span>, <span class="n">3</span>, <span class="k3">&amp;</span>shockParams<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span>
<span class="number"> 240</span>        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>myImage, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 241</span>
<span class="number"> 242</span>        al_use_shader<span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 243</span>
<span class="number"> 244</span>        drawGrid<span class="k2">(</span>screenW, screenH,<span class="n">32</span>,<span class="n">32</span>,<a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">45</span>,<span class="n">80</span>,<span class="n">50</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 245</span>        <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">5</span>, <span class="n">0</span>.<span class="n">5</span>,
<span class="number"> 246</span>                          screenW-.5, screenH-.5,
<span class="number"> 247</span>                          <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">250</span>,<span class="n">120</span>,<span class="n">180</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 248</span>
<span class="number"> 249</span>        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>, mouseYf, screenW, mouseYf, <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">10</span>,<span class="n">100</span>,<span class="n">155</span>,<span class="n">50</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 250</span>        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>mouseXf, <span class="n">0</span>, mouseXf, screenH, <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">10</span>,<span class="n">100</span>,<span class="n">155</span>,<span class="n">50</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>
<span class="number"> 252</span>        <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span>centerX, centerY, radius, <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">250</span>,<span class="n">200</span>,<span class="n">210</span>,<span class="n">50</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 253</span>
<span class="number"> 254</span>
<span class="number"> 255</span>        <span class="c">/// End drawing !</span>
<span class="number"> 256</span>
<span class="number"> 257</span>        <span class="c">// Blit buffer to display !</span>
<span class="number"> 258</span>        <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>windowDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 259</span>        <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 260</span>
<span class="number"> 261</span>
<span class="number"> 262</span>        <a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a><span class="k2">(</span>windowBuffer,
<span class="number"> 263</span>                              <span class="n">0</span>, <span class="n">0</span>, screenW, screenH,
<span class="number"> 264</span>                              <span class="n">0</span>, <span class="n">0</span>, screenW<span class="k3">*</span>zoom, screenH<span class="k3">*</span>zoom,
<span class="number"> 265</span>                              <span class="n">0</span><span class="k2">)</span>,
<span class="number"> 266</span>
<span class="number"> 267</span>
<span class="number"> 268</span>        <span class="c">// Flip display !</span>
<span class="number"> 269</span>        <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 270</span>
<span class="number"> 271</span>
<span class="number"> 272</span>    <span class="k2">}</span>
<span class="number"> 273</span>
<span class="number"> 274</span>    <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">0</span>,<span class="s">"--- run OK !\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 275</span><span class="k2">}</span>
<span class="number"> 276</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 277</span><span class="c">// --- MAIN ---</span>
<span class="number"> 278</span><span class="c">// -----------------------------------------------------------------------</span>
<span class="number"> 279</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 280</span><span class="k2">{</span>
<span class="number"> 281</span>    <span class="k1">if</span> <span class="k2">(</span>init<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 282</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>, <span class="s">"Error in init() \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 283</span>    <span class="k1">if</span> <span class="k2">(</span>run<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 284</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>, <span class="s">"Error in run() \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 285</span>    <span class="k1">if</span> <span class="k2">(</span>done<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 286</span>        <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">1</span>, <span class="s">"Error in done() \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 287</span>
<span class="number"> 288</span>    <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_542.html" target="_blank">log</a><span class="k2">(</span><span class="n">0</span>,<span class="s">"--- Terminated normally ! \n"</span><span class="k2">)</span><span class="k2">;</span><span class="k2">;</span>
<span class="number"> 289</span><span class="k2">}</span>
</div></div><p>

And it don&#39;t works ! <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Mon, 28 Nov 2016 16:39:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>&quot;Doesn&#39;t work&quot; is a really terrible way of describing the problem. I&#39;m guessing you mean no shockwave happens and everything draws correctly.</p><p>If I understand the code correctly, your problem is one incorrect numerical spaces. In your pixel shader, center is based off the mouse coordinates in pixel space and it is being compared against texture coordinates which are in UV space. <br />Put another way, on the line &quot;float distance = distance(uv, center);&quot;, center is ([0, windowWidth], [0, windowHeight]) while uv is ([0, 1], [0, 1]).</p><p>FYI, you can actually debug shaders on PC if you have an nVidia card. <a href="http://www.nvidia.com/object/nsight.html">NSight</a> is your friend.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (relpatseht)</author>
		<pubDate>Tue, 29 Nov 2016 00:45:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You guessing right, nothing happens, I just have my bitmap on the screen.</p><p>My another question is if my shader code(cpp) is correct or not.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Tue, 29 Nov 2016 00:59:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t see anything immediately wrong with your shader code, just the numbers you&#39;re passing into it.</p><p>Center needs to be in UV space [0, 1] and it isn&#39;t. Divide your mouse coords by the window size.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (relpatseht)</author>
		<pubDate>Tue, 29 Nov 2016 01:11:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know if I pass texture correctly :</p><p>al_set_shader_sampler(&quot;tex&quot;, myImage, 0);</p><p>Ok I tried to divide by the texture/bitmap size (not the window here).<br />But nothing happens any more.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#ifdef GL_ES</span>
<span class="number">  2</span>precision mediump <span class="k1">float</span><span class="k2">;</span>
<span class="number">  3</span><span class="p">#endif</span>
<span class="number">  4</span>
<span class="number">  5</span>uniform sampler2D tex<span class="k2">;</span> <span class="c">// 0</span>
<span class="number">  6</span>uniform vec2 center<span class="k2">;</span> <span class="c">// Mouse position</span>
<span class="number">  7</span>uniform <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span> <span class="c">// effect elapsed time</span>
<span class="number">  8</span>uniform vec3 shockParams<span class="k2">;</span> <span class="c">// 10.0, 0.8, 0.1</span>
<span class="number">  9</span>
<span class="number"> 10</span>uniform vec2 surface<span class="k2">;</span> <span class="c">// texture resolution</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 13</span><span class="k2">{</span>
<span class="number"> 14</span>    vec2 uv <span class="k3">=</span> gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.xy<span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>    vec2 texCoord <span class="k3">=</span> uv<span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>    <span class="k1">float</span> dist <span class="k3">=</span> distance<span class="k2">(</span>uv, vec2<span class="k2">(</span>center.x<span class="k3">/</span>surface.x, center.y<span class="k3">/</span>surface.y<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>dist <span class="k3">&lt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">+</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>dist <span class="k3">&gt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">-</span> shockParams.z<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 21</span>    <span class="k2">{</span>
<span class="number"> 22</span>        <span class="k1">float</span> diff <span class="k3">=</span> <span class="k2">(</span>dist <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>        <span class="k1">float</span> powDiff <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>diff<span class="k3">*</span>shockParams.x<span class="k2">)</span>, shockParams.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>        <span class="k1">float</span> diffTime <span class="k3">=</span> diff  <span class="k3">*</span> powDiff<span class="k2">;</span>
<span class="number"> 25</span>        vec2 diffUV <span class="k3">=</span> normalize<span class="k2">(</span>uv <span class="k3">-</span> center<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>        texCoord <span class="k3">=</span> uv <span class="k3">+</span> <span class="k2">(</span>diffUV <span class="k3">*</span> diffTime<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k2">}</span>
<span class="number"> 28</span>
<span class="number"> 29</span>    gl_FragColor <span class="k3">=</span> texture2D<span class="k2">(</span>tex, texCoord<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span>    <span class="c">//gl_FragColor = vec4(1.0,1.0,0.0,0.1);</span>
<span class="number"> 32</span><span class="k2">}</span>
</div></div><p>
I&#39;ve got the shader here :<br /><a href="http://www.geeks3d.com/20091116/shader-library-2d-shockwave-post-processing-filter-glsl/">http://www.geeks3d.com/20091116/shader-library-2d-shockwave-post-processing-filter-glsl/</a></p><p>I simply wanted to test it on a ALLEGRO_BITMAP with Allegro 5 shader functions.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Tue, 29 Nov 2016 01:28:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>GLSL has a nice vector library, you can just say center/surface, you don&#39;t need to separate the x and y parameters.</p><p>That said, I have no idea what the dimensions of surface are to tell you if they&#39;re correct given your input for center.</p><p>An an exercise, print out the smallest value for mouseXf and mouseYf, as well as the largest value for each, as you move the mouse around the window.<br />You need to write a function so that the smallest number will be converted to 0 and the largest converted to 1.</p><p>You really shouldn&#39;t be using al_get_mouse_position either. Coordinates relative to the desktop then guessing if you&#39;re within the window is silly. Get your coordinates relative to the window, which you already have in mouseState.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (relpatseht)</author>
		<pubDate>Tue, 29 Nov 2016 01:39:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok I finally did it <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />, thank you very much for your help !</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>uniform sampler2D tex<span class="k2">;</span> <span class="c">// 0</span>
<span class="number">  2</span>uniform vec2 center<span class="k2">;</span> <span class="c">// Mouse position</span>
<span class="number">  3</span>uniform <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span> <span class="c">// effect elapsed time</span>
<span class="number">  4</span>uniform vec3 shockParams<span class="k2">;</span> <span class="c">// 10.0, 0.8, 0.1</span>
<span class="number">  5</span>
<span class="number">  6</span>uniform vec2 surface<span class="k2">;</span> <span class="c">// texture resolution</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>    vec2 uv <span class="k3">=</span> gl_TexCoord<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.xy<span class="k2">;</span>
<span class="number"> 11</span>    vec2 texCoord <span class="k3">=</span> uv<span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>    <span class="c">//float square = min(surface.x,surface.y);</span>
<span class="number"> 14</span>    <span class="c">//vec2 position = vec2(center.x/square, center.y/square);</span>
<span class="number"> 15</span>
<span class="number"> 16</span>    vec2 position <span class="k3">=</span> center<span class="k3">/</span>surface<span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">float</span> dist <span class="k3">=</span> distance<span class="k2">(</span>uv, position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>    <span class="c">//float dist = distance(vec2(uv.x,uv.y), vec2(position.x,position.y));</span>
<span class="number"> 20</span>
<span class="number"> 21</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>dist <span class="k3">&lt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">+</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>dist <span class="k3">&gt;</span><span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">-</span> shockParams.z<span class="k2">)</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 22</span>    <span class="k2">{</span>
<span class="number"> 23</span>        <span class="k1">float</span> diff <span class="k3">=</span> <span class="k2">(</span>dist <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>        <span class="k1">float</span> powDiff <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>diff<span class="k3">*</span>shockParams.x<span class="k2">)</span>, shockParams.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>        <span class="k1">float</span> diffTime <span class="k3">=</span> diff  <span class="k3">*</span> powDiff<span class="k2">;</span>
<span class="number"> 26</span>        vec2 diffUV <span class="k3">=</span> normalize<span class="k2">(</span>uv <span class="k3">-</span> position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>        texCoord <span class="k3">=</span> uv <span class="k3">+</span> <span class="k2">(</span>diffUV <span class="k3">*</span> diffTime<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k2">}</span>
<span class="number"> 29</span>
<span class="number"> 30</span>    gl_FragColor <span class="k3">=</span> texture2D<span class="k2">(</span>tex, texCoord<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k2">}</span>
</div></div><p>

You can test the program here: <a href="https://www.allegro.cc/files/attachment/610651">https://www.allegro.cc/files/attachment/610651</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SilverTES)</author>
		<pubDate>Tue, 29 Nov 2016 03:51:00 +0000</pubDate>
	</item>
</rss>
