<snapdata remixID="11396164"><project name="Faster shadering" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes>Muchly faster shader rendering than my last attempt (because it lets you use a lower resolution and uses costumes rather than pen) which also happens to not use JSF.&#xD;Obviously you will have to write your own shaders or manually port them from GLSL, because I&apos;m not about to write an interpreter.&#xD;There are most likely a lot of maths functions missing and I probably forgot to provide some very important parameters so please shout at me on the forums and I will add them</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Faster shadering"><notes>Muchly faster shader rendering than my last attempt (because it lets you use a lower resolution and uses costumes rather than pen) which also happens to not use JSF.&#xD;Obviously you will have to write your own shaders or manually port them from GLSL, because I&apos;m not about to write an interpreter.&#xD;There are most likely a lot of maths functions missing and I probably forgot to provide some very important parameters so please shout at me on the forums and I will add them</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="render shader at speed %&apos;speed&apos; resolution %&apos;resolution&apos; % $nl %&apos;fragX&apos; %&apos;fragY&apos; %&apos;maxX&apos; %&apos;maxY&apos; %&apos;time&apos; %&apos;lambda&apos;" type="command" category="looks"><comment x="0" y="0" w="253" collapsed="false">Renders a single frame of a fragment shader function, vaguely following GLSL convention (e.g. coords originate at the top-left rather than centre, although they start at 1 because that&apos;s how Snap! does things)&#xD;&#xD;If you replace the C-shape with a ring, don&apos;t give it any inputs, and continue to use the upvars.&#xD;&#xD;The argument `speed` controls how the `time` upvar will be set - a higher speed will make time change quicker over (real) time and so the shader will animate faster.&#xD;&#xD;The `time` upvar bases its value on the project timer, so using RESET TIMER will restart the shader animation from the beginning.</comment><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">100</input><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>res multiplier</l></list></block><block s="doSetVar"><l>res multiplier</l><block s="reportQuotient"><block var="resolution"/><l>100</l></block></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>time</l><block s="reportRound"><block s="reportVariadicProduct"><list><block s="getTimer"></block><block var="speed"/><l>100</l></list></block></block></block><block s="doSetVar"><l>maxX</l><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block></block><block s="doSetVar"><l>maxY</l><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block></block><block s="doFor"><l>y</l><l>1</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="maxY"/><block var="res multiplier"/></list></block></block><script><block s="doFor"><l>x</l><l>1</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="maxX"/><block var="res multiplier"/></list></block></block><script><block s="doSetVar"><l>fragX</l><block s="reportQuotient"><block var="x"/><block var="res multiplier"/></block></block><block s="doSetVar"><l>fragY</l><block s="reportQuotient"><block var="y"/><block var="res multiplier"/></block></block><block s="doAddToList"><block s="evaluate"><block var="lambda"/><list></list></block><block var="result"/></block></script></block></script></block><block s="doSwitchToCostume"><block s="reportNewCostume"><block var="result"/><block s="reportVariadicProduct"><list><block var="maxX"/><block var="res multiplier"/></list></block><block s="reportVariadicProduct"><list><block var="maxY"/><block var="res multiplier"/></list></block></block></block><block s="setScale"><block s="reportQuotient"><l>100</l><block var="res multiplier"/></block></block></script></block></script></block-definition><block-definition s="round %&apos;x&apos; to multiple of %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicProduct"><list><block s="reportRound"><block s="reportQuotient"><block var="x"/><block var="y"/></block></block><block var="y"/></list></block></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="131"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAABHNCSVQICAgIfAhkiAAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="132"></list></costumes><sounds><list struct="atomic" id="133"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="0" color="80,80,80,1" pen="tip" id="138"><costumes><list struct="atomic" id="139"></list></costumes><sounds><list struct="atomic" id="140"></list></sounds><blocks></blocks><variables></variables><scripts><script x="369" y="191.66666666666663"><block s="receiveGo"></block><block s="doSetVar"><l>frames</l><l>0</l></block><block s="doSetVar"><l>FPS</l><l>0</l></block><block s="doResetTimer"></block><block s="doTellTo"><block s="newClone"><l><option>myself</option></l><comment w="238" collapsed="false">Using a temp clone to slightly reduce lag (it doesn&apos;t have to redraw the thumbnail in the sprite corral) and to prevent saving the rendered output in the project file (which would just be a waste of space)</comment></block><block s="reifyScript"><script><block s="goToLayer"><l><option>back</option></l></block><block s="show"></block><block s="fork"><block s="reifyScript"><script><block s="doForever"><script><custom-block s="render shader at speed %n resolution %n % %br %upvar %upvar %upvar %upvar %upvar %cs"><l>1</l><block var="resolution%"/><l>fragX</l><l>fragY</l><l>maxX</l><l>maxY</l><l>time</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportVariadicProduct"><list><block s="reportQuotient"><custom-block s="round %n to multiple of %n"><block s="reportVariadicSum"><list><block var="fragY"/><block s="reportVariadicProduct"><list><block s="reportMonadic"><l><option>sin</option></l><block var="time"/></block><l>50</l></list></block></list></block><l>50</l></custom-block><block var="maxY"/></block><l>255</l></list></block><block s="reportVariadicProduct"><list><block s="reportQuotient"><custom-block s="round %n to multiple of %n"><block var="fragX"/><block var="fragY"/></custom-block><block var="maxX"/></block><l>255</l></list></block><block s="reportVariadicProduct"><list><block s="reportQuotient"><custom-block s="round %n to multiple of %n"><block var="fragX"/><block s="reportRound"><block s="reportQuotient"><block var="fragY"/><block s="reportMonadic"><l><option>sin</option></l><block var="time"/></block></block></block></custom-block><block var="maxX"/></block><l>255</l></list></block><l>255</l></list></block></block></script></custom-block><block s="doChangeVar"><l>frames</l><l>1</l></block></script></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block s="doForever"><script><block s="doWait"><l>1</l></block><block s="doSetVar"><l>FPS</l><block s="reportQuotient"><block var="frames"/><block s="getTimer"></block></block></block></script></block></script></scripts></sprite><watcher var="FPS" style="normal" x="10" y="10" color="243,118,29"/><watcher var="frames" style="normal" x="10" y="31.000001999999995" color="243,118,29"/><watcher var="resolution%" style="slider" min="1" max="100" x="9" y="51.00000399999999" color="243,118,29"/></sprites></stage><variables><variable name="FPS" transient="true"/><variable name="frames" transient="true"/><variable name="resolution%"><l>10</l></variable></variables></scene></scenes></project><media name="Faster shadering" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>