diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..607f2213 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fc096ea5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.pyc +.DS_Store +node_modules +out +extra + diff --git a/README.md b/README.md index cf974873..dc8fad54 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# vertexshaderart.com is offline +# vertexshaderart.com is in transition Soundcloud changed their API and I can't be bothered to fix this code. Tools are out of date etc and it's just too much work for a site that @@ -9,10 +9,11 @@ more than once causing a bunch of work. Artists delete their accounts, or delete songs, or change permissions and then the visualizations here are left non-working. -I thought about maybe trying to find a few 1000s free tracks -and upload them somewhere streamable but that would also be -too much work. +So, I took the server offline. It ran for ~9 years. -So, I took the site offline. +I'm working on putting up the data. Unfortunately, without soundcloud, +most of the visualizations will do nothing. I will look into putting in +some random music and/or provide options to use other sources of music. -It ran for ~9 years. +I will also probably try to make new stuff url based so it's entirely a +static website. diff --git a/art/22RaBcCzsbaXEzCh5/art.json b/art/22RaBcCzsbaXEzCh5/art.json new file mode 100644 index 00000000..b0161c48 --- /dev/null +++ b/art/22RaBcCzsbaXEzCh5/art.json @@ -0,0 +1,46 @@ +{ + "_id": "22RaBcCzsbaXEzCh5", + "owner": { + "_id": "DMjrQbvFJZiBrahNH", + "createdAt": { + "$date": { + "$numberLong": "1684316626390" + } + }, + "profile": { + "name": null, + "avatarUrl": "https://avatars.githubusercontent.com/JeminShin2?s=200" + }, + "username": "jeminshin2" + }, + "createdAt": { + "$date": { + "$numberLong": "1684316663590" + } + }, + "modifiedAt": { + "$date": { + "$numberLong": "1684316857456" + } + }, + "origId": null, + "name": "Making A Grid", + "notes": "", + "rank": { + "$numberDouble": "1.6403155062990533" + }, + "private": false, + "unlisted": true, + "username": "jeminshin2", + "avatarUrl": "https://avatars.githubusercontent.com/JeminShin2?s=200", + "settings": "{\"num\":10000,\"mode\":\"LINES\",\"sound\":\"\",\"lineSize\":\"NATIVE\",\"backgroundColor\":[0,0,0,1],\"shader\":\"// Jemin.Shin\\n// Exercise Making A Grid\\n// CS250 Spring 2022\\n\\nvoid main() {\\n float down = floor(sqrt(vertexCount));\\n float across = floor(vertexCount/down);\\n \\n float x = mod(vertexId, across);\\n float y = floor(vertexId/across);\\n \\n float u = x / (across - 1.);\\n float v = y / (across - 1.);\\n \\n float ux = u * 2. - 1.;\\n float vy = v * 2. - 1.;\\n \\n gl_Position = vec4(ux * sin(time), vy * cos(time), 0., 0.5);\\n \\n gl_PointSize = 10.0;\\n gl_PointSize *= 20./across;\\n gl_PointSize *= resolution.x / 400.;\\n \\n \\n v_color = vec4(1,0,0,1);\\n \\n}\"}", + "screenshotURL": "data/images/images-d2fsmpwp2mvlmqnit-thumbnail.jpg", + "hasSound": "", + "views": { + "$numberInt": "2" + }, + "likes": { + "$numberInt": "0" + }, + "revisionId": "KzeoJ5ejF8jQ3XPrm" +} \ No newline at end of file diff --git a/art/22RaBcCzsbaXEzCh5/index.html b/art/22RaBcCzsbaXEzCh5/index.html new file mode 100644 index 00000000..7cd7b0c3 --- /dev/null +++ b/art/22RaBcCzsbaXEzCh5/index.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + vertexshaderart - Making A Grid - by jeminshin2 + + + + + +

separator

+ +

more stuff

+ +

more stuff

+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

10

+

11

+

12

+

13

+

14

+

15

+

16

+

17

+

18

+

19

+

20

+

21

+

22

+

23

+

24

+

25

+

26

+

27

+

28

+

29

+ + + + diff --git a/src/images/eye-closed.afdesign b/src/images/eye-closed.afdesign new file mode 100644 index 00000000..13555a97 Binary files /dev/null and b/src/images/eye-closed.afdesign differ diff --git a/src/images/eye.afdesign b/src/images/eye.afdesign new file mode 100644 index 00000000..cc1c1ae4 Binary files /dev/null and b/src/images/eye.afdesign differ diff --git a/src/images/fullscreen.afdesign b/src/images/fullscreen.afdesign new file mode 100644 index 00000000..202ea20a Binary files /dev/null and b/src/images/fullscreen.afdesign differ diff --git a/src/images/go.afdesign b/src/images/go.afdesign new file mode 100644 index 00000000..c1fa2ec7 Binary files /dev/null and b/src/images/go.afdesign differ diff --git a/src/images/heart.afdesign b/src/images/heart.afdesign new file mode 100644 index 00000000..67bb7ab6 Binary files /dev/null and b/src/images/heart.afdesign differ diff --git a/src/images/loading.afdesign b/src/images/loading.afdesign new file mode 100644 index 00000000..af5c92ca Binary files /dev/null and b/src/images/loading.afdesign differ diff --git a/src/images/private.afdesign b/src/images/private.afdesign new file mode 100644 index 00000000..148aba0f Binary files /dev/null and b/src/images/private.afdesign differ diff --git a/src/images/share.afdesign b/src/images/share.afdesign new file mode 100644 index 00000000..7c003a4e Binary files /dev/null and b/src/images/share.afdesign differ diff --git a/src/images/speaker.afdesign b/src/images/speaker.afdesign new file mode 100644 index 00000000..fde4a709 Binary files /dev/null and b/src/images/speaker.afdesign differ diff --git a/src/images/start.afdesign b/src/images/start.afdesign new file mode 100644 index 00000000..e3728e2a Binary files /dev/null and b/src/images/start.afdesign differ diff --git a/src/images/stop.afdesign b/src/images/stop.afdesign new file mode 100644 index 00000000..fb150df7 Binary files /dev/null and b/src/images/stop.afdesign differ diff --git a/src/images/ui-2h.afdesign b/src/images/ui-2h.afdesign new file mode 100644 index 00000000..1de567d9 Binary files /dev/null and b/src/images/ui-2h.afdesign differ diff --git a/src/images/ui-2v.afdesign b/src/images/ui-2v.afdesign new file mode 100644 index 00000000..39c2e139 Binary files /dev/null and b/src/images/ui-2v.afdesign differ diff --git a/src/images/ui-ae.afdesign b/src/images/ui-ae.afdesign new file mode 100644 index 00000000..de46863b Binary files /dev/null and b/src/images/ui-ae.afdesign differ diff --git a/src/images/ui-base.afdesign b/src/images/ui-base.afdesign new file mode 100644 index 00000000..ee21fa60 Binary files /dev/null and b/src/images/ui-base.afdesign differ diff --git a/src/images/ui-bottom.afdesign b/src/images/ui-bottom.afdesign new file mode 100644 index 00000000..3c921df0 Binary files /dev/null and b/src/images/ui-bottom.afdesign differ diff --git a/src/images/ui-ea.afdesign b/src/images/ui-ea.afdesign new file mode 100644 index 00000000..70a7627b Binary files /dev/null and b/src/images/ui-ea.afdesign differ diff --git a/src/images/ui-left.afdesign b/src/images/ui-left.afdesign new file mode 100644 index 00000000..2b27e58d Binary files /dev/null and b/src/images/ui-left.afdesign differ diff --git a/src/images/ui-off.afdesign b/src/images/ui-off.afdesign new file mode 100644 index 00000000..034efb5d Binary files /dev/null and b/src/images/ui-off.afdesign differ diff --git a/src/images/ui-one.afdesign b/src/images/ui-one.afdesign new file mode 100644 index 00000000..79ebc02f Binary files /dev/null and b/src/images/ui-one.afdesign differ diff --git a/src/images/ui-top.afdesign b/src/images/ui-top.afdesign new file mode 100644 index 00000000..5b71502f Binary files /dev/null and b/src/images/ui-top.afdesign differ diff --git a/src/images/unlisted.afdesign b/src/images/unlisted.afdesign new file mode 100644 index 00000000..744a58d3 Binary files /dev/null and b/src/images/unlisted.afdesign differ diff --git a/src/index.html b/src/index.html new file mode 100644 index 00000000..f69b29fb --- /dev/null +++ b/src/index.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertexshaderart.com + + + + +
+ +
+
+
+
+ +
+ + + + + + + + + + + + + + + gallery + +
+
+
+
+
+
+
+ +
+
+
+
+

+          
+ + +
+
+
+
+
+ + + + + + + + diff --git a/src/js/browser.js b/src/js/browser.js new file mode 100644 index 00000000..3983f742 --- /dev/null +++ b/src/js/browser.js @@ -0,0 +1,32 @@ +import {createElem as el} from './elem.js'; + +const tocElem = document.querySelector('#toc'); +const toc = await (await fetch('toc.json')).json(); + +for (const {id, name, username, avatarUrl, screenshotURL} of toc) { + const artUrl = `art/${id}`; + tocElem.appendChild(el('div', [ + el('a', { + className: 'thumbnail', + style: { backgroundImage: `url(${screenshotURL}`}, + href: artUrl, + }), + el('div', { className: 'meta' }, [ + el('a', {href: artUrl, textContent: name}), + el('a', {href: `?owner=${username}`, textContent: username}), + ]), + ])); +} + +function filter(f) { + const s = f.trim(); + for (const elem of tocElem.children) { + const show = s + ? elem.textContent.toLowerCase().includes(s) + : true; + elem.style.display = show ? '' : 'none'; + } +} + +const searchElem = document.querySelector('#search input[type=text]'); +searchElem.addEventListener('input', () => filter(searchElem.value)); \ No newline at end of file diff --git a/src/js/elem.js b/src/js/elem.js new file mode 100644 index 00000000..d4bedefa --- /dev/null +++ b/src/js/elem.js @@ -0,0 +1,31 @@ +export function createElem(tag, attrs = {}, children = []) { + if (Array.isArray(attrs)) { + children = attrs; + attrs = {}; + } + const elem = document.createElement(tag); + for (const [key, value] of Object.entries(attrs)) { + if (typeof value === 'function' && key.startsWith('on')) { + const eventName = key.substring(2).toLowerCase(); + elem.addEventListener(eventName, value, {passive: false}); + } else if (typeof value === 'object') { + for (const [k, v] of Object.entries(value)) { + elem[key][k] = v; + } + } else if (elem[key] === undefined) { + elem.setAttribute(key, value); + } else { + elem[key] = value; + } + } + for (const child of children) { + elem.appendChild(child); + } + return elem; +} + +export function addElem(tag, parent, attrs = {}, children = []) { + const elem = createElem(tag, attrs, children); + parent.appendChild(elem); + return elem; +} \ No newline at end of file diff --git a/src/js/fullscreen.js b/src/js/fullscreen.js new file mode 100644 index 00000000..74ca2e69 --- /dev/null +++ b/src/js/fullscreen.js @@ -0,0 +1,106 @@ +/* + * Copyright 2015, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +define([], function() { + "use strict"; + + var requestFullScreen = function(element) { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } else if (element.webkitRequestFullScreen) { + element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.mozRequestFullscreen) { + element.mozRequestFullscreen(); + } + }; + + var noop = function() { + }; + + var cancelFullScreen = ( + document.exitFullscreen || + document.exitFullScreen || + document.msExitFullscreen || + document.msExitFullScreen || + document.webkitCancelFullscreen || + document.webkitCancelFullScreen || + document.mozCancelFullScreen || + document.mozCancelFullscreen || + noop).bind(document); + + function isFullScreen() { + var f = document.fullscreenElement || + document.fullScreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.webkitIsFullScreen; + return (f !== undefined && f !== null && f !== false); + } + + var onFullScreenChange = function(element, callback) { + document.addEventListener('fullscreenchange', function(/*event*/) { + callback(isFullScreen()); + }); + element.addEventListener('webkitfullscreenchange', function(/*event*/) { + callback(isFullScreen()); + }); + document.addEventListener('mozfullscreenchange', function(/*event*/) { + callback(isFullScreen()); + }); + }; + + function canGoFullScreen() { + var body = window.document.body || {}; + var r = body.requestFullscreen || + body.requestFullScreen || + body.msRequestFullscreen || + body.msRequestFullScreen || + body.webkitRequestFullScreen || + body.webkitRequestFullscreen || + body.mozRequestFullScreen || + body.mozRequestFullscreen; + return r !== undefined && r !== null; + } + + return { + cancelFullScreen: cancelFullScreen, + isFullScreen: isFullScreen, + canGoFullScreen: canGoFullScreen, + onFullScreenChange: onFullScreenChange, + requestFullScreen: requestFullScreen, + }; +}); + diff --git a/src/js/io.js b/src/js/io.js new file mode 100644 index 00000000..80f75fe3 --- /dev/null +++ b/src/js/io.js @@ -0,0 +1,148 @@ +/* + * Copyright 2014, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Misc IO functions + * @module IO + */ +define(function() { + //var log = function() { }; + //var log = console.log.bind(console); + + /** + * @typedef {Object} Request~Options + * @memberOf module:IO + * @property {number?} timeout. Timeout in ms to abort. + * Default = no-timeout + * @property {string?} method default = POST. + * @property {string?} inMimeType default = text/plain + * @property {Object{key,value}} headers + */ + + /** + * Make an http request request + * @memberOf module:IO + * @param {string} url url to request. + * @param {string?} content to send. + * @param {!function(error, string, xml)} callback Function to + * call on success or failure. If successful error will + * be null, object will be result from request. + * @param {module:IO~Request~Options?} options + */ + var request = function(url, content, callback, options) { + content = content || ""; + options = options || { }; + const reqOptions = { + method: options.method || 'POST', + headers: { + 'Content-Type': options.mimeType || 'text/plain', + }, + }; + + if (options.headers) { + Object.assign(reqOptions.headers, options.headers); + } + if (options.body) { + reqOptions.body = options.body; + } + + let resolve; + let reject; + const p = new Promise((_resolve, _reject) => { + resolve = _resolve; + reject = _reject; + }); + + if (options.timeout) { + setTimeout(() => reject('timeout'), options.timeout); + } + + fetch(url, reqOptions) + .then(res => res.text()) + .then(resolve) + .catch(reject); + + p.then(data => callback(null, data)) + .catch(err => callback(err)); + + }; + + /** + * sends a JSON 'POST' request, returns JSON repsonse + * @memberOf module:IO + * @param {string} url url to POST to. + * @param {Object=} jsonObject JavaScript object on which to + * call JSON.stringify. + * @param {!function(error, object)} callback Function to call + * on success or failure. If successful error will be + * null, object will be json result from request. + * @param {module:IO~Request~Options?} options + */ + var sendJSON = function(url, jsonObject, callback, options) { + options = JSON.parse(JSON.stringify(options || {})); + options.headers = options.headers || {}; + options.headers["Content-type"] = "application/json"; + return request( + url, + JSON.stringify(jsonObject), + function(err, content) { + if (err) { + return callback(err); + } + try { + var json = JSON.parse(content); + } catch (e) { + return callback(e); + } + return callback(null, json); + }, + options); + }; + + var makeMethodFunc = function(method) { + return function(url, content, callback, options) { + options = JSON.parse(JSON.stringify(options || {})); + options.method = method; + return request(url, content, callback, options); + }; + }; + + return { + get: makeMethodFunc("GET"), + post: makeMethodFunc("POST"), + "delete": makeMethodFunc("DELETE"), + put: makeMethodFunc("PUT"), + request: request, + sendJSON: sendJSON, + }; +}); + + diff --git a/src/js/keyrouter.js b/src/js/keyrouter.js new file mode 100644 index 00000000..2681cc8c --- /dev/null +++ b/src/js/keyrouter.js @@ -0,0 +1,57 @@ +define([], function() { + function getMods(e) { + return '' + // this must be in alphabetical order + (e.altKey ? 'a' : '') + + (e.ctrlKey ? 'c' : '') + + (e.shiftKey ? 's' : '') + + (e.metaKey ? 'm' : ''); + } + + function prepMods(mods) { + var chars = Array.prototype.map.call(mods.toLowerCase(), function(c) { + return c; + }); + chars.sort(); + return chars.join(""); + } + + /** + * Routes keys based on keycode and modifier + */ + function KeyRouter() { + this.handlers = {}; + } + + /** + * Routes a key + * @param {Event} e the key event + * @return {bool} true if event was routed + */ + KeyRouter.prototype.handleKeyDown = function(e) { + var keyId = e.keyCode + ':' + getMods(e); + var handler = this.handlers[keyId]; + if (handler) { + handler(e); + return true; + } + return false; + }; + + /** + * @param {number} keyCode the keycode + * @param {string} [mods] the modifiers where + * 's' = shift, 'c' = ctrl, 'a' = alt, 'm' = meta (apple key, windows key) + * @param {function(Event}) handler the funciton to call when key is pressed + */ + KeyRouter.prototype.on = function(keyCode, mods, handler) { + if (handler === undefined) { + handler = mods; + mods = ''; + } + var keyId = keyCode + ':' + prepMods(mods); + this.handlers[keyId] = handler; + }; + + return KeyRouter; +}); + diff --git a/src/js/listenermanager.js b/src/js/listenermanager.js new file mode 100644 index 00000000..e00aa35d --- /dev/null +++ b/src/js/listenermanager.js @@ -0,0 +1,71 @@ +/* + * Copyright 2015, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +define([], function() { + "use strict"; + + function ListenerManager() { + var listeners = {}; + var nextId = 1; + + // Returns an id for the listener. This is easier IMO than + // the normal remove listener which requires the same arguments as addListener + this.on = function(elem /*, event, listener, useCapture */) { + var args = Array.prototype.slice.call(arguments, 1); + elem.addEventListener.apply(elem, args); + var id = nextId++; + listeners[id] = { + elem: elem, + args: args, + }; + return id; + }; + + this.remove = function(id) { + var listener = listeners[id]; + if (listener) { + delete listener[id]; + listener.elem.removeEventListener.apply(listener.elem, listener.args); + } + }; + + this.removeAll = function() { + var old = listeners; + listeners = {}; + Object.keys(old).forEach(function(id) { + var listener = old[id]; + listener.elem.removeEventListener.apply(listener.elem, listener.args); + }); + }; + } + + return ListenerManager; +}); + diff --git a/src/js/main.js b/src/js/main.js new file mode 100644 index 00000000..cbbe026d --- /dev/null +++ b/src/js/main.js @@ -0,0 +1,2219 @@ +/* + * Copyright 2015, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +define([ + '3rdparty/audiostreamsource', + '3rdparty/codemirror/lib/codemirror', + '3rdparty/codemirror/addon/scroll/simplescrollbars', + '3rdparty/colorutils', + '3rdparty/cssparse', + '3rdparty/glsl', + '3rdparty/tweeny', + '3rdparty/twgl-full', + '3rdparty/notifier', + './fullscreen', + './io', + './keyrouter', + './listenermanager', + './misc', + './strings', + './shaders', + './typedarray-copyWithin-polyfill', + ], function( + audioStreamSource, + CodeMirror, + CodeMirrorSimpleScrollbars, + colorUtils, + cssParse, + glsl, + tweeny, + twgl, + Notifier, + fullScreen, + io, + KeyRouter, + ListenerManager, + misc, + strings, + shaders, + typedArrayCopyWithinPolyfill // eslint-disable-line + ) { + + "use strict"; + + + + // There's really no good way to tell which browsers fail. + // Right now Safari doesn't expose AudioContext (it's still webkitAudioContext) + // so my hope is whenever they get around to actually supporting the 3+ year old + // standard that things will actually work. + var shittyBrowser = false;// window.AudioContext === undefined && /iPhone|iPad|iPod/.test(navigator.userAgent); + var isMobile = false;// window.navigator.userAgent.match(/Android|iPhone|iPad|iPod|Windows Phone/i); + var $ = document.querySelector.bind(document); + var gl; + var m4 = twgl.m4; + var q = misc.parseUrlQuery(); + var s = { + screenshotCanvas: document.createElement("canvas"), + restoreKey: "restore", + show: !isMobile, + inIframe: window.self !== window.top && !q.art, + running: true, // true vs.stop has not been called (this is inside the website) + trackNdx: 0, // next track to play + currentTrackNdx: 0, // track currently playing + playlist: [], + // if true music will repeat whatever playlist is currently running + // instead of replacing it with the one from settings + lockMusic: false, + // set to false to just once, not interrupt music + // This is used because then the route changes like from "/new/" to "/art/id" + // meteor will re-render the scene with the new route. + // but for us it's not really a new route. + interruptMusic: true, + // true of we already started the audio system and don't need + // a gesture to start it. + audioStarted: false, + }; + s.screenshotCanvas.width = 600; + s.screenshotCanvas.height = 336; + + function getShader(id) { + return shaders[id]; + } + + function randomElement(array) { + return array[Math.random() * array.length | 0]; + } + + function ProgramManager(gl) { + var _handlers = {}; + var _programInfo; + var _queue = []; + var _timeout = 500; + var _vs; + var _fs; + var _prg; + var _src; + var _processing; + + function _emit(event) { + var handler = _handlers[event]; + if (handler) { + handler.apply(null, Array.prototype.slice.call(arguments, 1)); + } + } + + function _compileShader(type, src) { + var shader = gl.createShader(type); + gl.shaderSource(shader, src); + gl.compileShader(shader); + return shader; + } + + function _linkProgram(vs, fs) { + var prg = gl.createProgram(); + gl.attachShader(prg, vs); + gl.attachShader(prg, fs); + gl.linkProgram(prg); + return prg; + } + + function _getShaderResults(shader) { + var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!success) { + var errors = gl.getShaderInfoLog(shader); + console.error(errors); + return errors; + } + } + + function _getProgramResults(prg) { + var success = gl.getProgramParameter(prg, gl.LINK_STATUS); + if (!success) { + var errors = gl.getProgramInfoLog(prg); + console.error(errors); + return errors; + } + } + + function _checkResults() { + _processing = false; + + var vsErrors = _getShaderResults(_vs); + var fsErrors = _getShaderResults(_fs); + var prgErrors = _getProgramResults(_prg); + + // We don't need the shaders. If successful + // they are linked in the program. In failure + // we'll make new ones anyway. + gl.deleteShader(_fs); + gl.deleteShader(_vs); + + if (vsErrors === undefined && + fsErrors === undefined && + prgErrors === undefined) { + // success! + _emit('success', _src); + if (_programInfo) { + gl.deleteProgram(_programInfo.program); + } + _programInfo = twgl.createProgramInfoFromProgram(gl, _prg); + } else { + // failure + _emit('failure', [ + vsErrors || '', + fsErrors || '', + prgErrors || '', + ].join("\n")); + gl.deleteProgram(_prg); + } + _processQueue(); + } + + function _processQueue() { + if (_processing || !_queue.length) { + return; + } + _processing = true; + _src = _queue.shift(); + _vs = _compileShader(gl.VERTEX_SHADER, _src.vsrc); + _fs = _compileShader(gl.FRAGMENT_SHADER, _src.fsrc); + _prg = _linkProgram(_vs, _fs); + // make sure the GPU driver executes this commands now. + gl.flush(); + // check the results some time later. + // this gives us a chance at async compilcation. + setTimeout(_checkResults, _timeout); + } + + this.on = function(event, handler) { + _handlers[event] = handler; + }; + + // Haha! userData, just like C++. Grrr! + this.compile = function(vsrc, fsrc, userData) { + _queue = [{vsrc: vsrc, fsrc: fsrc, userData: userData}]; + _processQueue(); + }; + + this.getProgramInfo = function() { + return _programInfo; + }; + + this.clear = function() { + _programInfo = undefined; + }; + + this.isProcessing = function() { + return _processing; + }; + } + + function HistoryTexture(gl, options) { + var _width = options.width; + var type = options.type || gl.UNSIGNED_BYTE; + var format = options.format || gl.RGBA; + var Ctor = twgl.getTypedArrayTypeForGLType(type); + var numComponents = twgl.getNumComponentsForFormat(format); + var size = _width * numComponents; + var _buffer = new Ctor(size); + var _texSpec = { + src: _buffer, + height: 1, + min: options.min || gl.LINEAR, + mag: options.mag || gl.LINEAR, + wrap: gl.CLAMP_TO_EDGE, + format: format, + auto: false, // don't set tex params or call genmipmap + }; + var _tex = twgl.createTexture(gl, _texSpec); + + var _length = options.length; + var _historyAttachments = [ + { + format: options.historyFormat || gl.RGBA, + type: type, + mag: options.mag || gl.LINEAR, + min: options.min || gl.LINEAR, + wrap: gl.CLAMP_TO_EDGE, + }, + ]; + + var _srcFBI = twgl.createFramebufferInfo(gl, _historyAttachments, _width, _length); + var _dstFBI = twgl.createFramebufferInfo(gl, _historyAttachments, _width, _length); + + var _historyUniforms = { + u_mix: 0, + u_mult: 1, + u_matrix: m4.identity(), + u_texture: undefined, + }; + + this.buffer = _buffer; + + this.update = function update() { + var temp = _srcFBI; + _srcFBI = _dstFBI; + _dstFBI = temp; + + twgl.setTextureFromArray(gl, _tex, _texSpec.src, _texSpec); + + gl.useProgram(s.historyProgramInfo.program); + twgl.bindFramebufferInfo(gl, _dstFBI); + + // copy from historySrc to historyDst one pixel down + m4.translation([0, 2 / _length, 0], _historyUniforms.u_matrix); + _historyUniforms.u_mix = 1; + _historyUniforms.u_texture = _srcFBI.attachments[0]; + + twgl.setUniforms(s.historyProgramInfo, _historyUniforms); + twgl.drawBufferInfo(gl, s.quadBufferInfo); + + // copy audio data into top row of historyDst + _historyUniforms.u_mix = format === gl.ALPHA ? 0 : 1; + _historyUniforms.u_texture = _tex; + m4.translation( + [0, -(_length - 0.5) / _length, 0], + _historyUniforms.u_matrix); + m4.scale( + _historyUniforms.u_matrix, + [1, 1 / _length, 1], + _historyUniforms.u_matrix); + + twgl.setUniforms(s.historyProgramInfo, _historyUniforms); + twgl.drawBufferInfo(gl, s.quadBufferInfo); + }; + + this.getTexture = function getTexture() { + return _dstFBI.attachments[0]; + }; + } + + function CPUHistoryTexture(gl, options) { + var _width = options.width; + var type = options.type || gl.UNSIGNED_BYTE; + var format = options.format || gl.RGBA; + var Ctor = twgl.getTypedArrayTypeForGLType(type); + var numComponents = twgl.getNumComponentsForFormat(format); + var _length = options.length; + var _rowSize = _width * numComponents; + var _size = _rowSize * _length; + var _buffer = new Ctor(_size); + var _texSpec = { + src: _buffer, + height: _length, + min: options.min || gl.LINEAR, + mag: options.mag || gl.LINEAR, + wrap: gl.CLAMP_TO_EDGE, + format: format, + auto: false, // don't set tex params or call genmipmap + }; + var _tex = twgl.createTexture(gl, _texSpec); + + this.buffer = _buffer; + + this.update = function update() { + // Upload the latest + twgl.setTextureFromArray(gl, _tex, _texSpec.src, _texSpec); + + // scroll the data + _buffer.copyWithin(_rowSize, 0, _size - _rowSize); + }; + + this.getTexture = function getTexture() { + return _tex; + }; + } + + function checkCanUseFloat(gl) { + return gl.getExtension("OES_texture_float") ? true : false; + } + + function checkCanRenderToFloat(gl) { + // Can we render to float? + var testAttachments = [ + { + format: gl.RGBA, + type: gl.FLOAT, + mag: gl.NEAREST, + min: gl.NEAREST, + wrap: gl.CLAMP_TO_EDGE, + }, + ]; + var testFBI = twgl.createFramebufferInfo(gl, testAttachments, 1, 1); + gl.bindFramebuffer(gl.FRAMEBUFFER, testFBI.framebuffer); + var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + + return status === gl.FRAMEBUFFER_COMPLETE; + } + + var storage; + if (!s.inIframe) { + try { + storage = window.localStorage; // apparently you can get a security error for this + } catch (e) { // eslint-disable-line + } + } + storage = storage || { + getItem: function() {}, + setItem: function() {}, + removeItem: function() {}, + }; + + function toggleMusic(setPauseFn) { + setPauseFn = setPauseFn || function() {}; + if (!s.streamSource) { + return false; + } + + if (s.streamSource.isPlaying()) { + s.streamSource.stop(); + if (s.inIframe) { + setPauseFn(true); + } + } else { + s.streamSource.play(); + var source = s.streamSource.getSource(); + if (source) { + source.connect(s.analyser); + } + if (s.inIframe) { + setPauseFn(false); + } + } + } + + function getMusicState() { + return s.streamSource ? s.streamSource.isPlaying() : false; + } + + function isMic(track) { + return track === 'mic' || track === 'feedback'; + } + + function VS() { + var _pauseIcon = "❚❚"; + var _playIcon = "▶"; + var editorElem = $("#editor"); + var editorWrapElem = $("#editorWrap"); + // var artElem = $("#art"); + var commentAreaElem = $("#commentarea"); + var centerSizeElem = $("#centerSize"); + var commentWrapElem = $("#commentWrap"); + var uimodeElem = $("#uimode"); + var uimodeDropdownElem = $("#toolbar .uimodedropdown"); + var savingElem = $("#saving"); + var stopElem = $("#stop"); + var stopIconElem = $("#stop .stop-icon"); + var goIconElem = $("#stop .go-icon"); + var soundElem = $("#sound"); + var soundTime = $("#soundTime"); + var soundLinkElem = $("#soundLink"); + var soundLinkNode = misc.createTextNode(soundLinkElem); + var soundcloudElem = $("#soundcloud"); + var bandLinkElem = $("#bandLink"); + var bandLinkNode = misc.createTextNode(bandLinkElem); + var soundTimeElem = $("#soundTime"); + var lockElem = $("#toolbar .playlock"); + var lockElemImg = $("#toolbar .playlock img"); + var playElems = Array.prototype.slice.call(document.querySelectorAll(".play")); + var playNodes = playElems.map(function(playElem) { + var pn = misc.createTextNode(playElem, _playIcon); + return pn; + }); + var fullScreenElem = $("#vsa .fullscreen"); + // var playElem2 = $("#vsa .play"); + var listenerManager = new ListenerManager(); + var on = listenerManager.on.bind(listenerManager); + var remove = listenerManager.remove.bind(listenerManager); + var settings = { + lineSize: 1, + backgroundColor: [0, 0, 0, 1], + }; + + if (s.inIframe) { + $("#loading").style.display = ""; + } + + var g = { + maxCount: 100000, + mode: undefined, //gl.LINES, + time: 0, + mouse: [0, 0], + shaderSuccess: false, + vsHeader: getShader("vs-header"), + fSource: getShader("fs"), + errorLines: [], + soundCloudClientId: '3f4914e324f9caeb23c521f0f1835a60', + origSettings: { shader: "" }, + pauseOnBlur: window.location.hostname === "localhost", + saveable: false, + pause: false, + touches: [], + animRects: [], + }; + g.errorLineNumberOffset = -g.vsHeader.split("\n").length; + + var q = misc.parseUrlQuery(); + if (q.pauseOnBlur !== undefined) { + g.pauseOnBlur = q.pauseOnBlur.toLowerCase() === "true"; + } + if (q.pause) { + g.pauseOnBlur = true; + g.pause = true; + } + + if (q.mobile) { + isMobile = true; + s.show = true; + } + + if (s.inIframe) { + $("#uicontainer").className = "iframe"; + } + + var mainRE = /(void[ \t\n\r]+main[ \t\n\r]*\([ \t\n\r]*\)[ \t\n\r]\{)/g; + function applyTemplateToShader(src) { + var vsrc = g.vsHeader + src; + vsrc = vsrc.replace(mainRE, function(m) { + return m + "gl_PointSize=1.0;"; + }); + var lastBraceNdx = vsrc.lastIndexOf("}"); + if (lastBraceNdx >= 0) { + var before = vsrc.substr(0, lastBraceNdx); + var after = vsrc.substr(lastBraceNdx); + vsrc = before + ";gl_PointSize = max(0., gl_PointSize*_dontUseDirectly_pointSize);" + after; + } + return vsrc; + } + + on(fullScreenElem, 'click', function(/* e */) { + if (fullScreen.isFullScreen()) { + fullScreen.cancelFullScreen(); + } else { + fullScreen.requestFullScreen(document.body); + } + }); + + if (gl) { + editorElem.parentNode.insertBefore(s.editorElem, editorElem); + editorElem.parentNode.removeChild(editorElem); + editorElem = s.editorElem; + } else { + gl = twgl.getWebGLContext(document.createElement("canvas"), { alpha: false }); + if (!gl) { + $("#nogl").style.display = ""; + return; + } + + s.canUseFloat = checkCanUseFloat(gl); + s.canFilterFloat = s.canUseFloat && gl.getExtension("OES_texture_float_linear"); + s.canRenderToFloat = checkCanRenderToFloat(gl); + console.log("can " + (s.canUseFloat ? "" : "not ") + "use floating point textures"); + console.log("can " + (s.canRenderToFloat ? "" : "not ") + "render to floating point textures"); + if (s.canUseFloat) { + console.log("can " + (s.canFilterFloat ? "" : "not ") + "filter floating point textures"); + } + + s.sets = { + default: { + num: 10000, + mode: "LINES", + sound: "", + lineSize: "NATIVE", + backgroundColor: [0, 0, 0, 1], + shader: getShader("vs").trim(), + }, + audio: { + num: 5000, + mode: "LINES", + sound: "https://soundcloud.com/caseandpoint/case-point-upgrade-free-download", + lineSize: "NATIVE", + backgroundColor: [0, 0, 0, 1], + shader: getShader("vs2").trim(), + }, + audio2: { + num: 16384, + mode: "LINES", + sound: "https://soundcloud.com/chibi-tech/lolitazia-season", + lineSize: "NATIVE", + backgroundColor: [0, 0, 0, 1], + shader: getShader("vs3").trim(), + }, + spiro: { + num: 20000, + mode: "LINES", + sound: "", + lineSize: "NATIVE", + backgroundColor: [1, 1, 1, 1], + shader: getShader("vs4").trim(), + }, + }; + + g.mode = gl.LINES; + s.context = new (window.AudioContext || window.webkitAudioContext)(); + s.analyser = s.context.createAnalyser(); + s.gainNode = s.context.createGain(); + s.processor = s.context.createScriptProcessor(1024, 1, 1); + s.analyser.connect(s.gainNode); + s.gainNode.connect(s.context.destination); + s.analyser.connect(s.processor); + s.processor.onaudioprocess = saveMaxSample; + s.processor.connect(s.context.destination); + + function saveMaxSample(e) { + const buf = e.inputBuffer.getChannelData(0); + const len = buf.length; + var last = buf[0]; + var max = buf[0]; + var maxDif = 0; + var sum = 0; + for (var ii = 1; ii < len; ++ii) { + var v = buf[ii]; + if (v > max) { + v = max; + } + var dif = Math.abs(v - last); + if (dif > maxDif) { + maxDif = dif; + } + sum += v * v; + } + s.maxSample = max; + s.maxDif = maxDif; + s.sum = Math.sqrt(sum / len); + } + + s.rectProgramInfo = twgl.createProgramInfo(gl, [getShader("rect-vs"), getShader("rect-fs")]); + s.historyProgramInfo = twgl.createProgramInfo(gl, [getShader("history-vs"), getShader("history-fs")]); + s.waveProgramInfo = twgl.createProgramInfo(gl, [applyTemplateToShader(getShader("wave-vs")), getShader("fs")]); + + s.rectUniforms = { + u_color: [0, 0, 0, 0.7], + u_matrix: m4.identity(), + }; + + var saveArt = function(e) { + e.preventDefault(); + if (g.saveFn) { + g.saveFn(); + } + }; + + s.keyRouter = new KeyRouter(); + if (navigator.platform.match("Mac")) { + s.keyRouter.on(83, 'm', saveArt); + } else { + s.keyRouter.on(83, 'c', saveArt); + } + + var maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + s.numSoundSamples = Math.min(maxTextureSize, s.analyser.frequencyBinCount); + s.numHistorySamples = 60 * 4; // 4 seconds; + + s.volumeHistory = new HistoryTexture(gl, { + width: 4, + length: s.numHistorySamples, + format: gl.ALPHA, + }); + + s.soundHistory = new HistoryTexture(gl, { + width: s.numSoundSamples, + length: s.numHistorySamples, + format: gl.ALPHA, + }); + + if (s.canUseFloat && s.canRenderToFloat) { + var floatFilter = s.canFilterFloat ? gl.LINEAR : gl.NEAREST; + s.floatSoundHistory = new HistoryTexture(gl, { + width: s.numSoundSamples, + length: s.numHistorySamples, + min: floatFilter, + mag: floatFilter, + format: gl.ALPHA, + type: gl.FLOAT, + }); + } + + s.touchColumns = 32; + s.touchHistory = new (s.canRenderToFloat ? HistoryTexture : CPUHistoryTexture)(gl, { + width: s.touchColumns, + length: s.numHistorySamples, + type: s.canUseFloat ? gl.FLOAT : gl.UNSIGNED_BYTE, + min: gl.NEAREST, + mag: gl.NEAREST, + }); + + var count = new Float32Array(g.maxCount); + for (var ii = 0; ii < count.length; ++ii) { + count[ii] = ii; + } + var arrays = { + vertexId: { data: count, numComponents: 1 }, + }; + s.countBufferInfo = twgl.createBufferInfoFromArrays(gl, arrays); + s.quadBufferInfo = twgl.createBufferInfoFromArrays(gl, { + position: { numComponents: 2, data: [-1, -1, 1, -1, -1, 1, 1, 1] }, + texcoord: [0, 0, 1, 0, 0, 1, 1, 1], + indices: [0, 1, 2, 2, 1, 3], + }); + + s.sc = new function() { + //var _clientId; + var _authToken; + var _authTokenExpireTime; + var log = function() { + console.log.apply(console, arguments); + }; + var getCurrentTimeInSeconds = function getCurrentTimeInSeconds() { + return Date.now() * 0.001; + }; + var isSoundCloudTokenValid = function isSoundCloudTokenValid() { + if (!_authToken) { + return false; + } + return getCurrentTimeInSeconds() > _authTokenExpireTime; + }; + var getSoundCloudToken = function getSoundCloudToken(callback) { + if (isSoundCloudTokenValid()) { + log("have existing token:", _authToken); + setTimeout(function() { + callback(null, _authToken); + }); + return; + } + const u = new URL('/token?format=json', window.location.href); + //console.log(u.href); + fetch(u.href) + .then(res => res.json()) + .then(data => { + log("response from token:", JSON.stringify(data)); + if (data.error) { + callback(error); + return; + } + _authToken = data.token; + _authTokenExpireTime = data.expires_in + getCurrentTimeInSeconds() - 10; + callback(null, _authToken); + }) + .catch(err => { + log("error:", err); + callback(err); + }); + }; + var sendJSON = function sendJSON(url, data, callback, options = {}) { + getSoundCloudToken(function(error, token) { + console.log("gsct:", error, token); + if (error) { + callback(error); + return; + } + const newOptions = Object.assign({}, options); + newOptions.headers = Object.assign({}, options.headers || {}); + newOptions.headers.Authorization = `OAuth ${token}`; + io.sendJSON(url, data, callback, newOptions); + }); + }; + this.getRealStreamURL = function sendHEAD(url, callback) { + fetch(`/track_url?${new URLSearchParams({format: 'json', url}).toString()}`) + .then(res => res.json()) + .then(data => { + if (data.error) { + throw data.error; + } + callback(null, data.url); + }) + .catch(err => callback(err)); + }; + + this.initialize = function(/*options*/) { + //_clientId = options.client_id; + }; + this.get = function(url, options, callback) { + + options = JSON.parse(JSON.stringify(options)); + var provideResult = function(fn) { + //options.client_id = _clientId; + options.format = "json"; + options["_status_code_map[302]"] = 200; + var scUrl = "https://api.soundcloud.com" + url + misc.objectToSearchString(options); + + var handleResult = function(err, obj) { + if (!err) { + if (obj.status && obj.status.substr(0, 3) === "302" && obj.location) { + sendJSON(obj.location, {}, handleResult, { method: "GET"}); + return; + } + } + fn(obj, err); + }; + + sendJSON(scUrl, {}, handleResult, { + method: "GET", + }); + }; + + if (callback) { + provideResult(callback); + } else { + return { + then: function(fn) { + provideResult(fn); + return { + catch: function() { + }, + }; + }, + }; + } + }; + }(); + + var longName = "This is a really long name that might mess up formatting so let's use it to test that long names don't totally mess up formatting just so we have some idea of how messed up things can get if we don't set any limits"; + var music = [ + { + title: q.long ? longName : "DOCTOR VOX - Level Up [Argofox]", + streamable: true, + stream_url: "/static/resources/sounds/DOCTOR VOX - Level Up - lofi.mp3", + permalink_url: "http://soundcloud.com/argofox", + user: { + username: q.long ? longName : "Argofox Creative Commons", + permalink_url: "http://soundcloud.com/argofox", + }, + }, + { + title: q.long ? longName : "Cab Calloway/Andrews Sisters Mashup", + streamable: true, + stream_url: "/static/resources/sounds/doin' the rumba 4 - lofi.mp3", + permalink_url: "https://soundcloud.com/ecklecticmick/doin-the-rumba", + user: { + username: q.long ? longName : "DJ Ecklectic Mick", + permalink_url: "https://soundcloud.com/ecklecticmick", + }, + }, + { + title: q.long ? longName : "Oh The Bass! (feat Fab Marq )", + streamable: true, + stream_url: "/static/resources/sounds/Oh The Bass! - lofi.mp3", + permalink_url: "https://soundcloud.com/djloveboat/oh-the-bass-feat-fab-marq", + user: { + username: q.long ? longName : "djloveboat", + permalink_url: "https://soundcloud.com/djloveboat", + }, + }, + ]; + + if (!s.sc || shittyBrowser || isMobile || q.local) { + s.sc = new function() { + function noop() { + } + this.initialize = noop; + this.get = function(url, options, callback) { + + var provideResult = function(fn) { + setTimeout(function() { + fn(randomElement(music)); + }, 1); + }; + + if (callback) { + provideResult(callback); + } else { + return { + then: function(fn) { + provideResult(fn); + return { + catch: function() { + }, + }; + }, + }; + } + }; + }(); + } + + s.sc.initialize({ + client_id: g.soundCloudClientId, + }); + + s.streamSource = audioStreamSource.create({ + context: s.context, + autoPlay: true, + crossOrigin: "anonymous", + }); + + s.programManager = new ProgramManager(gl); + + s.editorElem = editorElem; + s.cm = CodeMirror(editorElem, { // eslint-disable-line + value: "", + theme: "blackboard", + mode: "x-text/x-glsl", + lineNumbers: false, + scrollbarStyle: "overlay", + }); + } + + s.streamSource.on('error', function(e) { + e = e || "music error"; + console.error(e); + setPlayState(); + var tracks = s.playlist.splice(s.currentTrackNdx, 1); + s.trackNdx = s.currentTrackNdx; + var msg = (tracks && tracks.length) ? (isMic(tracks[0]) ? "" : tracks[0].title) : ""; + setSoundSuccessState(false, "Error streaming music: " + msg + " : " + e.toString()); + playNextTrack(); + }); + s.streamSource.on('newSource', function(source) { + if (!s.running) { + s.streamSource.stop(); + return; + } + source.connect(s.analyser); + setPlayState(); + setSoundSuccessState(true); + }); + s.streamSource.on('ended', function() { + playNextTrack(); + }); + + // Replace the canvas in the DOM with ours + var c = document.getElementById("c"); + c.parentNode.insertBefore(gl.canvas, c); + c.parentNode.removeChild(c); + + function clearRestore() { + if (!document.hidden && !g.restoreCleared) { + g.restoreCleared = true; + storage.removeItem(s.restoreKey); + } + } + + function saveRestoreSettings() { + if (!misc.deepCompare(settings, g.origSettings)) { + g.restoreCleared = true; // just in case + storage.setItem(s.restoreKey, JSON.stringify({ + pathname: window.location.pathname, + settings: settings, + })); + } + } + + function confirmUnload(e) { + console.log("checking unload"); + if (!misc.deepCompare(settings, g.origSettings)) { + console.log("need confirmation"); + saveRestoreSettings(); + var msg = "Local Changes Present: Leave?"; + e.returnValue = msg; + return msg; + } + } + + function handleKeyDown(e) { + clearVisualizers(); + if (s.keyRouter.handleKeyDown(e)) { + // a handler was called + } + } + + on(window, 'click', clearVisualizers); + on(window, 'keydown', handleKeyDown); + on(window, 'beforeunload', confirmUnload); + on(document, 'visibilitychange', clearRestore); + on(window, 'resize', function() { + queueRender(true); + }); + + function takeScreenshot() { + var volumeHistoryTex = s.volumeHistory.getTexture(); + var touchHistoryTex = s.touchHistory.getTexture(); + var historyTex = s.soundHistory.getTexture(); + var floatHistoryTex = s.floatSoundHistory ? s.floatSoundHistory.getTexture() : historyTex; + gl.canvas.width = s.screenshotCanvas.width * 2; + gl.canvas.height = s.screenshotCanvas.height * 2; + renderScene(volumeHistoryTex, touchHistoryTex, historyTex, floatHistoryTex, g.time, settings.lineSize, g.mouse); + var ctx = s.screenshotCanvas.getContext("2d"); + var w = ctx.canvas.width / gl.canvas.width; + var h = ctx.canvas.height / gl.canvas.height; + var scale = Math.max(w, h); + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.save(); + ctx.translate(ctx.canvas.width / 2 , ctx.canvas.height / 2); + ctx.scale(scale, scale); + ctx.translate(gl.canvas.width / -2, gl.canvas.height / -2); + ctx.drawImage(gl.canvas, 0, 0); + ctx.restore(); + return { + width: ctx.canvas.width, + height: ctx.canvas.height, + dataURL: ctx.canvas.toDataURL.apply(ctx.canvas, arguments), + }; + } + + $("#gallery").addEventListener('click', function(event) { + if (parent) { + parent.location.href = this.href; + } + }); + + + var notifier = new Notifier({ + timeout: 7.5, + container: document.body, + }); + function addNotification(msg) { + notifier.add({text: msg}); + } + + function setSoundSource(src) { + console.log("soundSoundSource:", src); + if (isMic(src)) { + s.streamSource.setSource(src); + } else { + s.sc.getRealStreamURL(src, function(err, url) { + if (err) { + console.log(err); + return; + } + console.log('headurl:', url); + s.streamSource.setSource(url); + }); + } + } + + function setMusicPause(pause) { + g.pause = pause; + if (!pause) { + queueRender(); + } + } + + playElems.forEach(function(playElem) { + on(playElem, 'click', function() { + toggleMusic(setMusicPause); + setPlayState(); + }); + }); + + function setPlayState() { + playNodes.forEach(function(playNode) { + playNode.nodeValue = s.streamSource.isPlaying() ? _pauseIcon : _playIcon; + }); + } + + function setLockState() { + lockElem.dataset.tooltip = s.lockMusic ? "unlock music" : "lock music"; + lockElemImg.src = "/static/resources/images/" + (s.lockMusic ? "lock.svg" : "unlock.svg"); + } + + on(lockElem, 'click', function() { + s.lockMusic = !s.lockMusic; + setLockState(); + }); + + function showOrHide(elem, show) { + elem.style.display = show ? "inline-block" : "none"; + } + + function setLinkOrHide(elem, link) { + showOrHide(elem, link); + if (link) { + elem.href = link; + } + } + + function setSoundLink(options) { + options = options || {}; + options.user = options.user || {}; + setLinkOrHide(soundLinkElem, options.permalink_url); + setLinkOrHide(bandLinkElem, options.user.permalink_url); + setLinkOrHide(soundcloudElem, options.permalink_url); + setLinkOrHide(soundTimeElem, options.permalink_url); + soundLinkNode.nodeValue = options.title || ""; + bandLinkNode.nodeValue = options.user.username || ""; + if (s.cm) { + s.cm.refresh(); + } + } + setSoundLink(); + + function isStreamable(track) { + return track.streamable && track.stream_url; + } + + function playNextTrack() { + if (!s.playlist.length) { + return; + } + + s.currentTrackNdx = s.trackNdx % s.playlist.length; + s.trackNdx = (s.trackNdx + 1) % s.playlist.length; + var track = s.playlist[s.currentTrackNdx]; + if (isMic(track)) { + setSoundSource('mic'); + setSoundLink(); + s.gainNode.gain.value = track === 'feedback' ? 1 : 0; + } else { + var src = track.stream_url;// + '?client_id=' + g.soundCloudClientId; + setSoundSource(src); + setSoundLink(track); + s.gainNode.gain.value = 1; + } + } + + function setSoundUrl(url, byUser) { + if (!byUser && (s.lockMusic || s.interruptMusic === false)) { + s.interruptMusic = true; + var track = s.playlist[s.currentTrackNdx]; + if (track) { + setSoundLink(isMic(track) ? undefined : track); + } + return; + } + s.setSoundUrlByUser = byUser; + if (!url) { + s.streamSource.stop(); + setPlayState(); + setSoundLink(); + return; + } else if (isMic(url)) { + s.trackNdx = 0; + s.playlist = [url]; + playNextTrack(); + } else { + fetch(`/resolve?${new URLSearchParams({format: 'json', url})}`) + .then(res => res.json()) + .then(result => { + var tracks = result.kind === "playlist" ? result.tracks : [result]; + s.trackNdx = 0; + s.playlist = []; + if (Array.isArray(tracks)) { + s.playlist = tracks.filter(isStreamable); + } + + if (!s.playlist.length) { + console.error("no streamable tracks"); + setSoundSuccessState(false, "not streamable according to soundcloud"); + } else { + playNextTrack(); + } + }) + .catch(err => { + console.error("bad url:", url, err); + setSoundSuccessState(false, "not a valid soundcloud url? " + (err.message ? err.message : "")); + }); + } + } + + on(soundElem, 'change', function(e) { + var url = e.target.value.trim(); + if (url !== settings.sound) { + settings.sound = url; + setSoundUrl(url, true); + } + }); + + var validModes = { + "LINES": gl.LINES, + "LINE_STRIP": gl.LINE_STRIP, + "LINE_LOOP": gl.LINE_LOOP, + "POINTS": gl.POINTS, + "TRI_STRIP": gl.TRIANGLE_STRIP, + "TRI_FAN": gl.TRIANGLE_FAN, + "TRIANGLES": gl.TRIANGLES, + }; + + var validLineSizes = { + "NATIVE": true, + "CSS": true, + }; + + var saveElem = $("#save"); + + function updateStop() { + goIconElem.style.display = !g.pause ? "none" : "inline-block"; + stopIconElem.style.display = g.pause ? "none" : "inline-block"; + } + + on(stopElem, 'click', function() { + g.pause = !g.pause; + updateStop(); + if (!g.pause) { + queueRender(); + } + }); + + function setSoundSuccessState(success, msg) { + soundElem.style.borderColor = success ? "" : "red"; + if (!success && msg) { + addNotification(msg); + } + } + + //setShaderSuccessStatus(false); + + function setShaderSuccessStatus(success) { + var same = isSettingsSameAsOriginalSansWhitespace(); + editorElem.style.borderColor = success ? "" : "red"; + g.saveable = success && !same; + saveElem.disabled = !g.saveable; + g.shaderSuccess = success; + } + + function clearLineErrors() { + g.errorLines.forEach(function(lineHandle) { + s.cm.doc.removeLineClass(lineHandle, "background", "errorLine"); + }); + g.errorLines = []; + } + + // var whitespaceRE = /\s\s\s*/g; + function collapseWhitespace(s) { + return s.replace(/\s\s*/g, ' '); + } + + function isSettingsSameAsOriginalSansWhitespace() { + var origShader = g.origSettings.shader; + var newShader = settings.shader; + if (!origShader || !newShader) { + return true; + } + g.origSettings.shader = collapseWhitespace(g.origSettings.shader); + settings.shader = collapseWhitespace(settings.shader); + var same = misc.deepCompare(settings, g.origSettings); + g.origSettings.shader = origShader; + settings.shader = newShader; + return same; + } + + s.programManager.on('success', function(e) { + settings.shader = e.userData; + setShaderSuccessStatus(true); + clearLineErrors(); + }); + s.programManager.on('failure', function(errors) { + setShaderSuccessStatus(false); + + clearLineErrors(); + + var errorRE = /ERROR:\s*0:(\d+)/g; + do { + var m = errorRE.exec(errors); + if (m) { + var lineNum = parseInt(m[1]); + if (!isNaN(lineNum) && lineNum > 0) { + lineNum += g.errorLineNumberOffset; + var lineHandle = s.cm.doc.getLineHandle(lineNum); + if (lineHandle) { + g.errorLines.push(lineHandle); + s.cm.doc.addLineClass(lineHandle, "background", "errorLine"); + } + } + } + } while (m); + }); + + function clamp(min, max, v) { + return Math.min(max, Math.max(min, v)); + } + + function lerp(s, e, l) { + return s + (e - s) * l; + } + + // function lerp01(s, e, l) { + // return s + (e - s) * clamp(0, 1, l); + // } + + function animateElemRect(options) { + if (!s.running || g.pause) { + return; + } + var fromRect = options.from.getBoundingClientRect(); + var toRect = options.to.getBoundingClientRect(); + var anim = { + from: fromRect, + to: toRect, + fromColor: options.fromColor, + toColor: options.toColor, + duration: options.duration, + startTime: g.time, + }; + g.animRects.push(anim); + } + + function clearVisualizers() { + q.showHistory = false; + q.showWave = false; + } + + var uiModes = { + '#ui-off': function(animate) { + if (animate) { + if (editorElem.style.display !== "none") { + animateElemRect({ + from: editorElem, + to: uimodeElem, + duration: 0.5, + }); + } + if (commentAreaElem.style.display !== "none") { + animateElemRect({ + from: commentAreaElem, + to: uimodeElem, + duration: 0.5, + }); + } + } + editorElem.style.display = "none"; + commentAreaElem.style.display = "none"; + centerSizeElem.className = ""; + gl.canvas.style.width = "100%"; + }, + '#ui-one': function() { + s.show = true; + editorElem.style.display = "block"; + commentAreaElem.style.display = "none"; + editorWrapElem.style.flex = "1 0 100%"; + commentWrapElem.style.flex = "1 0 0"; + gl.canvas.style.width = "100%"; + centerSizeElem.className = ""; + s.cm.refresh(); + }, + '#ui-2v': function() { + s.show = true; + centerSizeElem.style.flexFlow = "row"; + centerSizeElem.style.webkitFlexFlow = "row"; + editorElem.style.display = "block"; + commentAreaElem.style.display = "block"; + editorWrapElem.style.flex = "1 0 50%"; + commentWrapElem.style.flex = "1 0 50%"; + gl.canvas.style.width = "100%"; + centerSizeElem.className = ""; + s.cm.refresh(); + }, + '#ui-ea': function() { + s.show = true; + editorElem.style.display = "block"; + commentAreaElem.style.display = "none"; + editorWrapElem.style.flex = "0 0 50%"; + commentWrapElem.style.flex = "1 0 0"; + gl.canvas.style.width = "50%"; + art.className = "artright"; + centerSizeElem.className = "editleft"; + s.cm.refresh(); + }, + '#ui-ae': function() { + s.show = true; + editorElem.style.display = "block"; + commentAreaElem.style.display = "none"; + editorWrapElem.style.flex = "0 0 50%"; + commentWrapElem.style.flex = "1 0 0"; + gl.canvas.style.width = "50%"; + art.className = "artleft"; + centerSizeElem.className = "editright"; + s.cm.refresh(); + }, + }; + + function setUIMode(mode, animate) { + mode = mode || '#ui-2v'; + uiModes[mode](animate); + } + + Object.keys(uiModes).forEach(function(mode) { + on($(mode), 'click', function() { + s.uiMode = mode; + setUIMode(mode); + }); + }); + + uimodeDropdownElem.style.display = "none"; + on(uimodeElem, 'click', function(e) { + e.stopPropagation(); + uimodeDropdownElem.style.display = ""; + var id1; + var id2; + + var closeDropdown = function(e) { + e.stopPropagation(); + remove(id1); + remove(id2); + uimodeDropdownElem.style.display = "none"; + }; + + id1 = on(window.document, 'click', closeDropdown); + id2 = on(window.document, 'keypress', closeDropdown); + }); + + function updateBackgroundColor(e) { + settings.backgroundColor = cssParse.parseCSSColor(e.target.value, true); + } + var colorElem = $("#background"); + on(colorElem, 'change', updateBackgroundColor); + on(colorElem, 'input', updateBackgroundColor); + + var numElem = $("#num"); + var numRangeElem = $("#numRange"); + + function handleNumEdit(e) { + var num = clamp(1, g.maxCount, parseInt(e.target.value)) | 0; + numRangeElem.value = num; + settings.num = num; + } + on(numElem, 'change', handleNumEdit); + on(numElem, 'input', handleNumEdit); + + on(numRangeElem, 'input', function(e) { + var num = parseInt(e.target.value); + numElem.value = num; + settings.num = num; + }); + + var modeElem = $("#mode"); + on(modeElem, 'change', function(e) { + settings.mode = e.target.value.toUpperCase(); + g.mode = validModes[settings.mode]; + }); + + var sizeElem = $("#size"); + on(sizeElem, 'change', function(e) { + settings.lineSize = e.target.value.toUpperCase(); + }); + + var timeElem = $("#time"); + on(timeElem, 'click', function(/* e */) { + g.time = 0; + }); + + var helpElem = $("#help"); + var helpDialogElem = $("#helpDialog"); + on(helpElem, 'click', showHelp); + on(helpDialogElem, 'click', hideHelp); + + function hideHelp() { + helpDialogElem.style.display = "none"; + } + + var showsoundtextureElem = $("#showsoundtexture"); + on(showsoundtextureElem, 'click', function(e) { + e.stopPropagation(); + clearVisualizers(); + hideHelp(); + q.showHistory = true; + }); + + var showwaveElem = $("#showwave"); + on(showwaveElem, 'click', function(e) { + e.stopPropagation(); + clearVisualizers(); + hideHelp(); + q.showWave = true; + }); + + function showHelp() { + helpDialogElem.style.display = (helpDialogElem.style.display !== "") ? "" : "none"; + } + + s.keyRouter.on(112, showHelp); + + function isAllNumbers0to1(array) { + for (var ii = 0; ii < array.length; ++ii) { + var v = array[ii]; + if (typeof v !== 'number') { + return false; + } + if (v < 0 || v > 1) { + return false; + } + } + return true; + } + + s.cm.refresh(); + + // function getMode(mode) { + // var m = modes[mode]; + // return m === undefined ? gl.LINES : m; + // } + + function tryNewProgram(text) { + var vsrc = applyTemplateToShader(text); + setShaderSuccessStatus(false); + s.programManager.compile(vsrc, g.fSource, text); + } + + // var oldText; + var oldTrimmedText; + + var lineCommentRE = /\/\/.*/g; + var blockCommentRE = /\/\*[\s\S]*?\*\//g; + var whiteSpaceRE = /[ \t][ \t]+/g; + var eolRE = /\n\n+/g; + function trimShaderText(text) { + text = text.replace(lineCommentRE, ''); + text = text.replace(blockCommentRE, ''); + text = text.replace(whiteSpaceRE, ' '); + text = text.replace(eolRE, "\n"); + return text; + } + + function handleChange(cm) { + var text = cm.doc.getValue(); + var trimmedText = trimShaderText(text); + if (trimmedText !== oldTrimmedText) { + oldTrimmedText = trimmedText; + tryNewProgram(text); + } else { + // The text is functionally equivalent + // If it was okay before it should be ok now + if (g.saveable) { + settings.shader = text; + } + } + } + s.cm.on('change', handleChange); + s.cm.on('cursorActivity', recordInputAndMakeUIVisible); + + function validateSettings(settings) { + settings.num = clamp(1, g.maxCount, (settings.num || 10000) | 0); + if (validModes[settings.mode] === undefined) { + settings.mode = "LINES"; + } + if (validLineSizes[settings.lineSize] === undefined) { + settings.lineSize = "NATIVE"; + } + + var haveBG = !!settings.backgroundColor; + var bgIsArray = Array.isArray(settings.backgroundColor); + var bgLenIs4 = settings.backgroundColor.length === 4; + var bgAllNum = isAllNumbers0to1(settings.backgroundColor); + if (!haveBG || + !bgIsArray || + !bgLenIs4 || + !bgAllNum) { + settings.backgroundColor = [0, 0, 0, 1]; + } + } + + function setUISettings(settings) { + colorElem.value = colorUtils.makeCSSColorFromRgb01Array(settings.backgroundColor); + numElem.value = settings.num; + numRangeElem.value = settings.num; + modeElem.value = settings.mode; + sizeElem.value = settings.lineSize; + soundElem.value = settings.sound; + } + + function markAsSaved() { + g.origSettings = JSON.parse(JSON.stringify(settings)); + savingElem.style.display = "none"; + setShaderSuccessStatus(true); + } + + function markAsSaving() { + savingElem.style.display = ""; + } + + function restoreSettings(settings) { + var restoreStr = storage.getItem(s.restoreKey); + if (restoreStr) { + try { + var restore = JSON.parse(restoreStr); + if (restore.pathname === window.location.pathname) { + if (restore.settings.shader) { + settings = restore.settings; + } + } + } catch (e) { // eslint-disable-line + } + } + clearRestore(); + return settings; + } + + function stopTheMusic() { + if (s.streamSource.isPlaying()) { + s.streamSource.stop(); + } + } + + function playSoundToGetMobileAudioStarted() { + var source = s.context.createOscillator(); + var gain = s.context.createGain(); + source.frequency.value = 1; + source.connect(gain); + gain.gain.value = 0; + gain.connect(s.context.destination); + source.start(0); + + s.streamSource.init(); + + setTimeout(function() { + source.disconnect(); + }, 100); + } + + function setSettings(settings, options) { + options = options || {}; + settings = JSON.parse(JSON.stringify(settings)); + + var uiMode = s.uiMode || options.uiMode; + + $("#uicontainer").style.display = "block"; + + s.running = true; + if (!s.audioStarted) { + if (options.screenshotURL) { + $("#screenshot").style.backgroundImage = 'url(' + options.screenshotURL + ')'; + } + + $("#loading").style.display = "none"; + $("#start").style.display = ""; + if (settings.sound && (isMobile || shittyBrowser)) { + $("#start>div").style.width = "90%"; + $("#badaudio").style.display = ""; + } + on($("#start"), 'click', function() { + function startIt() { + s.audioStarted = true; + $("#start").style.display = "none"; + $("#screenshot").style.display = "none"; + setUIMode(uiMode); + realSetSettings(settings, options); + } + if (s.context.resume) { + s.context.resume().then(startIt); + playSoundToGetMobileAudioStarted(); + } else { + playSoundToGetMobileAudioStarted(); + startIt(); + } + }); + } else { + $("#start").style.display = "none"; + $("#screenshot").style.display = "none"; + setUIMode(uiMode); + realSetSettings(settings, options); + } + } + + function realSetSettings(_settings, options) { + options = options || {}; + g.saveFn = options.saveFn; + g.restoreCleared = false; + settings = restoreSettings(_settings); + settings = JSON.parse(JSON.stringify(settings)); + validateSettings(settings); + setUISettings(settings); + + g.time = 0; + g.mode = validModes[settings.mode]; + //shader// test bad + + setSoundUrl(q.sound || settings.sound); + s.cm.doc.setValue(settings.shader); + updateStop(); + setPlayState(); + setLockState(); + + // not needed because s.cm.doc.setValue will trigger change event + //tryNewProgram(settings.shader); + markAsSaved(); + + queueRender(true); + $("#vsa a").href = window.location.href; + if (s.inIframe) { + Array.prototype.forEach.call(document.querySelectorAll("a"), function(a) { + a.target = "_blank"; + on(a, 'click', stopTheMusic); + }); + + $("#loading").style.display = "none"; + s.streamSource.play(); + setPlayState(); + setSoundSuccessState(true); + } + } + + function setOptions(options) { + options = options || {}; + if (options.interruptMusic === false) { + s.interruptMusic = false; + } + } + + function updateSoundTime() { + var pixels = 0; + var duration = s.streamSource.getDuration(); + if (duration) { + var currentTime = s.streamSource.getCurrentTime(); + var l = currentTime / duration; + pixels = (l * soundTime.clientWidth) | 0; + } + if (pixels !== g.soundTimePixelWidth) { + g.soundTimePixelWidth = pixels; + soundTime.style.background = "linear-gradient(90deg, rgba(30,30,30,0.7) " + (l * 100).toFixed(2) + "%, rgba(0,0,0,0.7) " + (l * 100). toFixed(2) + "%)"; + } + } + + var uniforms = { + time: 0, + vertexCount: 0, + resolution: [1, 1], + background: [0, 0, 0, 1], + mouse: [0, 0], + sound: undefined, + floatSound: undefined, + soundRes: [s.numSoundSamples, s.numHistorySamples], + _dontUseDirectly_pointSize: 1, + }; + + var historyUniforms = { + u_mix: 0, + u_matrix: m4.identity(), + u_texture: undefined, + }; + + function renderScene(volumeHistoryTex, touchHistoryTex, soundHistoryTex, floatSoundHistoryTex, time, lineSize, mouse) { + twgl.bindFramebufferInfo(gl); + + var size = lineSize === "NATIVE" ? 1 : (window.devicePixelRatio || 1); + gl.lineWidth(size); + + gl.enable(gl.DEPTH_TEST); + gl.enable(gl.BLEND); + gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + gl.clearColor.apply(gl, q.showWave ? [0, 0, 0, 1] : settings.backgroundColor); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + + var programInfo = q.showWave ? s.waveProgramInfo : s.programManager.getProgramInfo(); + if (programInfo) { + g.wasRendered = true; + + var num = q.showWave ? 7000 : settings.num; + var mode = q.showWave ? gl.LINES : g.mode; + uniforms.time = time; + uniforms.vertexCount = num; + uniforms.resolution[0] = gl.canvas.width; + uniforms.resolution[1] = gl.canvas.height; + uniforms.background[0] = settings.backgroundColor[0]; + uniforms.background[1] = settings.backgroundColor[1]; + uniforms.background[2] = settings.backgroundColor[2]; + uniforms.background[3] = settings.backgroundColor[3]; + uniforms.mouse[0] = mouse[0]; + uniforms.mouse[1] = mouse[1]; + uniforms._dontUseDirectly_pointSize = size; + uniforms.volume = volumeHistoryTex; + uniforms.sound = soundHistoryTex; + uniforms.floatSound = floatSoundHistoryTex; + uniforms.touch = touchHistoryTex; + + gl.useProgram(programInfo.program); + twgl.setBuffersAndAttributes(gl, programInfo, s.countBufferInfo); + twgl.setUniforms(programInfo, uniforms); + twgl.drawBufferInfo(gl, s.countBufferInfo, mode, num); + } + } + + function updateSoundAndTouchHistory() { + // Copy audio data to Nx1 texture + s.analyser.getByteFrequencyData(s.soundHistory.buffer); + + // should we do this in a shader? + { + const buf = s.soundHistory.buffer; + const len = buf.length; + var max = 0; + for (let ii = 0; ii < len; ++ii) { + const v = buf[ii]; + if (v > max) { + max = v; + } + } + s.volumeHistory.buffer[3] = max; + } + s.volumeHistory.buffer[0] = Math.abs(s.maxSample) * 255; + s.volumeHistory.buffer[1] = s.sum * 255; + s.volumeHistory.buffer[2] = s.maxDif * 127; + + if (s.floatSoundHistory) { + s.analyser.getFloatFrequencyData(s.floatSoundHistory.buffer); + } + + // Update time + for (let ii = 0; ii < s.touchColumns; ++ii) { + var offset = ii * 4; + s.touchHistory.buffer[offset + 3] = g.time; + } + + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.BLEND); + + twgl.setBuffersAndAttributes(gl, s.historyProgramInfo, s.quadBufferInfo); + + s.volumeHistory.update(); + s.soundHistory.update(); + if (s.floatSoundHistory) { + s.floatSoundHistory.update(); + } + s.touchHistory.update(); + } + + function renderHistory(tex, mix, mult) { + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.BLEND); + gl.useProgram(s.historyProgramInfo.program); + twgl.setBuffersAndAttributes(gl, s.historyProgramInfo, s.quadBufferInfo); + m4.identity(historyUniforms.u_matrix); + historyUniforms.u_mult = mult; + historyUniforms.u_mix = mix; + historyUniforms.u_texture = tex; + twgl.setUniforms(s.historyProgramInfo, historyUniforms); + twgl.drawBufferInfo(gl, s.quadBufferInfo); + } + + function renderAnimRect(animRect) { + var l = (g.time - animRect.startTime) / animRect.duration; + if (l > 1) { + return true; + } + + l = tweeny.fn.easeInCubic(l); + var from = animRect.from; + var to = animRect.to; + + var left = lerp(from.left, to.left, l); + var top = lerp(from.top, to.top, l); + var right = lerp(from.right, to.right, l); + var bottom = lerp(from.bottom, to.bottom, l); + + var mat = s.rectUniforms.u_matrix; + m4.identity(mat); + m4.ortho(0, gl.canvas.clientWidth, gl.canvas.clientHeight, 0, -1, 1, mat); + m4.translate(mat, [left, top, 0], mat); + m4.scale(mat, [right - left, bottom - top, 1], mat); + m4.translate(mat, [0.5, 0.5, 0], mat); + m4.scale(mat, [0.5, 0.5, 1], mat); + + twgl.setUniforms(s.rectProgramInfo, s.rectUniforms); + twgl.drawBufferInfo(gl, s.quadBufferInfo); + } + + function renderAnimRects() { + gl.disable(gl.DEPTH_TEST); + gl.enable(gl.BLEND); + gl.useProgram(s.rectProgramInfo.program); + twgl.setBuffersAndAttributes(gl, s.rectProgramInfo, s.quadBufferInfo); + for (var ii = 0; ii < g.animRects.length;) { + if (renderAnimRect(g.animRects[ii])) { + g.animRects.splice(ii, 1); + } else { + ++ii; + } + } + } + + function render(time) { + g.requestId = undefined; + time *= 0.001; + var now = time; + var elapsed = now - (g.then || 0); + g.then = now; + g.time += elapsed; + + twgl.resizeCanvasToDisplaySize(gl.canvas); + + updateSoundAndTouchHistory(); + + var volumeHistoryTex = s.volumeHistory.getTexture(); + var touchHistoryTex = s.touchHistory.getTexture(); + var historyTex = s.soundHistory.getTexture(); + var floatHistoryTex = s.floatSoundHistory ? s.floatSoundHistory.getTexture() : historyTex; + renderScene(volumeHistoryTex, touchHistoryTex, historyTex, floatHistoryTex, g.time, settings.lineSize, g.mouse); + + if (q.showVolume) { + renderHistory(s.volumeHistory.getTexture(), 0, 1); + } else if (q.showHistory) { + renderHistory(s.soundHistory.getTexture(), 0, 1); + } else if (q.showFloatHistory && s.floatSoundHistory) { + renderHistory(s.floatSoundHistory.getTexture(), 0, -0.005); + } else if (q.showTouchHistory) { + renderHistory(s.touchHistory.getTexture(), 1, 1); + } + + updateSoundTime(); + + renderAnimRects(); + + queueRender(); + } + + function queueRender(force) { + if (!g.requestId && (force || !g.wasRendered || (s.running && !g.pause)) || g.animRects.length) { + g.requestId = requestAnimationFrame(render); + } + } + + function stopRender() { + if (g.requestId) { + cancelAnimationFrame(g.requestId); + g.requestId = undefined; + } + } + + function pauseOnBlur() { + if (g.pauseOnBlur) { + stopRender(); + } + } + + function unpauseOnFocus() { + if (g.pauseOnBlur && s.running) { + queueRender(); + } + } + + on(window, 'blur', pauseOnBlur); + on(window, 'focus', unpauseOnFocus); + + function addTouchPosition(column, x, y) { + x = x * 2 - 1; + y = y * -2 + 1; + + if (!s.canUseFloat) { + x = Math.max(0, x * 255 | 0); + y = Math.max(0, y * 255 | 0); + } + var offset = column * 4; + s.touchHistory.buffer[offset + 0] = x; + s.touchHistory.buffer[offset + 1] = y; + } + + function addTouchPressure(column, pressure) { + if (!s.canUseFloat) { + pressure = Math.max(0, pressure * 255 | 0); + } + var offset = column * 4; + s.touchHistory.buffer[offset + 2] = pressure; + } + + function recordMouseMove(e) { + var rect = gl.canvas.getBoundingClientRect(); + var w = gl.canvas.clientWidth; + var h = gl.canvas.clientHeight; + var x = (e.clientX - rect.left) / w; + var y = (e.clientY - rect.top ) / h; + + g.mouse[0] = x * 2 - 1; + g.mouse[1] = y * -2 + 1; + addTouchPosition(0, x, y); + } + + function recordMouseDown(/* e */) { + addTouchPressure(0, 1); + } + + function recordMouseUp(/* e */) { + addTouchPressure(0, 0); + } + + on(window, 'mousemove', recordMouseMove); + on(window, 'mousedown', recordMouseDown); + on(window, 'mouseup', recordMouseUp); + + function getTouchIndex(t) { + var id = t.identifer; + var ndx = g.touches.indexOf(id); + if (ndx < 0) { + // Find empty slot + for (var ii = 0; ii < g.touches.length; ++ii) { + if (g.touches[ii] === undefined) { + break; + } + } + if (ii === 32) { + console.error("too many touches :("); + g.touches = []; + ii = 0; + } + ndx = ii; + g.touches[ndx] = id; + } + return ndx; + } + + function recordTouchStart(e) { + var rect = gl.canvas.getBoundingClientRect(); + for (var ii = 0; ii < e.touches.length; ++ii) { + var t = e.touches[ii]; + var w = gl.canvas.clientWidth; + var h = gl.canvas.clientHeight; + var x = (t.clientX - rect.left) / w; + var y = (t.clientY - rect.top) / h; + var ndx = getTouchIndex(t); + addTouchPosition(ndx, x, y); + addTouchPressure(ndx, t.force || 1); + } + } + + function recordTouchCancel(e) { + for (var ii = 0; ii < e.touches.length; ++ii) { + var t = e.touches[ii]; + var ndx = getTouchIndex(t); + g.touches[ndx] = undefined; + addTouchPressure(ndx, 0); + } + } + + function recordTouchEnd(e) { + recordTouchCancel(e); + } + + function recordTouchMove(e) { + e.preventDefault(); + recordTouchStart(e); + return false; + } + + var touchTarget = window; + on(touchTarget, 'touchstart', recordTouchStart); + on(touchTarget, 'touchend', recordTouchEnd); + on(touchTarget, 'touchcancel', recordTouchCancel); + on(touchTarget, 'touchmove', recordTouchMove); + + function makeUIVisible() { + if (s.uiHidden) { + s.uiHidden = false; + setUIMode(s.uiMode, true); + } + } + + function checkHideUI() { + var elapsedTime = (Date.now() - g.lastInputTimestamp) * 0.001; + if (!g.lastInputTimestamp || elapsedTime > 15) { + if (!s.uiHidden) { + s.uiHidden = true; + setUIMode('#ui-off', true); + } + } + setHideUITimeout(); + } + + function clearHideUITimeout() { + if (g.hideUITimeoutId) { + clearTimeout(g.hideUITimeoutId); + g.hideUITimeoutId = undefined; + } + } + + function setHideUITimeout(seconds) { + seconds = seconds || 15; + clearHideUITimeout(); + // Don't set if user has manually set mode + if (!s.uiMode) { + g.hideUITimeoutId = setTimeout(checkHideUI, seconds * 1000); + } + } + + function recordInputAndMakeUIVisible() { + g.lastInputTimestamp = Date.now(); + makeUIVisible(); + } + + setHideUITimeout(5); + + on(window, 'mousedown', recordInputAndMakeUIVisible); + on(window, 'keypress', recordInputAndMakeUIVisible); + on(window, 'wheel', recordInputAndMakeUIVisible); + on(window, 'mousemove', function() { + // don't unhide on mousemove because some pieces take mouse movement + if (!s.uiHidden) { + recordInputAndMakeUIVisible(5); + } + }); + + this.stop = function(keepMusic) { + clearHideUITimeout(); + s.running = false; + stopRender(); + if (!keepMusic && s.interruptMusic !== false && !s.lockMusic && s.streamSource.isPlaying()) { + s.streamSource.stop(); + } + s.programManager.clear(); + listenerManager.removeAll(); + clearLineErrors(); + s.cm.off('change', handleChange); + s.cm.off('cursorActivity', recordInputAndMakeUIVisible); + gl.canvas.parentNode.removeChild(gl.canvas); + saveRestoreSettings(); + }; + + this.takeScreenshot = takeScreenshot; + this.setOptions = setOptions; + this.setSettings = setSettings; + this.getSettings = function() { + return JSON.parse(JSON.stringify(settings)); + }; + this.getSets = function() { + return s.sets; + }; + this.markAsSaved = markAsSaved; + this.markAsSaving = markAsSaving; + this.isSaveable = function() { + return g.saveable; + }; + } + + var vs; + + function init() { + if (!vs) { + vs = new VS(); + } + } + + async function start() { + init(); + + var q = misc.parseUrlQuery(); + var settings = s.sets[q.settings]; + if (!settings) { + settings = s.sets.default; + } + + const options = { + screenshotURL: '/static/resources/images/heart-liked.svg', + }; + + if (q.art) { + try { + const res = await fetch(`../art/${q.art}/art.json`); + const art = await res.json(); + settings = JSON.parse(art.settings); + options.screenshotURL = `../${art.screenshotURL}`; + } catch { + settings = s.sets.default; + } + } + + vs.setSettings(settings, options); + } + + function stop(keepMusic) { + if (vs) { + vs.stop(keepMusic); + } + } + + function setSettings(settings, options) { + vs = new VS(); //init(); + + if (!settings) { + // pick a random settings + var sets = vs.getSets(); + var keys = Object.keys(sets); + var ndx = Math.random() * keys.length | 0; + settings = sets[keys[ndx]]; + } + + vs.setSettings(settings, options); + } + + function getSettings() { + init(); + return vs.getSettings(); + } + + function takeScreenshot() { + init(); + return vs.takeScreenshot.apply(vs, arguments); + } + + function markAsSaved() { + init(); + vs.markAsSaved(); + } + + function markAsSaving() { + init(); + vs.markAsSaving(); + } + + function isSaveable() { + init(); + return vs.isSaveable(); + } + + function setOptions(options) { + init(); + vs.setOptions(options); + } + + var missingSettings = { + num: 256, + mode: "POINTS", + sound: "", + lineSize: "NATIVE", + backgroundColor: [0, 0, 0, 1], + shader: [ + "// -----[ shader missing! ] -----", + "", + "#define NUM 15.0", + "void main() {", + " gl_PointSize = 64.0;", + " float col = mod(vertexId, NUM + 1.0);", + " float row = mod(floor(vertexId / NUM), NUM + 1.0); ", + " float x = col / NUM * 2.0 - 1.0;", + " float y = row / NUM * 2.0 - 1.0;", + " gl_Position = vec4(x, y, 0, 1);", + " v_color = vec4(fract(time + col / NUM + row / NUM), 0, 0, 1);", + "}", + ].join("\n"), + }; + + return { + start: start, + stop: stop, + toggleMusic: toggleMusic, + getMusicState: getMusicState, + isSaveable: isSaveable, + getSettings: getSettings, + setSettings: setSettings, + setOptions: setOptions, + takeScreenshot: takeScreenshot, + missingSettings: missingSettings, + markAsSaved: markAsSaved, + markAsSaving: markAsSaving, + }; +}); diff --git a/src/js/misc.js b/src/js/misc.js new file mode 100644 index 00000000..b23207ee --- /dev/null +++ b/src/js/misc.js @@ -0,0 +1,568 @@ +/* + * Copyright 2014, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +"use strict"; + +/** + * @module Misc + */ +define(function() { + /** + * Copies properties from obj to dst recursively. + * @param {Object} obj Object with new settings. + * @param {Object} dst Object to receive new settings. + * @param {number?} opt_overwriteBehavior + * * 0/falsy = overwrite + * + * src = {foo:'bar'} + * dst = {foo:'abc'} + * result = {foo:'bar'} + * + * * 1 = don't overwrite but descend if deeper + * + * src = {foo:{bar:'moo','abc':def}} + * dst = {foo:{bar:'ghi'}} + * result = {foo:{bar:'ghi','abc':def}} + * + * 'foo' exists but we still go deeper and apply 'abc' + * + * * 2 = don't overwrite don't descend + * + * src = {foo:{bar:'moo','abc':def}} + * dst = {foo:{bar:'ghi'}} + * result = {foo:{bar:'ghi'}} + * + * 'foo' exists so we don't go any deeper + * + */ + var copyProperties = function(src, dst, opt_overwriteBehavior) { + Object.keys(src).forEach(function(key) { + if (opt_overwriteBehavior === 2 && dst[key] !== undefined) { + return; + } + var value = src[key]; + if (value instanceof Array) { + var newDst = dst[key]; + if (!newDst) { + newDst = []; + dst[name] = newDst; + } + copyProperties(value, newDst, opt_overwriteBehavior); + } else if (value instanceof Object && + !(value instanceof Function) && + !(value instanceof HTMLElement)) { + var newDst2 = dst[key]; + if (!newDst2) { + newDst2 = {}; + dst[key] = newDst2; + } + copyProperties(value, newDst2, opt_overwriteBehavior); + } else { + if (opt_overwriteBehavior === 1 && dst[key] !== undefined) { + return; + } + dst[key] = value; + } + }); + return dst; + }; + + function searchStringToObject(str, opt_obj) { + if (str[0] === '?') { + str = str.substring(1); + } + var results = opt_obj || {}; + str.split("&").forEach(function(part) { + var pair = part.split("=").map(decodeURIComponent); + results[pair[0]] = pair[1] !== undefined ? pair[1] : true; + }); + return results; + } + + function objectToSearchString(obj) { + return "?" + Object.keys(obj).filter(function(key) { + return obj[key] !== undefined; + }).map(function(key) { + return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); + }).join("&"); + } + + /** + * Reads the query values from a URL like string. + * @param {String} url URL like string eg. http://foo?key=value + * @param {Object} [opt_obj] Object to attach key values to + * @return {Object} Object with key values from URL + * @memberOf module:Misc + */ + var parseUrlQueryString = function(str, opt_obj) { + var dst = opt_obj || {}; + try { + var q = str.indexOf("?"); + var e = str.indexOf("#"); + if (e < 0) { + e = str.length; + } + var query = str.substring(q + 1, e); + searchStringToObject(query, dst); + } catch (err) { + console.error(err); + } + return dst; + }; + + /** + * Reads the query values from the current URL. + * @param {Object=} opt_obj Object to attach key values to + * @return {Object} Object with key values from URL + * @memberOf module:Misc + */ + var parseUrlQuery = function(opt_obj) { + return searchStringToObject(window.location.search, opt_obj); + }; + + /** + * Read `settings` from URL. Assume settings it a + * JSON like URL as in http://foo?settings={key:value}, + * Note that unlike real JSON we don't require quoting + * keys if they are alpha_numeric. + * + * @param {Object=} opt_obj object to apply settings to. + * @param {String=} opt_argumentName name of key for settings, default = 'settings'. + * @return {Object} object with settings + * @func applyUrlSettings + * @memberOf module:Misc + */ + var fixKeysRE = new RegExp("([a-zA-Z0-9_]+):", "g"); + + var applyUrlSettings = function(opt_obj, opt_argumentName) { + var argumentName = opt_argumentName || 'settings'; + var src = parseUrlQuery(); + var dst = opt_obj || {}; + var settingsStr = src[argumentName]; + if (settingsStr) { + var json = settingsStr.replace(fixKeysRE, '"$1":'); + var settings = JSON.parse(json); + copyProperties(settings, dst); + } + return dst; + }; + + /** + * Gets a function checking for prefixed versions + * + * example: + * + * var lockOrientation = misc.getFunctionByPrefix(window.screen, "lockOrientation"); + * + * @param {object} obj object that has function + * @param {string} funcName name of function + * @return {function?} or undefined if it doesn't exist + */ + var prefixes = ["", "moz", "webkit", "ms"]; + function getFunctionByPrefix(obj, funcName) { + var capitalName = funcName.substr(0, 1).toUpperCase() + funcName.substr(1); + for (var ii = 0; ii < prefixes.length; ++ii) { + var prefix = prefixes[ii]; + var name = prefix + prefix ? capitalName : funcName; + var func = obj[name]; + if (func) { + return func.bind(obj); + } + } + } + + /** + * Creates an invisible iframe and sets the src + * @param {string} src the source for the iframe + * @return {HTMLIFrameElement} The iframe + */ + function gotoIFrame(src) { + var iframe = document.createElement("iframe"); + iframe.style.display = "none"; + iframe.src = src; + document.body.appendChild(iframe); + return iframe; + } + + /** + * get a random int + * @param {number} value max value exclusive. 5 = random 0 to 4 + * @return {number} random int + * @memberOf module:Misc + */ + var randInt = function(value) { + return Math.floor(Math.random() * value); + }; + + /** + * get a random CSS color + * @param {function(number): number?) opt_randFunc function to generate random numbers + * @return {string} random css color + * @memberOf module:Misc + */ + var randCSSColor = function(opt_randFunc) { + var randFunc = opt_randFunc || randInt; + var strong = randFunc(3); + var colors = []; + for (var ii = 0; ii < 3; ++ii) { + colors.push(randFunc(128) + (ii === strong ? 128 : 64)); + } + return "rgb(" + colors.join(",") + ")"; + }; + + /** + * get a random 32bit color + * @param {function(number): number?) opt_randFunc function to generate random numbers + * @return {string} random 32bit color + * @memberOf module:Misc + */ + var rand32BitColor = function(opt_randFunc) { + var randFunc = opt_randFunc || randInt; + var strong = randFunc(3); + var color = 0xFF; + for (var ii = 0; ii < 3; ++ii) { + color = (color << 8) | (randFunc(128) + (ii === strong ? 128 : 64)); + } + return color; + }; + + /** + * finds a CSS rule. + * @param {string} selector + * @return {Rule?} matching css rule + * @memberOf module:Misc + */ + var findCSSStyleRule = function(selector) { + for (var ii = 0; ii < document.styleSheets.length; ++ii) { + var styleSheet = document.styleSheets[ii]; + var rules = styleSheet.cssRules || styleSheet.rules; + if (rules) { + for (var rr = 0; rr < rules.length; ++rr) { + var rule = rules[rr]; + if (rule.selectorText === selector) { + return rule; + } + } + } + } + }; + + /** + * Inserts a text node into an element + * @param {HTMLElement} element element to have text node insert + * @param {string} [text] text to insert + * @return {HTMLTextNode} the created text node + * @memberOf module:Misc + */ + var createTextNode = function(element, text) { + var txt = document.createTextNode(text || ""); + element.appendChild(txt); + return txt; + }; + + /** + * Returns the absolute position of an element for certain browsers. + * @param {HTMLElement} element The element to get a position + * for. + * @returns {Object} An object containing x and y as the + * absolute position of the given element. + * @memberOf module:Misc + */ + var getAbsolutePosition = function(element) { + var r = { x: element.offsetLeft, y: element.offsetTop }; + if (element.offsetParent) { + var tmp = getAbsolutePosition(element.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; + }; + + /** + * Clamp value + * @param {Number} v value to clamp + * @param {Number} min min value to clamp to + * @param {Number} max max value to clamp to + * @returns {Number} v clamped to min and max. + * @memberOf module:Misc + */ + var clamp = function(v, min, max) { + return Math.max(min, Math.min(max, v)); + }; + + /** + * Clamp in both positive and negative directions. + * Same as clamp(v, -max, +max) + * + * @param {Number} v value to clamp + * @param {Number} max max value to clamp to + * @returns {Number} v clamped to -max and max. + * @memberOf module:Misc + */ + var clampPlusMinus = function(v, max) { + return clamp(v, -max, max); + }; + + /** + * Return sign of value + * + * @param {Number} v value + * @returns {Number} -1 if v < 0, 1 if v > 0, 0 if v == 0 + * @memberOf module:Misc + */ + var sign = function(v) { + return v < 0 ? -1 : (v > 0 ? 1 : 0); + }; + + /** + * Takes which ever is closer to zero + * In other words minToZero(-2, -1) = -1 and minToZero(2, 1) = 1 + * + * @param {Number} v value to min + * @param {Number} min min value to use if v is less then -min + * or greater than +min + * @returns {Number} min or v, which ever is closer to zero + * @memberOf module:Misc + */ + var minToZero = function(v, min) { + return Math.abs(v) < Math.abs(min) ? v : min; + }; + + /** + * flips 0->max to max<-0 and 0->min to min->0 + * In otherwords + * max: 3, v: 2.7 = 0.3 + * max: 3, v:-2.7 = -0.3 + * max: 3, v: 0.2 = 2.8 + * max: 3, v:-0.2 = -2.8 + * + * @param {Number} v value to flip. + * @param {Number} max range to flip inside. + * @returns {Number} flipped value. + * @memberOf module:Misc + */ + var invertPlusMinusRange = function(v, max) { + return sign(v) * (max - Math.min(max, Math.abs(v))); + }; + + /** + * Convert degrees to radians + * + * @param {Number} d value in degrees + * @returns {Number} d in radians + * @memberOf module:Misc + */ + var degToRad = function(d) { + return d * Math.PI / 180; + }; + + /** + * Converts radians to degrees + * @param {Number} r value in radians + * @returns {Number} r in degrees + * @memberOf module:Misc + */ + var radToDeg = function(r) { + return r * 180 / Math.PI; + }; + + /** + * Resizes a cavnas to match its CSS displayed size. + * @param {Canvas} canvas canvas to resize. + * @param {boolean?} useDevicePixelRatio if true canvas will be + * created to match devicePixelRatio. + * @memberOf module:Misc + */ + var resize = function(canvas, useDevicePixelRatio) { + var mult = useDevicePixelRatio ? window.devicePixelRatio : 1; + mult = mult || 1; + var width = Math.floor(canvas.clientWidth * mult); + var height = Math.floor(canvas.clientHeight * mult); + if (canvas.width !== width || + canvas.height !== height) { + canvas.width = width; + canvas.height = height; + return true; + } + }; + + /** + * Copies all the src properties to the dst + * @param {Object} src an object with some properties + * @param {Object} dst an object to receive copes of the properties + * @return returns the dst object. + */ + function applyObject(src, dst) { + Object.keys(src).forEach(function(key) { + dst[key] = src[key]; + }); + return dst; + } + + /** + * Merges the proprties of all objects into a new object + * + * Example: + * + * var a = { abc: "def" }; + * var b = { xyz: "123" }; + * var c = Misc.mergeObjects(a, b); + * + * // c = { abc: "def", xyz: "123" }; + * + * Later object properties take precedence + * + * var a = { abc: "def" }; + * var b = { abc: "123" }; + * var c = Misc.mergeObjects(a, b); + * + * // c = { abc: "123" }; + * + * @param {...Object} object objects to merge. + * @return an object containing the merged properties + */ + function mergeObjects(object) { // eslint-disable-line + var merged = {}; + Array.prototype.slice.call(arguments).forEach(function(src) { + if (src) { + applyObject(src, merged); + } + }); + return merged; + } + + /** + * Creates a random id + * @param {number} [digits] number of digits. default 16 + */ + function makeRandomId(digits) { + digits = digits || 16; + var id = ""; + for (var ii = 0; ii < digits; ++ii) { + id = id + ((Math.random() * 16 | 0)).toString(16); + } + return id; + } + + /** + * Applies an object of listeners to an emitter. + * + * Example: + * + * applyListeners(someDivElement, { + * mousedown: someFunc1, + * mousemove: someFunc2, + * mouseup: someFunc3, + * }); + * + * Which is the same as + * + * someDivElement.addEventListener("mousedown", someFunc1); + * someDivElement.addEventListener("mousemove", someFunc2); + * someDivElement.addEventListener("mouseup", someFunc3); + * + * @param {Emitter} emitter some object that emits events and has a function `addEventListener` + * @param {Object.} listeners eventname function pairs. + */ + function applyListeners(emitter, listeners) { + Object.keys(listeners).forEach(function(name) { + emitter.addEventListener(name, listeners[name]); + }); + } + + function deepCompare(a, b) { + // are they the same object? + if (a === b) { + return true; + } + // are they the same type? + if (typeof a !== typeof b) { + return false; + } + if (Array.isArray(a)) { + if (a.length !== b.length) { + return false; + } + for (let ii = 0; ii < a.length; ++ii) { + if (!deepCompare(a[ii], b[ii])) { + return false; + } + } + return true; + } + if (typeof a === "object") { + var aKeys = Object.keys(a).sort(); + var bKeys = Object.keys(b).sort(); + if (!deepCompare(aKeys, bKeys)) { + return false; + } + for (let ii = 0; ii < aKeys.length; ++ii) { + var key = aKeys[ii]; + if (!deepCompare(a[key], b[key])) { + return false; + } + } + return true; + } + return a === b; + } + + return { + applyObject: applyObject, + applyUrlSettings: applyUrlSettings, + applyListeners: applyListeners, + clamp: clamp, + clampPlusMinus: clampPlusMinus, + copyProperties: copyProperties, + createTextNode: createTextNode, + degToRad: degToRad, + deepCompare: deepCompare, + findCSSStyleRule: findCSSStyleRule, + getAbsolutePosition: getAbsolutePosition, + getFunctionByPrefix: getFunctionByPrefix, + gotoIFrame: gotoIFrame, + invertPlusMinusRange: invertPlusMinusRange, + makeRandomId: makeRandomId, + mergeObjects: mergeObjects, + minToZero: minToZero, + objectToSearchString: objectToSearchString, + parseUrlQuery: parseUrlQuery, + parseUrlQueryString: parseUrlQueryString, + radToDeg: radToDeg, + randInt: randInt, + randCSSColor: randCSSColor, + rand32BitColor: rand32BitColor, + resize: resize, + sign: sign, + searchStringToObject: searchStringToObject, + }; +}); + + diff --git a/src/js/parsesettings.js b/src/js/parsesettings.js new file mode 100644 index 00000000..565bf1b8 --- /dev/null +++ b/src/js/parsesettings.js @@ -0,0 +1,72 @@ +define([], function() { + function removeCommentHeader(s) { + return (s.substr(0, 2) === "//") ? s.substr(2) : s; + } + + function removeComments(s) { + var ndx = s.indexOf("//"); + return ndx >= 0 ? s.substr(0, ndx) : s; + } + + var noCommaNeeded = { + '{': true, + '[': true, + ',': true, + }; + function addCommas(s) { + var last = s.trim().substr(-1); + return noCommaNeeded[last] ? s : (s + ","); + } + + function isQuote(s) { + return s === "'" || s === '"'; + } + + function addQuotesIfNoQuotes(s) { + var first = s.substr(0, 1); + if (isQuote(first)) { + return s; + } + return '"' + s.replace(/"/g, "\\\"") + '"'; + } + + function addQuotes(s) { + var colon = s.indexOf(":"); + if (colon < 0) { + return s; + } + var before = addQuotesIfNoQuotes(s.substr(0, colon).trim()); + var after = s.substr(colon + 1).trim(); + return before + ":" + after; + } + + function trim(s) { + return s.trim(); + } + + var settingsRE = /\/\/\s+settings\s*=\s*(\{\n[\s\S]*?\n\/\/\s+\})/m; + function parseSettings(text) { + var obj; + var m = settingsRE.exec(text); + if (m) { + var str = m[1].split('\n') + .map(removeCommentHeader) + .map(removeComments) + .map(addQuotes) + .map(addCommas) + .map(trim) + .join("") + .replace(/,\}/g, '}') + .replace(/,\]/g, ']') + .replace(/\},$/, '}'); + try { + obj = JSON.parse(str); + } catch (e) { + console.error("could not parse settings:" + str); + } + } + return obj; + } + return parseSettings; +}); + diff --git a/src/js/rank.js b/src/js/rank.js new file mode 100644 index 00000000..3b1534e1 --- /dev/null +++ b/src/js/rank.js @@ -0,0 +1,160 @@ +requirejs([ + './strings', + ], function( + strings) { + var $ = document.querySelector.bind(document); + var c = $("#c"); + var template = $("#template").text; + + db = db.filter(function(art) { + return !art.private; + }); + + // var fiveDaysInMs = 1000 * 60 * 60 * 24 * 5; + // var fiveDaysInHours = 24 * 5; + var ageBonusInHours = 24 * 2; + // var oneDayInHours = 24; + + var now = 1447660163874; //Date.now(); A date a few mins after the newest entry in test data + var hourElem = $("#hour"); + + function getNow() { + var timeAdjust = hourElem.value - 400; + return now + (timeAdjust * 60 * 60 * 1000); + } + + function rank(art) { + var dob = Date.parse(art.modifiedAt); + var age = getNow() - dob; + var hoursOld = age / 1000 / 60 / 60; + var agePenalty = Math.max(1, Math.log(hoursOld)); + var points = 1 + art.likes * 1 + art.views * 0 + Math.max(0, ageBonusInHours - hoursOld); + var score = points / agePenalty; + return score; + } + +// // HN +// // Score = (P-1) / (T+2)^G +// var gravity = 1.8; +// function rank(art) { +// var dob = Date.parse(art.modifiedAt); +// var age = getNow() - dob; +// var hours = age / 1000 / 60 / 60; +// var points = art.likes * 100 + art.views * 0; +// var score = points; +// return points / Math.pow(hours + 2, gravity); +// } + +// reddit +// function rank(art) { +// var score = art.likes * 10 + art.views; +// var order = Math.log(Math.max(Math.abs(score), 1), 10); +// var sign = Math.sign(score); +// var seconds = now * 0.001 - 1134028003; +// +// return Math.round(order + sign * seconds / 45000, 7); +// } + + function sortFn(a, b) { + return rank(b) - rank(a); + } + + function born(art) { + var dob = Date.parse(art.modifiedAt); + return dob <= getNow(); + } + + function clamp(v, min, max) { + return Math.min(max, Math.max(min, v)); + } + + function lerp(a, b, l) { + return a + (b - a) * clamp(l, 0, 1); + } + + var fiveDays = 1000 * 60 * 60 * 24; + function simulateLikesAndViews(art) { + var dob = Date.parse(art.modifiedAt); + var age = getNow() - dob; + var l = age / fiveDays; + art.likes = lerp(0, art.likes, l) | 0; + art.views = lerp(0, art.views, l) | 0; + } + + function pad(v, len) { + return strings.padLeft(v, len, "0"); + } + + function dob(a, b) { + return Date.parse(a.modifiedAt) - Date.parse(b.modifiedAt); + } + + function rgb(r, g, b) { + return "rgb(" + + r + "," + + b + "," + + g + ")"; + } + + function stampId(art, ndx) { + art.ndx = ndx; + var r = (ndx * 37 % 256); + var g = (ndx * 57 % 256); + var b = (ndx * 113 % 256); + art.backgroundColor = rgb(r, b, g); + art.color = rgb((r + 128) % 256, (g + 128) % 256, (b + 128) % 256); + } + + // var specials = { + // "91": "red", + // "93": "green", + // "94": "blue", + // "96": "purple", + // "98": "yellow", + // }; + + function sort(db) { + var num = db.length; + db = JSON.parse(JSON.stringify(db)); + db.sort(dob); + db.forEach(stampId); + db = db.filter(born).sort(sortFn); + db.forEach(simulateLikesAndViews); + + c.innerHTML = ""; + db.forEach(function(art, line) { + var dob = Date.parse(art.modifiedAt); + var age = getNow() - dob; + var numHours = age / 1000 / 60 / 60 | 0; + var days = numHours / 24 | 0; + var hours = numHours % 24; + art.age = pad(days, 2) + ":" + pad(hours, 2); + var l = age / fiveDays; + var div = document.createElement("div"); + div.innerHTML = strings.replaceParams(template, [art, {line: line}]); + c.appendChild(div); + var color = "hsla(" + (lerp(0, 240, l) | 0) + ", 100%, 80%, 1)"; + //div.style.backgroundColor = art.backgroundColor; + //div.style.color = art.color; + div.querySelector(".age").style.backgroundColor = color; + var level = art.ndx / num * 100 | 0; + div.querySelector(".username").style.backgroundColor = "hsla(0, 0%, " + level + "%, 1)"; + div.querySelector(".username").style.color = "hsla(0, 0%, " + ((level + 50) % 100) + "%, 1)"; + div.querySelector(".color").style.backgroundColor = art.color; +// var bk = specials[art.ndx]; +// if (bk) { +// div.querySelector(".views").style.backgroundColor = bk; +// } + }); + } + + sort(db); + + hourElem.addEventListener('input', function() { + sort(db); + }); + +}); + + + diff --git a/src/js/shaders.js b/src/js/shaders.js new file mode 100644 index 00000000..e8ac59db --- /dev/null +++ b/src/js/shaders.js @@ -0,0 +1,354 @@ +/* + * Copyright 2014, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +"use strict"; + +define(function() { + return { + // =========================================================== + "vs-header": ` +attribute float vertexId; + +uniform vec2 mouse; +uniform vec2 resolution; +uniform vec4 background; +uniform float time; +uniform float vertexCount; +uniform sampler2D volume; +uniform sampler2D sound; +uniform sampler2D floatSound; +uniform sampler2D touch; +uniform vec2 soundRes; +uniform float _dontUseDirectly_pointSize; + +varying vec4 v_color; + `, + // =========================================================== + "vs": ` +#define PI radians(180.) +#define NUM_SEGMENTS 21.0 +#define NUM_POINTS (NUM_SEGMENTS * 2.0) +#define STEP 5.0 + +vec3 hsv2rgb(vec3 c) { + c = vec3(c.x, clamp(c.yz, 0.0, 1.0)); + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + float point = mod(floor(vertexId / 2.0) + mod(vertexId, 2.0) * STEP, NUM_SEGMENTS); + float count = floor(vertexId / NUM_POINTS); + float offset = count * 0.02; + float angle = point * PI * 2.0 / NUM_SEGMENTS + offset; + float radius = 0.2; + float c = cos(angle + time) * radius; + float s = sin(angle + time) * radius; + float orbitAngle = count * 0.01; + float oC = cos(orbitAngle + time * count * 0.01) * sin(orbitAngle); + float oS = sin(orbitAngle + time * count * 0.01) * sin(orbitAngle); + + vec2 aspect = vec2(1, resolution.x / resolution.y); + vec2 xy = vec2( + oC + c, + oS + s); + gl_Position = vec4(xy * aspect + mouse * 0.1, 0, 1); + + float hue = (time * 0.01 + count * 1.001); + v_color = vec4(hsv2rgb(vec3(hue, 1, 1)), 1); +} + `, + // =========================================================== + "vs2": ` +#define PI radians(180.) +#define NUM_SEGMENTS 4.0 +#define NUM_POINTS (NUM_SEGMENTS * 2.0) +#define STEP 5.0 + +vec3 hsv2rgb(vec3 c) { + c = vec3(c.x, clamp(c.yz, 0.0, 1.0)); + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + float point = mod(floor(vertexId / 2.0) + mod(vertexId, 2.0) * STEP, NUM_SEGMENTS); + float count = floor(vertexId / NUM_POINTS); + float snd = texture2D(sound, vec2(fract(count / 128.0), fract(count / 20000.0))).a; + float offset = count * 0.02; + float angle = point * PI * 2.0 / NUM_SEGMENTS + offset; + float radius = 0.2 * pow(snd, 5.0); + float c = cos(angle + time) * radius; + float s = sin(angle + time) * radius; + float orbitAngle = count * 0.0; + float innerRadius = count * 0.001; + float oC = cos(orbitAngle + time * 0.4 + count * 0.1) * innerRadius; + float oS = sin(orbitAngle + time + count * 0.1) * innerRadius; + + vec2 aspect = vec2(1, resolution.x / resolution.y); + vec2 xy = vec2( + oC + c, + oS + s); + gl_Position = vec4(xy * aspect + mouse * 0.1, 0, 1); + + float hue = (time * 0.01 + count * 1.001); + v_color = vec4(hsv2rgb(vec3(hue, 1, 1)), 1); +} + `, + // =========================================================== + "vs3": ` +#define NUM_SEGMENTS 128.0 +#define NUM_POINTS (NUM_SEGMENTS * 2.0) + +vec3 hsv2rgb(vec3 c) { + c = vec3(c.x, clamp(c.yz, 0.0, 1.0)); + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + float numLinesDown = floor(vertexCount / NUM_POINTS); + // produces 0,1, 1,2, 2,3, ... + float point = floor(mod(vertexId, NUM_POINTS) / 2.0) + mod(vertexId, 2.0); + // line count + float count = floor(vertexId / NUM_POINTS); + + float u = point / NUM_SEGMENTS; // 0 <-> 1 across line + float v = count / numLinesDown; // 0 <-> 1 by line + float invV = 1.0 - v; + + // Only use the left most 1/4th of the sound texture + // because there's no action on the right + float historyX = u * 0.25; + // Match each line to a specific row in the sound texture + float historyV = (v * numLinesDown + 0.5) / soundRes.y; + float snd = texture2D(sound, vec2(historyX, historyV)).a; + + float x = u * 2.0 - 1.0; + float y = v * 2.0 - 1.0; + vec2 xy = vec2( + x * mix(0.5, 1.0, invV), + y + pow(snd, 5.0) * 1.0) / (v + 0.5); + gl_Position = vec4(xy * 0.5, 0, 1); + + float hue = u; + float sat = invV; + float val = invV; + v_color = mix(vec4(hsv2rgb(vec3(hue, sat, val)), 1), background, v * v); +} + `, + // =========================================================== + "vs4": ` +#define PI radians(180.) +#define NUM_SEGMENTS 2.0 +#define NUM_POINTS (NUM_SEGMENTS * 2.0) +#define STEP 1.0 + +void main() { + float point = mod(floor(vertexId / 2.0) + mod(vertexId, 2.0) * STEP, NUM_SEGMENTS); + float count = floor(vertexId / NUM_POINTS); + float offset = count * sin(time * 0.01) + 5.0; + float angle = point * PI * 2.0 / NUM_SEGMENTS + offset; + float radius = pow(count * 0.00014, 1.0); + float c = cos(angle + time) * radius; + float s = sin(angle + time) * radius; + float orbitAngle = pow(count * 0.025, 0.8); + float innerRadius = pow(count * 0.0005, 1.2); + float oC = cos(orbitAngle + count * 0.0001) * innerRadius; + float oS = sin(orbitAngle + count * 0.0001) * innerRadius; + + vec2 aspect = vec2(1, resolution.x / resolution.y); + vec2 xy = vec2( + oC + c, + oS + s); + gl_Position = vec4(xy * aspect + mouse * 0.1, 0, 1); + + float b = 1.0 - pow(sin(count * 0.4) * 0.5 + 0.5, 10.0); + b = 0.0;mix(0.0, 0.7, b); + v_color = vec4(b, b, b, 1); +} + `, + // =========================================================== + "wave-vs": ` +vec3 hsv2rgb(vec3 c) { + c = vec3(c.x, clamp(c.yz, 0.0, 1.0)); + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +float select(float v, float t) { + return step(t * 0.9, v) * step(v, t * 1.1); +} + +void main() { + float GRID_YOFF = 1./40.; + float GRID_DOWN = 17.; + float GRID_ACROSS = 64.0; + float NUM_PER_DOWN = GRID_DOWN * 2.; + float NUM_PER_ACROSS = GRID_ACROSS * 2.; + float NUM_PER_GRID = NUM_PER_DOWN + NUM_PER_ACROSS; + float NUM_GRIDS = 4.; + float NUM_GRID_TOTAL = NUM_PER_GRID * NUM_GRIDS; + float NUM_POINTS = (vertexCount - NUM_GRID_TOTAL) / 4.; + float NUM_SEGMENTS = NUM_POINTS / 2.; + + + float id = vertexId - NUM_GRID_TOTAL; + + // produces 0,1, 1,2, 2,3, ... + float point = floor(mod(id, NUM_POINTS) / 2.0) + mod(id, 2.0); + // line count + float grid = floor(id / NUM_POINTS); + + float u = point / (NUM_SEGMENTS - 1.); // 0 <-> 1 across line + float v = grid / NUM_GRIDS; // 0 <-> 1 by line + + float snd0 = texture2D(sound, vec2(u * 1., 0)).a; + float snd1 = texture2D(sound, vec2(u * 0.5, 0)).a; + float snd2 = texture2D(sound, vec2(u * 0.25, 0)).a; + float snd3 = texture2D(sound, vec2(u * 0.125, 0)).a; + + float s = + snd0 * select(grid, 0.) + + snd1 * select(grid, 1.) + + snd2 * select(grid, 2.) + + snd3 * select(grid, 3.) + + 0.; + + float x = u * 2.0 - 1.0; + float y = v * 2.0 - 1.0; + vec2 xy = vec2( + x, + s * 0.4 + y + GRID_YOFF); + gl_Position = vec4(xy, 0, 1); + + float hue = grid * 0.25; + float sat = 1.0; + float val = 1.0; + + if (id < 0.0) { + if (vertexId < NUM_PER_DOWN * NUM_GRIDS) { + float hgx = mod(vertexId, 2.0); + float hgy = mod(floor(vertexId / 2.), GRID_DOWN); + float hgId = floor(vertexId / NUM_PER_DOWN); + gl_Position = vec4( + hgx * 2. - 1., + hgy / (GRID_DOWN - 1.) * 0.4 + + (hgId / NUM_GRIDS * 2. - 1.) + GRID_YOFF, + 0.1, + 1); + + hue = hgId * 0.25; + sat = 0.5; + val = 0.3; + } else { + float vid = vertexId - NUM_PER_DOWN * NUM_GRIDS; + float vgy = mod(vid, 2.0); + float vgx = mod(floor(vid / 2.), GRID_ACROSS); + float vgId = floor(vid / NUM_PER_ACROSS); + gl_Position = vec4( + ((vgx / GRID_ACROSS) * 2. - 1.) * pow(2., vgId), + vgy * 0.4 + + (vgId / NUM_GRIDS * 2. - 1.) + GRID_YOFF, + 0.1, + 1); + + hue = vgId * 0.25; + sat = 0.5; + val = 0.3; + + } + } + + v_color = vec4(hsv2rgb(vec3(hue, sat, val)), 1); +} + `, + // =========================================================== + "fs": ` +precision mediump float; + +varying vec4 v_color; + +void main() { + gl_FragColor = v_color; +} + `, + // =========================================================== + "history-vs": ` +attribute vec4 position; +attribute vec2 texcoord; +uniform mat4 u_matrix; +varying vec2 v_texcoord; + +void main() { + gl_Position = u_matrix * position; + v_texcoord = texcoord; +} + `, + // =========================================================== + "history-fs": ` +precision mediump float; + +uniform sampler2D u_texture; +uniform float u_mix; +uniform float u_mult; +varying vec2 v_texcoord; + +void main() { + vec4 color = texture2D(u_texture, v_texcoord); + gl_FragColor = mix(color.aaaa, color.rgba, u_mix) * u_mult; +} + `, + // =========================================================== + "rect-vs": ` +attribute vec4 position; +uniform mat4 u_matrix; + +void main() { + gl_Position = u_matrix * position; +} + `, + // =========================================================== + "rect-fs": ` +precision mediump float; + +uniform vec4 u_color; + +void main() { + gl_FragColor = u_color; +} + `, + }; +}); + diff --git a/src/js/start.js b/src/js/start.js new file mode 100644 index 00000000..ce1c0f41 --- /dev/null +++ b/src/js/start.js @@ -0,0 +1,13 @@ +requirejs([ + './main', + ], function( + main + ) { + main.start(); +}); +requirejs.config({ + paths: { + '3rdparty': '../3rdparty', + }, +}); + diff --git a/src/js/strings.js b/src/js/strings.js new file mode 100644 index 00000000..38c471ed --- /dev/null +++ b/src/js/strings.js @@ -0,0 +1,296 @@ +/* + * Copyright 2014, Gregg Tavares. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Gregg Tavares. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +define([], function() { + "use strict"; + + function removeCommentHeader(s) { + return (s.substr(0, 2) === "//") ? s.substr(2) : s; + } + + function removeComments(s) { + var ndx = s.indexOf("//"); + return ndx >= 0 ? s.substr(0, ndx) : s; + } + + var noCommaNeeded = { + '{': true, + '[': true, + ',': true, + }; + function addCommas(s) { + var last = s.trim().substr(-1); + return noCommaNeeded[last] ? s : (s + ","); + } + + function isQuote(s) { + return s === "'" || s === '"'; + } + + function addQuotesIfNoQuotes(s) { + var first = s.substr(0, 1); + if (isQuote(first)) { + return s; + } + return '"' + s.replace(/"/g, "\\\"") + '"'; + } + + function addQuotes(s) { + var colon = s.indexOf(":"); + if (colon < 0) { + return s; + } + var before = addQuotesIfNoQuotes(s.substr(0, colon).trim()); + var after = s.substr(colon + 1).trim(); + return before + ":" + after; + } + + function trim(s) { + return s.trim(); + } + + var settingsRE = /\/\/\s+settings\s*=\s*(\{\n[\s\S]*?\n\/\/\s+\})/m; + function parseSettings(text) { + var obj; + var m = settingsRE.exec(text); + if (m) { + var str = m[1].split('\n') + .map(removeCommentHeader) + .map(removeComments) + .map(addQuotes) + .map(addCommas) + .map(trim) + .join("") + .replace(/,\}/g, '}') + .replace(/,\]/g, ']') + .replace(/\},$/, '}'); + try { + obj = JSON.parse(str); + } catch (e) { + console.error("could not parse settings:" + str); + } + } + return obj; + } + + /** + * Returns a padding string large enough for the given size. + * @param {string} padChar character for padding string + * @param {number} len minimum length of padding. + * @returns {string} string with len or more of padChar. + */ + var getPadding = (function() { + var paddingDb = {}; + + return function(padChar, len) { + var padStr = paddingDb[padChar]; + if (!padStr || padStr.length < len) { + padStr = new Array(len + 1).join(padChar); + paddingDb[padChar] = padStr; + } + return padStr; + }; + }()); + + /** + * Turn an unknown object into a string if it's not already. + * Do I really needs this? I could just always do .toString even + * on a string. + */ + var stringIt = function(str) { + return (typeof str === 'string') ? str : str.toString(); + }; + + /** + * Pad string on right + * @param {string} str string to pad + * @param {number} len number of characters to pad to + * @param {string} padChar character to pad with + * @returns {string} padded string. + * @memberOf module:Strings + */ + var padRight = function(str, len, padChar) { + str = stringIt(str); + if (str.length >= len) { + return str; + } + var padStr = getPadding(padChar, len); + return str + padStr.substr(str.length - len); + }; + + /** + * Pad string on left + * @param {string} str string to pad + * @param {number} len number of characters to pad to + * @param {string} padChar character to pad with + * @returns {string} padded string. + * @memberOf module:Strings + */ + var padLeft = function(str, len, padChar) { + str = stringIt(str); + if (str.length >= len) { + return str; + } + var padStr = getPadding(padChar, len); + return padStr.substr(str.length - len) + str; + }; + + /** + * Replace %(id)s in strings with values in objects(s) + * + * Given a string like `"Hello %(name)s from $(user.country)s"` + * and an object like `{name:"Joe",user:{country:"USA"}}` would + * return `"Hello Joe from USA"`. + * + * @function + * @param {string} str string to do replacements in + * @param {Object|Object[]} params one or more objects. + * @returns {string} string with replaced parts + * @memberOf module:Strings + */ + var replaceParams = (function() { + var replaceParamsRE = /%\(([^)]+)\)s/g; + + return function(str, params) { + if (!params.length) { + params = [params]; + } + + return str.replace(replaceParamsRE, function(match, key) { + var keys = key.split('.'); + for (var ii = 0; ii < params.length; ++ii) { + var obj = params[ii]; + for (var jj = 0; jj < keys.length; ++jj) { + var part = keys[jj]; + obj = obj[part]; + if (obj === undefined) { + break; + } + } + if (obj !== undefined) { + return obj; + } + } + console.error("unknown key: " + key); + return "%(" + key + ")s"; + }); + }; + }()); + + /** + * True if string starts with prefix + * @static + * @param {String} str string to check for start + * @param {String} prefix start value + * @returns {Boolean} true if str starts with prefix + * @memberOf module:Strings + */ + var startsWith = function(str, start) { + return (str.length >= start.length && + str.substr(0, start.length) === start); + }; + + /** + * True if string ends with suffix + * @param {String} str string to check for start + * @param {String} suffix start value + * @returns {Boolean} true if str starts with suffix + * @memberOf module:Strings + */ + var endsWith = function(str, end) { + return (str.length >= end.length && + str.substring(str.length - end.length) === end); + }; + + /** + * Make a string from unicode code points + * @function + * @param {Number} codePoint one or more code points + * @returns {string} unicode string. Note a single code point + * can return a string with length > 1. + * @memberOf module:Strings + */ + var fromCodePoint = String.fromCodePoint ? String.fromCodePoint : (function() { + var stringFromCharCode = String.fromCharCode; + var floor = Math.floor; + var fromCodePoint = function() { + var MAX_SIZE = 0x4000; + var codeUnits = []; + var highSurrogate; + var lowSurrogate; + var index = -1; + var length = arguments.length; + if (!length) { + return ''; + } + var result = ''; + while (++index < length) { + var codePoint = Number(arguments[index]); + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` + codePoint < 0 || // not a valid Unicode code point + codePoint > 0x10FFFF || // not a valid Unicode code point + floor(codePoint) !== codePoint // not an integer + ) { + throw new RangeError('Invalid code point: ' + codePoint); + } + if (codePoint <= 0xFFFF) { // BMP code point + codeUnits.push(codePoint); + } else { // Astral code point; split in surrogate halves + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000; + highSurrogate = (codePoint >> 10) + 0xD800; + lowSurrogate = (codePoint % 0x400) + 0xDC00; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 === length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + return fromCodePoint; + }()); + + return { + endsWith: endsWith, + fromCodePoint: fromCodePoint, + padLeft: padLeft, + padRight: padRight, + replaceParams: replaceParams, + startsWith: startsWith, + removeComments: removeComments, + isQuote: isQuote, + trim: trim, + parseSettings: parseSettings, + }; +}); + diff --git a/src/js/typedarray-copyWithin-polyfill.js b/src/js/typedarray-copyWithin-polyfill.js new file mode 100644 index 00000000..5147a7a7 --- /dev/null +++ b/src/js/typedarray-copyWithin-polyfill.js @@ -0,0 +1,42 @@ +define([], function() { + var copyWithinPolyfill = function(dst, src, length) { + if (length === undefined) { + length = this.length; + } + var srcEnd = src + length; + var dstEnd = dst + length; + if (src < dst) { + // copy forward + while (srcEnd > src) { + this[--dstEnd] = this[--srcEnd]; + } + } else { + // copy backward + while (src < srcEnd) { + this[dst++] = this[src++]; + } + } + }; + + // foo + var typedArrays = [ + window.Int8Array, + window.Int16Array, + window.Int32Array, + window.Uint8Array, + window.Uint16Array, + window.Uint32Array, + window.Float32Array, + window.Float64Array, + ]; + + typedArrays.forEach(function(ctor) { + if (!ctor.prototype.copyWithin) { + ctor.prototype.copyWithin = copyWithinPolyfill; + } + }); + + return {}; // nothing +}); + + diff --git a/src/rank.html b/src/rank.html new file mode 100644 index 00000000..5f8d922c --- /dev/null +++ b/src/rank.html @@ -0,0 +1,65 @@ + + + + ranking test + + + + + +
+ + + + + + + diff --git a/src/rank/db.json b/src/rank/db.json new file mode 100644 index 00000000..a396a12f --- /dev/null +++ b/src/rank/db.json @@ -0,0 +1 @@ +var db = [{"_id":"42ESv42tR52CEdX63","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-28T09:57:45.800Z","origId":null,"name":"targ","username":"gman","screenshotDataId":"aJ7GrPx6exum5dpSW","views":80,"likes":0,"revisionId":"3iSFTCBkrgqEbotMt","screenshotURL":"/cfs/files/images/4ro3p9et1y928d5oa-thumbnail.jpg","modifiedAt":"2015-10-30T08:26:18.235Z","hasSound":true},{"_id":"4d6tRjx7hKBD4t7sJ","owner":null,"createdAt":"2015-11-01T18:07:34.636Z","modifiedAt":"2015-11-01T18:07:34.636Z","origId":"h6BvsMWiHpgwT5Nhh","name":"pointsprite plasma","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/trfjx38nloshkd6kw-thumbnail.jpg","views":19,"likes":0,"revisionId":"wcQYkvJDHt9K8bHp3"},{"_id":"5ppKAhtsPPS3xfam7","owner":"aRcuym3jqDR3e796n","createdAt":"2015-10-31T17:15:00.357Z","origId":"uQkpXdAa4ABNPNthi","name":"sillage","username":"spotline","screenshotURL":"/cfs/files/images/u6al664te3f7x9h0z-thumbnail.jpg","views":34,"likes":1,"revisionId":"iMMrZrMcdq8ZwDnBc","modifiedAt":"2015-10-31T17:50:50.277Z","hasSound":true},{"_id":"5dNDeR4dqCCRvcHCT","owner":null,"createdAt":"2015-10-30T22:45:10.567Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/ti1pt9g9uegwhioxt-thumbnail.jpg","views":18,"likes":0,"revisionId":"oERDjtBA5M6nom3Sk","modifiedAt":"2015-10-30T22:45:10.570Z"},{"_id":"6gQQcZm2vuBMyLCkB","owner":null,"createdAt":"2015-11-02T10:03:50.214Z","modifiedAt":"2015-11-02T10:03:50.214Z","origId":"oMwCvkkRyEiZkio4h","name":"point cloud vs spheres colored","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/mw5ssi4xtryhttjbl-thumbnail.jpg","views":43,"likes":0,"revisionId":"N8eFFjsbNC8L9EqQE","hasSound":true},{"_id":"6qhRHbFn8B6GeD5Ni","owner":null,"createdAt":"2015-10-28T19:27:31.952Z","origId":null,"name":"unnamed2","username":"-anon-","screenshotURL":"/cfs/files/images/6ne2eg69apigwgclz-thumbnail.jpg","views":51,"likes":0,"revisionId":"NmRdMXB27qGy58oXX","modifiedAt":"2015-10-28T19:27:31.958Z"},{"_id":"7RXESd6b5ToNrYe9M","owner":"RjvRcRoNGbLbFp3bF","createdAt":"2015-11-03T13:27:47.372Z","modifiedAt":"2015-11-03T13:27:47.372Z","origId":"PTcamNGqbYP3egN7J","name":"unnamed 3","private":false,"username":"andrea","screenshotURL":"/cfs/files/images/psv9cjtjtc802nw70-thumbnail.jpg","views":50,"likes":1,"revisionId":"mr8FPvZE5FskeTWJZ"},{"_id":"7ZDFThfCsDDXTyMjG","owner":null,"createdAt":"2015-10-30T11:13:20.029Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/qam4olvdkjs8klpfd-thumbnail.jpg","views":53,"likes":0,"revisionId":"RGzGy36upKz5Yz66z","modifiedAt":"2015-10-30T11:13:20.034Z"},{"_id":"7b2mtzWGfut7qG2b4","owner":"tfmC4rzBPTeaGjH5h","createdAt":"2015-11-02T08:04:27.136Z","modifiedAt":"2015-11-02T18:51:49.390Z","origId":null,"name":"cubes","private":false,"username":"matt","screenshotURL":"/cfs/files/images/saf6p9b07856qu8th-thumbnail.jpg","views":112,"likes":3,"revisionId":"oeSchAqmZKBS3Kbyy"},{"_id":"83bhi2jnJmLwj89jd","owner":null,"createdAt":"2015-10-28T01:39:35.117Z","origId":null,"name":"unnamed","username":"-anon-","screenshotDataId":"daCGZux4fcKPwC2RQ","views":28,"likes":0,"revisionId":"j6cR34k6wjp8HkKjb","screenshotURL":"/cfs/files/images/daCGZux4fcKPwC2RQ-thumbnail.png","modifiedAt":"2015-10-28T01:39:35.128Z","hasSound":true},{"_id":"87jiR2yJj3v4JHQGX","owner":"aRcuym3jqDR3e796n","createdAt":"2015-11-09T23:50:52.187Z","modifiedAt":"2015-11-09T23:50:52.187Z","origId":"iPiDjpBYDPGFTGp8Y","name":"residualfillattack","private":false,"username":"spotline","screenshotURL":"/cfs/files/images/c1cot7l4qyo0zrntr-thumbnail.jpg","hasSound":true,"views":44,"likes":1,"revisionId":"bTZGs67sH6DugvCjD"},{"_id":"8eaHZkbv4GqCvTJJs","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-30T08:22:17.149Z","origId":"hhsdvkiJ32bCTcezv","name":"eswng","username":"gman","screenshotURL":"/cfs/files/images/kuoxs8iblkjgbtu6l-thumbnail.jpg","views":145,"likes":0,"revisionId":"scmxu6kWcN3vkYKkg","modifiedAt":"2015-10-30T08:22:17.153Z","hasSound":true},{"_id":"9wKMAeACxZ3WoJc2m","owner":"GvYqbMhjvBvJBxi4x","createdAt":"2015-11-03T15:49:34.993Z","modifiedAt":"2015-11-03T15:49:34.993Z","origId":null,"name":"Spiral","private":false,"username":"paweł","screenshotURL":"/cfs/files/images/2a5m4wethnw41mqcy-thumbnail.jpg","views":131,"likes":3,"revisionId":"BqfMM7s8QBJqSmecE"},{"_id":"AGytkw7djFKBPNKZE","owner":null,"createdAt":"2015-10-27T00:33:13.738Z","origId":null,"name":"unnamed","username":"-anon-","screenshotDataId":"ZWGwTmTqyW4P5mnLc","views":31,"likes":0,"revisionId":"bdpSio2GckLLXyBH7","screenshotURL":"/cfs/files/images/ZWGwTmTqyW4P5mnLc-thumbnail.png","modifiedAt":"2015-10-27T00:33:13.754Z","hasSound":true},{"_id":"AHgb5kGbLwEYQjRTn","owner":"F5if23dnvCEmcMssC","createdAt":"2015-10-31T18:37:45.950Z","origId":null,"name":"rings_1","username":"mark","screenshotURL":"/cfs/files/images/c34clv5phyill6115-thumbnail.jpg","views":17,"likes":1,"revisionId":"qDy9ynSRsETzKRo6L","modifiedAt":"2015-10-31T18:54:10.218Z","hasSound":true},{"_id":"CGefenfT6rv2yQ4Bw","owner":null,"createdAt":"2015-10-30T09:55:10.287Z","origId":"nL6YpkW8YvGKNEKtj","name":"point cloud vs spheres","username":"-anon-","screenshotURL":"/cfs/files/images/m6sn4mhftgzj4hoho-thumbnail.jpg","views":53,"likes":0,"revisionId":"WxvP6AKu7QTYrCMv9","modifiedAt":"2015-10-30T09:55:10.291Z","hasSound":true},{"_id":"DQtN9os6r9QqLMWeq","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-11-08T17:29:48.420Z","modifiedAt":"2015-11-08T17:29:48.420Z","origId":"EtZAgACkH5HwhRTKb","name":"never saw a rainbow","private":false,"username":"visy","screenshotURL":"/cfs/files/images/tefw6f0rlgew9ebpl-thumbnail.jpg","views":140,"likes":2,"revisionId":"njs7YdKqEDyAg2f7v","hasSound":true},{"_id":"DkQkxp558QrXdoDTs","owner":"QDPTa9B3Fj7vgYoEm","createdAt":"2015-10-26T14:52:59.004Z","origId":null,"name":"in(trouble)","username":"calderonsteven","screenshotDataId":"afczA2gKZEZw6u6GL","views":2674,"likes":2,"revisionId":"6C58c2kmDptLT7fDi","screenshotURL":"/cfs/files/images/afczA2gKZEZw6u6GL-thumbnail.png","modifiedAt":"2015-10-26T14:58:03.661Z","hasSound":true},{"_id":"EZzESxRYabyXKSxqw","owner":null,"createdAt":"2015-10-30T12:25:33.881Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/pxclrotmn0a4kapm2-thumbnail.jpg","views":21,"likes":0,"revisionId":"rK6W7cFL5Tonsazvz","modifiedAt":"2015-10-30T12:25:33.883Z"},{"_id":"Ekj2CXtjX5YZc76Lk","owner":"F5if23dnvCEmcMssC","createdAt":"2015-11-01T16:32:57.089Z","modifiedAt":"2015-11-01T17:47:11.630Z","origId":null,"name":"orb","private":false,"username":"mark","screenshotURL":"/cfs/files/images/2snl6a0p1dnl5uu96-thumbnail.jpg","views":92,"likes":1,"revisionId":"EaoRxvueuCWjo5f4w","hasSound":true},{"_id":"GCHbAzpPAFHCXStCn","owner":null,"createdAt":"2015-10-30T10:31:50.835Z","origId":"hhsdvkiJ32bCTcezv","name":"blendy","username":"-anon-","screenshotURL":"/cfs/files/images/yoofmit2ulo5s1yxa-thumbnail.jpg","views":42,"likes":0,"revisionId":"jaFnJQ5ucSsn5rDH3","modifiedAt":"2015-10-30T10:31:50.843Z","hasSound":true},{"_id":"GY6bT7gTsHXRvMshg","owner":"eRW4yDxawZyEw54rX","createdAt":"2015-10-30T18:30:02.719Z","origId":null,"name":"wip","username":"johan","screenshotURL":"/cfs/files/images/o9ijcc82vz6w3tsh0-thumbnail.jpg","views":54,"likes":0,"revisionId":"BBr576Ayxyvy6vg2x","modifiedAt":"2015-10-30T21:19:49.110Z"},{"_id":"HSGSvjGwQyB6cFQMP","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-26T05:10:48.361Z","origId":null,"name":"dots","username":"gman","screenshotDataId":"ssTFyFzXXEKdnCe9X","views":263,"likes":0,"revisionId":"FYrrPKDfsxDKF4PDe","screenshotURL":"/cfs/files/images/ssTFyFzXXEKdnCe9X-thumbnail.png","modifiedAt":"2015-10-26T05:19:42.712Z","hasSound":true},{"_id":"Jrb5gxuyHzqMNukkg","owner":null,"createdAt":"2015-10-30T10:31:53.355Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/ufvkizpki0667ghu2-thumbnail.jpg","views":38,"likes":0,"revisionId":"A4uvQ7jkHDZ6xPB5K","modifiedAt":"2015-10-30T10:31:53.357Z"},{"_id":"JsEv9AaC54NF6cY8Q","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T19:59:07.982Z","origId":null,"name":"round","username":"gman","screenshotDataId":"3EH8QEmsqvefvJDLK","views":397,"likes":0,"revisionId":"6Eo4ptAdXRvCJK6qz","screenshotURL":"/cfs/files/images/n6aj66ziha1w267jv-thumbnail.jpg","modifiedAt":"2015-11-09T11:25:52.637Z","private":false,"hasSound":true},{"_id":"K84niXFJgvqPCrhF3","owner":null,"createdAt":"2015-10-30T16:50:54.427Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/psnggln1496tx7jwp-thumbnail.jpg","views":16,"likes":0,"revisionId":"Nk55WQ9WvSkEcfh9w","modifiedAt":"2015-10-30T16:50:54.429Z"},{"_id":"K8sAwLQqxzqjXN3FT","owner":null,"createdAt":"2015-10-30T16:32:45.293Z","origId":"gqJ33JsAWdcuKjJHH","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/r3ddlegcc4cl04il4-thumbnail.jpg","views":41,"likes":0,"revisionId":"PNW2mm6xieTaotsRA","modifiedAt":"2015-10-30T16:32:45.297Z"},{"_id":"K9kkXT25juoLDcni4","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-30T10:01:58.665Z","origId":null,"name":"wip3","username":"gman","screenshotURL":"/cfs/files/images/2kb3wfu2zxsv7diex-thumbnail.jpg","views":200,"likes":0,"revisionId":"SfcSWK5bCRkY7Gfkm","modifiedAt":"2015-10-31T07:38:48.826Z","hasSound":true},{"_id":"L7qW9rkYQEWF4AzkK","owner":null,"createdAt":"2015-10-30T19:51:34.873Z","origId":"wTaKE9X796qNFqgEM","name":"BigSwingingSnake","username":"-anon-","screenshotURL":"/cfs/files/images/vyqpj3pwtutad8w7a-thumbnail.jpg","views":84,"likes":1,"revisionId":"R3Qwb5nGg7Asj7ug9","modifiedAt":"2015-10-30T19:51:34.877Z","hasSound":true},{"_id":"LTuqGKGJGc3bHxGij","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T12:57:47.601Z","origId":"wmrGHPZAroXn6EtZz","name":"pinkstars","username":"gman","screenshotDataId":"ZtPx2spAm6Si8sEws","views":426,"likes":0,"revisionId":"3o6r9etoafrv2bpvs","screenshotURL":"/cfs/files/images/ZtPx2spAm6Si8sEws-thumbnail.png","modifiedAt":"2015-10-25T12:57:47.605Z"},{"_id":"MPxc2mXYAQd5F3JFC","owner":null,"createdAt":"2015-11-09T13:35:20.409Z","modifiedAt":"2015-11-09T13:35:20.409Z","origId":"cvLGj6QKvo7uebnbK","name":"point cloud vs spheres","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/manubfey3gyxpkuez-thumbnail.jpg","hasSound":true,"views":14,"likes":0,"revisionId":"xjDypGpPJLCY6yYjg"},{"_id":"MTyhyqrCPDN5Fd7Xr","owner":null,"createdAt":"2015-10-30T17:56:28.341Z","origId":"nL6YpkW8YvGKNEKtj","name":"point cloud vs spheres","username":"-anon-","screenshotURL":"/cfs/files/images/svabsqowjrenqn7go-thumbnail.jpg","views":28,"likes":0,"revisionId":"mdc9uz9jyX2eCZ8a9","modifiedAt":"2015-10-30T17:56:28.345Z","hasSound":true},{"_id":"NnwTMwz27MKZEbr46","owner":null,"createdAt":"2015-10-30T15:14:23.274Z","origId":"ZzCgG7HuSE6BLGSKR","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/2wiuo4cpros2lrpsy-thumbnail.jpg","views":34,"likes":0,"revisionId":"D72rmnevx9NGALWpw","modifiedAt":"2015-10-30T15:14:23.277Z"},{"_id":"PF6C8TWcrEB3Mz3NP","owner":"mnvGgYDGEBEiNodks","createdAt":"2015-10-30T15:27:21.217Z","origId":"nL6YpkW8YvGKNEKtj","name":"point cloud vs spheres","username":"bcarlyle","screenshotURL":"/cfs/files/images/wg847jyoyyf3fisrs-thumbnail.jpg","views":43,"likes":0,"revisionId":"Af6GhQALLZEvpypPo","modifiedAt":"2015-10-30T15:27:30.285Z","hasSound":true},{"_id":"PitEvTS6w7WK8RHn8","owner":null,"createdAt":"2015-10-30T11:05:39.794Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/yleufhj08d1y2t4ob-thumbnail.jpg","views":30,"likes":0,"revisionId":"zcqLa9viaP8gWjhWz","modifiedAt":"2015-10-30T11:05:39.801Z"},{"_id":"PpwJ5uNXyzHCnWSZJ","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T12:52:08.597Z","origId":null,"name":"rbowsnd","username":"gman","screenshotDataId":"L7Z2J9KQ9pxLS9xQy","views":603,"likes":1,"revisionId":"brrxWsePKNHY7BsWJ","screenshotURL":"/cfs/files/images/L7Z2J9KQ9pxLS9xQy-thumbnail.png","modifiedAt":"2015-10-25T12:52:08.598Z","hasSound":true},{"_id":"Q6WYaT35yY2FLBkgi","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T12:52:57.356Z","origId":null,"name":"spirography","username":"gman","screenshotDataId":"XDjiC5DcXbYw7fpvF","views":228,"likes":0,"revisionId":"ckYR2LnJLWgoSRMyJ","screenshotURL":"/cfs/files/images/XDjiC5DcXbYw7fpvF-thumbnail.png","modifiedAt":"2015-10-25T12:52:57.359Z"},{"_id":"QH3gSYw84QKSqtGr2","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T20:03:48.544Z","origId":null,"name":"lint","username":"gman","screenshotDataId":"2e36dARvwMEZykDCX","views":206,"likes":0,"revisionId":"RmigdRRH5kQYzyziw","screenshotURL":"/cfs/files/images/2e36dARvwMEZykDCX-thumbnail.png","modifiedAt":"2015-10-25T20:03:48.546Z"},{"_id":"QdJXEkZPWPvB4XKiy","owner":"sEFgEzTWenNKzd4Qq","createdAt":"2015-11-01T18:21:23.453Z","modifiedAt":"2015-11-01T18:21:23.453Z","origId":"4d6tRjx7hKBD4t7sJ","name":"pointsprite plasma","private":false,"username":"myownclone","screenshotURL":"/cfs/files/images/vsljci00g2v5q6ewp-thumbnail.jpg","views":20,"likes":0,"revisionId":"JB4ZrcTh9q9NhknTb"},{"_id":"TFqk3nQR5AQxhWWKn","owner":null,"createdAt":"2015-10-30T12:52:08.873Z","origId":null,"name":"unnamed","username":"-anon-","screenshotURL":"/cfs/files/images/jllyv458pit4wbtb8-thumbnail.jpg","views":17,"likes":0,"revisionId":"K4cJQtRsCmwCye2gF","modifiedAt":"2015-10-30T12:52:08.875Z"},{"_id":"TH2CTrKcW6GQ4Y9q9","owner":null,"createdAt":"2015-10-30T13:47:57.117Z","origId":null,"name":"unnamed","username":"-anon-","screenshotURL":"/cfs/files/images/fxot0gtbjrkyfqy9j-thumbnail.jpg","views":106,"likes":0,"revisionId":"eppGqbcDwwxzY6Lv8","modifiedAt":"2015-10-30T13:47:57.129Z","hasSound":true},{"_id":"TnXzsnYqaPym78gQ8","owner":null,"createdAt":"2015-10-31T09:26:28.771Z","origId":"h6BvsMWiHpgwT5Nhh","name":"julia","username":"-anon-","screenshotURL":"/cfs/files/images/jyz5mtdesuiwpq0yb-thumbnail.jpg","views":152,"likes":2,"revisionId":"JJjSFRdPyJoJFCqao","modifiedAt":"2015-10-31T09:26:28.776Z"},{"_id":"Toiefpwj7bhJqsYxd","owner":null,"createdAt":"2015-10-30T12:37:31.828Z","origId":null,"name":"unnamed","username":"-anon-","screenshotURL":"/cfs/files/images/ytsdswuq7vvj56y6s-thumbnail.jpg","views":44,"likes":0,"revisionId":"pLLH4He2eqDjaQ6PC","modifiedAt":"2015-10-30T12:37:31.831Z","hasSound":true},{"_id":"PoyGoZL5Lmmn9N5SF","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-10-27T12:42:47.383Z","origId":null,"name":"Jack-o'-lantern","username":"P_Malin","screenshotDataId":"sWQLPikTGF2y79XC9","views":6375,"likes":3,"revisionId":"wzQih8KwswLkMgusb","screenshotURL":"/cfs/files/images/g5jc8tdlfhm6tfi9g-thumbnail.jpg","modifiedAt":"2015-10-30T12:24:21.143Z"},{"_id":"QLuMqpKa5JSrpLW5B","owner":null,"createdAt":"2015-10-30T16:33:18.933Z","origId":"K8sAwLQqxzqjXN3FT","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/hlnr64xi78xvuofes-thumbnail.jpg","views":7,"likes":0,"revisionId":"CEpNMLD764djNQ2pd","modifiedAt":"2015-10-30T16:33:18.936Z"},{"_id":"TrexNrcNFyQ7FrJjb","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-11-03T10:07:32.712Z","modifiedAt":"2015-11-03T10:07:32.712Z","origId":"LTuqGKGJGc3bHxGij","name":"shapeshift","private":false,"username":"gman","screenshotURL":"/cfs/files/images/q8ud09emoqpfjkx2f-thumbnail.jpg","views":99,"likes":0,"revisionId":"dRpMmQJ9SuxgmcbAZ"},{"_id":"W9WTPxA9AXtFxZRqq","owner":"bNheeAS24MHH5bfHh","createdAt":"2015-11-06T06:02:24.240Z","modifiedAt":"2015-11-06T06:02:24.240Z","origId":null,"name":"sines","private":false,"username":"jason","screenshotURL":"/cfs/files/images/mq97m9nxjsgg7i0pe-thumbnail.jpg","views":59,"likes":0,"revisionId":"k8NtKdtuXp6B7mtZk"},{"_id":"WgAGyf4sc6LfsH2bd","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T12:51:00.343Z","origId":null,"name":"squiro","username":"gman","screenshotDataId":"az6MaCyqZHBJcj8u6","views":282,"likes":0,"revisionId":"Jn9x7n7moQP4HJzTM","screenshotURL":"/cfs/files/images/az6MaCyqZHBJcj8u6-thumbnail.png","modifiedAt":"2015-10-25T12:51:00.349Z","hasSound":true},{"_id":"WvKKxjSusH6cFyYcx","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-10-26T01:07:25.802Z","origId":"wTaKE9X796qNFqgEM","name":"neurovelho2","username":"visy","screenshotDataId":"2TcZG9cG5pSJ7Sjgo","views":1257,"likes":2,"revisionId":"BxFcvKWatonJsfFHw","screenshotURL":"/cfs/files/images/2TcZG9cG5pSJ7Sjgo-thumbnail.png","modifiedAt":"2015-10-26T01:07:25.808Z","hasSound":true},{"_id":"X74uYKiDLZJmqhLnh","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-10-29T17:16:04.033Z","origId":null,"name":"Planet Polygon","username":"P_Malin","screenshotURL":"/cfs/files/images/ucc6zuzjt6pdktg9a-thumbnail.jpg","views":3010,"likes":5,"revisionId":"9N54YKsZ8c2roGF8y","modifiedAt":"2015-11-02T09:51:13.376Z","private":false,"hasSound":true},{"_id":"XDJPeMfrdhMBhw4XD","owner":null,"createdAt":"2015-10-27T09:25:36.376Z","origId":null,"name":"GitchColor","username":"-anon-","screenshotDataId":"Ahemx2XwPNGX7PhZs","views":127,"likes":0,"revisionId":"kLqGnY2Y2McMaPa8n","screenshotURL":"/cfs/files/images/Ahemx2XwPNGX7PhZs-thumbnail.png","modifiedAt":"2015-10-27T09:25:36.382Z","hasSound":true},{"_id":"XJecoKnhhsWTTNp4Z","owner":null,"createdAt":"2015-10-30T10:33:22.189Z","origId":"PoyGoZL5Lmmn9N5SF","name":"Jack-o'-lantern in a circle","username":"-anon-","screenshotURL":"/cfs/files/images/yk73gvuuppe0thfs6-thumbnail.jpg","views":308,"likes":0,"revisionId":"cmmaeEooC4kZwiNps","modifiedAt":"2015-10-30T10:33:22.201Z"},{"_id":"XW2ueZpHcoWqtkuqD","owner":"GFesmoh3Yvhi8iTmH","createdAt":"2015-10-26T18:02:44.816Z","origId":null,"name":"lorenz attractor","username":"xt95","screenshotDataId":"53L7GzyWt2harq8vN","views":1031,"likes":3,"revisionId":"Sf2MmwQKg2BaN8v38","screenshotURL":"/cfs/files/images/53L7GzyWt2harq8vN-thumbnail.png","modifiedAt":"2015-10-26T22:24:12.913Z","hasSound":true},{"_id":"XcY8PN835BKPhMe3Z","owner":null,"createdAt":"2015-10-29T19:54:33.285Z","origId":null,"name":"Magic #s","username":"-anon-","screenshotURL":"/cfs/files/images/c5c0itdfj2wtbccig-thumbnail.jpg","views":62,"likes":0,"revisionId":"YhJC77WSdtsgHAYLM","modifiedAt":"2015-10-29T19:54:33.292Z","hasSound":true},{"_id":"Y8qbp8kqR8R9rigM7","owner":null,"createdAt":"2015-10-30T16:39:03.663Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/a646mkb6wr9fpzaun-thumbnail.jpg","views":7,"likes":0,"revisionId":"bTrfL4S5PrwrskxA4","modifiedAt":"2015-10-30T16:39:03.667Z"},{"_id":"YSzcySDB7rcbwJmTP","owner":null,"createdAt":"2015-10-30T17:59:02.226Z","origId":null,"name":"mfx01","username":"-anon-","screenshotURL":"/cfs/files/images/00mmdgkif42g500zg-thumbnail.jpg","views":19,"likes":0,"revisionId":"6HjY3ch4qrzMeceoN","modifiedAt":"2015-10-30T17:59:02.228Z"},{"_id":"ZNnRK7kpHZXGz5gT5","owner":"3rSa7stTYpQ9y6mjB","createdAt":"2015-10-26T06:25:57.177Z","origId":null,"name":"MagnetTV","username":"freefull","screenshotDataId":"BnFhPf79SsMQsqBaZ","views":1185,"likes":1,"revisionId":"KDdbvuH3qpqLoGBiN","screenshotURL":"/cfs/files/images/hh71fpxvcv3l13nv3-thumbnail.jpg","modifiedAt":"2015-10-30T19:32:28.912Z"},{"_id":"ZTAvJzo5HJdr2FsZK","owner":"aRcuym3jqDR3e796n","createdAt":"2015-11-08T22:34:35.702Z","modifiedAt":"2015-11-08T22:34:35.702Z","origId":"iPiDjpBYDPGFTGp8Y","name":"residuallines","private":false,"username":"spotline","screenshotURL":"/cfs/files/images/5kfqvydni4i5h9bhh-thumbnail.jpg","hasSound":true,"views":34,"likes":1,"revisionId":"uQWS93K6TGQy5kstC"},{"_id":"ZwJTJhgwALcNCeGWC","owner":null,"createdAt":"2015-10-30T15:24:49.558Z","origId":"fFEpFHbdC4ecFLuaB","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/axmkjt14yq7xcov3d-thumbnail.jpg","views":8,"likes":0,"revisionId":"R84g3fnqboMkuAkxT","modifiedAt":"2015-10-30T15:24:49.561Z"},{"_id":"ZzCgG7HuSE6BLGSKR","owner":null,"createdAt":"2015-10-30T15:13:51.997Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/96hk18ubib81ns45t-thumbnail.jpg","views":9,"likes":0,"revisionId":"j3GjgM6vPb4D4LZXZ","modifiedAt":"2015-10-30T15:13:52.000Z"},{"_id":"aRahetpEjCSsaLHkX","owner":"sEFgEzTWenNKzd4Qq","createdAt":"2015-11-01T18:32:09.408Z","modifiedAt":"2015-11-01T18:32:09.408Z","origId":"tw3mJeCpEXQ6gMz2q","name":"pointsprite plasma","private":false,"username":"myownclone","screenshotURL":"/cfs/files/images/oxtgeg340znm4dsam-thumbnail.jpg","views":13,"likes":0,"revisionId":"nKe3WMF8LBws6JjCv"},{"_id":"adr4oWENvpWNLwHJR","owner":"eRW4yDxawZyEw54rX","createdAt":"2015-10-31T18:15:56.886Z","origId":null,"name":"geosphere","username":"johan","screenshotURL":"/cfs/files/images/0q00bdlrbeo1t0bkr-thumbnail.jpg","views":19,"likes":0,"revisionId":"HD7exgPuwP3KvRgxA","modifiedAt":"2015-10-31T19:08:30.570Z"},{"_id":"asSnAehpD5b5tuJ27","owner":null,"createdAt":"2015-10-27T11:17:37.389Z","origId":"JsEv9AaC54NF6cY8Q","name":"round","username":"-anon-","screenshotDataId":"55igKnZWEY89oN9en","views":102,"likes":0,"revisionId":"YPBjtpCqXqwXerEJW","screenshotURL":"/cfs/files/images/55igKnZWEY89oN9en-thumbnail.png","modifiedAt":"2015-10-27T11:17:37.397Z","hasSound":true},{"_id":"bG8faYzBsvfvBSwDH","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-11-01T03:21:06.727Z","origId":"HSGSvjGwQyB6cFQMP","name":"voices","username":"gman","screenshotURL":"/cfs/files/images/qe7aolb8kg4kxaawz-thumbnail.jpg","views":47,"likes":0,"revisionId":"hzW9KKwvwEirRSjve","modifiedAt":"2015-11-01T13:34:16.549Z","private":false,"hasSound":true},{"_id":"bhTaMtEz4j9zuSn7g","owner":null,"createdAt":"2015-10-31T14:46:31.198Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/74c311r34oj3vo8q6-thumbnail.jpg","views":27,"likes":0,"revisionId":"9LfndQnJ6ZgDdaK4L","modifiedAt":"2015-10-31T14:46:31.204Z"},{"_id":"bjkZzQ6XfJ5Ypu4AX","owner":null,"createdAt":"2015-10-30T11:29:58.570Z","origId":"iQAtnkJRC8XtvT4tW","name":"synapsicorporation2","username":"-anon-","screenshotURL":"/cfs/files/images/b32zrgvrma06ugm88-thumbnail.jpg","views":32,"likes":0,"revisionId":"adf4xLyXBhjDnWxvy","modifiedAt":"2015-10-30T11:29:58.572Z","hasSound":true},{"_id":"bpN3ufoDGdkJjxFsQ","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-26T12:42:38.973Z","origId":"LTuqGKGJGc3bHxGij","name":"starts","username":"gman","screenshotDataId":"r2Kppkg2XMnp7Lr43","views":1172,"likes":1,"revisionId":"Jqdv8HRw73J9kA5ET","screenshotURL":"/cfs/files/images/zydwojohedlwp8u71-thumbnail.jpg","modifiedAt":"2015-11-12T09:35:05.594Z","hasSound":true,"private":false},{"_id":"cvLGj6QKvo7uebnbK","owner":null,"createdAt":"2015-11-09T13:34:52.617Z","modifiedAt":"2015-11-09T13:34:52.617Z","origId":"nL6YpkW8YvGKNEKtj","name":"point cloud vs spheres","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/h8oc2dy04u0dwdefp-thumbnail.jpg","hasSound":true,"views":23,"likes":0,"revisionId":"L9i9L8bqhs9Fwpyqx"},{"_id":"dJQHunZMaGr5ssiey","owner":null,"createdAt":"2015-10-30T17:44:23.602Z","origId":"WgAGyf4sc6LfsH2bd","name":"squiro","username":"-anon-","screenshotURL":"/cfs/files/images/ab40lwjcoxyq4yixl-thumbnail.jpg","views":25,"likes":0,"revisionId":"ofTD8NRsuZeYFpauL","modifiedAt":"2015-10-30T17:44:23.605Z","hasSound":true},{"_id":"dWoGmbWvzsuG5YKwG","owner":"XGye55yfygG7dSR4o","createdAt":"2015-10-30T09:24:02.392Z","origId":null,"name":"test","username":"karlll","screenshotURL":"/cfs/files/images/5epvsj1kxk21vjt2c-thumbnail.jpg","views":62,"likes":0,"revisionId":"Zwfx6aFmsfmCwpr42","modifiedAt":"2015-10-30T09:24:02.396Z"},{"_id":"dYaXs9CwnzQhAT8Kt","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-27T03:44:18.278Z","origId":null,"name":"mouse-wip","username":"gman","screenshotDataId":"t99zGXjFrYfgwXEQR","views":137,"likes":0,"revisionId":"EGPkTtsvCv5DQQXrk","screenshotURL":"/cfs/files/images/ha7qpwzuk0mtknxbp-thumbnail.jpg","modifiedAt":"2015-10-29T07:53:02.176Z","hasSound":true},{"_id":"fFEpFHbdC4ecFLuaB","owner":null,"createdAt":"2015-10-30T09:49:39.000Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/odg44osl63lgnpnca-thumbnail.jpg","views":40,"likes":0,"revisionId":"bgcPff4twGeaXNNwr","modifiedAt":"2015-10-30T09:49:39.008Z"},{"_id":"fKPK987qvE5gGHcWS","owner":"3DSy7eEi5KvLcXcRt","createdAt":"2015-11-06T06:08:21.440Z","modifiedAt":"2015-11-06T06:23:15.662Z","origId":"W9WTPxA9AXtFxZRqq","name":"sines","private":false,"username":"jason2","screenshotURL":"/cfs/files/images/oq24k4gtm5vocgxag-thumbnail.jpg","views":62,"likes":2,"revisionId":"hpJJH3kFqiibQTm8w"},{"_id":"g4ZutuWewAGLeBJHx","owner":null,"createdAt":"2015-10-30T14:18:00.641Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/qbp66cgorcutxe7ok-thumbnail.jpg","views":11,"likes":0,"revisionId":"hgco7LqEswzNfeaaM","modifiedAt":"2015-10-30T14:18:00.644Z"},{"_id":"g7wWJ4yKzThxqkmN5","owner":null,"createdAt":"2015-10-30T18:00:03.405Z","origId":"YSzcySDB7rcbwJmTP","name":"mfx01","username":"-anon-","screenshotURL":"/cfs/files/images/ke4somqga045rjket-thumbnail.jpg","views":30,"likes":0,"revisionId":"8BK5MsyBjTLNDtQhH","modifiedAt":"2015-10-30T18:00:03.410Z"},{"_id":"gqJ33JsAWdcuKjJHH","owner":null,"createdAt":"2015-10-30T16:32:21.367Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/w7s8diqut6qc7yq9s-thumbnail.jpg","views":6,"likes":0,"revisionId":"deFWoqTEJ7E6MB6iB","modifiedAt":"2015-10-30T16:32:21.371Z"},{"_id":"h6BvsMWiHpgwT5Nhh","owner":"EeP4xAeypXNtxfhTf","createdAt":"2015-10-27T20:28:18.884Z","origId":null,"name":"pointsprite plasma","username":"optimus6128","screenshotDataId":"KCZfc4mKMbFz7BM49","views":1952,"likes":3,"revisionId":"62noNrLxaWq9T3gZ5","screenshotURL":"/cfs/files/images/KCZfc4mKMbFz7BM49-thumbnail.png","modifiedAt":"2015-10-28T11:15:31.159Z"},{"_id":"hGiSXNAT8jpQc5o3a","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-11-02T02:22:48.406Z","modifiedAt":"2015-11-02T02:24:56.984Z","origId":null,"name":"the flames of sleng teng","private":false,"username":"visy","screenshotURL":"/cfs/files/images/6ulgxiduracoqi5p2-thumbnail.jpg","views":46,"likes":1,"revisionId":"djezoyx4dH5yEgHAb","hasSound":true},{"_id":"hhsdvkiJ32bCTcezv","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-29T08:08:31.444Z","origId":null,"name":"blendy","username":"gman","screenshotURL":"/cfs/files/images/5uuzmurdhd7pqwiyz-thumbnail.jpg","views":255,"likes":0,"revisionId":"F3QTARbQzsJGmkXFL","modifiedAt":"2015-11-08T18:42:26.347Z","hasSound":true,"private":false},{"_id":"hrgNyucvZAE9WwRLF","owner":"LfePinvQPNCxjenZx","createdAt":"2015-10-27T11:19:19.700Z","origId":"asSnAehpD5b5tuJ27","name":"round","username":"artsime","screenshotDataId":"guDSJocAmZP4fmhiG","views":77,"likes":0,"revisionId":"ZFT4e9nN8NRizfcL2","screenshotURL":"/cfs/files/images/guDSJocAmZP4fmhiG-thumbnail.png","modifiedAt":"2015-10-27T11:19:41.007Z","hasSound":true},{"_id":"iE3Xz7bewdDm3shFC","owner":"pdZqGqCCdaZadyFNo","createdAt":"2015-10-30T18:46:11.097Z","origId":null,"name":"Infinite Heart of Glass","username":"c0d3rguy","screenshotURL":"/cfs/files/images/9h2aq4d3g8kdx2xez-thumbnail.jpg","views":41,"likes":0,"revisionId":"6atefXiFyqtwzqrm7","modifiedAt":"2015-10-30T19:21:34.592Z","hasSound":true},{"_id":"iPiDjpBYDPGFTGp8Y","owner":"aRcuym3jqDR3e796n","createdAt":"2015-11-08T22:10:08.465Z","modifiedAt":"2015-11-08T22:47:01.129Z","origId":"cdqm4FpNvFdtD7We7","name":"residualfill","private":false,"username":"spotline","screenshotURL":"/cfs/files/images/fz2lm2mbb8jipbv2g-thumbnail.jpg","hasSound":true,"views":60,"likes":1,"revisionId":"Z5c3XiWhe3mtH2nNK"},{"_id":"iQAtnkJRC8XtvT4tW","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-10-28T01:41:24.883Z","origId":"mSDHF7AjBowN86DnJ","name":"synapsicorporation2","username":"visy","screenshotDataId":"BA9SyAeKnoEgtTBgM","views":1446,"likes":2,"revisionId":"cb4eoYFMZRcz7uELJ","screenshotURL":"/cfs/files/images/BA9SyAeKnoEgtTBgM-thumbnail.png","modifiedAt":"2015-10-28T01:41:24.890Z","hasSound":true},{"_id":"ixr3Pka4ChbtDzobh","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-11-03T17:26:00.918Z","modifiedAt":"2015-11-03T17:26:00.918Z","origId":"9wKMAeACxZ3WoJc2m","name":"Spiral-Spring","private":false,"username":"gman","screenshotURL":"/cfs/files/images/ug7gazpjhxhs9mlj0-thumbnail.jpg","views":163,"likes":0,"revisionId":"ZGC5kne4sE9FzGeBB"},{"_id":"j7v3Ha4S2hwxhSCi9","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-11-03T01:22:21.559Z","modifiedAt":"2015-11-03T01:28:11.852Z","origId":null,"name":"the galactic loom of sound and light","private":false,"username":"visy","screenshotURL":"/cfs/files/images/p59m6vciq421lc2e8-thumbnail.jpg","views":238,"likes":2,"revisionId":"3kdftqMn2u938K8an","hasSound":true},{"_id":"jqRhLrTMA3GFEk2m5","owner":"EeP4xAeypXNtxfhTf","createdAt":"2015-10-31T07:59:26.275Z","origId":"h6BvsMWiHpgwT5Nhh","name":"pointsprite plasma 3D","username":"optimus6128","screenshotURL":"/cfs/files/images/7frecwp7ycvgrar50-thumbnail.jpg","views":91,"likes":1,"revisionId":"eWGAt7bwLwdiNA4aH","modifiedAt":"2015-10-31T21:56:27.697Z"},{"_id":"kAANx8FwJoSeR9B4c","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-11-01T10:33:48.494Z","modifiedAt":"2015-11-01T11:06:13.894Z","origId":null,"name":"filters","private":false,"username":"gman","screenshotURL":"/cfs/files/images/f4ib10y0x2xberr3r-thumbnail.jpg","views":39,"likes":0,"revisionId":"fnwq5GdJMWgpgkfFe","hasSound":true},{"_id":"ke5bF6hENE8zphaSp","owner":null,"createdAt":"2015-10-26T11:54:14.017Z","origId":null,"name":"torus","username":"-anon-","screenshotDataId":"kbexK8e8mwDP5wkEi","views":1213,"likes":2,"revisionId":"tJgaWpm3HjGMvDThW","screenshotURL":"/cfs/files/images/kbexK8e8mwDP5wkEi-thumbnail.png","modifiedAt":"2015-10-26T11:54:14.020Z","hasSound":true},{"_id":"mSDHF7AjBowN86DnJ","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-10-28T01:30:41.297Z","origId":null,"name":"synapsicorporation","username":"visy","screenshotDataId":"iZngnCo9QYyKxdt9w","views":881,"likes":1,"revisionId":"dBNzKmaq6qcCMkiBK","screenshotURL":"/cfs/files/images/iZngnCo9QYyKxdt9w-thumbnail.png","modifiedAt":"2015-10-28T01:31:33.319Z","hasSound":true},{"_id":"mfEsB2oGhBqM3k3Rt","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-10-30T21:40:45.576Z","origId":null,"name":"the connectedness of all","username":"visy","screenshotURL":"/cfs/files/images/c0twy3q6tdy1vgd6t-thumbnail.jpg","views":66,"likes":0,"revisionId":"f5T69RNynQrznXkdB","modifiedAt":"2015-10-30T21:52:14.435Z","hasSound":true},{"_id":"nL6YpkW8YvGKNEKtj","owner":"Re2gw8aDCRTMaXYDC","createdAt":"2015-10-26T13:48:50.665Z","origId":null,"name":"point cloud vs spheres","username":"kabuto","screenshotDataId":"x3JPBAA3a52pgi2jH","views":8566,"likes":9,"revisionId":"rz4dETpmXR3zhcwLm","screenshotURL":"/cfs/files/images/npze7gc9gj6tkat5p-thumbnail.jpg","modifiedAt":"2015-11-02T11:03:23.961Z","private":false,"hasSound":true},{"_id":"ne6ENatKHpRDSgJRv","owner":null,"createdAt":"2015-10-30T12:42:16.202Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/j77711km99pxe0jr2-thumbnail.jpg","views":10,"likes":0,"revisionId":"rQdeArNykadka5ccX","modifiedAt":"2015-10-30T12:42:16.205Z"},{"_id":"nr3EiyXWLMpwoouHt","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-26T05:35:31.814Z","origId":"QH3gSYw84QKSqtGr2","name":"lazer","username":"gman","screenshotDataId":"d87Kz3HWKtJi4mZQP","views":194,"likes":0,"revisionId":"ou7dw4xeoaQmNs2BD","screenshotURL":"/cfs/files/images/4rllqy4svmzb6qsk9-thumbnail.jpg","modifiedAt":"2015-11-01T17:26:04.066Z","private":false,"hasSound":true},{"_id":"oMwCvkkRyEiZkio4h","owner":null,"createdAt":"2015-10-31T22:33:26.986Z","origId":"nL6YpkW8YvGKNEKtj","name":"point cloud vs spheres","username":"-anon-","screenshotURL":"/cfs/files/images/iar6a5q4jtsxmf4xw-thumbnail.jpg","views":25,"likes":0,"revisionId":"Az5CdafJZyieKS9dd","modifiedAt":"2015-10-31T22:33:26.993Z","hasSound":true},{"_id":"p9DefxpaJdaYTQAWZ","owner":null,"createdAt":"2015-10-30T11:04:08.455Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/0r2yq8kg07dpjouh7-thumbnail.jpg","views":15,"likes":0,"revisionId":"b523v7vrqywENXz5v","modifiedAt":"2015-10-30T11:04:08.461Z"},{"_id":"q4sbfetgGafn5By2Z","owner":null,"createdAt":"2015-10-26T14:26:26.258Z","origId":"wTaKE9X796qNFqgEM","name":"trippy","username":"-anon-","screenshotDataId":"6jaYFoyMEwovP2wgZ","views":174,"likes":0,"revisionId":"Wy2Q3yEroapWrz9oK","screenshotURL":"/cfs/files/images/6jaYFoyMEwovP2wgZ-thumbnail.png","modifiedAt":"2015-10-26T14:26:26.262Z","hasSound":true},{"_id":"qKGoihMGbyYe64imT","owner":null,"createdAt":"2015-11-09T13:37:34.785Z","modifiedAt":"2015-11-09T13:37:34.785Z","origId":"t9afzWHetyWR3bZSB","name":"point cloud vs spheres","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/vvq2sdbr9vj2gigoc-thumbnail.jpg","hasSound":true,"views":39,"likes":0,"revisionId":"5zE4EHYZgFMnBxMNu"},{"_id":"qSRWCBPJwjsffzsKb","owner":"F5if23dnvCEmcMssC","createdAt":"2015-11-01T13:06:56.781Z","modifiedAt":"2015-11-01T13:06:56.788Z","origId":null,"name":"vibrations","private":false,"username":"mark","screenshotURL":"/cfs/files/images/cm496gm3zn7w4pmpm-thumbnail.jpg","views":50,"likes":2,"revisionId":"PQYfMbSMBGB7JS6Xh","hasSound":true},{"_id":"t9afzWHetyWR3bZSB","owner":null,"createdAt":"2015-11-09T13:36:51.022Z","modifiedAt":"2015-11-09T13:36:51.022Z","origId":"wyoNwyHa6hTbkGCKW","name":"point cloud vs spheres","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/fgqh8smjxsftw86md-thumbnail.jpg","hasSound":true,"views":32,"likes":0,"revisionId":"xcXZ3tbMR3SswmScq"},{"_id":"tjBqEBhdzGA4XCiWr","owner":"tfmC4rzBPTeaGjH5h","createdAt":"2015-11-02T19:36:39.054Z","modifiedAt":"2015-11-02T21:58:00.554Z","origId":"7b2mtzWGfut7qG2b4","name":"cubes2","private":false,"username":"matt","screenshotURL":"/cfs/files/images/qyiuebc2yhez3fevp-thumbnail.jpg","views":133,"likes":1,"revisionId":"BzQTuYvgTCZjPacJp"},{"_id":"tw3mJeCpEXQ6gMz2q","owner":"sEFgEzTWenNKzd4Qq","createdAt":"2015-11-01T18:24:37.157Z","modifiedAt":"2015-11-01T18:24:37.157Z","origId":"QdJXEkZPWPvB4XKiy","name":"pointsprite plasma","private":false,"username":"myownclone","screenshotURL":"/cfs/files/images/bzox4m0o3l9cie99k-thumbnail.jpg","views":17,"likes":0,"revisionId":"JkKFcA7MSTAH6xDXK"},{"_id":"uQkpXdAa4ABNPNthi","owner":"aRcuym3jqDR3e796n","createdAt":"2015-10-31T10:54:12.829Z","origId":null,"name":"test","username":"spotline","screenshotURL":"/cfs/files/images/n32ll286twu6hnngo-thumbnail.jpg","views":89,"likes":1,"revisionId":"PMRK7jyYwoLC4jui8","modifiedAt":"2015-10-31T17:03:46.526Z","hasSound":true},{"_id":"uZ4ELyQ7j8J8X5xJg","owner":"Re2gw8aDCRTMaXYDC","createdAt":"2015-11-04T11:48:38.221Z","modifiedAt":"2015-11-05T10:57:52.202Z","origId":null,"name":"julia point cloud","private":false,"username":"kabuto","screenshotURL":"/cfs/files/images/zmmvovl7lp9166ob0-thumbnail.jpg","views":164,"likes":3,"revisionId":"x2Ti6Jqxbg5f5gSSc","hasSound":true},{"_id":"uqWtxuQpEkfxqWXCK","owner":"Re2gw8aDCRTMaXYDC","createdAt":"2015-11-06T10:32:16.669Z","modifiedAt":"2015-11-06T17:03:44.324Z","origId":null,"name":"wired","private":false,"username":"kabuto","screenshotURL":"/cfs/files/images/kx3hgkhqoxqwoqspq-thumbnail.jpg","views":217,"likes":4,"revisionId":"AZsTLWy3cmCWhKh36","hasSound":true},{"_id":"vXFhLDE2hgAm9bXD8","owner":null,"createdAt":"2015-10-30T15:15:53.066Z","origId":"h6BvsMWiHpgwT5Nhh","name":"pointsprite plasma","username":"-anon-","screenshotURL":"/cfs/files/images/jslty9hjtq8kykp1u-thumbnail.jpg","views":35,"likes":0,"revisionId":"AsoECT2QSbxZHYw2B","modifiedAt":"2015-10-30T15:15:53.069Z"},{"_id":"vixRSiPMAiZ6AmgNA","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-11-03T10:54:03.403Z","modifiedAt":"2015-11-09T22:15:53.095Z","origId":null,"name":"Simple Fractal","private":false,"username":"P_Malin","screenshotURL":"/cfs/files/images/qx88yqxi4r69da57f-thumbnail.jpg","views":75,"likes":1,"revisionId":"uiaRacFTwoEC9yRHM","hasSound":""},{"_id":"wTaKE9X796qNFqgEM","owner":"duxi6M5TiGWZ5CeBh","createdAt":"2015-10-26T01:03:50.466Z","origId":null,"name":"neurovelho","username":"visy","screenshotDataId":"NujseYpQTMRhrFdox","views":2584,"likes":3,"revisionId":"Gpw6JJWSRv8nRLzh4","screenshotURL":"/cfs/files/images/NujseYpQTMRhrFdox-thumbnail.png","modifiedAt":"2015-10-26T01:03:50.469Z","hasSound":true},{"_id":"wmrGHPZAroXn6EtZz","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-10-25T12:55:51.888Z","origId":null,"name":"prickley","username":"gman","screenshotDataId":"TNJTEJo42ATm7SLyG","views":252,"likes":0,"revisionId":"CJFEvkWiwgSqrXATZ","screenshotURL":"/cfs/files/images/TNJTEJo42ATm7SLyG-thumbnail.png","modifiedAt":"2015-10-25T12:55:51.890Z"},{"_id":"wyoNwyHa6hTbkGCKW","owner":null,"createdAt":"2015-11-09T13:35:50.096Z","modifiedAt":"2015-11-09T13:35:50.096Z","origId":"MPxc2mXYAQd5F3JFC","name":"point cloud vs spheres","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/wp7spqlf2jnoox7yz-thumbnail.jpg","hasSound":true,"views":19,"likes":0,"revisionId":"8YLSZ2M6PosnEzp7H"},{"_id":"xTf82BxK4LCcHNgq6","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-10-27T11:34:14.858Z","origId":null,"name":"Shadertoy Adapter","username":"P_Malin","screenshotDataId":"QXPY4MpY3jC7xdnPj","views":4047,"likes":3,"revisionId":"wFgxMtyrZCpi5LBiq","screenshotURL":"/cfs/files/images/QXPY4MpY3jC7xdnPj-thumbnail.png","modifiedAt":"2015-10-27T11:34:14.874Z"},{"_id":"xizoh3Kx86QeHAyuc","owner":null,"createdAt":"2015-10-30T12:06:43.445Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/zq96xq6jdt5kdfjrj-thumbnail.jpg","views":4,"likes":0,"revisionId":"RJJYCy2ABoJuQEFie","modifiedAt":"2015-10-30T12:06:43.448Z"},{"_id":"xxhTPvXjTWPCPLM2v","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-10-28T12:05:14.748Z","origId":null,"name":"Knotted Candy","username":"P_Malin","screenshotDataId":"vSHM8AAguEtw5qoi3","views":5605,"likes":5,"revisionId":"3u9E28SFquRbLLvXG","screenshotURL":"/cfs/files/images/8ezxpzyq1edzasubg-thumbnail.jpg","modifiedAt":"2015-10-29T11:17:57.409Z"},{"_id":"y3CAW8hkHFwKx9Lct","owner":null,"createdAt":"2015-11-09T13:39:13.282Z","modifiedAt":"2015-11-09T13:39:13.282Z","origId":null,"name":"unnamed","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/xbeoqdrn0rqzyvj4j-thumbnail.jpg","hasSound":true,"views":50,"likes":0,"revisionId":"QHAfHtjDzfMS7HmrX"},{"_id":"yz73Hm3Fq5SyrZppP","owner":"F5if23dnvCEmcMssC","createdAt":"2015-10-31T20:51:07.514Z","origId":null,"name":"rings 2","username":"mark","screenshotURL":"/cfs/files/images/2uja5t1v2hdxj03qf-thumbnail.jpg","views":31,"likes":0,"revisionId":"gagKPAykWX7JYFbpR","modifiedAt":"2015-11-01T00:49:30.128Z","hasSound":true},{"_id":"zBGJ6RhGK6EAJvuHL","owner":null,"createdAt":"2015-10-30T16:40:11.701Z","origId":"xxhTPvXjTWPCPLM2v","name":"Knotted Candy","username":"-anon-","screenshotURL":"/cfs/files/images/ff44ywavd9pekey1z-thumbnail.jpg","views":9,"likes":0,"revisionId":"kAmpBruc7X2StYCHn","modifiedAt":"2015-10-30T16:40:11.705Z"},{"_id":"zHorsBAipg3PMpwaL","owner":"NHZzD8e27B7poHpfx","createdAt":"2015-11-03T12:41:21.737Z","modifiedAt":"2015-11-04T10:13:34.517Z","origId":null,"name":"Barnsley Fern","private":false,"username":"P_Malin","screenshotURL":"/cfs/files/images/x3v98ibaibctnbdoe-thumbnail.jpg","views":263,"likes":2,"revisionId":"jK6JdgLRDJjNfGuNF"},{"_id":"raXurbQABsHbM6W4S","owner":"B7Kfai5f9h3MxwJcP","createdAt":"2015-11-12T09:31:33.655Z","modifiedAt":"2015-11-12T09:31:33.655Z","origId":null,"name":"foobar","private":false,"username":"gman","screenshotURL":"/cfs/files/images/c82bceuwpzlkvlhi7-thumbnail.jpg","hasSound":"","views":11,"likes":1,"revisionId":"xGQqziZwJNcACNHkE"},{"_id":"fhHvzh84SHJuqQS9f","owner":null,"createdAt":"2015-11-16T06:33:28.812Z","modifiedAt":"2015-11-16T06:33:28.812Z","origId":null,"name":"unnamed","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/tntlr4iul54x8njen-thumbnail.jpg","hasSound":"","views":1,"likes":0,"revisionId":"M6o87mjmXhfDafL9d"},{"_id":"fB2F2sqE4kwYC5e6N","owner":null,"createdAt":"2015-11-16T06:35:03.119Z","modifiedAt":"2015-11-16T06:35:03.119Z","origId":null,"name":"unnamed","private":false,"username":"-anon-","screenshotURL":"/cfs/files/images/ink3b5kufn4znbsnj-thumbnail.jpg","hasSound":"","views":1,"likes":1,"revisionId":"XqvLhoQpennQGRAMi"}]; \ No newline at end of file diff --git a/static/.DS_Store b/static/.DS_Store new file mode 100644 index 00000000..8bc0baf4 Binary files /dev/null and b/static/.DS_Store differ diff --git a/static/resources/.DS_Store b/static/resources/.DS_Store new file mode 100644 index 00000000..499902f5 Binary files /dev/null and b/static/resources/.DS_Store differ diff --git a/static/resources/css.css b/static/resources/css.css new file mode 100644 index 00000000..a885eb0d --- /dev/null +++ b/static/resources/css.css @@ -0,0 +1,9 @@ +html, body { + color: white; + background-color: black; + font-family: monospace; +} +a, a:hover, a:visited, a:active { + color: red; +} + diff --git a/static/resources/icon.html b/static/resources/icon.html new file mode 100644 index 00000000..6a193a44 --- /dev/null +++ b/static/resources/icon.html @@ -0,0 +1,25 @@ + +
+ +
+ + diff --git a/static/resources/icon.js b/static/resources/icon.js new file mode 100644 index 00000000..bd4eaf46 --- /dev/null +++ b/static/resources/icon.js @@ -0,0 +1,51 @@ +requirejs([ + '../../src/js/misc', + ], function( + misc) { + "use strict"; + + var q = misc.parseUrlQuery(); + var c = document.getElementById("c"); + + if (q.width) { + c.width = parseInt(q.width); + } + if (q.height) { + c.height = parseInt(q.height); + } + var scale = Math.max(c.width / 64, c.height / 64); + + var ctx = c.getContext("2d"); + ctx.fillStyle = q.backgroundColor || "#000"; + ctx.fillRect(0, 0, c.width, c.height); + ctx.translate(c.width / 2, c.height / 2); + ctx.scale(scale, scale); + + function drawShape() { + var sides = 1; + var radius = 30; + + ctx.beginPath(); + for (var ii = 0; ii <= sides; ++ii) { + var a = ii / sides * Math.PI * 2.3; + var r = ii ? radius : radius * 0.3 + var x = Math.cos(a) * r; + var y = Math.sin(a) * r; + (ii === 0 ? ctx.moveTo : ctx.lineTo).call(ctx, x, y); + } + ctx.stroke(); + } + + ctx.lineCap = "round"; + ctx.lineWidth = 2; + var shapes = 25; + for (var ii = 0; ii < shapes; ++ii) { + var l = ii / shapes; + ctx.save(); + var a = l * Math.PI * 2; + ctx.rotate(a); + ctx.strokeStyle = "hsla(" + (l * 360) + ",100%,50%,1)"; + drawShape(); + ctx.restore(); + } +}); diff --git a/static/resources/images/eye-closed.svg b/static/resources/images/eye-closed.svg new file mode 100644 index 00000000..eade020a --- /dev/null +++ b/static/resources/images/eye-closed.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/resources/images/eye-white.svg b/static/resources/images/eye-white.svg new file mode 100644 index 00000000..e403fa7d --- /dev/null +++ b/static/resources/images/eye-white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/resources/images/eye.svg b/static/resources/images/eye.svg new file mode 100644 index 00000000..c2740201 --- /dev/null +++ b/static/resources/images/eye.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/resources/images/fullscreen.svg b/static/resources/images/fullscreen.svg new file mode 100644 index 00000000..999167ef --- /dev/null +++ b/static/resources/images/fullscreen.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/resources/images/go.svg b/static/resources/images/go.svg new file mode 100644 index 00000000..7bfe97a4 --- /dev/null +++ b/static/resources/images/go.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/resources/images/heart-liked.svg b/static/resources/images/heart-liked.svg new file mode 100644 index 00000000..bccd7190 --- /dev/null +++ b/static/resources/images/heart-liked.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/resources/images/heart.svg b/static/resources/images/heart.svg new file mode 100644 index 00000000..573808c7 --- /dev/null +++ b/static/resources/images/heart.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/resources/images/loading.svg b/static/resources/images/loading.svg new file mode 100644 index 00000000..204ed190 --- /dev/null +++ b/static/resources/images/loading.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/resources/images/lock.svg b/static/resources/images/lock.svg new file mode 100644 index 00000000..1c303645 --- /dev/null +++ b/static/resources/images/lock.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/resources/images/missing-avatar.png b/static/resources/images/missing-avatar.png new file mode 100644 index 00000000..f6cccd2e Binary files /dev/null and b/static/resources/images/missing-avatar.png differ diff --git a/static/resources/images/missing-thumbnail.jpg b/static/resources/images/missing-thumbnail.jpg new file mode 100644 index 00000000..83f2a3a4 Binary files /dev/null and b/static/resources/images/missing-thumbnail.jpg differ diff --git a/static/resources/images/private.svg b/static/resources/images/private.svg new file mode 100644 index 00000000..1c303645 --- /dev/null +++ b/static/resources/images/private.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/resources/images/public.svg b/static/resources/images/public.svg new file mode 100644 index 00000000..e403fa7d --- /dev/null +++ b/static/resources/images/public.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/resources/images/saving-thumbnail.jpg b/static/resources/images/saving-thumbnail.jpg new file mode 100644 index 00000000..6d6c2d6f Binary files /dev/null and b/static/resources/images/saving-thumbnail.jpg differ diff --git a/static/resources/images/share.svg b/static/resources/images/share.svg new file mode 100644 index 00000000..da615e33 --- /dev/null +++ b/static/resources/images/share.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/resources/images/speaker.svg b/static/resources/images/speaker.svg new file mode 100644 index 00000000..310c0a30 --- /dev/null +++ b/static/resources/images/speaker.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/static/resources/images/start.svg b/static/resources/images/start.svg new file mode 100644 index 00000000..ef98e45b --- /dev/null +++ b/static/resources/images/start.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/resources/images/stop.svg b/static/resources/images/stop.svg new file mode 100644 index 00000000..680fbee9 --- /dev/null +++ b/static/resources/images/stop.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/resources/images/ui-2h.svg b/static/resources/images/ui-2h.svg new file mode 100644 index 00000000..d4cff0f9 --- /dev/null +++ b/static/resources/images/ui-2h.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/resources/images/ui-2v.svg b/static/resources/images/ui-2v.svg new file mode 100644 index 00000000..3ea32bad --- /dev/null +++ b/static/resources/images/ui-2v.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/resources/images/ui-ae.svg b/static/resources/images/ui-ae.svg new file mode 100644 index 00000000..43c50150 --- /dev/null +++ b/static/resources/images/ui-ae.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/static/resources/images/ui-ea.svg b/static/resources/images/ui-ea.svg new file mode 100644 index 00000000..38af8c28 --- /dev/null +++ b/static/resources/images/ui-ea.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/resources/images/ui-off.svg b/static/resources/images/ui-off.svg new file mode 100644 index 00000000..f8ae1c6c --- /dev/null +++ b/static/resources/images/ui-off.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/resources/images/ui-one.svg b/static/resources/images/ui-one.svg new file mode 100644 index 00000000..121a55d3 --- /dev/null +++ b/static/resources/images/ui-one.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/resources/images/unlisted.svg b/static/resources/images/unlisted.svg new file mode 100644 index 00000000..504ffef4 --- /dev/null +++ b/static/resources/images/unlisted.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/resources/images/unlock.svg b/static/resources/images/unlock.svg new file mode 100644 index 00000000..504ffef4 --- /dev/null +++ b/static/resources/images/unlock.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/resources/images/vertexshaderart-banner.jpg b/static/resources/images/vertexshaderart-banner.jpg new file mode 100644 index 00000000..7f24cb19 Binary files /dev/null and b/static/resources/images/vertexshaderart-banner.jpg differ diff --git a/static/resources/images/vertexshaderart-icon.png b/static/resources/images/vertexshaderart-icon.png new file mode 100644 index 00000000..9db04a61 Binary files /dev/null and b/static/resources/images/vertexshaderart-icon.png differ diff --git a/static/resources/images/vertexshaderart.jpg b/static/resources/images/vertexshaderart.jpg new file mode 100644 index 00000000..83dcfc69 Binary files /dev/null and b/static/resources/images/vertexshaderart.jpg differ diff --git a/static/resources/images/vertexshaderart.png b/static/resources/images/vertexshaderart.png new file mode 100644 index 00000000..409cde9c Binary files /dev/null and b/static/resources/images/vertexshaderart.png differ diff --git a/static/resources/images/vs120.png b/static/resources/images/vs120.png new file mode 100644 index 00000000..50611b0c Binary files /dev/null and b/static/resources/images/vs120.png differ diff --git a/static/resources/images/vs128.png b/static/resources/images/vs128.png new file mode 100644 index 00000000..d9c61ff8 Binary files /dev/null and b/static/resources/images/vs128.png differ diff --git a/static/resources/images/vs140-circle.png b/static/resources/images/vs140-circle.png new file mode 100644 index 00000000..ed4afcae Binary files /dev/null and b/static/resources/images/vs140-circle.png differ diff --git a/static/resources/images/vs140.png b/static/resources/images/vs140.png new file mode 100644 index 00000000..a35746b6 Binary files /dev/null and b/static/resources/images/vs140.png differ diff --git a/static/resources/images/vs152.png b/static/resources/images/vs152.png new file mode 100644 index 00000000..82958469 Binary files /dev/null and b/static/resources/images/vs152.png differ diff --git a/static/resources/images/vs180.png b/static/resources/images/vs180.png new file mode 100644 index 00000000..c25b83b7 Binary files /dev/null and b/static/resources/images/vs180.png differ diff --git a/static/resources/images/vs192.png b/static/resources/images/vs192.png new file mode 100644 index 00000000..855506c8 Binary files /dev/null and b/static/resources/images/vs192.png differ diff --git a/static/resources/images/vs57.png b/static/resources/images/vs57.png new file mode 100644 index 00000000..5d6254ed Binary files /dev/null and b/static/resources/images/vs57.png differ diff --git a/static/resources/images/vs64.png b/static/resources/images/vs64.png new file mode 100644 index 00000000..a5d63e09 Binary files /dev/null and b/static/resources/images/vs64.png differ diff --git a/static/resources/images/vs76.png b/static/resources/images/vs76.png new file mode 100644 index 00000000..4ae8e8c6 Binary files /dev/null and b/static/resources/images/vs76.png differ diff --git a/static/resources/privacy.html b/static/resources/privacy.html new file mode 100644 index 00000000..a2506b82 --- /dev/null +++ b/static/resources/privacy.html @@ -0,0 +1,20 @@ + + + + + +

Vertexshaderart privacy policy

+

+I am not collecting any info on purpose. AFAIK I have third party authentication set to +as little as possible. I don't really need to know who you are. I just needed a way to let you +create an account to implement likes and updating your own stuff. +

+

+I do run Google analytcs with what I think are the minimal settings including +supposedly not collecting ip addresses +

+

+If you have suggestions check out the github repo. +

+ + diff --git a/static/resources/sounds/DOCTOR VOX - Level Up - lofi.mp3 b/static/resources/sounds/DOCTOR VOX - Level Up - lofi.mp3 new file mode 100644 index 00000000..21ace276 Binary files /dev/null and b/static/resources/sounds/DOCTOR VOX - Level Up - lofi.mp3 differ diff --git a/static/resources/sounds/Oh The Bass! - lofi.mp3 b/static/resources/sounds/Oh The Bass! - lofi.mp3 new file mode 100644 index 00000000..805e569e Binary files /dev/null and b/static/resources/sounds/Oh The Bass! - lofi.mp3 differ diff --git a/static/resources/sounds/doin' the rumba 4 - lofi.mp3 b/static/resources/sounds/doin' the rumba 4 - lofi.mp3 new file mode 100644 index 00000000..b11ad2f7 Binary files /dev/null and b/static/resources/sounds/doin' the rumba 4 - lofi.mp3 differ diff --git a/static/resources/tos.html b/static/resources/tos.html new file mode 100644 index 00000000..c80f63aa --- /dev/null +++ b/static/resources/tos.html @@ -0,0 +1,22 @@ + + + + + +

Vertexshaderart terms of service

+

+I made this site for fun. I make no guarantees this site does anything useful whatsoever. I don't guarantee +it won't get powned. I don't guarantee any data put on it won't get stolen. Of course I don't want either of +those to happen. +

+

+You promise not to be a dick. You promise not to post anything illegal nor mean and to not abuse the site. +You promise you have the right to post whatever you post and you give me the right to repost it on this site +and you give the right for others to use what you've posted. +

+

+If you have suggestions check out the github repo. +

+ + + diff --git a/style.css b/style.css new file mode 100644 index 00000000..1d89b5ed --- /dev/null +++ b/style.css @@ -0,0 +1,9 @@ +iframe, html, body { + width: 100%; + height: 100%; + background-color: #000; + color: white; + display: block; + border: none; + margin: 0; +} \ No newline at end of file diff --git a/toc.json b/toc.json new file mode 100644 index 00000000..b459f9cc --- /dev/null +++ b/toc.json @@ -0,0 +1,9051 @@ +[ + { + "id": "23ezRZjpZK82TqNJr", + "name": "xmas", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-w1f0zzufayogu5orv-thumbnail.jpg" + }, + { + "id": "2AAPaBjMMEbZF3peq", + "name": "ringu", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-sqyipliizymyk4z74-thumbnail.jpg" + }, + { + "id": "2GcQqCitMWiQ5QRgm", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qzgph2cbzzenpe7cr-thumbnail.jpg" + }, + { + "id": "2Jk6njpWPmAjyCJv4", + "name": "hourglass attack (mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-fl408ii7nbltbcj3u-thumbnail.jpg" + }, + { + "id": "2KcwnpWC6FyBx5N9S", + "name": "Uncontrolled triangle funnel", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-99r0l8qv1e9so2fsb-thumbnail.jpg" + }, + { + "id": "2RntyLszQwDn9wi85", + "name": "bounder", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hmfcwreq0hqaqc48d-thumbnail.jpg" + }, + { + "id": "2cL3kfaKBExkWc5Le", + "name": "baby's first vertex shader", + "username": "chemlo", + "avatarUrl": "https://secure.gravatar.com/avatar/bd1fc3e2f0d77392e06266faedc63267?default=retro&size=200", + "screenshotURL": "data/images/images-fz2si0ijh1jc7vqvw-thumbnail.jpg" + }, + { + "id": "2nczC2kx9JRxu64gA", + "name": "use-the-mic", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-13cjwj69rlsajd3xj-thumbnail.jpg" + }, + { + "id": "349P7R35WtujgHxrw", + "name": "666wired x3", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kcmus3r0ksuyyt1qy-thumbnail.jpg" + }, + { + "id": "3Csyw9ecsH7rXLkok", + "name": "Spiral-Spring dNCE1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-e0r0zx2gntwyqw0p2-thumbnail.jpg" + }, + { + "id": "3K4LGxEGgP7MLHZnb", + "name": "bobble", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ocv7mbst4bbtoey0l-thumbnail.jpg" + }, + { + "id": "3Szoo7khkBA4exnsR", + "name": "headrush fork", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hs5ot0fucno7vm1pj-thumbnail.jpg" + }, + { + "id": "3eX8nyZYKzX3Xf9be", + "name": "technoball K machinzed dev1 (GL_LINE_LOOP)", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-wb4v5i9gxwpptre4h-thumbnail.jpg" + }, + { + "id": "3hzz6KuiDcQDi54iA", + "name": "Triangular Voronoi", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5mjsqkl8z4xhsajcx-thumbnail.jpg" + }, + { + "id": "3pFLZ6LMxGuHYkjcr", + "name": "point cloud vs spheres rmx", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-vhmx06rbjk6ibkqhb-thumbnail.jpg" + }, + { + "id": "3rTF3aQTLfnSdwdcW", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ispm3g99fustxhn9h-thumbnail.jpg" + }, + { + "id": "3uH92F2f4pCxBydB3", + "name": "flowerpower", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-g98mqi3h4mez1wgeo-thumbnail.jpg" + }, + { + "id": "42ESv42tR52CEdX63", + "name": "targ", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4ro3p9et1y928d5oa-thumbnail.jpg" + }, + { + "id": "4MXkkkQvDcbZT2bmy", + "name": "119b matrix rain", + "username": "shu", + "avatarUrl": "https://secure.gravatar.com/avatar/6dc8be209aeec21dc99956c1188c1b05?default=retro&size=200", + "screenshotURL": "data/images/images-qlljdjqtu81pk2y7f-thumbnail.jpg" + }, + { + "id": "4d6tRjx7hKBD4t7sJ", + "name": "pointsprite plasma", + "username": "anon", + "screenshotURL": "data/images/images-trfjx38nloshkd6kw-thumbnail.jpg" + }, + { + "id": "4zASqsiiCDuSJRntr", + "name": "unnamed", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-cvzm7snauyq1yyez6-thumbnail.jpg" + }, + { + "id": "58gFy9tGHHqJ3JY4m", + "name": "moby", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-z1jc1oyvrb7dsfasm-thumbnail.jpg" + }, + { + "id": "5YGSiNrquYpFi3Ggo", + "name": "life is lil' better now thx", + "username": "lambmeow", + "avatarUrl": "https://i1.sndcdn.com/avatars-000201943208-mgxm4x-large.jpg", + "screenshotURL": "data/images/images-hfixdl9m7ivz07ekt-thumbnail.jpg" + }, + { + "id": "5dNDeR4dqCCRvcHCT", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-ti1pt9g9uegwhioxt-thumbnail.jpg" + }, + { + "id": "5fBJ6mEfnhkJuSFyR", + "name": "chapapa", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-1vm3pfdtczwhl2oki-thumbnail.jpg" + }, + { + "id": "5gKRQuwx63MAdRePc", + "name": "Rainbow Flower", + "username": "lambmeow", + "avatarUrl": "https://i1.sndcdn.com/avatars-000201943208-mgxm4x-large.jpg", + "screenshotURL": "data/images/images-a2scx6zv2rhhrm13n-thumbnail.jpg" + }, + { + "id": "5ppKAhtsPPS3xfam7", + "name": "sillage", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-u6al664te3f7x9h0z-thumbnail.jpg" + }, + { + "id": "5vfETRh3Q89xEEMAA", + "name": "curve", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6gzwme8a2ssu6s0f4-thumbnail.jpg" + }, + { + "id": "6C6jC7cgKsabzRcL8", + "name": "It's So In Vogue To Be Dead", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-apbhfy2twat19fyy3-thumbnail.jpg" + }, + { + "id": "6EhsqQMiTAN8xv9yr", + "name": "sin-plotter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9fmpvfxmbrdgrznt6-thumbnail.jpg" + }, + { + "id": "6YpuWT2zbWkg2ocdL", + "name": "collage", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-0zn8qm26g2pg9xn5r-thumbnail.jpg" + }, + { + "id": "6Yx2A7TQ6NnyHhFPQ", + "name": "bwow", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-lpsla0pcwtlv15g92-thumbnail.jpg" + }, + { + "id": "6gQQcZm2vuBMyLCkB", + "name": "point cloud vs spheres colored", + "username": "anon", + "screenshotURL": "data/images/images-mw5ssi4xtryhttjbl-thumbnail.jpg" + }, + { + "id": "6qhRHbFn8B6GeD5Ni", + "name": "unnamed2", + "username": "anon", + "screenshotURL": "data/images/images-6ne2eg69apigwgclz-thumbnail.jpg" + }, + { + "id": "79HqSrQH4meL63aAo", + "name": "ball-o?3", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4pfkik8qiixjgvijv-thumbnail.jpg" + }, + { + "id": "7DtazpcMcdA6fJ4XW", + "name": "colors", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-tj2yixd6koe03tp5s-thumbnail.jpg" + }, + { + "id": "7G88sy7oNibcANkMP", + "name": "pulsednxxx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-azmro6hs7xmivnb6u-thumbnail.jpg" + }, + { + "id": "7RXESd6b5ToNrYe9M", + "name": "unnamed 3", + "username": "andrea", + "avatarUrl": "https://lh3.googleusercontent.com/-JQdLlc8Acjo/AAAAAAAAAAI/AAAAAAAAAD8/fYe7PgxpOIQ/photo.jpg", + "screenshotURL": "data/images/images-psv9cjtjtc802nw70-thumbnail.jpg" + }, + { + "id": "7TrYkuK4aHzLqvZ7r", + "name": "fzball", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-at6mlyyftky2ptmmy-thumbnail.jpg" + }, + { + "id": "7Xo5cox42KeW3chZj", + "name": "incId K machinized dev0", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-2dx1a0dl4uwskrwqm-thumbnail.jpg" + }, + { + "id": "7YgXgotM2u7EazE58", + "name": "add-em-up", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-gyo1d9v2nciaq91e8-thumbnail.jpg" + }, + { + "id": "7YksmRJcwQXipHhfx", + "name": "terrain", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-sjdzoc1qexc1z55r1-thumbnail.jpg" + }, + { + "id": "7ZDFThfCsDDXTyMjG", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-qam4olvdkjs8klpfd-thumbnail.jpg" + }, + { + "id": "7awCXKJWafHYpvqX8", + "name": "plan b paint it", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-05jqoyh2sjga1bfz9-thumbnail.jpg" + }, + { + "id": "7b2mtzWGfut7qG2b4", + "name": "cubes", + "username": "matt", + "avatarUrl": "https://lh4.googleusercontent.com/-jtcouKXDqq0/AAAAAAAAAAI/AAAAAAAAA7c/aDTXLcXoDnc/photo.jpg", + "screenshotURL": "data/images/images-saf6p9b07856qu8th-thumbnail.jpg" + }, + { + "id": "7fkuNErcdiCoyDFPM", + "name": "It's So In Vogue To Be Dead", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-qkrbt9r1bq0zqvtzb-thumbnail.jpg" + }, + { + "id": "7myySepW36ywzREow", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-h32085hdcxi6iwcef-thumbnail.jpg" + }, + { + "id": "7qXRty5XaAiets5ZL", + "name": "illu", + "username": "anon", + "screenshotURL": "data/images/images-oia5cupcs3b0x38ns-thumbnail.jpg" + }, + { + "id": "7wqyFQDCq6cmDzs4H", + "name": "unnamed", + "username": "pentan", + "avatarUrl": "https://avatars.githubusercontent.com/Pentan?s=200", + "screenshotURL": "data/images/images-z75y7zsy3kcmdtw68-thumbnail.jpg" + }, + { + "id": "83bhi2jnJmLwj89jd", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-daCGZux4fcKPwC2RQ-thumbnail.png" + }, + { + "id": "84bqgyYH7r222NZui", + "name": "bounder", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2446ff2syxt0szhly-thumbnail.jpg" + }, + { + "id": "87jiR2yJj3v4JHQGX", + "name": "residualfillattack", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-c1cot7l4qyo0zrntr-thumbnail.jpg" + }, + { + "id": "8QyjKkpp7q9aGkAn7", + "name": "ringu", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-r3g12185ws8jjt293-thumbnail.jpg" + }, + { + "id": "8ZyPwCk5HdengqpJK", + "name": "gridpnt", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9dn4sdakaj2ih294w-thumbnail.jpg" + }, + { + "id": "8aEFjza4wNjuhfnvP", + "name": "pointsprite plasma", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7xg8kg3io7j9a0k9d-thumbnail.jpg" + }, + { + "id": "8eaHZkbv4GqCvTJJs", + "name": "eswng", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-kuoxs8iblkjgbtu6l-thumbnail.jpg" + }, + { + "id": "97XDDQ5yWEzZhs6cH", + "name": "banan", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-fb2enihda8gxtsg24-thumbnail.jpg" + }, + { + "id": "982xbF946ivNRShYF", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-jh2yp1i2ketxnsdaf-thumbnail.jpg" + }, + { + "id": "9EJbRaRyPZMpJ9zLk", + "name": "plasma grid", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-v0qo9zidfn0r1lnri-thumbnail.jpg" + }, + { + "id": "9auTJQc3nHbaStwyQ", + "name": "papipupepo", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-r9rngjvxv6cb119nd-thumbnail.jpg" + }, + { + "id": "9mqwFjEipb8pPtcPw", + "name": "ung", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-646wcqea4omf0wrks-thumbnail.jpg" + }, + { + "id": "9s4f49dwx4L8hbbD5", + "name": "moduloi kanssani", + "username": "visa-valtteri", + "avatarUrl": "https://lh4.googleusercontent.com/-LZnRtqD3Cf4/AAAAAAAAAAI/AAAAAAAAEyw/CB7DLj_ThQA/photo.jpg", + "screenshotURL": "data/images/images-zzp5cmodbt9n3rv37-thumbnail.jpg" + }, + { + "id": "9tQdLKqdczvbu3Pp5", + "name": "spiral", + "username": "sap", + "avatarUrl": "https://secure.gravatar.com/avatar/bd1ffaa5c21bfd6fb5a36cfbb45b8fa6?default=retro&size=200", + "screenshotURL": "data/images/images-1264nzzay2lndrqku-thumbnail.jpg" + }, + { + "id": "9wKMAeACxZ3WoJc2m", + "name": "Spiral", + "username": "Axesider", + "avatarUrl": "https://lh3.googleusercontent.com/-i7vj-afsxec/AAAAAAAAAAI/AAAAAAAACGY/FYgBrh6kbyw/photo.jpg", + "screenshotURL": "data/images/images-2a5m4wethnw41mqcy-thumbnail.jpg" + }, + { + "id": "9yoBtz2q3YvMZHhw6", + "name": "fuzeball", + "username": "anon", + "screenshotURL": "data/images/images-fsrbpulj0ksqp5agy-thumbnail.jpg" + }, + { + "id": "9yyh6FdtyTqLN2EgE", + "name": "forest fall 1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-onnzqftc74oignlom-thumbnail.jpg" + }, + { + "id": "A8Zc7NFQdTdeKQimv", + "name": "pookymelon", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-dscqkvp0vbpyv74mf-thumbnail.jpg" + }, + { + "id": "AGytkw7djFKBPNKZE", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-ZWGwTmTqyW4P5mnLc-thumbnail.png" + }, + { + "id": "AHgb5kGbLwEYQjRTn", + "name": "rings_1", + "username": "mark", + "avatarUrl": "https://lh3.googleusercontent.com/-Lca4UGau1OU/AAAAAAAAAAI/AAAAAAAAAI4/dSttspxaINs/photo.jpg", + "screenshotURL": "data/images/images-c34clv5phyill6115-thumbnail.jpg" + }, + { + "id": "ARpkYYdzGDtKL4BZn", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0w31bted45sqlnvyz-thumbnail.jpg" + }, + { + "id": "ASwcBa7AR4rPpF2Wg", + "name": "msh", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x7kta8c90i2oyagvl-thumbnail.jpg" + }, + { + "id": "AZFnk3yzLiSZ2KkWS", + "name": "spirals", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-dq7s7cqwp0bna81g2-thumbnail.jpg" + }, + { + "id": "AndijhSm4Fuox73p9", + "name": "vibrations", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-548dozbpo5173sw20-thumbnail.jpg" + }, + { + "id": "B5PGbeNcqjZkjn87u", + "name": "insidez", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-hmoh27wp6816c98av-thumbnail.jpg" + }, + { + "id": "B8dK4DjfS4gxQ2D6x", + "name": "spagbal", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ke3zyjtdbin0oes3w-thumbnail.jpg" + }, + { + "id": "BWsfEAmCvR9m9NTF8", + "name": "crystal irisz (1xxx)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-a7f0eppbouk5nbshe-thumbnail.jpg" + }, + { + "id": "BZMNQR7kcPSCCwyHL", + "name": "Quads Spiral", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-fzjtedu0vb343va4k-thumbnail.jpg" + }, + { + "id": "BZdvckJFNr53H6kXS", + "name": "john_1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qbd29ztvxq5om2m08-thumbnail.jpg" + }, + { + "id": "Be7qcEqHTfnXmi3nw", + "name": "crystal irisz (1xxx)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-4larhn5wdg273mplj-thumbnail.jpg" + }, + { + "id": "BeRGRuNpszfDv7foC", + "name": "bounder", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-y9ltgun6bjv5b3wx0-thumbnail.jpg" + }, + { + "id": "BnKrvieHdWaxfjXH8", + "name": "toon chaos12", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2hbyxnib9rp2osjqq-thumbnail.jpg" + }, + { + "id": "BubiakjZKAd7TKT83", + "name": "plasma waves", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-icvbc0r2osc7or8pv-thumbnail.jpg" + }, + { + "id": "Bv7nLsmSbowtSoGpA", + "name": "fwosh", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-7dc1ythjvqd4jie5e-thumbnail.jpg" + }, + { + "id": "C9maC3C6dCdyKmsuH", + "name": "Bouncy Music Lines", + "username": "8bitrick", + "avatarUrl": "https://avatars.githubusercontent.com/8BitRick?s=200", + "screenshotURL": "data/images/images-2k35nxtgggsdvfuf9-thumbnail.jpg" + }, + { + "id": "CGefenfT6rv2yQ4Bw", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-m6sn4mhftgzj4hoho-thumbnail.jpg" + }, + { + "id": "CJqnsPPKxz3KGqWSZ", + "name": "It's So In Vogue To Be Dead", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gu6gyj2n68q7nwujc-thumbnail.jpg" + }, + { + "id": "CJyTYWu2F352dNTrn", + "name": "hrt", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-43ydnt03cdasdoe4v-thumbnail.jpg" + }, + { + "id": "CQcbw4k7BmY3egppx", + "name": "funk", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-vt2su5f6py5riuqk6-thumbnail.jpg" + }, + { + "id": "Ch3PxmZwN22dkrGCg", + "name": "bugs", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-pt8qau7cw08y8b8t4-thumbnail.jpg" + }, + { + "id": "D3LC8ea768bS5NfQY", + "name": "saucer attack (mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-nqz30ouqnw8hqz6v0-thumbnail.jpg" + }, + { + "id": "D4KsKHDFES8P7NEBc", + "name": "linespace x k", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-wnp9tevekaaq1esow-thumbnail.jpg" + }, + { + "id": "D7Qe36Z7PfM2fS6Jg", + "name": "residualfill", + "username": "anon", + "screenshotURL": "data/images/images-9oji6mnu2cuix1itp-thumbnail.jpg" + }, + { + "id": "DBf3fehEcDfdz3dT7", + "name": "tesla", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-v1h6hf7cz9izs982m-thumbnail.jpg" + }, + { + "id": "DP7wFzXhDCPCpGfuF", + "name": "hypercube", + "username": "sap", + "avatarUrl": "https://secure.gravatar.com/avatar/bd1ffaa5c21bfd6fb5a36cfbb45b8fa6?default=retro&size=200", + "screenshotURL": "data/images/images-umfpcyroohixkydph-thumbnail.jpg" + }, + { + "id": "DPyrvZcaDSQBadMfb", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m8x9kmlhyobwcbapc-thumbnail.jpg" + }, + { + "id": "DQtN9os6r9QqLMWeq", + "name": "never saw a rainbow", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-tefw6f0rlgew9ebpl-thumbnail.jpg" + }, + { + "id": "DSH7PskktA2rGgZ6F", + "name": "Pig", + "username": "gaz", + "avatarUrl": "https://secure.gravatar.com/avatar/1383190fac8e70cb725c3d76dbc811ba?default=retro&size=200", + "screenshotURL": "data/images/images-5aqjcrcuwrl0squ63-thumbnail.jpg" + }, + { + "id": "DkQkxp558QrXdoDTs", + "name": "in(trouble)", + "username": "calderonsteven", + "avatarUrl": "https://avatars.githubusercontent.com/calderonsteven?s=200", + "screenshotURL": "data/images/images-afczA2gKZEZw6u6GL-thumbnail.png" + }, + { + "id": "DsvE4S4dECyiP9akX", + "name": "illu", + "username": "anon", + "screenshotURL": "data/images/images-eob5epmw8n5hpi7dm-thumbnail.jpg" + }, + { + "id": "E3bguY87geHgSFKBW", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bmgzkc98864899v9k-thumbnail.jpg" + }, + { + "id": "E9ATxH3KR6gczc39H", + "name": "crystal irisz (1xxxjkk", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dhmuq374ibp21q4vk-thumbnail.jpg" + }, + { + "id": "EWTJuKrqGXLji3GwW", + "name": "crystal dancer (mouse.xy) 2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-1avo4905rdyt32xxz-thumbnail.jpg" + }, + { + "id": "EZzESxRYabyXKSxqw", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-pxclrotmn0a4kapm2-thumbnail.jpg" + }, + { + "id": "Eb8KT9CKPyKMXSF7L", + "name": "It's So In Vogue To Be Dead", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-prajvq9psjyjosm8p-thumbnail.jpg" + }, + { + "id": "EgLk7JDok4GhxPeMH", + "name": "stringart", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3miwbc8y1trizj8o4-thumbnail.jpg" + }, + { + "id": "EhoHuSv6ou8bp9o66", + "name": "sploot", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-qmjglkdlpkhcujrw6-thumbnail.jpg" + }, + { + "id": "Ekj2CXtjX5YZc76Lk", + "name": "orb", + "username": "mark", + "avatarUrl": "https://lh3.googleusercontent.com/-Lca4UGau1OU/AAAAAAAAAAI/AAAAAAAAAI4/dSttspxaINs/photo.jpg", + "screenshotURL": "data/images/images-2snl6a0p1dnl5uu96-thumbnail.jpg" + }, + { + "id": "EtY77PNcjnaQtphnu", + "name": "sin-plotter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1kvtic3uctrdoppvb-thumbnail.jpg" + }, + { + "id": "FDoMDz4QxPmpEY7FJ", + "name": "It's So In Vogue To Be Dead", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-f5tq1vrxnt6xhyeie-thumbnail.jpg" + }, + { + "id": "FNFsfgYT3ysjSme2P", + "name": "candy", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-l0k8vdupw883y6q85-thumbnail.jpg" + }, + { + "id": "FPFBuCexgLQpriEoS", + "name": "rollin", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9bcl3otpidc8yk7s8-thumbnail.jpg" + }, + { + "id": "FWWNQRxd2LXsvsxj5", + "name": "brain hach", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-ozmhslskkkqgm6vb4-thumbnail.jpg" + }, + { + "id": "Fc6iHGcLDEtSTqbNG", + "name": "tm-grid", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-5z38orofsfbe7vap7-thumbnail.jpg" + }, + { + "id": "FsHtLXJDGt87mpMLt", + "name": "striped", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-84llo9xy97zkz6757-thumbnail.jpg" + }, + { + "id": "FvWzPMiZrdqtgEJHY", + "name": "Particle", + "username": "gaz", + "avatarUrl": "https://secure.gravatar.com/avatar/1383190fac8e70cb725c3d76dbc811ba?default=retro&size=200", + "screenshotURL": "data/images/images-iw5tw2hxsnowabvg7-thumbnail.jpg" + }, + { + "id": "G44HeacsoBQDo4MFC", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-weyl6r771b2keqi5z-thumbnail.jpg" + }, + { + "id": "G6uv6rnTuzAgmHniY", + "name": "crystalsnds", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-xc9xupidzadldm94e-thumbnail.jpg" + }, + { + "id": "GA5AfMNsPaGpaCd7b", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0vltv14uk2xqn25ie-thumbnail.jpg" + }, + { + "id": "GBQRjtz2FMC4RcMvC", + "name": "rage", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8rhivs8wmb36t93gd-thumbnail.jpg" + }, + { + "id": "GCHbAzpPAFHCXStCn", + "name": "blendy", + "username": "anon", + "screenshotURL": "data/images/images-yoofmit2ulo5s1yxa-thumbnail.jpg" + }, + { + "id": "GKbc4tXKXpku2WT84", + "name": "wwww", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-a13x2pg5d1xdbvrt6-thumbnail.jpg" + }, + { + "id": "GKjSeb4FbAngScBTm", + "name": "crystal irisz (1)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-ukba8piohggj47892-thumbnail.jpg" + }, + { + "id": "GMo8BydtF9nZHuqcM", + "name": "htn", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-8320phu836qa7oy9b-thumbnail.jpg" + }, + { + "id": "GY6bT7gTsHXRvMshg", + "name": "wip", + "username": "johan", + "avatarUrl": "https://secure.gravatar.com/avatar/d01877a458be485c665b6ee7c1376d7b?default=retro&size=200", + "screenshotURL": "data/images/images-o9ijcc82vz6w3tsh0-thumbnail.jpg" + }, + { + "id": "Ghsjg9yjpwFdatBgX", + "name": "flowerworm", + "username": "demoniak", + "avatarUrl": "https://avatars.githubusercontent.com/johanberonius?s=200", + "screenshotURL": "data/images/images-ow4oujnbbj9fs8imk-thumbnail.jpg" + }, + { + "id": "Gi7T5DRKnAnrvCAPp", + "name": "lesson1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ox37r3fjrn3k07549-thumbnail.jpg" + }, + { + "id": "H56ztSpxnFf2kZGwv", + "name": "K Machine exposed shader", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-cb1ol2ax4y57fmk6r-thumbnail.jpg" + }, + { + "id": "H65kA6jZ79o5qDjXG", + "name": "Block Party", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-4hcrrdd6bds0yxbxb-thumbnail.jpg" + }, + { + "id": "HSGSvjGwQyB6cFQMP", + "name": "dots", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ssTFyFzXXEKdnCe9X-thumbnail.png" + }, + { + "id": "HW98dGDbChYw2FjpS", + "name": "feels like debris", + "username": "anon", + "screenshotURL": "data/images/images-6y9bmfj7t8dbgprml-thumbnail.jpg" + }, + { + "id": "HfQbodpsdXtRDyJar", + "name": "Basic", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ioqdlc3kua7f4p2k1-thumbnail.jpg" + }, + { + "id": "Hg6xE7LkftDQPNqAW", + "name": "unnamed", + "username": "w.e._aa", + "avatarUrl": "https://i1.sndcdn.com/avatars-000158541618-bp5p9z-large.jpg", + "screenshotURL": "data/images/images-9b8ralrl7tplp7k5g-thumbnail.jpg" + }, + { + "id": "Hsmfxt55QrbZxDm4d", + "name": "perc2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-fmlneswktbpa45jgy-thumbnail.jpg" + }, + { + "id": "JANswiNfyJnruo62E", + "name": "dotto-chouhoukei", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-bkgwqcyapt1aop426-thumbnail.jpg" + }, + { + "id": "JJBEEPXrCubMND6ym", + "name": "crystal irisz (1xxx)rw", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-h6d4rfa2gqrf5psdr-thumbnail.jpg" + }, + { + "id": "JRyewraYLfP9taa98", + "name": "dotqyub", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-mcuhvernmqk2zekch-thumbnail.jpg" + }, + { + "id": "JnRaHZcXYv7WBhq5b", + "name": "pulse", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-wa0a1s6901sy21cud-thumbnail.jpg" + }, + { + "id": "JokykDr3Qve8hrLQR", + "name": "gear", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-6j7jzjty2zekebsu4-thumbnail.jpg" + }, + { + "id": "Jrb5gxuyHzqMNukkg", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-ufvkizpki0667ghu2-thumbnail.jpg" + }, + { + "id": "JsEv9AaC54NF6cY8Q", + "name": "round", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-n6aj66ziha1w267jv-thumbnail.jpg" + }, + { + "id": "K2eiDz74g3k842g37", + "name": "Triangular Voronoi", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-nm46pishh23i3ou86-thumbnail.jpg" + }, + { + "id": "K5xqhTGgRRGkJzitm", + "name": "dacning disco blob", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-898ktk0eltqxxxh5m-thumbnail.jpg" + }, + { + "id": "K84niXFJgvqPCrhF3", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-psnggln1496tx7jwp-thumbnail.jpg" + }, + { + "id": "K8g3Q6ckgSTWZuRPv", + "name": "plasma waves", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-9kop22k5fdvtjoso4-thumbnail.jpg" + }, + { + "id": "K8sAwLQqxzqjXN3FT", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-r3ddlegcc4cl04il4-thumbnail.jpg" + }, + { + "id": "K9kkXT25juoLDcni4", + "name": "wip3", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-2kb3wfu2zxsv7diex-thumbnail.jpg" + }, + { + "id": "KTyBEnoxgZWR569eH", + "name": "tunnel", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-wgrinolii03me1opn-thumbnail.jpg" + }, + { + "id": "Ka9eWpFE3Yj86HdYN", + "name": "It's So In Vogue To Be Dead", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0612poreet0o6jhkl-thumbnail.jpg" + }, + { + "id": "KouaGmh83NF5FCHdM", + "name": "penguin thoughts", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-c0cnzc68g5xb9rpmr-thumbnail.jpg" + }, + { + "id": "L2EkNfwTM8yncpYNw", + "name": "toon chaos1", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-uf4mx9u5kg81obiq9-thumbnail.jpg" + }, + { + "id": "L7qW9rkYQEWF4AzkK", + "name": "BigSwingingSnake", + "username": "anon", + "screenshotURL": "data/images/images-vyqpj3pwtutad8w7a-thumbnail.jpg" + }, + { + "id": "LTuqGKGJGc3bHxGij", + "name": "pinkstars", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ZtPx2spAm6Si8sEws-thumbnail.png" + }, + { + "id": "LWQB7Eh4wa4moh9oa", + "name": "friz", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-xlltf3zxucthecfhj-thumbnail.jpg" + }, + { + "id": "LdQAN7vDm59Kqcvgs", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-sv9hdk715egkb9nui-thumbnail.jpg" + }, + { + "id": "MNGReAdLScFwNiZDg", + "name": "curve2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-v7ub2gxdazwmvntoo-thumbnail.jpg" + }, + { + "id": "MPxc2mXYAQd5F3JFC", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-manubfey3gyxpkuez-thumbnail.jpg" + }, + { + "id": "MTyhyqrCPDN5Fd7Xr", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-svabsqowjrenqn7go-thumbnail.jpg" + }, + { + "id": "MefAhfbtS5ZbYifPi", + "name": "qyube", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-pkr1n4bwl2aprmizg-thumbnail.jpg" + }, + { + "id": "MfQT7AKEmWF7Q35TS", + "name": "bound", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-70gp5rwnnp6jd7bx7-thumbnail.jpg" + }, + { + "id": "NCmuezkb94xMJ4gtR", + "name": "Torus Bulb4xx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ozyd2jul0jmoq5wub-thumbnail.jpg" + }, + { + "id": "NfQPZoWHTBFY7AKy5", + "name": "K Machine exposed shader2 ", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-6097xa50kdr0vu9b4-thumbnail.jpg" + }, + { + "id": "NfsvpqNHppMHhscah", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-dhe5saqbwjgjn2n7n-thumbnail.jpg" + }, + { + "id": "NhWzyi4RTkjqEik5t", + "name": "technokokoro", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-31p3h95wynxi1stpb-thumbnail.jpg" + }, + { + "id": "NnwTMwz27MKZEbr46", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-2wiuo4cpros2lrpsy-thumbnail.jpg" + }, + { + "id": "NyEsirDmwdF3Q65i6", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xcrd4z9wzg4c4fvu5-thumbnail.jpg" + }, + { + "id": "PF6C8TWcrEB3Mz3NP", + "name": "point cloud vs spheres", + "username": "bcarlyle", + "avatarUrl": "https://avatars.githubusercontent.com/bcarlyle?s=200", + "screenshotURL": "data/images/images-wg847jyoyyf3fisrs-thumbnail.jpg" + }, + { + "id": "PFHJfQrt3knT8K8sQ", + "name": "flwr", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-h4zyv5ocyga3huw79-thumbnail.jpg" + }, + { + "id": "PHANwhhRXk62fsaeC", + "name": "Simple Sphere", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-gihztdx0i7zvgyqd9-thumbnail.jpg" + }, + { + "id": "PLaynf8Y9S5jEPnGP", + "name": "papipupepo for k machhine2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-2wbrxd7jhbg25dqkz-thumbnail.jpg" + }, + { + "id": "PcGaeSXys75hdn3ky", + "name": "crystal irisz (1)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-s8c60owuwvzrevlcv-thumbnail.jpg" + }, + { + "id": "PitEvTS6w7WK8RHn8", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-yleufhj08d1y2t4ob-thumbnail.jpg" + }, + { + "id": "PkSbv7TufuWHiNRbd", + "name": "admo", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-s05kmrz2baxi53qgk-thumbnail.jpg" + }, + { + "id": "PkkKJZY7bP4Q5oHQQ", + "name": "Look At U", + "username": "anon", + "screenshotURL": "data/images/images-83y58pv62sbtu4kz6-thumbnail.jpg" + }, + { + "id": "PmRwSpR6jxkbJgsE4", + "name": "modern_fireplace", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-nbty2jodhfck9lmdx-thumbnail.jpg" + }, + { + "id": "PmW7c9NeLghdwa8S4", + "name": "luv", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-sffycqhx97o09mff9-thumbnail.jpg" + }, + { + "id": "PoyGoZL5Lmmn9N5SF", + "name": "Jack-o'-lantern", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-g5jc8tdlfhm6tfi9g-thumbnail.jpg" + }, + { + "id": "PponkZdtktgJHhipC", + "name": "sbd", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-gk0971btcdp9xclvb-thumbnail.jpg" + }, + { + "id": "PpwJ5uNXyzHCnWSZJ", + "name": "rbowsnd", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-L7Z2J9KQ9pxLS9xQy-thumbnail.png" + }, + { + "id": "Q3Mv3prh5dPis7GsK", + "name": "crystal dancer 777(mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-nx9nubm4636437bwe-thumbnail.jpg" + }, + { + "id": "Q4dpCbhvWMYfDz5Nb", + "name": "smutz", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-rhdtg29vo6feev03t-thumbnail.jpg" + }, + { + "id": "Q6WYaT35yY2FLBkgi", + "name": "spirography", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-XDjiC5DcXbYw7fpvF-thumbnail.png" + }, + { + "id": "QH3gSYw84QKSqtGr2", + "name": "lint", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-2e36dARvwMEZykDCX-thumbnail.png" + }, + { + "id": "QHfQoa4YycdGxqd8r", + "name": "post-its", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-i01msf2w0t87dqmat-thumbnail.jpg" + }, + { + "id": "QKr9Zs5phrohEPjCp", + "name": "shwoom", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3xr0k4qe5qnaurcjb-thumbnail.jpg" + }, + { + "id": "QLuMqpKa5JSrpLW5B", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-hlnr64xi78xvuofes-thumbnail.jpg" + }, + { + "id": "QQn8ttKsNBFEpfwuE", + "name": "unnamedzero", + "username": "pawel", + "avatarUrl": "https://lh5.googleusercontent.com/-9JIRL9QqVbE/AAAAAAAAAAI/AAAAAAAAAQU/EIVR4mSPtL4/photo.jpg", + "screenshotURL": "data/images/images-0vrh7da3ec7ydx4gy-thumbnail.jpg" + }, + { + "id": "QdJXEkZPWPvB4XKiy", + "name": "pointsprite plasma", + "username": "myownclone", + "avatarUrl": "https://avatars.githubusercontent.com/MyOwnClone?s=200", + "screenshotURL": "data/images/images-vsljci00g2v5q6ewp-thumbnail.jpg" + }, + { + "id": "QfDybr9wdsTip3KZ5", + "name": "vertex+time based highlight", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-grefl15glfvp2hiux-thumbnail.jpg" + }, + { + "id": "Qh7WiD2iwnCrdfCXy", + "name": "It's So In Vogue To Be Dead", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-egaao5daktn03ms2q-thumbnail.jpg" + }, + { + "id": "QmSnBFirC9qwWGrrA", + "name": "unnamed\"", + "username": "w.e._aa", + "avatarUrl": "https://i1.sndcdn.com/avatars-000158541618-bp5p9z-large.jpg", + "screenshotURL": "data/images/images-572wwms5umrderpqp-thumbnail.jpg" + }, + { + "id": "R9YtdbpwyPFwwKsix", + "name": "spirogyro", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3cd8m3krl5ko84n58-thumbnail.jpg" + }, + { + "id": "RAEKCeDDfGBmYSyQY", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-60lr0sm1wesyiy0do-thumbnail.jpg" + }, + { + "id": "RAKtMyYWNoC4Qni29", + "name": "perc2 (stripp)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-bgxg95m5hs7d81ggg-thumbnail.jpg" + }, + { + "id": "RJ4Tjj3PSsq4kvDcc", + "name": "jjblox", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-y4cjt7x163oumppk0-thumbnail.jpg" + }, + { + "id": "RLCfXFKZw5SjhED9h", + "name": "waves", + "username": "amagitakayosi", + "avatarUrl": "https://secure.gravatar.com/avatar/14084b6462b19a8512ce5208a76f8925?default=retro&size=200&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fad1ca2d3c1d7383c5f34676d7fced9ad", + "screenshotURL": "data/images/images-uchu34856j7pg0bop-thumbnail.jpg" + }, + { + "id": "RedmMGmXH2o8ZDTMQ", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7im5d10evtvfaxewa-thumbnail.jpg" + }, + { + "id": "RfrwmKH4fQMA3Pmxf", + "name": "bb22", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-6q3paa8xndiwvos71-thumbnail.jpg" + }, + { + "id": "Rkg7vqW56XS6yjEbT", + "name": "crystal irisz (1)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-jljp0py2vt0xtq07c-thumbnail.jpg" + }, + { + "id": "RnwjSt42YXLcGjsgT", + "name": "morp", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-6gm5l9yd2b2ojl1ot-thumbnail.jpg" + }, + { + "id": "Rp7GgqLK79srZtBn3", + "name": "crystal dancer (mouse.xy) 3", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-2vciih4t6ng70eoe0-thumbnail.jpg" + }, + { + "id": "S4DRdLKsky7bn3aHH", + "name": "flow", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-zu7tt9ei4vfrws73n-thumbnail.jpg" + }, + { + "id": "S8WjbT3dh5ZHhbpAS", + "name": "crepe", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-fkxv007a9ez2a235x-thumbnail.jpg" + }, + { + "id": "SFmNpx7c5RxJxfEnq", + "name": "lesson1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-83fz9c908h2t909tv-thumbnail.jpg" + }, + { + "id": "SHEuL7KCpNnj28Rmn", + "name": "incId", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-st6t541q80vyhczwm-thumbnail.jpg" + }, + { + "id": "SJYTAAwib5eJy8voP", + "name": "412b synchrony", + "username": "shu", + "avatarUrl": "https://secure.gravatar.com/avatar/6dc8be209aeec21dc99956c1188c1b05?default=retro&size=200", + "screenshotURL": "data/images/images-v8gfosbtrnwvl14tm-thumbnail.jpg" + }, + { + "id": "SMeHXTzP7e6vTniKx", + "name": "escnyc", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9z3gelu9q8eyqrgb4-thumbnail.jpg" + }, + { + "id": "ScnXYT2B8gmr2trfw", + "name": "disco ball", + "username": "anon", + "screenshotURL": "data/images/images-qfvn7dfci5ce9cu6t-thumbnail.jpg" + }, + { + "id": "SgSd9NeMcEY53XNTJ", + "name": "penguin thoughts", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nlqqsec09woe2pub0-thumbnail.jpg" + }, + { + "id": "Sw2atuBHGBsutNYZf", + "name": "smoke spheres every day", + "username": "anon", + "screenshotURL": "data/images/images-zop8gbeietipdbo2g-thumbnail.jpg" + }, + { + "id": "T3o69kd5wMtWNCj5k", + "name": "LED Display", + "username": "ray7551", + "avatarUrl": "https://avatars.githubusercontent.com/ray7551?s=200", + "screenshotURL": "data/images/images-va2v0rc3zix2hies9-thumbnail.jpg" + }, + { + "id": "T9BE9jwspwHzixcM5", + "name": "plasma waves", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-f029a9tf87ouvxigj-thumbnail.jpg" + }, + { + "id": "TAL5yA4piTpRpG2Qw", + "name": "points,lines, and triangles. Its all pretty.", + "username": "vincent", + "avatarUrl": "https://lh6.googleusercontent.com/-ZIw9Jo6_Ag8/AAAAAAAAAAI/AAAAAAACTeU/UoDpgf0B1uA/photo.jpg", + "screenshotURL": "data/images/images-s9rwyw46y33jk1p68-thumbnail.jpg" + }, + { + "id": "TDjh9ML39vLzhGboy", + "name": "Pulsing dots", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e4fiego45kkw9a7kp-thumbnail.jpg" + }, + { + "id": "TFqk3nQR5AQxhWWKn", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-jllyv458pit4wbtb8-thumbnail.jpg" + }, + { + "id": "TGGLggjxQgLPEFHWx", + "name": "heightfield plotter", + "username": "dzozef", + "avatarUrl": "https://secure.gravatar.com/avatar/d6b044e92a377cd617762af9a488719d?default=retro&size=200", + "screenshotURL": "data/images/images-196eqbwwif1xb8f6r-thumbnail.jpg" + }, + { + "id": "TH2CTrKcW6GQ4Y9q9", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-fxot0gtbjrkyfqy9j-thumbnail.jpg" + }, + { + "id": "TKku4LqhCCgDpnKTd", + "name": "Torus Bulb4", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5uexyao2ms42c8sot-thumbnail.jpg" + }, + { + "id": "TMG34LHftperZZKZm", + "name": "Test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-13m17rjl5l9u5tbm5-thumbnail.jpg" + }, + { + "id": "TPrujGdAaBfqpYpvT", + "name": "curve", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0jwrasq7zltr4fxm8-thumbnail.jpg" + }, + { + "id": "TTsbi8YxPA9GcqRmJ", + "name": "crystal irisz (1xxx)", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-02wh8dgy7pkg8hsij-thumbnail.jpg" + }, + { + "id": "TYoTaksHA6DWsP4aD", + "name": "grid", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-pntovum9yxo1r8mp1-thumbnail.jpg" + }, + { + "id": "TZBvEoNYkzhB8PtQR", + "name": "h-t", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-dgsde2jx3xio85xi3-thumbnail.jpg" + }, + { + "id": "TdqvseMQyoJ3ZrjrD", + "name": "Garden Fireworks", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-e5i54ral7oq73t97q-thumbnail.jpg" + }, + { + "id": "Tn26s3ARMWt6vkHkk", + "name": "foof", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-hcj5z3k9mr1m4eyt3-thumbnail.jpg" + }, + { + "id": "TnXzsnYqaPym78gQ8", + "name": "julia", + "username": "anon", + "screenshotURL": "data/images/images-jyz5mtdesuiwpq0yb-thumbnail.jpg" + }, + { + "id": "Toiefpwj7bhJqsYxd", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-ytsdswuq7vvj56y6s-thumbnail.jpg" + }, + { + "id": "TrexNrcNFyQ7FrJjb", + "name": "shapeshift", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-q8ud09emoqpfjkx2f-thumbnail.jpg" + }, + { + "id": "TrfCHd7Prkiad7Fox", + "name": "666wired x3 4k", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7dl5oi7clcjogmhoh-thumbnail.jpg" + }, + { + "id": "W5vsi9uadatWRg8XJ", + "name": "plasma waves 6666", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5sgozfaq4i3rn2ifd-thumbnail.jpg" + }, + { + "id": "W9WTPxA9AXtFxZRqq", + "name": "sines", + "username": "jason", + "avatarUrl": "https://lh4.googleusercontent.com/-wE4hYuyWNI8/AAAAAAAAAAI/AAAAAAAAm8k/TUzOeIuTvlY/photo.jpg", + "screenshotURL": "data/images/images-mq97m9nxjsgg7i0pe-thumbnail.jpg" + }, + { + "id": "WARdzeaiQZaiSy6Hj", + "name": "uniuni", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-fprrdobp2yiuwmr8l-thumbnail.jpg" + }, + { + "id": "WEKX8jLk432REZLJq", + "name": "illu", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-x1xom7jgfgpv7zcsl-thumbnail.jpg" + }, + { + "id": "WM2T8Fz7ftcgqwgYn", + "name": "plasma grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n5jqyci8gywvyqlgw-thumbnail.jpg" + }, + { + "id": "WMeytAXb53i6LtrWm", + "name": "woozy", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ro2r5d7ydpdn4wpyz-thumbnail.jpg" + }, + { + "id": "WZ4EToBv8LTc3N3Tn", + "name": "husleri", + "username": "atomim", + "avatarUrl": "https://avatars.githubusercontent.com/atomim?s=200", + "screenshotURL": "data/images/images-dds4ppnhrsidjttxp-thumbnail.jpg" + }, + { + "id": "WgAGyf4sc6LfsH2bd", + "name": "squiro", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-az6MaCyqZHBJcj8u6-thumbnail.png" + }, + { + "id": "WriDgXxvrtaB7q77s", + "name": "crystal irisz (1xxx)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mm2uuteaknr0mli7v-thumbnail.jpg" + }, + { + "id": "WvKKxjSusH6cFyYcx", + "name": "neurovelho2", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-2TcZG9cG5pSJ7Sjgo-thumbnail.png" + }, + { + "id": "X4p3ogDk8g7e5CvmA", + "name": "papipupepo for k machhine2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-atvk1btbynkev6gw1-thumbnail.jpg" + }, + { + "id": "X74uYKiDLZJmqhLnh", + "name": "Planet Polygon", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-ap0k4nriqs0j3ezco-thumbnail.jpg" + }, + { + "id": "XDJPeMfrdhMBhw4XD", + "name": "GitchColor", + "username": "anon", + "screenshotURL": "data/images/images-Ahemx2XwPNGX7PhZs-thumbnail.png" + }, + { + "id": "XJecoKnhhsWTTNp4Z", + "name": "Jack-o'-lantern in a circle", + "username": "anon", + "screenshotURL": "data/images/images-yk73gvuuppe0thfs6-thumbnail.jpg" + }, + { + "id": "XQQfnaTej5ZuzxNaf", + "name": "dyson", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-45ab77rsq4obimrej-thumbnail.jpg" + }, + { + "id": "XRdg3Wi744WAEMHKZ", + "name": "Spiral-TRIdNCE1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-vqx4b2zvj61yf3hhm-thumbnail.jpg" + }, + { + "id": "XW2ueZpHcoWqtkuqD", + "name": "lorenz attractor", + "username": "xt95", + "avatarUrl": "https://secure.gravatar.com/avatar/c82a5b6f03fa560cfa9cc2e16b51476f?default=retro&size=200&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F91b15de2dd562a82bf6d7c970847dfc8", + "screenshotURL": "data/images/images-53L7GzyWt2harq8vN-thumbnail.png" + }, + { + "id": "XWzwbcRCDE4ce9oex", + "name": "woozy", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-atl71x19mj58roksh-thumbnail.jpg" + }, + { + "id": "XXSghCnP6t28ai6cy", + "name": "sym", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-su2jo7ouvr74mcfou-thumbnail.jpg" + }, + { + "id": "XcY8PN835BKPhMe3Z", + "name": "Magic #s", + "username": "anon", + "screenshotURL": "data/images/images-c5c0itdfj2wtbccig-thumbnail.jpg" + }, + { + "id": "Xhey4x8tEsNyKymgw", + "name": "vf", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-sdcdks3izd740nbmv-thumbnail.jpg" + }, + { + "id": "XreNJG2gcwCcsQqfL", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d07yy56eho5p30wdd-thumbnail.jpg" + }, + { + "id": "XxsoGmBRve3XhR5q3", + "name": "cryb", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4ojod4zswqcew90ls-thumbnail.jpg" + }, + { + "id": "Y8qbp8kqR8R9rigM7", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-a646mkb6wr9fpzaun-thumbnail.jpg" + }, + { + "id": "YPJmHpa7pwzhxgBkq", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wwarm5phdngsauee4-thumbnail.jpg" + }, + { + "id": "YQhEmHqKTgrDSD3AM", + "name": "circlepower", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-z2boocj2rzbvd7qfe-thumbnail.jpg" + }, + { + "id": "YQrEtnLC8h7QHDNsd", + "name": "penguin thoughts kmachine test1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-d4idjsbg5t17i6a47-thumbnail.jpg" + }, + { + "id": "YRrZ7fHmFhtoKpyrq", + "name": "bebubebup", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-rtaa1k3eekpdz5dk7-thumbnail.jpg" + }, + { + "id": "YSzcySDB7rcbwJmTP", + "name": "mfx01", + "username": "anon", + "screenshotURL": "data/images/images-00mmdgkif42g500zg-thumbnail.jpg" + }, + { + "id": "YbA3f6xnjbmXzkwHx", + "name": "Kringu", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-hq7sgqfity9trscld-thumbnail.jpg" + }, + { + "id": "YiboJk6SvJNEAPSGR", + "name": "roty", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-xs5j37ax2dkigjmj2-thumbnail.jpg" + }, + { + "id": "Ykt3ZLD52Wnphvaak", + "name": "Simple line music extended", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jvp0zeph8xd1ph5jr-thumbnail.jpg" + }, + { + "id": "Z26iq8hKBPX2svsmR", + "name": "bounder2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-vmj56oc7xaovbsqo1-thumbnail.jpg" + }, + { + "id": "Z4HpJPY5d2PNYRHZA", + "name": "msh", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-edpsawbdaqexusatd-thumbnail.jpg" + }, + { + "id": "ZAHaRXC8kiQBzSkbb", + "name": "SurfaceNet Metaball", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-290zfqwqwzy8ecig6-thumbnail.jpg" + }, + { + "id": "ZNi2inr6Jmirh6Hgy", + "name": "Emiko", + "username": "eddietree", + "avatarUrl": "https://pbs.twimg.com/profile_images/658497007795875840/BWYk5wYJ_200x200.png", + "screenshotURL": "data/images/images-mno1wzlv6yd9hudz3-thumbnail.jpg" + }, + { + "id": "ZNnRK7kpHZXGz5gT5", + "name": "MagnetTV", + "username": "freefull", + "avatarUrl": "https://avatars.githubusercontent.com/FreeFull?s=200", + "screenshotURL": "data/images/images-hh71fpxvcv3l13nv3-thumbnail.jpg" + }, + { + "id": "ZTAvJzo5HJdr2FsZK", + "name": "residuallines", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-5kfqvydni4i5h9bhh-thumbnail.jpg" + }, + { + "id": "ZZ2MBTXKXSRzbure5", + "name": "msh", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-xvwa4daqb76klb1bk-thumbnail.jpg" + }, + { + "id": "ZZj9dLPDqjWny5kJW", + "name": "Rose Quartz", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-z4sw7mn5v2p75flvq-thumbnail.jpg" + }, + { + "id": "ZwJTJhgwALcNCeGWC", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-axmkjt14yq7xcov3d-thumbnail.jpg" + }, + { + "id": "ZzCgG7HuSE6BLGSKR", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-96hk18ubib81ns45t-thumbnail.jpg" + }, + { + "id": "a3KvcpoEdK4k9gNxr", + "name": "penguin thoughts kmachine test1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-4beqm4402figbyncc-thumbnail.jpg" + }, + { + "id": "aD8f8mi353xWbSHQk", + "name": "fla", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-kt6m0bz9dxa4a006z-thumbnail.jpg" + }, + { + "id": "aMJHfrjJHMKKy4iNi", + "name": "Glitter Spirals", + "username": "fizzer", + "avatarUrl": "https://secure.gravatar.com/avatar/2c3dadd3c5ae632ac7e0405a9eff8109?default=retro&size=200&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F96d8ba478cd8a029f90e0382b4224a0e", + "screenshotURL": "data/images/images-31qctr6ro2lmh4g2x-thumbnail.jpg" + }, + { + "id": "aRahetpEjCSsaLHkX", + "name": "pointsprite plasma", + "username": "myownclone", + "avatarUrl": "https://avatars.githubusercontent.com/MyOwnClone?s=200", + "screenshotURL": "data/images/images-oxtgeg340znm4dsam-thumbnail.jpg" + }, + { + "id": "aW3a59fZi6sxhTYBj", + "name": "Triangular Voronoi", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-lre10u2xzqvyrglfe-thumbnail.jpg" + }, + { + "id": "adr4oWENvpWNLwHJR", + "name": "geosphere", + "username": "johan", + "avatarUrl": "https://secure.gravatar.com/avatar/d01877a458be485c665b6ee7c1376d7b?default=retro&size=200", + "screenshotURL": "data/images/images-0q00bdlrbeo1t0bkr-thumbnail.jpg" + }, + { + "id": "aqgyqr6ASpcsZTeEu", + "name": "spheres", + "username": "mark", + "avatarUrl": "https://lh3.googleusercontent.com/-Lca4UGau1OU/AAAAAAAAAAI/AAAAAAAAAI4/dSttspxaINs/photo.jpg", + "screenshotURL": "data/images/images-3w3gf1cd32tgjbgr4-thumbnail.jpg" + }, + { + "id": "as29BXy9qihbCbPqA", + "name": "Lonely Rolling Star", + "username": "chemlo", + "avatarUrl": "https://secure.gravatar.com/avatar/bd1fc3e2f0d77392e06266faedc63267?default=retro&size=200", + "screenshotURL": "data/images/images-v2qlmxxm74lsgizsz-thumbnail.jpg" + }, + { + "id": "asSnAehpD5b5tuJ27", + "name": "round", + "username": "anon", + "screenshotURL": "data/images/images-55igKnZWEY89oN9en-thumbnail.png" + }, + { + "id": "auo92EWvwwyBRak2c", + "name": "widr", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-s71rid2d21wxp86yw-thumbnail.jpg" + }, + { + "id": "aynW9zWZRGxronmcP", + "name": "crystal dancer (mouse.xy)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zccb967zu9r7scfa8-thumbnail.jpg" + }, + { + "id": "b2AspWSvDsXib8Kkc", + "name": "Torus Bulb", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-2ek98fepqfdnydxkm-thumbnail.jpg" + }, + { + "id": "bG8faYzBsvfvBSwDH", + "name": "voices", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-p3nkljbixrhwxoe0l-thumbnail.jpg" + }, + { + "id": "bN3QdqY39pxGw8csG", + "name": "クラゲ", + "username": "gaz", + "avatarUrl": "https://secure.gravatar.com/avatar/1383190fac8e70cb725c3d76dbc811ba?default=retro&size=200", + "screenshotURL": "data/images/images-yrushczem24ny5sni-thumbnail.jpg" + }, + { + "id": "bNYRsM3GYemaiam5G", + "name": "spiky", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-kgig6x7ocjqne128f-thumbnail.jpg" + }, + { + "id": "bbsF39W6bJo3j4R3j", + "name": "cyty", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4a3wvsmv4bb39rh29-thumbnail.jpg" + }, + { + "id": "bcenao9Loe5Xc2Y7T", + "name": "spacetunnel", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-u5bonv21959qo7duf-thumbnail.jpg" + }, + { + "id": "bgNBk3TJvBHtbJ9jB", + "name": "bounder2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gmupkbuf81sfkk5zs-thumbnail.jpg" + }, + { + "id": "bhTaMtEz4j9zuSn7g", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-74c311r34oj3vo8q6-thumbnail.jpg" + }, + { + "id": "bjkZzQ6XfJ5Ypu4AX", + "name": "synapsicorporation2", + "username": "anon", + "screenshotURL": "data/images/images-b32zrgvrma06ugm88-thumbnail.jpg" + }, + { + "id": "bpN3ufoDGdkJjxFsQ", + "name": "starts", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-r2Kppkg2XMnp7Lr43-thumbnail.png" + }, + { + "id": "cBtDPFjaQQmK8RYXB", + "name": "dot art", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-cwax7jsvwevlgnqgw-thumbnail.jpg" + }, + { + "id": "cQ2oBbxfbCYZLRFtr", + "name": "crystal dancer (mouse.xy) 3", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-qqti112vp0s0bzvtz-thumbnail.jpg" + }, + { + "id": "cZoyrQ8kQECXDtSTn", + "name": "wet", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-dgdib8thfbbw1lzrd-thumbnail.jpg" + }, + { + "id": "cj62wdtr684imMKtg", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8rxmfu15tfld7cprc-thumbnail.jpg" + }, + { + "id": "cvLGj6QKvo7uebnbK", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-h8oc2dy04u0dwdefp-thumbnail.jpg" + }, + { + "id": "cz2CWm8MobiaqYc46", + "name": "residualfillattack", + "username": "anon", + "screenshotURL": "data/images/images-2kvbe7w6rl8k2xfla-thumbnail.jpg" + }, + { + "id": "d6J9M7EJyoAgw5NcA", + "name": "linespace", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-i912cmxjgisq3em06-thumbnail.jpg" + }, + { + "id": "d7anES7ef6WrrDwsy", + "name": "codez", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-m5f2e7xd2dh99sj9r-thumbnail.jpg" + }, + { + "id": "d8J6rAnjiWz4HntZH", + "name": "musicBox", + "username": "renya", + "avatarUrl": "https://graph.facebook.com/825779784232264/picture?type=large", + "screenshotURL": "data/images/images-1nwtq8kn51dfqqkuc-thumbnail.jpg" + }, + { + "id": "dJQHunZMaGr5ssiey", + "name": "squiro", + "username": "anon", + "screenshotURL": "data/images/images-ab40lwjcoxyq4yixl-thumbnail.jpg" + }, + { + "id": "dMsa7ScyoyExY3Cxk", + "name": "reakt", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ijxhhjcynuh1lm0wm-thumbnail.jpg" + }, + { + "id": "dWoGmbWvzsuG5YKwG", + "name": "test", + "username": "karlll", + "avatarUrl": "https://avatars.githubusercontent.com/karlll?s=200", + "screenshotURL": "data/images/images-5epvsj1kxk21vjt2c-thumbnail.jpg" + }, + { + "id": "dYaXs9CwnzQhAT8Kt", + "name": "mouse-wip", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ha7qpwzuk0mtknxbp-thumbnail.jpg" + }, + { + "id": "df7Ra8dPPtCwcsrwL", + "name": "tripna", + "username": "anon", + "screenshotURL": "data/images/images-m3w3s848st53eqsxu-thumbnail.jpg" + }, + { + "id": "dhnTE8qmLte8dvycB", + "name": "dacning disco blob", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-veuy0owcqvjz311vf-thumbnail.jpg" + }, + { + "id": "dk6ee6LN5fC4Dkybg", + "name": "crystal irisz (1xxx)rwpoint", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-a9p3q50c1fizc35vj-thumbnail.jpg" + }, + { + "id": "dw7XrmJjH3mBbHx8u", + "name": "-fork Mutated torus", + "username": "anon", + "screenshotURL": "data/images/images-8tqol0os4vx1zx0pl-thumbnail.jpg" + }, + { + "id": "dxtwYFtYDMAdGgpJm", + "name": "pulseaudio", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-fhuydt3s73bz1udky-thumbnail.jpg" + }, + { + "id": "dyCMb2QsTKKjPQptu", + "name": "fov_border", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-egsf5elfbcskg8bvh-thumbnail.jpg" + }, + { + "id": "eBpxuAodpyWjT6Asr", + "name": "crystal irisz (1xxx)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2ibox6kclp7osyvv5-thumbnail.jpg" + }, + { + "id": "eMAJ5HydzdzbnzduF", + "name": "plasma grid", + "username": "demoniak", + "avatarUrl": "https://avatars.githubusercontent.com/johanberonius?s=200", + "screenshotURL": "data/images/images-1138c3q08ikgv8ltn-thumbnail.jpg" + }, + { + "id": "eXepJNmr5e5q3DjWv", + "name": "cubit", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-a9lcjlyadhcmlj9x3-thumbnail.jpg" + }, + { + "id": "eY9pGfw52QeELpY2y", + "name": "penguin thoughts kmachine test1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-uhupqqfvrw1qe0quo-thumbnail.jpg" + }, + { + "id": "em6g5TXFWMofu5RHa", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-q2k3cgnvzvhbz9bys-thumbnail.jpg" + }, + { + "id": "enNTxR7RgQNk53fmx", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qioua6g3dk76y3fho-thumbnail.jpg" + }, + { + "id": "esptz5bbgn8NtZkbN", + "name": "Spiral", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ygagq3ffhvrolnb8a-thumbnail.jpg" + }, + { + "id": "f24WmWznGNdEXEQTu", + "name": "Pulsin", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-o8j6foul9djzvabgh-thumbnail.jpg" + }, + { + "id": "fFEpFHbdC4ecFLuaB", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-odg44osl63lgnpnca-thumbnail.jpg" + }, + { + "id": "fKPK987qvE5gGHcWS", + "name": "sines", + "username": "jason2", + "avatarUrl": "https://lh6.googleusercontent.com/-vde-XOBlwgQ/AAAAAAAAAAI/AAAAAAABvaw/lwoPQQotTj8/photo.jpg", + "screenshotURL": "data/images/images-oq24k4gtm5vocgxag-thumbnail.jpg" + }, + { + "id": "fmmQsNyrdyjA3226x", + "name": "radonut", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-wtf4k2310970nl4zh-thumbnail.jpg" + }, + { + "id": "fs6GHW2crknZmzoWy", + "name": "Rain", + "username": "martinpalko", + "avatarUrl": "https://avatars.githubusercontent.com/MartinPalko?s=200", + "screenshotURL": "data/images/images-o4d8vpo616josegsr-thumbnail.jpg" + }, + { + "id": "fvQbw8FtZzmvQG4Wz", + "name": "Sound Texture", + "username": "gaz", + "avatarUrl": "https://secure.gravatar.com/avatar/1383190fac8e70cb725c3d76dbc811ba?default=retro&size=200", + "screenshotURL": "data/images/images-39o1j2yw3iwkq9h4i-thumbnail.jpg" + }, + { + "id": "g2PZWgGp6YYe9CWwE", + "name": "cybr", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3hvvuihdy67268s52-thumbnail.jpg" + }, + { + "id": "g4ZutuWewAGLeBJHx", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-qbp66cgorcutxe7ok-thumbnail.jpg" + }, + { + "id": "g79cZoGhWhgn9tKfr", + "name": "miami", + "username": "jshaw", + "avatarUrl": "https://avatars.githubusercontent.com/jshaw?s=200", + "screenshotURL": "data/images/images-vuyrrf64jx9es77e5-thumbnail.jpg" + }, + { + "id": "g7wWJ4yKzThxqkmN5", + "name": "mfx01", + "username": "anon", + "screenshotURL": "data/images/images-ke4somqga045rjket-thumbnail.jpg" + }, + { + "id": "gDfmqnLHBbcKghmwL", + "name": "penguin thoughts kmachine test1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-iw5rxllvfgxl9wdzh-thumbnail.jpg" + }, + { + "id": "gX32iAvezAbinbMJz", + "name": "c-pump", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ltsnd5j7fp9a8rh7d-thumbnail.jpg" + }, + { + "id": "gZNitbfDuN5pSwLf3", + "name": "glyphs", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-tubz2x6f92hn416mc-thumbnail.jpg" + }, + { + "id": "gZjPchBFJAGSk4ZTK", + "name": "Simple Music Line", + "username": "8bitrick", + "avatarUrl": "https://avatars.githubusercontent.com/8BitRick?s=200", + "screenshotURL": "data/images/images-tbc7952hrkj9bo5bp-thumbnail.jpg" + }, + { + "id": "ghFixTy38ux4F235T", + "name": "SpiralPrime", + "username": "PLU Collective", + "avatarUrl": "https://lh3.googleusercontent.com/-zoLHh8QcDvA/AAAAAAAAAAI/AAAAAAAAAMY/JF7a2zyY1xc/photo.jpg", + "screenshotURL": "data/images/images-w3a32cyj0260lfz63-thumbnail.jpg" + }, + { + "id": "gqJ33JsAWdcuKjJHH", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-w7s8diqut6qc7yq9s-thumbnail.jpg" + }, + { + "id": "gszWKmYHHf8HxkXiS", + "name": "crystal irisz (1)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-j3coer4mz1tt8e39y-thumbnail.jpg" + }, + { + "id": "h6BvsMWiHpgwT5Nhh", + "name": "pointsprite plasma", + "username": "optimus6128", + "avatarUrl": "https://secure.gravatar.com/avatar/7a1d0b51a2de5e0d11e8ac26263b3a5a?default=retro&size=200", + "screenshotURL": "data/images/images-KCZfc4mKMbFz7BM49-thumbnail.png" + }, + { + "id": "hFWjmNANJteP9NeAy", + "name": "msh", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u838bv1blw0dzxxin-thumbnail.jpg" + }, + { + "id": "hGb3X2yH769jCbfDy", + "name": "Wild Knot", + "username": "gaz", + "avatarUrl": "https://secure.gravatar.com/avatar/1383190fac8e70cb725c3d76dbc811ba?default=retro&size=200", + "screenshotURL": "data/images/images-zfzfyo0zrl0msrsq9-thumbnail.jpg" + }, + { + "id": "hGiSXNAT8jpQc5o3a", + "name": "the flames of sleng teng", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-6ulgxiduracoqi5p2-thumbnail.jpg" + }, + { + "id": "hhDozSmRkW3ExvhoP", + "name": "papipupepox2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-pive2cjmewpwre7k5-thumbnail.jpg" + }, + { + "id": "hhsdvkiJ32bCTcezv", + "name": "blendy", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-cgwkt07m8oqodiaze-thumbnail.jpg" + }, + { + "id": "hjpDj9NpsfdHuD6Ya", + "name": "Spiral2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zv3xwlxbumoflar2a-thumbnail.jpg" + }, + { + "id": "hrgNyucvZAE9WwRLF", + "name": "round", + "username": "artsime", + "avatarUrl": "https://avatars.githubusercontent.com/artsime?s=200", + "screenshotURL": "data/images/images-guDSJocAmZP4fmhiG-thumbnail.png" + }, + { + "id": "huDQEAMcWYoP6hWGS", + "name": "Galaxy dance", + "username": "gearcode", + "avatarUrl": "https://lh3.googleusercontent.com/-BsOS_RAUwtA/AAAAAAAAAAI/AAAAAAAAAG8/6g6FwPlfGb8/photo.jpg", + "screenshotURL": "data/images/images-k9rd874b9v2d6e13w-thumbnail.jpg" + }, + { + "id": "iE3Xz7bewdDm3shFC", + "name": "Infinite Heart of Glass", + "username": "c0d3rguy", + "avatarUrl": "https://pbs.twimg.com/profile_images/378800000551418133/f31731617a0899fd1ead112449b1c178_200x200.png", + "screenshotURL": "data/images/images-9h2aq4d3g8kdx2xez-thumbnail.jpg" + }, + { + "id": "iGf4owSji9QC6P8yF", + "name": "crystal dancer (mouse.xy) 3", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-h00fwicu0d4pwunvt-thumbnail.jpg" + }, + { + "id": "iKJAEsvWRjffu2QnA", + "name": "crystal irisz (1xxx)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-kokyudeccwz0cbz3x-thumbnail.jpg" + }, + { + "id": "iPNXnwa34wBgSSDGd", + "name": "crystal irisz (mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-qumn71pnrbrt4ri2y-thumbnail.jpg" + }, + { + "id": "iPiDjpBYDPGFTGp8Y", + "name": "residualfill", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-fz2lm2mbb8jipbv2g-thumbnail.jpg" + }, + { + "id": "iQ3Lo8pe7QqDdz8qi", + "name": "xduel", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-nyzootsvhi46iv9ec-thumbnail.jpg" + }, + { + "id": "iQAtnkJRC8XtvT4tW", + "name": "synapsicorporation2", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-BA9SyAeKnoEgtTBgM-thumbnail.png" + }, + { + "id": "iXKHFGqaAHrc6rZg2", + "name": "Triangular Voronoi", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-xg621jspbuf31ss6r-thumbnail.jpg" + }, + { + "id": "ixr3Pka4ChbtDzobh", + "name": "Spiral-Spring", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ug7gazpjhxhs9mlj0-thumbnail.jpg" + }, + { + "id": "j7WftWuJtPTYyhcxG", + "name": "Simple line music extended", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-alsxh8by3jbhw7cr8-thumbnail.jpg" + }, + { + "id": "j7v3Ha4S2hwxhSCi9", + "name": "the galactic loom of sound and light", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-p59m6vciq421lc2e8-thumbnail.jpg" + }, + { + "id": "j83YWD4DHLXrjrvxf", + "name": "☁", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-m8qw2xmg4374uoz6b-thumbnail.jpg" + }, + { + "id": "jBpixD335L3o2unKj", + "name": "hypercuber", + "username": "bostelk", + "avatarUrl": "https://secure.gravatar.com/avatar/6a78fa85daeb414dfc2d3f77225779a1?default=retro&size=200", + "screenshotURL": "data/images/images-40be2dp9b8a01cusc-thumbnail.jpg" + }, + { + "id": "jDNMJCu4S7DSRconL", + "name": "twst", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-xza33tgw9dpfbgoe2-thumbnail.jpg" + }, + { + "id": "jLife2TGRq2pa6fXN", + "name": "curve", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-whz235ixlna47yedl-thumbnail.jpg" + }, + { + "id": "jg5dRsCi6xDSFyCJ9", + "name": "Clifford Attractor", + "username": "pheema", + "avatarUrl": "https://secure.gravatar.com/avatar/129e0f34bca7cf4fd906f08271ab1ac9?default=retro&size=200&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F979dbb28083b6cde8b4dce629ae3eaec", + "screenshotURL": "data/images/images-4sa82591jakgfpk6x-thumbnail.jpg" + }, + { + "id": "jgpwL4MjxvpeqZ2QN", + "name": "unnamed", + "username": "vincent23", + "avatarUrl": "https://avatars.githubusercontent.com/vincent23?s=200", + "screenshotURL": "data/images/images-vis2p69bcaheirw3u-thumbnail.jpg" + }, + { + "id": "jgwXiSzEkQzK3X2Fx", + "name": "rgblur", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-1ksr6kbu4dn19c6sp-thumbnail.jpg" + }, + { + "id": "jjFQmoBi82cZBgTCj", + "name": "crystal irisz (1xxxjkk", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-as6azf3utovpf5nzd-thumbnail.jpg" + }, + { + "id": "jqRhLrTMA3GFEk2m5", + "name": "pointsprite plasma 3D", + "username": "optimus6128", + "avatarUrl": "https://secure.gravatar.com/avatar/7a1d0b51a2de5e0d11e8ac26263b3a5a?default=retro&size=200", + "screenshotURL": "data/images/images-7frecwp7ycvgrar50-thumbnail.jpg" + }, + { + "id": "k5BBCA2vPq6sY6xv5", + "name": "Simple line music extended", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-31ah01abvwhxbpv0l-thumbnail.jpg" + }, + { + "id": "k5hPuKGzdkGEvfoZk", + "name": "crystal irisz (1xxx)rwpoint", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-w0qqhx9tjuduhxhf7-thumbnail.jpg" + }, + { + "id": "k7w6BKgeSJxKx3Z6L", + "name": "perc2", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ogl9iezuaimhelhgm-thumbnail.jpg" + }, + { + "id": "kAANx8FwJoSeR9B4c", + "name": "filters", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-f4ib10y0x2xberr3r-thumbnail.jpg" + }, + { + "id": "ke5bF6hENE8zphaSp", + "name": "torus", + "username": "anon", + "screenshotURL": "data/images/images-kbexK8e8mwDP5wkEi-thumbnail.png" + }, + { + "id": "khayHGH4sQWpPkn92", + "name": "xmas tree", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kveenifu7xlki1ef0-thumbnail.jpg" + }, + { + "id": "kyrjHeuSM5skDfpNo", + "name": "tuto 1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d48640mgldk59utzh-thumbnail.jpg" + }, + { + "id": "mAZixq6fNzd7qSpQs", + "name": "technoball", + "username": "demoniak", + "avatarUrl": "https://avatars.githubusercontent.com/johanberonius?s=200", + "screenshotURL": "data/images/images-aym3fl4txz1wdqhif-thumbnail.jpg" + }, + { + "id": "mBsFXyLJxoL2yPqjz", + "name": "Simple line music extended", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-h2paqfm9n19o4vpgv-thumbnail.jpg" + }, + { + "id": "mMNQ38uN94rxmoWBh", + "name": "crystal irisz (1xxx)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-xo3d4mt2arrrppuyw-thumbnail.jpg" + }, + { + "id": "mNBny7JXpBGwQnMwG", + "name": "pulsedn", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-cttxn3rlriag87k1u-thumbnail.jpg" + }, + { + "id": "mQuMhKJA2PG4x8j7h", + "name": "It's So In Vogue To Be Dead", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-vc09dbwhblm6w9gee-thumbnail.jpg" + }, + { + "id": "mSDHF7AjBowN86DnJ", + "name": "synapsicorporation", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-iZngnCo9QYyKxdt9w-thumbnail.png" + }, + { + "id": "mfEsB2oGhBqM3k3Rt", + "name": "the connectedness of all", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-c0twy3q6tdy1vgd6t-thumbnail.jpg" + }, + { + "id": "mmxfYzJp3mCehkHcH", + "name": "technoball K machinized dev0", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-9yodmfgzylfb0202f-thumbnail.jpg" + }, + { + "id": "mwvXDsken4yMnJbxW", + "name": "666wired", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-989fzhdu6slufo2tf-thumbnail.jpg" + }, + { + "id": "nCfNyk6WPr6gn4kSB", + "name": "Spiral-TRIdNCE2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-0y1vthbsd0sykza4b-thumbnail.jpg" + }, + { + "id": "nDoX6LaHSyK8R6WTL", + "name": "curve", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ek203ioir9x6t1slq-thumbnail.jpg" + }, + { + "id": "nKFqYp9wtAJ4hM3mF", + "name": "msh jellyfish", + "username": "mipmap", + "avatarUrl": "https://secure.gravatar.com/avatar/2840df8e29cba840a5b7f90f66bc66cd?default=retro&size=200", + "screenshotURL": "data/images/images-mrb098ekplpzf5vmi-thumbnail.jpg" + }, + { + "id": "nKzNvfJNE5DnDYssR", + "name": "illu", + "username": "anon", + "screenshotURL": "data/images/images-j5a4mvmwzo535a9ud-thumbnail.jpg" + }, + { + "id": "nL6YpkW8YvGKNEKtj", + "name": "point cloud vs spheres", + "username": "kabuto", + "avatarUrl": "https://secure.gravatar.com/avatar/e678fef714d5460c8f9ce2723842fd19?default=retro&size=200", + "screenshotURL": "data/images/images-npze7gc9gj6tkat5p-thumbnail.jpg" + }, + { + "id": "nNYZMHxiLMR2xAncW", + "name": "sirp", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-41ojtzexku9lwfeco-thumbnail.jpg" + }, + { + "id": "ne6ENatKHpRDSgJRv", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-j77711km99pxe0jr2-thumbnail.jpg" + }, + { + "id": "nr3EiyXWLMpwoouHt", + "name": "lazer", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-c1onu7d0wryojd5eu-thumbnail.jpg" + }, + { + "id": "ntCWzzdvXfp33a6oz", + "name": "target", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-0bv01h1a07p5y5q0r-thumbnail.jpg" + }, + { + "id": "ntwDMXMwDGY8aMF7M", + "name": "saucer attack bug (mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-ih2zhgj8jaml0c08z-thumbnail.jpg" + }, + { + "id": "oMwCvkkRyEiZkio4h", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-iar6a5q4jtsxmf4xw-thumbnail.jpg" + }, + { + "id": "oNxBgiL2gw39fW6DS", + "name": "msh conveyor", + "username": "mipmap", + "avatarUrl": "https://secure.gravatar.com/avatar/2840df8e29cba840a5b7f90f66bc66cd?default=retro&size=200", + "screenshotURL": "data/images/images-8820rb4t44itmoalq-thumbnail.jpg" + }, + { + "id": "oQzXFjHPCApgXWGq3", + "name": "Simple Spheres", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-er8x7nsxo8aq0bsl7-thumbnail.jpg" + }, + { + "id": "oXxzi5z7poEFFGEkQ", + "name": "K Circle", + "username": "richtowns", + "avatarUrl": "https://avatars.githubusercontent.com/richtowns?s=200", + "screenshotURL": "data/images/images-j3lbil9y1c6lfntic-thumbnail.jpg" + }, + { + "id": "oYPxM5nT76rkag9tD", + "name": "popo", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-munr2t4ylovpstktl-thumbnail.jpg" + }, + { + "id": "obL3NXCsSpjdP4EX9", + "name": "plasma grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-j8qy58ya4z0i3do4v-thumbnail.jpg" + }, + { + "id": "ojPoZ3NHuEgtAPr3Z", + "name": "HexGrid", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-174t4idwngdudj5ho-thumbnail.jpg" + }, + { + "id": "p9DefxpaJdaYTQAWZ", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-0r2yq8kg07dpjouh7-thumbnail.jpg" + }, + { + "id": "p9pecgaEBJ3kz5r7g", + "name": "red ring", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-yd4p2szloec3drzfm-thumbnail.jpg" + }, + { + "id": "pCCMuqhftZ6T2yx6X", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dwadzg1f1m0fmz315-thumbnail.jpg" + }, + { + "id": "pJM2rdtSkSBnEkMeG", + "name": "ping", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3iomdyru04pexyw7p-thumbnail.jpg" + }, + { + "id": "pfvzcjCrHYCpRDiaz", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-q6m6c0pnixfb796e2-thumbnail.jpg" + }, + { + "id": "puW9t4JQ9LnRbMkTK", + "name": "666wired x23", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-darlod3nyeduhkm4a-thumbnail.jpg" + }, + { + "id": "pubHuPRcYrgB8xLXg", + "name": "wav", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-uncb3clud2pql0sww-thumbnail.jpg" + }, + { + "id": "q4fMv7cFv8FYfDYw9", + "name": "Pump Woofer", + "username": "jairhumberto", + "avatarUrl": "https://secure.gravatar.com/avatar/b39c05ec440599cda2aa819673a481cf?default=retro&size=200", + "screenshotURL": "data/images/images-yw0yop1xfz5njax2r-thumbnail.jpg" + }, + { + "id": "q4sbfetgGafn5By2Z", + "name": "trippy", + "username": "anon", + "screenshotURL": "data/images/images-6jaYFoyMEwovP2wgZ-thumbnail.png" + }, + { + "id": "q9Fv9bJfBujZM8GFF", + "name": "banan", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gkklitq3dttooe1n7-thumbnail.jpg" + }, + { + "id": "qB4krC8RnH5HEFLww", + "name": "Cercle Tunnel", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-ekjnf41sgez49ne0z-thumbnail.jpg" + }, + { + "id": "qKGoihMGbyYe64imT", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-vvq2sdbr9vj2gigoc-thumbnail.jpg" + }, + { + "id": "qL56Nfe9M96bTaqYj", + "name": "perc2xxx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ulv24gc01elrggl6p-thumbnail.jpg" + }, + { + "id": "qRGKhfL3wRe3KqPob", + "name": "ringu", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-7a4kx1l8omlierqtt-thumbnail.jpg" + }, + { + "id": "qSRWCBPJwjsffzsKb", + "name": "vibrations", + "username": "mark", + "avatarUrl": "https://lh3.googleusercontent.com/-Lca4UGau1OU/AAAAAAAAAAI/AAAAAAAAAI4/dSttspxaINs/photo.jpg", + "screenshotURL": "data/images/images-cm496gm3zn7w4pmpm-thumbnail.jpg" + }, + { + "id": "qShjbKXDhES9fS66n", + "name": "rage", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-2jgp30uettorasyt2-thumbnail.jpg" + }, + { + "id": "qjLQadWFssvPKLLCN", + "name": "80smovielogo", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-up351nmrh7g6tkdzj-thumbnail.jpg" + }, + { + "id": "qrDZ3LmPSpDcsogS3", + "name": "Rose Quartz", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-l8b5lyp1yu629cgp4-thumbnail.jpg" + }, + { + "id": "r7tpZqAYFwZsQarPw", + "name": "Mesh Reprojection", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-bx45df8qlkhztfhrk-thumbnail.jpg" + }, + { + "id": "rBqQqL5j4orqHbrPz", + "name": "tweaked pointsprite plasma", + "username": "anon", + "screenshotURL": "data/images/images-eha59va25847naeip-thumbnail.jpg" + }, + { + "id": "rY5QZeD8g5uu2MF75", + "name": "pointsprite plasma", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9ej646lhpae1eczpe-thumbnail.jpg" + }, + { + "id": "rZcr6zk3jJKzwJ2mD", + "name": "slash", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-6gr89azxk9gli8n8b-thumbnail.jpg" + }, + { + "id": "ruRxM7a7ngW6o8SPY", + "name": "balls", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-i6gmagfend2kt7ldd-thumbnail.jpg" + }, + { + "id": "s7zehgnGsLh5aHkM8", + "name": "volum", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-5haeru13b75d6vkpy-thumbnail.jpg" + }, + { + "id": "s9xXnsxy4wkR3kkSc", + "name": "splot", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-wf3ynpo84zmn6hf0r-thumbnail.jpg" + }, + { + "id": "sHdHwHQ9GTSaJ9j99", + "name": "headrush", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4xkxk1n631eieg75l-thumbnail.jpg" + }, + { + "id": "strzQyhv3SnhYWLrs", + "name": "residualfill", + "username": "anon", + "screenshotURL": "data/images/images-j4dujddvhfkve6gva-thumbnail.jpg" + }, + { + "id": "t9afzWHetyWR3bZSB", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-fgqh8smjxsftw86md-thumbnail.jpg" + }, + { + "id": "tF4ynbNrnHawnus9p", + "name": "Learn Vertex Shaders", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zodq1oypukyv9x70e-thumbnail.jpg" + }, + { + "id": "tjBqEBhdzGA4XCiWr", + "name": "cubes2", + "username": "matt", + "avatarUrl": "https://lh4.googleusercontent.com/-jtcouKXDqq0/AAAAAAAAAAI/AAAAAAAAA7c/aDTXLcXoDnc/photo.jpg", + "screenshotURL": "data/images/images-qyiuebc2yhez3fevp-thumbnail.jpg" + }, + { + "id": "tw3mJeCpEXQ6gMz2q", + "name": "pointsprite plasma", + "username": "myownclone", + "avatarUrl": "https://avatars.githubusercontent.com/MyOwnClone?s=200", + "screenshotURL": "data/images/images-bzox4m0o3l9cie99k-thumbnail.jpg" + }, + { + "id": "u9hvPc2WxibcTmT6F", + "name": "hexit", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-qtgkigrawla1fyuu4-thumbnail.jpg" + }, + { + "id": "uGJhdfKrAj8tkovpA", + "name": "Lines Experiment 1", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-wxu1z6zji5saekvh7-thumbnail.jpg" + }, + { + "id": "uHMnt4GHAXCSCeQyM", + "name": "Intro-presentation", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-5tq9t1g30u7jlidt7-thumbnail.jpg" + }, + { + "id": "uPwKetxzwcL2PFZd6", + "name": "thumpy", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-5nuxabtwsyxdzgvvw-thumbnail.jpg" + }, + { + "id": "uQNhYXZtikXJR6MBz", + "name": "crystal iriszhr (1)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4jzzaz5i4ljrufpqc-thumbnail.jpg" + }, + { + "id": "uQkpXdAa4ABNPNthi", + "name": "test", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-n32ll286twu6hnngo-thumbnail.jpg" + }, + { + "id": "uQsrjwoCeqSersLA9", + "name": "VM in GPU", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1yecq3mjrnnzlw2e2-thumbnail.jpg" + }, + { + "id": "uZ4ELyQ7j8J8X5xJg", + "name": "julia point cloud", + "username": "kabuto", + "avatarUrl": "https://secure.gravatar.com/avatar/e678fef714d5460c8f9ce2723842fd19?default=retro&size=200", + "screenshotURL": "data/images/images-zmmvovl7lp9166ob0-thumbnail.jpg" + }, + { + "id": "ueTjuJf66xFbmgcBo", + "name": "bounder2", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-rg0mww76q1od7op8e-thumbnail.jpg" + }, + { + "id": "uqWtxuQpEkfxqWXCK", + "name": "wired", + "username": "kabuto", + "avatarUrl": "https://secure.gravatar.com/avatar/e678fef714d5460c8f9ce2723842fd19?default=retro&size=200", + "screenshotURL": "data/images/images-kx3hgkhqoxqwoqspq-thumbnail.jpg" + }, + { + "id": "ut2hNmEtGzvzi7Rwj", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-i0w432s0q7axj84rm-thumbnail.jpg" + }, + { + "id": "ut7msYoHpzuRZjDyc", + "name": "penguin thoughts kmachine test1", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-8lf6fgfzzcxp6rk2w-thumbnail.jpg" + }, + { + "id": "uuHumiKPEiAKNPkEA", + "name": "hexalicious", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-esq7vkjrkb1apsw6g-thumbnail.jpg" + }, + { + "id": "vXFhLDE2hgAm9bXD8", + "name": "pointsprite plasma", + "username": "anon", + "screenshotURL": "data/images/images-jslty9hjtq8kykp1u-thumbnail.jpg" + }, + { + "id": "vcYrT69DDanvyFBTr", + "name": "Garden Fireworks", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-epsepn196c6cvr6te-thumbnail.jpg" + }, + { + "id": "vixRSiPMAiZ6AmgNA", + "name": "Simple Fractal", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-qx88yqxi4r69da57f-thumbnail.jpg" + }, + { + "id": "vqBN6kLpxjBHGRvz8", + "name": "K Machine letter example", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-gyixzj9zlau9rq139-thumbnail.jpg" + }, + { + "id": "w39M6FR7PCQctz5bN", + "name": "sockwaves", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-txzps8fu72q7yb8ri-thumbnail.jpg" + }, + { + "id": "w5qTDiEqtC8Tri6tv", + "name": "flowerpower", + "username": "anon", + "screenshotURL": "data/images/images-js9skd9fqg6rbavbw-thumbnail.jpg" + }, + { + "id": "wHYadcJcCHsjn3cvr", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-768cr750wf8j84seq-thumbnail.jpg" + }, + { + "id": "wTaKE9X796qNFqgEM", + "name": "neurovelho", + "username": "visy", + "avatarUrl": "https://avatars.githubusercontent.com/visy?s=200", + "screenshotURL": "data/images/images-NujseYpQTMRhrFdox-thumbnail.png" + }, + { + "id": "wjw5e9cStNy6XAxH4", + "name": "unnamed", + "username": "visa-valtteri", + "avatarUrl": "https://lh4.googleusercontent.com/-LZnRtqD3Cf4/AAAAAAAAAAI/AAAAAAAAEyw/CB7DLj_ThQA/photo.jpg", + "screenshotURL": "data/images/images-df9eewy527rs9g2ik-thumbnail.jpg" + }, + { + "id": "wmrGHPZAroXn6EtZz", + "name": "prickley", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-TNJTEJo42ATm7SLyG-thumbnail.png" + }, + { + "id": "wnJ3yTrs7ZQXEmwRM", + "name": "Crap", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-whitf9c4w3fcztyod-thumbnail.jpg" + }, + { + "id": "wyoNwyHa6hTbkGCKW", + "name": "point cloud vs spheres", + "username": "anon", + "screenshotURL": "data/images/images-wp7spqlf2jnoox7yz-thumbnail.jpg" + }, + { + "id": "x3EiTmLXs7z5qb9Mm", + "name": "hypercuber tesserX", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x3l94x6qafru2eyqr-thumbnail.jpg" + }, + { + "id": "xG6tZRJFAL9i7pWED", + "name": "sloosh", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-as21cf4f53bkqwnlw-thumbnail.jpg" + }, + { + "id": "xTf82BxK4LCcHNgq6", + "name": "Shadertoy Adapter", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-QXPY4MpY3jC7xdnPj-thumbnail.png" + }, + { + "id": "xWrTfrQ2whCaGaGWK", + "name": "crystal dancer (mouse.xy)", + "username": "zugzwang404", + "avatarUrl": "https://secure.gravatar.com/avatar/fec4f7164a172e58419d6bff6d7368b3?default=retro&size=200", + "screenshotURL": "data/images/images-ul6ulypkf8ht9prkc-thumbnail.jpg" + }, + { + "id": "xgrH8Ga7yhuDYom6t", + "name": "flowerworm", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-wxka8k2x30de5c2kx-thumbnail.jpg" + }, + { + "id": "xizoh3Kx86QeHAyuc", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-zq96xq6jdt5kdfjrj-thumbnail.jpg" + }, + { + "id": "xvg4vyvfWjCvKZQfW", + "name": "fuzeball", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-6lhwgmyfp2swf2n4k-thumbnail.jpg" + }, + { + "id": "xxhTPvXjTWPCPLM2v", + "name": "Knotted Candy", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-8ezxpzyq1edzasubg-thumbnail.jpg" + }, + { + "id": "y2BcbbWxcksEGQYhq", + "name": "sleep", + "username": "spotline", + "avatarUrl": "https://i1.sndcdn.com/avatars-000016730527-scovfj-large.jpg", + "screenshotURL": "data/images/images-zoron4bjebo5tpvwo-thumbnail.jpg" + }, + { + "id": "y3CAW8hkHFwKx9Lct", + "name": "unnamed", + "username": "anon", + "screenshotURL": "data/images/images-xbeoqdrn0rqzyvj4j-thumbnail.jpg" + }, + { + "id": "yPDzQv2JwJ9p4NCgQ", + "name": "wtr", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-k4u64p7tdpveznjs6-thumbnail.jpg" + }, + { + "id": "yWSCEoXnFJxXAZyBo", + "name": "ball", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-q6rkf9vyy5rlvfuc4-thumbnail.jpg" + }, + { + "id": "yX9SGHv6RPPqcsXvh", + "name": "discus", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-fjx0vwok3a8qb4msd-thumbnail.jpg" + }, + { + "id": "yXNXFmLjcRjjYtgze", + "name": "residualfillattack", + "username": "anon", + "screenshotURL": "data/images/images-6b02jz4hsi46kwu3q-thumbnail.jpg" + }, + { + "id": "yey7qrMtmhZZhq2K6", + "name": "hexit2", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-2qmqzc0hzw52dl256-thumbnail.jpg" + }, + { + "id": "ysh84kFrt5dxksGM9", + "name": "ball", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-puebuqv85xb5s9pai-thumbnail.jpg" + }, + { + "id": "yz73Hm3Fq5SyrZppP", + "name": "rings 2", + "username": "mark", + "avatarUrl": "https://lh3.googleusercontent.com/-Lca4UGau1OU/AAAAAAAAAAI/AAAAAAAAAI4/dSttspxaINs/photo.jpg", + "screenshotURL": "data/images/images-2uja5t1v2hdxj03qf-thumbnail.jpg" + }, + { + "id": "z5Wj5jyFwYiwezjLv", + "name": "thumpy forest - quick test", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-mm9ouz23izd7d93sl-thumbnail.jpg" + }, + { + "id": "zB3fsZSeqTdYCbzGZ", + "name": "Lessons", + "username": "athega", + "avatarUrl": "https://secure.gravatar.com/avatar/ac866057ea99c21292a071d08fadd152?default=retro&size=200", + "screenshotURL": "data/images/images-1maml5lww0hiuzztq-thumbnail.jpg" + }, + { + "id": "zBGJ6RhGK6EAJvuHL", + "name": "Knotted Candy", + "username": "anon", + "screenshotURL": "data/images/images-ff44ywavd9pekey1z-thumbnail.jpg" + }, + { + "id": "zFsctippt7CPRwvWh", + "name": "bounder", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wmgb4w3al8oij4ebe-thumbnail.jpg" + }, + { + "id": "zGGRYEyPC9E6CWEWD", + "name": "666wired x3 4k", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qxz9v9vqe2djeo16x-thumbnail.jpg" + }, + { + "id": "zHorsBAipg3PMpwaL", + "name": "Barnsley Fern", + "username": "P_Malin", + "avatarUrl": "https://pbs.twimg.com/profile_images/2157402471/Profile_200x200.png", + "screenshotURL": "data/images/images-x3v98ibaibctnbdoe-thumbnail.jpg" + }, + { + "id": "zQMGMroYDChPD5qbu", + "name": "raymarched cube", + "username": "tdhooper", + "avatarUrl": "https://avatars.githubusercontent.com/tdhooper?s=200", + "screenshotURL": "data/images/images-k8eljnva3nai95w1j-thumbnail.jpg" + }, + { + "id": "zSahx3yerpFqrYbQM", + "name": "xmas tree", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vdys8384bv8axgl31-thumbnail.jpg" + }, + { + "id": "zd2E5vCZduc5JeoFz", + "name": "cubespace", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-92yttslpq6f0cneok-thumbnail.jpg" + }, + { + "id": "zr3rcCnA3sx954XPa", + "name": "666wired x2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-635us2bt8hg7knjyx-thumbnail.jpg" + }, + { + "id": "sxuyK3fxSLJbouBDN", + "name": "dot-line", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9pymiz6eysskllya2-thumbnail.jpg" + }, + { + "id": "LPS8BeAeCDomFZXzX", + "name": "omg", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-qi5beqf99iupnv4ko-thumbnail.jpg" + }, + { + "id": "7Bkg55Y8SPEtDJedE", + "name": "ponpons", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-0006xsweyopsb2bcg-thumbnail.jpg" + }, + { + "id": "zGqZP2vWAf3ByWFKk", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ir899a0g2ct9xz9xa-thumbnail.jpg" + }, + { + "id": "iqkc2EX6jbhg7NbT4", + "name": "hello shader", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lw649r8isy4sqa324-thumbnail.jpg" + }, + { + "id": "axgq9WTTCr84iSYkv", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-g62klv9uyy23pkrb9-thumbnail.jpg" + }, + { + "id": "GhwS34Ee6m4sZemgY", + "name": "circlepower K FURR", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2yjxcp5g027esm5eh-thumbnail.jpg" + }, + { + "id": "zmcNCBEkGnxZeWcer", + "name": "circlepower K FURR2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-oizi95meofi61xe41-thumbnail.jpg" + }, + { + "id": "nE9ZSZiLSQQpqKTjE", + "name": "circlepower K FURR2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tfebtw7l8zebc1dyw-thumbnail.jpg" + }, + { + "id": "dTLifasffbDKw6x9Q", + "name": "circlepower K FURR2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-o4u4rn8qh1zv06q0t-thumbnail.jpg" + }, + { + "id": "8XECwReKrWfyzzRsj", + "name": "circlepower K FURR22", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6gxty3rh2mv80eerb-thumbnail.jpg" + }, + { + "id": "q4uaR7yAp5C3rEQ5u", + "name": "circlepower K FURR22", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-klrhqtfqqqfqj48dk-thumbnail.jpg" + }, + { + "id": "vEvaCS9R8ehpnLZPj", + "name": "circlepower K FURR22 bxy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-aybrsdt9f6loildph-thumbnail.jpg" + }, + { + "id": "n7ehxG4s62oNWw5S3", + "name": "circlepower K FURR22 bxyr", + "username": "♫♪♭♮{{triplesix g}}♯♪♫", + "avatarUrl": "https://i1.sndcdn.com/avatars-000125357779-rcbpr2-large.jpg", + "screenshotURL": "data/images/images-mncdi9e3zm7j55kau-thumbnail.jpg" + }, + { + "id": "4uK5xMjmxCZaGBewc", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gwrffjwcfdyraxj0u-thumbnail.jpg" + }, + { + "id": "GvMwNCPsyjoPaL9fj", + "name": "fuzeball", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-aawreobqhin5nx66d-thumbnail.jpg" + }, + { + "id": "qbZNX3pQENCDwdJvA", + "name": "circlepower K FURR233", + "username": "♫♪♭♮{{triplesix g}}♯♪♫", + "avatarUrl": "https://i1.sndcdn.com/avatars-000125357779-rcbpr2-large.jpg", + "screenshotURL": "data/images/images-kvxcyyfdexw0e8epj-thumbnail.jpg" + }, + { + "id": "BxXCFpZxu7eFdhiyP", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ygc8kkhpgl24ivilu-thumbnail.jpg" + }, + { + "id": "G52W2EuQGvzn2m9mT", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mpgjex459hp0jz7id-thumbnail.jpg" + }, + { + "id": "B9wG9rDf7i77ZyAbL", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hcw1cvqla6p0qvk8p-thumbnail.jpg" + }, + { + "id": "6kjKSErWMZSF6xj6c", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ntrk7jrj1606vppx2-thumbnail.jpg" + }, + { + "id": "J2FKQo6uXQ6EykLPi", + "name": "circlepower K FURR2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-675ntls69829lgbdo-thumbnail.jpg" + }, + { + "id": "vG8pMALDuaEu8S5oL", + "name": "circlepower K FURR2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-09wnpki6g5h780k5d-thumbnail.jpg" + }, + { + "id": "MegMNJwR7hpTYFf2G", + "name": "K reptile void ", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-4cql116znfu09o6gm-thumbnail.jpg" + }, + { + "id": "KmNbwStFkxfRGJ2Bs", + "name": "K reptile void 2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-hvgqy0t44i8h3o9gr-thumbnail.jpg" + }, + { + "id": "HFT5yR2hvCfsLXPbM", + "name": "swooneer", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-eg3v13cpnvod9kyhi-thumbnail.jpg" + }, + { + "id": "WBgJQrq6H2sZ2gzyb", + "name": "test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vw8arwvvehovcvucq-thumbnail.jpg" + }, + { + "id": "ALErfYvkmdWzuqg7M", + "name": "Dueling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1zie0rskjasq8mekq-thumbnail.jpg" + }, + { + "id": "3QE3h3tQJqzMMqEZw", + "name": "Twisted Torus", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-thuo3n4rfsgpwdpni-thumbnail.jpg" + }, + { + "id": "SqctCGQnp8j6NNnSE", + "name": "projection", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7enfr76gdo3g4d4fi-thumbnail.jpg" + }, + { + "id": "HYQNJSjDiWBW4zafP", + "name": "projection", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wu4v9xhedy400sgnx-thumbnail.jpg" + }, + { + "id": "eh4QC67q3gssnkYYv", + "name": "noise tormented structure", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-8t8i8w63y4p16c9b6-thumbnail.jpg" + }, + { + "id": "JGbg2hhv422MBQhyP", + "name": "antagonism", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-jgilrxlxy6vfio4p6-thumbnail.jpg" + }, + { + "id": "qRP5HEWEavfkjMpzp", + "name": "fractal blue", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-m8hvz5l4uzqyfvm1e-thumbnail.jpg" + }, + { + "id": "R7mtRmP2cCPdJk6Bv", + "name": "crystal irisz (1xxx)rwpoint", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c022mpwshr8a65zpf-thumbnail.jpg" + }, + { + "id": "Xr7T9xN4h3JyWhJ4M", + "name": "glass of colors", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-0ducgjhu9xqhgw85j-thumbnail.jpg" + }, + { + "id": "G75PEGQA9JzRQKx4s", + "name": "feels like debris", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-03l6o4bw8l0a1f7ms-thumbnail.jpg" + }, + { + "id": "ynpWP4AEw3HbibsqM", + "name": "feels like debris 2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-t69dm189s669r44dc-thumbnail.jpg" + }, + { + "id": "6nxqs9sKqwTpWK2Sf", + "name": "unnamed", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-zly24ubsbuydlpeku-thumbnail.jpg" + }, + { + "id": "oG23xNxiPkfCLufzk", + "name": "widr", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-x8m9efaqldxxkoip3-thumbnail.jpg" + }, + { + "id": "sEDKEFtcGxZoxbis8", + "name": "codez", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-jqv31s11csws8yo8t-thumbnail.jpg" + }, + { + "id": "txxXeHf8AFDuZzxWD", + "name": "codez", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-vr3awyne9z1klpayk-thumbnail.jpg" + }, + { + "id": "T6vQzhdcHjvaZBNuN", + "name": "vel bound peng squid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-we3e1852e8ijmcoe7-thumbnail.jpg" + }, + { + "id": "Ffs2irmibSP7oFuTu", + "name": "124b sin city", + "username": "shu", + "avatarUrl": "https://secure.gravatar.com/avatar/6dc8be209aeec21dc99956c1188c1b05?default=retro&size=200", + "screenshotURL": "data/images/images-y4grifiszavh7h2tz-thumbnail.jpg" + }, + { + "id": "xrRijEDXFe2NwH79m", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-q9k2xzpbxula5yhub-thumbnail.jpg" + }, + { + "id": "ZWM6nHwzqNcfrMCbQ", + "name": "My programing class", + "username": "jc", + "avatarUrl": "https://lh6.googleusercontent.com/-wxkmpL8A-s0/AAAAAAAAAAI/AAAAAAAAAFg/cZuqYtkpOCI/photo.jpg", + "screenshotURL": "data/images/images-fewh20hnqgtenzrlm-thumbnail.jpg" + }, + { + "id": "DMsF68oEXEH2wGgAT", + "name": "Bonito", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ak61ilibqwafyxjag-thumbnail.jpg" + }, + { + "id": "cprWonx4tN8nMgQHt", + "name": "cosa 1", + "username": "anuar", + "avatarUrl": "https://graph.facebook.com/1812741555404077/picture?type=large", + "screenshotURL": "data/images/images-6xf6be9n2fduyi78u-thumbnail.jpg" + }, + { + "id": "BQuWCvhCBBif7Zzmh", + "name": "circle", + "username": "sergio", + "avatarUrl": "https://lh3.googleusercontent.com/-ucGyGVQ6Moo/AAAAAAAAAAI/AAAAAAAAAAA/LuTuKwPIKbA/photo.jpg", + "screenshotURL": "data/images/images-klahmu0tk9exauxep-thumbnail.jpg" + }, + { + "id": "RZLFdeaBCJsCmp6Qg", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ze7ujesz1usfvmy2g-thumbnail.jpg" + }, + { + "id": "TZ58peuETd4DLzbYC", + "name": "circles", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xsqe39n7zycs1psmt-thumbnail.jpg" + }, + { + "id": "DjWJQf8DFiu4EnvvZ", + "name": "espiral", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-swiaspyv4bv1iude0-thumbnail.jpg" + }, + { + "id": "uwSnj6nQHdjH7dR7F", + "name": "espiral", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9odxn8ccocloodw7s-thumbnail.jpg" + }, + { + "id": "WYLzRpCTKdWsrCPkZ", + "name": "It's So In Vogue To Be Dead", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0enzij7j6btlo410r-thumbnail.jpg" + }, + { + "id": "Wo2pq9yKds3mQYWaX", + "name": "circlepower K FURR233x", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-ce3lagigslp9dx0wl-thumbnail.jpg" + }, + { + "id": "78PSuMWSJy9qmzeCm", + "name": "snêky", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-20qewxa1u8eb5h6m8-thumbnail.jpg" + }, + { + "id": "MZedxmNrAz7p828Eu", + "name": "circlepower K FURR233x", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-94p6l12c48ynbu428-thumbnail.jpg" + }, + { + "id": "pRZmCzjhGZcbAydiQ", + "name": "circlepower K FURR233x", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-u1matgvqlff34c2pb-thumbnail.jpg" + }, + { + "id": "JscBDhcAFypHdaMCm", + "name": "Twisted Torus", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-yr524hzhakik4qllw-thumbnail.jpg" + }, + { + "id": "yjygGt83hjC8LDH7Z", + "name": "flow", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-z56kzg0iij262ty90-thumbnail.jpg" + }, + { + "id": "eyJnMiGS99BJjeDGt", + "name": "K Machine letter example", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-o8ne0q4a2mdkma4ti-thumbnail.jpg" + }, + { + "id": "WWd3sxvrHtZpty96D", + "name": "toon chaos1", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-v83g9wskj1yod6e59-thumbnail.jpg" + }, + { + "id": "mp4Z7X2u8Njkoe3Cg", + "name": "K Machine letter example", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-4wd9jpmulv0dvwbpu-thumbnail.jpg" + }, + { + "id": "9JiSBh95g2uDrbJF8", + "name": "Hello, GLSL!", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w23o9pd6e8esszawt-thumbnail.jpg" + }, + { + "id": "RNPaQH4DP4FJeTJZi", + "name": "Hello, GLSL!", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-51ay7b78ym2hx9un9-thumbnail.jpg" + }, + { + "id": "M3TQnRJ4QA4c5vpBc", + "name": "quad test", + "username": "monguri", + "avatarUrl": "https://avatars.githubusercontent.com/monguri?s=200", + "screenshotURL": "data/images/images-j0ouh0mux015s1cot-thumbnail.jpg" + }, + { + "id": "MuxJWoHfp7M47hF8N", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xawswahw5l0n5l9g8-thumbnail.jpg" + }, + { + "id": "HN9a95yqBMftYAsvC", + "name": "test0", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wncl571lmtgu9an87-thumbnail.jpg" + }, + { + "id": "nBFQ8eYqePsxmzozA", + "name": "test0", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2ky8oynlnr8hv1k4x-thumbnail.jpg" + }, + { + "id": "72yf22zZ942pR2Pjn", + "name": "test0", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3y7bvwlpocp9i4yg1-thumbnail.jpg" + }, + { + "id": "nbFWWPZ79M6W6WTNB", + "name": "test0", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-s575sgj7bbw3euy7z-thumbnail.jpg" + }, + { + "id": "6RnXzKXyyfu7NWTyb", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-aauvtmyex59nv1a21-thumbnail.jpg" + }, + { + "id": "jSqNQQKbSrqoB8rrP", + "name": "HexGrid 4 Km", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-thhuqgincpar2u9dd-thumbnail.jpg" + }, + { + "id": "8oJh9QtFGgJksSFFk", + "name": "Terrain Gen Testing Area", + "username": "dreadkyller", + "avatarUrl": "https://lh6.googleusercontent.com/-G0dmKLFbiYU/AAAAAAAAAAI/AAAAAAAAAF8/mdxszvvxhOo/photo.jpg", + "screenshotURL": "data/images/images-p7cx82na0xgz3tqbm-thumbnail.jpg" + }, + { + "id": "7nEqpyeYSLJxH3iCZ", + "name": "BigSwingingSnake", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-bbqcgc7alazjab09v-thumbnail.jpg" + }, + { + "id": "do5csPmmsrqctxz3p", + "name": "BigSwingingSnake", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-rci5cr266wrrzgu70-thumbnail.jpg" + }, + { + "id": "RfQDsEbCqannGyZe2", + "name": "BigSwingingSnake", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-iflh54mfysjelrwja-thumbnail.jpg" + }, + { + "id": "4mzMqjbsbYgxDQKFf", + "name": "moduloi kanssani", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-2xyojbjixuplu0e56-thumbnail.jpg" + }, + { + "id": "8TsxtdLjke5zy5qJu", + "name": "inr2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-moteap00p6y74zl1y-thumbnail.jpg" + }, + { + "id": "XK2y2Cy63Ez45E7pm", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-vmbz8fi0evme0msb6-thumbnail.jpg" + }, + { + "id": "R2FYLbHWTcCWh5PiE", + "name": "blorp", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-1rfxx5odugofg21pg-thumbnail.jpg" + }, + { + "id": "SYLXTDKJmDrAcAiNE", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-rthmchh93i3ckvmwc-thumbnail.jpg" + }, + { + "id": "wt7dgJfnc9ut9a8tk", + "name": "mousebal", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fd3u5k3lbarswitfj-thumbnail.jpg" + }, + { + "id": "3cskmP4veKB962KoC", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-erbpa9mx81dbxqhdc-thumbnail.jpg" + }, + { + "id": "DvSoWkCTBkqg9aKyY", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6z6wd9iqln6frc18u-thumbnail.jpg" + }, + { + "id": "XwmMeBkJu6Bk2vv9o", + "name": "moduloi kanssani", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cedms3b6qdz6p07bo-thumbnail.jpg" + }, + { + "id": "P788bkYrZh4KcFHgQ", + "name": "My programing class", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-261vspphqu4pkrk6s-thumbnail.jpg" + }, + { + "id": "uBNYQJxs6ta546Y5j", + "name": "My programing class", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vcpwm7spg7fbpz5om-thumbnail.jpg" + }, + { + "id": "W7N52DhuhNz27EPxw", + "name": "Ders 1", + "username": "sina5an", + "avatarUrl": "https://secure.gravatar.com/avatar/8ea2eb4d1d5da005eca6f4aae81d9e15?default=retro&size=200", + "screenshotURL": "data/images/images-c4b5x71ah1ff8yjd1-thumbnail.jpg" + }, + { + "id": "MK7bag3KKs9CFJdf8", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-s1dh3yr8f1hnace8o-thumbnail.jpg" + }, + { + "id": "94o6yb7AZ7dW5Lumb", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kdrsu1k8v0pc6sm58-thumbnail.jpg" + }, + { + "id": "xEptEPstqgQAypqks", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-s67r2412iy97671m5-thumbnail.jpg" + }, + { + "id": "3uytcwyYXxGeEvu4D", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sk5xcu1tr96n4mhst-thumbnail.jpg" + }, + { + "id": "GRxBfbR6hkmf9Q3Am", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mxr4zzgx5x34krjln-thumbnail.jpg" + }, + { + "id": "NMXGFyxQwcGWH96PG", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-svh7esczabf87qnnc-thumbnail.jpg" + }, + { + "id": "RzgNiz5tqPwJL9Hzq", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kesq0l8usm1zg015c-thumbnail.jpg" + }, + { + "id": "B6cRz9JjErEA57pG4", + "name": "circling", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fmbfyrv01kuremsjx-thumbnail.jpg" + }, + { + "id": "8MRZuPQnb7riyBLat", + "name": "justlines", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ha3nym2bem840p30p-thumbnail.jpg" + }, + { + "id": "CvsqyaFZq3hPtywor", + "name": "neurovelho2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-b0f76ki6tvlp4lkug-thumbnail.jpg" + }, + { + "id": "SK2zDKBfJ2tqtnSHS", + "name": "neurovelho2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-616lpwq3cb8wr71zk-thumbnail.jpg" + }, + { + "id": "gztz5WvpLypyur8Ls", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-98b83zxz670x08odp-thumbnail.jpg" + }, + { + "id": "mc9ScBATcEnpry3q2", + "name": "slowmess", + "username": "daniel", + "avatarUrl": "https://lh3.googleusercontent.com/-qXZbQEgaXn0/AAAAAAAAAAI/AAAAAAAAA6k/Q8oMgqryECw/photo.jpg", + "screenshotURL": "data/images/images-7i4cmaoy4icia2ibl-thumbnail.jpg" + }, + { + "id": "RRi3txAyxdQDsZW35", + "name": "tornado-quad-triangle-tower-thing", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-29udcfgi4z50blicm-thumbnail.jpg" + }, + { + "id": "MWD3RYNPkSTxNBnw5", + "name": "Spiralis", + "username": "bigmike", + "avatarUrl": "https://secure.gravatar.com/avatar/f6c53f1e06b699fc6a147bcaeef73923?default=retro&size=200", + "screenshotURL": "data/images/images-ag2a6arvji65ixhau-thumbnail.jpg" + }, + { + "id": "MkAt4QQ3RgdpxBAtb", + "name": "fuzzies", + "username": "megaloler", + "avatarUrl": "https://avatars.githubusercontent.com/MegaLoler?s=200", + "screenshotURL": "data/images/images-p4jgj50t04pzggs4z-thumbnail.jpg" + }, + { + "id": "8T4bhdbFF8NqLZ5qJ", + "name": "gyro thingy", + "username": "megaloler", + "avatarUrl": "https://avatars.githubusercontent.com/MegaLoler?s=200", + "screenshotURL": "data/images/images-pxtuem2yes91mm9hc-thumbnail.jpg" + }, + { + "id": "QgXakG4wfDMZ4Au6n", + "name": "cube", + "username": "r21nomi", + "avatarUrl": "https://avatars.githubusercontent.com/r21nomi?s=200", + "screenshotURL": "data/images/images-tqvf2059n0axfkngr-thumbnail.jpg" + }, + { + "id": "CbmGerHritwgbEFvY", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-z0joootz576g53u49-thumbnail.jpg" + }, + { + "id": "2xJgNnQY5FLgHt6qW", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xfk8uvtu1nj4k6qwu-thumbnail.jpg" + }, + { + "id": "jtFAXNm8ngq4kTFhA", + "name": "Circle", + "username": "r21nomi", + "avatarUrl": "https://avatars.githubusercontent.com/r21nomi?s=200", + "screenshotURL": "data/images/images-ri2grzcx1zd0v5qmy-thumbnail.jpg" + }, + { + "id": "b6di9dPczq6ZikLtM", + "name": "Torus Bulb", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cg2i9848v9l6ikhdm-thumbnail.jpg" + }, + { + "id": "GxbSZ33B9swmxAmdT", + "name": "notmizu", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-7mjkmkjjgdq7981th-thumbnail.jpg" + }, + { + "id": "SAToMsqc7PybLLEc2", + "name": "Pics Danse", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-4lq2zemdh1lxl19ve-thumbnail.jpg" + }, + { + "id": "rMKz3eBbT4NuADdZY", + "name": "PseudoRandomParticles", + "username": "shtrompel", + "avatarUrl": "https://lh4.googleusercontent.com/-zzOobLO0ab8/AAAAAAAAAAI/AAAAAAAAANE/T3yiwRxnSlA/photo.jpg", + "screenshotURL": "data/images/images-jzyzpjjyy5qz9j5im-thumbnail.jpg" + }, + { + "id": "FkZcSiHXEHreJBCH9", + "name": "my_tutorial", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-k9jtdeqibi5myicse-thumbnail.jpg" + }, + { + "id": "7xeGPqZaZSLDvKWHt", + "name": "raymarched cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cki246ynuklbc9fxo-thumbnail.jpg" + }, + { + "id": "pSfPvCpxgd22izj4C", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-eumxgg61iadmtn6pj-thumbnail.jpg" + }, + { + "id": "ghH8XPT3kfdig8cXX", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-s2f44s3t1x0j0o48f-thumbnail.jpg" + }, + { + "id": "MFG9beZgKvqHQdo9F", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-j8vrxqccftc2jledk-thumbnail.jpg" + }, + { + "id": "4TP9W3xndZ2YW8kAr", + "name": "octomantis", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-hca5rw70td0cmcnl5-thumbnail.jpg" + }, + { + "id": "uPu4TCDWfH27uwcgs", + "name": "octomantis", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-1nvrtkr53rrvptp6i-thumbnail.jpg" + }, + { + "id": "CTzsP7M5MfkwZGXy2", + "name": "spiderweb spheres every day", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5aqkk347svcobzgje-thumbnail.jpg" + }, + { + "id": "LX4SGokNFQgLciwnK", + "name": "Torus Bulb", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9dmzaqnktr5cdqip7-thumbnail.jpg" + }, + { + "id": "sYBECGM9gRBccnwPb", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-rcrkuggsqkoe1a5gt-thumbnail.jpg" + }, + { + "id": "2pccx6pQfk6skHLQG", + "name": "quad test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-40ivsbfnej7f891u6-thumbnail.jpg" + }, + { + "id": "fwuLjHMQenJtNXJxZ", + "name": "quad test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w1yxuppkkuajbilto-thumbnail.jpg" + }, + { + "id": "jC6yjCA9eDW8oasNA", + "name": "quad test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4qyiacp8a0c2r682k-thumbnail.jpg" + }, + { + "id": "CBDvmeprw78fMTgQ4", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tzcb4aj7f66su6pfm-thumbnail.jpg" + }, + { + "id": "wCMaWve5ErdStTm5C", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wl6vjqljppr9wlmt5-thumbnail.jpg" + }, + { + "id": "nxDSonR2aWTKY6XYt", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zf9u8zro24oxqnzb4-thumbnail.jpg" + }, + { + "id": "ob22bGQDdRk6wsWTw", + "name": "rectangle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-82avy3h71xe1w9kqc-thumbnail.jpg" + }, + { + "id": "dZFJfYQQ8kmuoFFpi", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w040z10xyhncokxn3-thumbnail.jpg" + }, + { + "id": "7PpvqJmgJR7ALoJfa", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jbfdh5g32wc9zcooo-thumbnail.jpg" + }, + { + "id": "JDeTHnXLqGLsoocEr", + "name": "Quad", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bdmm9c03bmu9g9xvr-thumbnail.jpg" + }, + { + "id": "bgatWdfJ85SuY4Fn3", + "name": "French Lorenz Attractor", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-u17mun28yzgn6n4u3-thumbnail.jpg" + }, + { + "id": "pXFLLtyZTzr6G4BSt", + "name": "mapped sea", + "username": "優斗", + "avatarUrl": "https://lh6.googleusercontent.com/-7lDk3Xe1fns/AAAAAAAAAAI/AAAAAAAAxfY/U4fHGcEU_pQ/photo.jpg", + "screenshotURL": "data/images/images-sdzr9m42nihvb188f-thumbnail.jpg" + }, + { + "id": "ZfE8NGNHiwufD7MPr", + "name": "octmantid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-oiqcciwboto9vgl2b-thumbnail.jpg" + }, + { + "id": "TaRwiuErKL5fkN24p", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-urg0yvvgn6s8zpuh8-thumbnail.jpg" + }, + { + "id": "PdyGqhyQKndEoHwaa", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0hxbw9nfgttj88b5d-thumbnail.jpg" + }, + { + "id": "zNMwxDHLmvHRPQBpm", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xui6xluvw9me8sjmp-thumbnail.jpg" + }, + { + "id": "2WtKojEgxqkRD7ExF", + "name": "notmizu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-btwsj92fdnd53q1lu-thumbnail.jpg" + }, + { + "id": "6zJfYSooxERRtZtbe", + "name": "Loopy", + "username": "aaron1924", + "avatarUrl": "https://secure.gravatar.com/avatar/401c5d5fc2a9202f44ee18595001dbac?default=retro&size=200", + "screenshotURL": "data/images/images-0cu058nnfe8khv773-thumbnail.jpg" + }, + { + "id": "oJEAooRzirpb8qcPe", + "name": "ShaderDough", + "username": "aiekick", + "avatarUrl": "https://secure.gravatar.com/avatar/9423fa0d99c42e44e2b7d18c6f88b041?default=retro&size=200", + "screenshotURL": "data/images/images-h1gh8djesgxas9aba-thumbnail.jpg" + }, + { + "id": "aW7ux7BBYH5aNYM6h", + "name": "triangle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u6crmgza45c3fkpmr-thumbnail.jpg" + }, + { + "id": "FAsmmhzQ9syJzXwzR", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x7c5f45fsmlikex0j-thumbnail.jpg" + }, + { + "id": "wFdw32QXQhDAXDLmi", + "name": "vibrations", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1xhkzzq9gmxbok4ae-thumbnail.jpg" + }, + { + "id": "MA9L7t9wKoSZh4sHG", + "name": "danix", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w24a9rashrfihe8ni-thumbnail.jpg" + }, + { + "id": "95ZMaZireKi2qhi6L", + "name": "ads", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zigubmm0a5gmrurfv-thumbnail.jpg" + }, + { + "id": "748RN8qRjrDrtSGy2", + "name": "Triangles", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tkvdkjui9l6ilbml3-thumbnail.jpg" + }, + { + "id": "JtvN2gq9PiiSdwvHG", + "name": "vxwavy-01", + "username": "teraspora", + "avatarUrl": "https://secure.gravatar.com/avatar/ee48754754126a1abee9056ee99b25c4?default=retro&size=200", + "screenshotURL": "data/images/images-on9qz63amyzwgmlgu-thumbnail.jpg" + }, + { + "id": "NTmBiN65MW5gE5nBQ", + "name": "flower", + "username": "yonatan", + "avatarUrl": "https://secure.gravatar.com/avatar/c7fabc219ab011fe8a1bd0590bcbcbd5?default=retro&size=200", + "screenshotURL": "data/images/images-07om8jwk9kc6qd3b5-thumbnail.jpg" + }, + { + "id": "fKYmuHmgGeNTPniPK", + "name": "strobes", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bxd8b6b6r9ie6abhy-thumbnail.jpg" + }, + { + "id": "TiyZJh7nekQSquxTK", + "name": "heightfield plotter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ss07xal3icapvzy1u-thumbnail.jpg" + }, + { + "id": "jsKeJ8QviCT2KuxC4", + "name": "heightfield plotter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-rx1hi7qayn3soj0v8-thumbnail.jpg" + }, + { + "id": "ct6NykQPhqWr3A7aC", + "name": "mountains", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-9nv796me9ziong1hu-thumbnail.jpg" + }, + { + "id": "wP2mJ5GtGxM69FK8H", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w3qmszzue6gzmselp-thumbnail.jpg" + }, + { + "id": "YviLasT7Z62qurfRD", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-96nrt61aq6orp9hfg-thumbnail.jpg" + }, + { + "id": "ocZSLuzxqD2QALRCq", + "name": "omg", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-5n4fxjk8ihu5gikmd-thumbnail.jpg" + }, + { + "id": "iuT7hG7CEXwYqShtA", + "name": "omg drangonz 4Kmachine test", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-3iyb2d3rw612vpk6k-thumbnail.jpg" + }, + { + "id": "ns6ensiZRZmzyi3of", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4ila0kumreip1zb2a-thumbnail.jpg" + }, + { + "id": "LcQbjMTCCKXywR2Rb", + "name": "Test 1", + "username": "sina5an", + "avatarUrl": "https://secure.gravatar.com/avatar/8ea2eb4d1d5da005eca6f4aae81d9e15?default=retro&size=200", + "screenshotURL": "data/images/images-h1uqv5yaqk10zsgli-thumbnail.jpg" + }, + { + "id": "6329mueSGExenMjbN", + "name": "dotp", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-n9yitjbwphsnnxikq-thumbnail.jpg" + }, + { + "id": "tbsksogaFbe66Nn5Q", + "name": "Colorful Circle", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-vu11v8abn6uhybwhz-thumbnail.jpg" + }, + { + "id": "R4LHf9BCLCCDYjbez", + "name": "Circles", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-t2t4mtdh3fevgvkib-thumbnail.jpg" + }, + { + "id": "R4ridvuayrATd6Tgy", + "name": "\"The Circle\"", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-vq5ysgwkfi9qlp64i-thumbnail.jpg" + }, + { + "id": "4h35MHPA2dwXFTJHy", + "name": "3D Sine Wave", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-3vwwhlmtxdzqqq6e2-thumbnail.jpg" + }, + { + "id": "t6BweGrbMSz3TPJen", + "name": "Circle!", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-mh4woavdwdkp2ris5-thumbnail.jpg" + }, + { + "id": "KvFyruyQSz6mfh8jg", + "name": "Wifi Symbol ;)", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-xvsfguth18jdiw431-thumbnail.jpg" + }, + { + "id": "c53eL6yrZ2W47TK9r", + "name": "Animated Points", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-y7dt8bhwiqgbpdcvr-thumbnail.jpg" + }, + { + "id": "j7geNJncnTGfxf9ZX", + "name": "Lines", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-3p9f3xi3zwufkvvpc-thumbnail.jpg" + }, + { + "id": "wJR8MkZGLQe3TZGZD", + "name": "BlockyMusicJumpingUpDown", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zru4mzt8800b6ygij-thumbnail.jpg" + }, + { + "id": "YNECMxcrupx4erT4u", + "name": "Rotating Points! *Again*", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-httx5njufis10g6h6-thumbnail.jpg" + }, + { + "id": "sFwDFQhDYuAh6a6r8", + "name": "swooneer", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dycy6r5tylaz6au0h-thumbnail.jpg" + }, + { + "id": "ivFr7kf8D46ckANG4", + "name": "swooneer2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-p5d1e9l4hxxtb85v8-thumbnail.jpg" + }, + { + "id": "K4mA9KNyq7jBxdzxc", + "name": "swooneer24", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-t27m8crr4986kl8jk-thumbnail.jpg" + }, + { + "id": "BwFoiT5wD28u9HN5Z", + "name": "Line Of Sound", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-sy8yn04hs80vf7ayu-thumbnail.jpg" + }, + { + "id": "DySYKJCWwydRwAsMo", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-sjgkeudy3f8g13p29-thumbnail.jpg" + }, + { + "id": "mb3aos8CkHBeJdfkt", + "name": "intereING", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-v4p2fs6coo6a74xz5-thumbnail.jpg" + }, + { + "id": "dJ7LxrXfRuAz7PLaC", + "name": "shock", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-0ngnjysucizv9vrn3-thumbnail.jpg" + }, + { + "id": "JfcfxquJzYFfZJ5cW", + "name": "pookymelon", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-9go3rjrx6gq5nwx3y-thumbnail.jpg" + }, + { + "id": "o3FG9dxvZ25tAQFxj", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c3ffx2q5l725bn8ov-thumbnail.jpg" + }, + { + "id": "a75Aou3fJGMJjXG5r", + "name": "discinos", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-8j4khplgk7fip14s1-thumbnail.jpg" + }, + { + "id": "rSR7ydT97j9GZb8nH", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dwgp12nto4k49dp5i-thumbnail.jpg" + }, + { + "id": "Jo7swMZWe4vAuJ9Xk", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ucd9nssoh8vlmpz01-thumbnail.jpg" + }, + { + "id": "8rLJCnxAbmAYifi8S", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fvqg1obfpoipl07bj-thumbnail.jpg" + }, + { + "id": "MgC43FZpWMJiPkiAD", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cqhncfbu57hin3bb5-thumbnail.jpg" + }, + { + "id": "aKTdaStpa8ugaemPs", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n9t2z0wfs6yojrtp6-thumbnail.jpg" + }, + { + "id": "42pYPNux6r5SL9ebp", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-y7ztecxahkjvlka4l-thumbnail.jpg" + }, + { + "id": "684pim4aQdsJFnh9S", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5b3rlwn57y8ad9fzz-thumbnail.jpg" + }, + { + "id": "gyyeCLrtNBFwdqzD3", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-a1f9hgrzqp0sw34eq-thumbnail.jpg" + }, + { + "id": "97zwjZPbGFqPWiYZy", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n8m70gchg930xlsxq-thumbnail.jpg" + }, + { + "id": "ef4RfHy9WFPvn43T6", + "name": "color whip", + "username": "mol", + "avatarUrl": "https://secure.gravatar.com/avatar/fe5b47f4d74c95c9b38908469761a86d?default=retro&size=200", + "screenshotURL": "data/images/images-oq0jlttn48s8u0bkz-thumbnail.jpg" + }, + { + "id": "8YgL5b9rsGLmaeQ9Z", + "name": "color chain", + "username": "mol", + "avatarUrl": "https://secure.gravatar.com/avatar/fe5b47f4d74c95c9b38908469761a86d?default=retro&size=200", + "screenshotURL": "data/images/images-nfm87fpv0x37v7uuh-thumbnail.jpg" + }, + { + "id": "ZPpq2oK4fqmPHJnQn", + "name": "Alert", + "username": "daff", + "avatarUrl": "https://lh6.googleusercontent.com/-q6F2s0HNLkg/AAAAAAAAAAI/AAAAAAAAABQ/1TC-kZyFYM0/photo.jpg", + "screenshotURL": "data/images/images-10ghgje8atqyukd46-thumbnail.jpg" + }, + { + "id": "rpsbSKo8heXFgATpg", + "name": "color chain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-klv0dnomdvgrld4uw-thumbnail.jpg" + }, + { + "id": "i2MzwYgwq9p5mJ42Q", + "name": "color chain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-v4151htp019pzzqtb-thumbnail.jpg" + }, + { + "id": "Rj6BcdcHrfFGGfN27", + "name": "alien slinky", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-16qyqfa0chapelt6u-thumbnail.jpg" + }, + { + "id": "rBjrdN2CvsneEkgEk", + "name": "otb", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-tq1ep9crzpm965d5r-thumbnail.jpg" + }, + { + "id": "uDBqerAHTiHEjQMdR", + "name": "otbs", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-40kex9pv9s2ex3dvt-thumbnail.jpg" + }, + { + "id": "NDEYmpHPER7Tg3oiu", + "name": "blorp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-16y8vf1sp40le5ntp-thumbnail.jpg" + }, + { + "id": "sfhL5D5YFCpH6NjJE", + "name": "omgb3", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-ttevduz05ve66tpij-thumbnail.jpg" + }, + { + "id": "A5Eknh4sb38Hw5pjv", + "name": "notmizu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-h22546ujw1qq12heo-thumbnail.jpg" + }, + { + "id": "XtozrhtGYyW42zNSp", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-b9dtwgaui22y3vbn2-thumbnail.jpg" + }, + { + "id": "JERxBfFS5YwaQptZ2", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mir9d4y5l21r1cqew-thumbnail.jpg" + }, + { + "id": "P6oFn7ms5b8ZLioGX", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cveh4hg162nzti7lf-thumbnail.jpg" + }, + { + "id": "MJ9q4A2jzk3t8vEsP", + "name": "alien slinky", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ijdoujod8d0kwu8wl-thumbnail.jpg" + }, + { + "id": "FNwMYwJ2SdwbbSNAN", + "name": "sput", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-n1ff18rw1rhaacsyk-thumbnail.jpg" + }, + { + "id": "sQ6ahpp85mA5CcSNJ", + "name": "Rainbow Menger", + "username": "archer", + "avatarUrl": "https://lh5.googleusercontent.com/-yNdyToHV35U/AAAAAAAAAAI/AAAAAAAABxw/qQAHdzq4gr8/photo.jpg", + "screenshotURL": "data/images/images-w0vu21lgu06bm774x-thumbnail.jpg" + }, + { + "id": "BtkrDbo3o9cSAoXeW", + "name": "the tangled webs we weave", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-qleasf6nnaggwvev5-thumbnail.jpg" + }, + { + "id": "gxSjsgjmXdmzAwFJY", + "name": "Circle of points", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-20zgeykxs42b09us7-thumbnail.jpg" + }, + { + "id": "rSizteb9kM93uMPS6", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-39wjxjg7tqofganqv-thumbnail.jpg" + }, + { + "id": "hffRc9FH8TMNKECkJ", + "name": "bhatsu", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-1pnaycawcq4h45nna-thumbnail.jpg" + }, + { + "id": "NR42qFZjAfmdmw6oR", + "name": "iblot", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-kqun6djr5u11njmpm-thumbnail.jpg" + }, + { + "id": "nrAECwQ8yDDyTrSit", + "name": "petl", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-vulr2yputsk3y1y16-thumbnail.jpg" + }, + { + "id": "ChgRzRLbrFD5wzfZk", + "name": "galax-z", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-qq1r2ih36yr4y9ik5-thumbnail.jpg" + }, + { + "id": "FebsjBDDpXSkBLMfb", + "name": ".planet", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-rmijf94h13te9mqmv-thumbnail.jpg" + }, + { + "id": "GobkkbXq2nNFAHBdB", + "name": "petl", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ns6mhyrw9bb4idybs-thumbnail.jpg" + }, + { + "id": "gb4JMDjdT2iyyCLdE", + "name": "polygons and pikachus", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-ek50l9z239w993xi3-thumbnail.jpg" + }, + { + "id": "v5YKKxvrTF6dp4WTo", + "name": "crpn", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-mogyvp5gi2g3wifz3-thumbnail.jpg" + }, + { + "id": "qwTpNwa5NsAWRHJvh", + "name": "swooneer", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jj8ekqkw55jjvc36c-thumbnail.jpg" + }, + { + "id": "cMqY3Hixco2WwFZo6", + "name": "whirl", + "username": "kcha", + "avatarUrl": "https://secure.gravatar.com/avatar/393683f94ba2c18293b67ab3d3eb6f10?default=retro&size=200", + "screenshotURL": "data/images/images-dopf3pk1pczd3avl5-thumbnail.jpg" + }, + { + "id": "qZCxqkkWDsfd8gqGS", + "name": "dncrs", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-zzze8dozfdddc3swq-thumbnail.jpg" + }, + { + "id": "q2CemJwQMdeCQ7S7P", + "name": "logistic", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-0mbkcuckpr1nxiv4a-thumbnail.jpg" + }, + { + "id": "dBc4DnM9H4zxHwGcH", + "name": "the tangled webs we weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4hh9pvko2o0w647b6-thumbnail.jpg" + }, + { + "id": "dN7ijsBkvACZ3Nv8B", + "name": "the tangled webs we weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-q0m9p48f9qc8h4cx6-thumbnail.jpg" + }, + { + "id": "eiJ4hxesSBMicxFyJ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hid924udtyfkk4yxk-thumbnail.jpg" + }, + { + "id": "RYzSiASv8yuq6xWHJ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-rzignx03v5jbcjfj4-thumbnail.jpg" + }, + { + "id": "7rEgrhT8EQfJ7PDrk", + "name": "the tangled webs I weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nftqfsshw18rawtkl-thumbnail.jpg" + }, + { + "id": "ur9ypANXXdW8q9gmW", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zghf35sd877zzpowh-thumbnail.jpg" + }, + { + "id": "CQs9owSvkdHXMQDA8", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2tuh1q9uama6q4cbr-thumbnail.jpg" + }, + { + "id": "nA8PWiYuAPACxMYNa", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-afq0ggpue985lpxbl-thumbnail.jpg" + }, + { + "id": "B4Eq6Qa7NTqRG2h7n", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hylujrosugfnm5il1-thumbnail.jpg" + }, + { + "id": "EFCx8Coh8CuLXJXue", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bhmn3ezu7leen1q2z-thumbnail.jpg" + }, + { + "id": "a4rkLdCiX5RnyGq6x", + "name": "the tangled webs I weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-pjc745bll0s3r1avc-thumbnail.jpg" + }, + { + "id": "eQWS62YSydqjQaeSx", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-etbgzksbg23pzb57f-thumbnail.jpg" + }, + { + "id": "DAbuH7yJ5d3GwDGhw", + "name": "the tangled webs I weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jfqjh5wc06jmj4pto-thumbnail.jpg" + }, + { + "id": "EbKX65r26sjm5sY7t", + "name": "the tangled webs I weave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xani5rh2cgjij2zqt-thumbnail.jpg" + }, + { + "id": "jjpd8XtJ5nJAcmyLh", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kpkavv057r7ie8vyf-thumbnail.jpg" + }, + { + "id": "eXXeb2MwbgjMFutev", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qbyk2benxn3ynsvcp-thumbnail.jpg" + }, + { + "id": "FuHqi38wkbaQc4shv", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7zwzs9elgw63xoqtn-thumbnail.jpg" + }, + { + "id": "x66X7Pm8wnL8LZHvj", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3rc1120vlg1ng7ipy-thumbnail.jpg" + }, + { + "id": "ZADtvSryHzDYzCtp9", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-o8x37nolkczvzjlul-thumbnail.jpg" + }, + { + "id": "mQ966EQcC2e2h8cjZ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-yclpn5pgty8enqbsl-thumbnail.jpg" + }, + { + "id": "9Z8QK2wm2wyThYCTm", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vi971qnbauumrvml3-thumbnail.jpg" + }, + { + "id": "8qkLM6jJv2xHNnELZ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-b9d3audrv9u6uhur2-thumbnail.jpg" + }, + { + "id": "6QkqTG5zopSEvE5ja", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e94v10qtkilfhe6a8-thumbnail.jpg" + }, + { + "id": "LZvMDxAGHssNSpJ44", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-isxlffor6ddmr8rgl-thumbnail.jpg" + }, + { + "id": "pvmyoREztmWqtKWdC", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hsjay6qnvymma5xj0-thumbnail.jpg" + }, + { + "id": "NPJKuYxHxpNRWHnid", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-931r5q280impeifqc-thumbnail.jpg" + }, + { + "id": "KpCz9hjoFif9i3TvM", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6kxyt3je0wd3g468z-thumbnail.jpg" + }, + { + "id": "w3EKusJyt77LiLh5E", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-huw8dj51o2tnuxr9b-thumbnail.jpg" + }, + { + "id": "nyGuXdDQvXKEPcSGJ", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3edsltzez4bfaljgn-thumbnail.jpg" + }, + { + "id": "nwiNgNXfwAjCRaYPP", + "name": "omg", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x1rmsggd298896rs6-thumbnail.jpg" + }, + { + "id": "vycmMsgS7e6fHw5tD", + "name": "swift earthworm", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-5xbqcf58pynac2ssy-thumbnail.jpg" + }, + { + "id": "fcAdcLhQi59meuwEa", + "name": "amoebia", + "username": "kolargon", + "avatarUrl": "https://lh3.googleusercontent.com/-tiKYx1U71-Q/AAAAAAAAAAI/AAAAAAAAAGg/b-eEUsFpspc/photo.jpg", + "screenshotURL": "data/images/images-l9p0p51s8hnyxfrea-thumbnail.jpg" + }, + { + "id": "R24A9rmCwYpy84QtX", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5tl91249fuqjk513m-thumbnail.jpg" + }, + { + "id": "YgBq9NXqcsYsRmpBe", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9sq3twzp9riypfrqk-thumbnail.jpg" + }, + { + "id": "6bbL3L3PTAdvJyg8n", + "name": "gatra", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-895yhf4dvzto6fti5-thumbnail.jpg" + }, + { + "id": "HzJkDk2XHyXcxbpik", + "name": "whirl", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4nbri3v8wv2mi17mb-thumbnail.jpg" + }, + { + "id": "jZbLsPiJ43jvcaq7M", + "name": "whirl", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-yadqdx09qv7wvvg2a-thumbnail.jpg" + }, + { + "id": "uxAPCSmSfNYuW8CJL", + "name": "whirl", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3zkvifmf7av7w5w8a-thumbnail.jpg" + }, + { + "id": "F4CnAXam3PniXCQjt", + "name": "whirl", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-k2w3ygjs4oskrg5de-thumbnail.jpg" + }, + { + "id": "LR4nX9WApQc5MZDDq", + "name": "gatra", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c8kf3greh0r0lfe5y-thumbnail.jpg" + }, + { + "id": "eH67ZJMsPmJWmEdoK", + "name": "ejercicio1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-yeqq5rwl4o9saxhr2-thumbnail.jpg" + }, + { + "id": "vqWQHJrgtfjyuWZXw", + "name": "ejercicio2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2x04fs932x1q450ey-thumbnail.jpg" + }, + { + "id": "GSwqjg58RKKvcPvhZ", + "name": "ejercicio2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5juipf59fxshw80kl-thumbnail.jpg" + }, + { + "id": "5RiyKNicAa32rA9YZ", + "name": "1903-GridSoundCentered", + "username": "janalex", + "avatarUrl": "https://secure.gravatar.com/avatar/d3da53f9bbb18316fd80884d9d495947?default=retro&size=200", + "screenshotURL": "data/images/images-ndyl47gnsfmp51191-thumbnail.jpg" + }, + { + "id": "6PsFwfvW2tLtoeFiC", + "name": "1903-GridHexagons", + "username": "janalex", + "avatarUrl": "https://secure.gravatar.com/avatar/d3da53f9bbb18316fd80884d9d495947?default=retro&size=200", + "screenshotURL": "data/images/images-ffo5auzlqu1idri48-thumbnail.jpg" + }, + { + "id": "uPZQYGHJDM4trFXcC", + "name": "1903-GridRainbowMadness", + "username": "janalex", + "avatarUrl": "https://secure.gravatar.com/avatar/d3da53f9bbb18316fd80884d9d495947?default=retro&size=200", + "screenshotURL": "data/images/images-73g5vlgvpviyh8jcn-thumbnail.jpg" + }, + { + "id": "toqC3cLBCWT32vPb2", + "name": "galax-z", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u7y4s1w0zqj15j3g5-thumbnail.jpg" + }, + { + "id": "dCjgtsZXnjdzATJ8P", + "name": "1903-GridSoundHypnoticWaves", + "username": "janalex", + "avatarUrl": "https://secure.gravatar.com/avatar/d3da53f9bbb18316fd80884d9d495947?default=retro&size=200", + "screenshotURL": "data/images/images-ba41e3fs8gy8h9o73-thumbnail.jpg" + }, + { + "id": "HpoPwexZeHvSos9jB", + "name": "tutorial", + "username": "신일", + "avatarUrl": "https://lh4.googleusercontent.com/-UYJtSdrMQjs/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rf5HE_ag4Fy6JhSGK74D5Uz9FMccw/mo/photo.jpg", + "screenshotURL": "data/images/images-bn70uxdpni9r5w9wh-thumbnail.jpg" + }, + { + "id": "xXCPLBuMgorE5wvmd", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4ps12krs1czt0fkku-thumbnail.jpg" + }, + { + "id": "JWZRdGqNAqvbskDLS", + "name": "Heart", + "username": "hyun", + "avatarUrl": "https://lh6.googleusercontent.com/-85yu5m2ZywQ/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdO1OKKAqQzlgMFqnpApfbfi4i4Gw/mo/photo.jpg", + "screenshotURL": "data/images/images-r73exb16ty0euxj5j-thumbnail.jpg" + }, + { + "id": "w5XY5hp6r86GpTyLE", + "name": "yoonsoo.kwon", + "username": "윤수", + "avatarUrl": "https://lh5.googleusercontent.com/-uoLq7WqJDyE/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rePSz3yuG_mKNfPWq5PvUl80AL7Hw/mo/photo.jpg", + "screenshotURL": "data/images/images-7w2chea2az5wzn4zb-thumbnail.jpg" + }, + { + "id": "jmoBvZevCB2QeEtAN", + "name": "sangmin.kim", + "username": "상민", + "avatarUrl": "https://lh5.googleusercontent.com/-FBZLbE_y4_Q/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3reklXxy3FykkwCC2DQh9jjtzFC4fg/mo/photo.jpg", + "screenshotURL": "data/images/images-k09nulow9wba5m94n-thumbnail.jpg" + }, + { + "id": "P5PC55YtuMYdAYrM8", + "name": "준석", + "username": "wnstjr", + "avatarUrl": "https://lh6.googleusercontent.com/-woU5-VARLRA/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rcYXRdpCnpCitbsXa2kxR4Dtr7jrA/mo/photo.jpg", + "screenshotURL": "data/images/images-30e4etsehjli4yf9c-thumbnail.jpg" + }, + { + "id": "ZSksx2deRsDocFDKT", + "name": "Lee", + "username": "jefflee", + "avatarUrl": "https://secure.gravatar.com/avatar/de0abc675a9bb11fedc01a78bd4ddf84?default=retro&size=200", + "screenshotURL": "data/images/images-x8tzxjmbzwbjhhtlr-thumbnail.jpg" + }, + { + "id": "dMZsJyyPW2EgjrH4P", + "name": "chulseung.lee", + "username": "철짜", + "avatarUrl": "https://lh5.googleusercontent.com/-Ms9fjf33Cc0/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3reZGVnMGsJP55FG1NwfwQX9im-L6Q/mo/photo.jpg", + "screenshotURL": "data/images/images-h7lwkokzpmjeb0e9c-thumbnail.jpg" + }, + { + "id": "BbBW5veDzWe2oqN7F", + "name": "squarePlanet", + "username": "다은", + "avatarUrl": "https://lh3.googleusercontent.com/--VGFNmU3UuQ/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rekfGpN6byv9fIvs3pAjQAlrfA__A/mo/photo.jpg", + "screenshotURL": "data/images/images-6k5lpd957exe7mumy-thumbnail.jpg" + }, + { + "id": "f7oq7MsfTgoAMeXX2", + "name": "squarePlanet", + "username": "다은", + "avatarUrl": "https://lh3.googleusercontent.com/--VGFNmU3UuQ/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rekfGpN6byv9fIvs3pAjQAlrfA__A/mo/photo.jpg", + "screenshotURL": "data/images/images-txxf77ib6jx1fq4il-thumbnail.jpg" + }, + { + "id": "uvCsxPZo4fAnuhkrZ", + "name": "cs230", + "username": "이원용", + "avatarUrl": "https://secure.gravatar.com/avatar/19bc9a19b7b6dda587101c7dc9b41c99?default=retro&size=200", + "screenshotURL": "data/images/images-ziksc6uu99ezoo06l-thumbnail.jpg" + }, + { + "id": "2LCzyt3dGEKL3dcTG", + "name": "jaewoo.choi", + "username": "재우", + "avatarUrl": "https://lh6.googleusercontent.com/-2X_KPdDSJQw/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rd6jrLpiakTtViM5yPJkYwfQJhnhQ/mo/photo.jpg", + "screenshotURL": "data/images/images-5gf2z1oixv439ctl6-thumbnail.jpg" + }, + { + "id": "9caDdikyJ7k4Q3o2L", + "name": "uijin.lee", + "username": "의진", + "avatarUrl": "https://lh3.googleusercontent.com/-qluvRnEYs7k/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rc-ybddM4LQHc0g0BGvplkyZtwpJg/mo/photo.jpg", + "screenshotURL": "data/images/images-j396wc846nwx3xipg-thumbnail.jpg" + }, + { + "id": "wftsxawoj5iw32a8D", + "name": "Cs230", + "username": "도영", + "avatarUrl": "https://lh4.googleusercontent.com/-U1yoYVQNRaI/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdPOWnx_PVuWVFfdWUFWnYSBIUGSQ/mo/photo.jpg", + "screenshotURL": "data/images/images-7a3rvxg6g6z8v1ngn-thumbnail.jpg" + }, + { + "id": "2bWezECppzztDLn4T", + "name": "Joohye Son", + "username": "juhye", + "avatarUrl": "https://lh5.googleusercontent.com/-WIjF1SYiutc/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rfjC8iee2cn7usm3MsiloBz79O9-Q/mo/photo.jpg", + "screenshotURL": "data/images/images-iza6hf1e4zefs8y37-thumbnail.jpg" + }, + { + "id": "uxbBoD5jdLBmRbdtE", + "name": "unnamed", + "username": "정학", + "avatarUrl": "https://lh6.googleusercontent.com/-OMiZ3nksbAM/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rd4iIW6pXdqajwjPLfViARoXXTGxg/mo/photo.jpg", + "screenshotURL": "data/images/images-wtwrlwspxibh2wym2-thumbnail.jpg" + }, + { + "id": "YyvPGrqSH2HjWTQi9", + "name": "Time table", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x2sdy14m6sxv8jsok-thumbnail.jpg" + }, + { + "id": "ng6KBsxeEFsv7tEhG", + "name": "popo", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u0h1chdee3kc5e38k-thumbnail.jpg" + }, + { + "id": "oLoR8sPXf6aPStvw8", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ftnn49a7ol7iobtiq-thumbnail.jpg" + }, + { + "id": "odJ6uwG5QzaD47cTh", + "name": "galax-z", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qcjupbo9jcyz3uacd-thumbnail.jpg" + }, + { + "id": "TjsWhmhbezg59ibvb", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dnlsnmugcpnazhqki-thumbnail.jpg" + }, + { + "id": "BnhvgAERQC5rcGRoZ", + "name": "seascape", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-knvd0q6ni7tain02o-thumbnail.jpg" + }, + { + "id": "G86ZR9sbc4BB8uW3m", + "name": "seascape", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lzch6q7sevubdeu7l-thumbnail.jpg" + }, + { + "id": "YdpjoX8LmWLnbtXQv", + "name": "seascape", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3jiyb7ob50ek0lqm3-thumbnail.jpg" + }, + { + "id": "di9ZgJzgbKZDyCan3", + "name": "seascape", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4lh2u5zkdjybt8ari-thumbnail.jpg" + }, + { + "id": "9MHkQW36H4sMgEA4e", + "name": "rpl", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-azltyxz5vxaifg3ud-thumbnail.jpg" + }, + { + "id": "ffWaRfDRtqa8osv3y", + "name": "bhatsu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fj8u7vbyufjs0p4vk-thumbnail.jpg" + }, + { + "id": "fSdF3Y59NoqNegw7y", + "name": "lines_dancing?", + "username": "dertrackererpro", + "avatarUrl": "https://lh4.googleusercontent.com/-tzGrZLlkoQI/AAAAAAAAAAI/AAAAAAAAAWA/IcJA81i4FOw/photo.jpg", + "screenshotURL": "data/images/images-mxnl0bmnx1xrs2fil-thumbnail.jpg" + }, + { + "id": "rF2WSQ98F7YxgjTH9", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-rah654vfzjqthepmm-thumbnail.jpg" + }, + { + "id": "TFMzciLhhyBhYRKW5", + "name": "준석", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-npj9ix2ygyep1nlk7-thumbnail.jpg" + }, + { + "id": "FfHLpZyMW5rXY9aD5", + "name": "준석", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-svb6wws9kqpmimcvc-thumbnail.jpg" + }, + { + "id": "wJ3ERkQqdQYSY6bnL", + "name": "bhatsu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nr4yuaag43ztnf3gf-thumbnail.jpg" + }, + { + "id": "jH6uYuSxKSryZXLT8", + "name": "Juno", + "username": "villain", + "avatarUrl": "https://secure.gravatar.com/avatar/e5fb89319d83bfa0886440775a1acf6b?default=retro&size=200", + "screenshotURL": "data/images/images-ac901fl4pktj7o677-thumbnail.jpg" + }, + { + "id": "RkS9eZ4fjYjak9w78", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cfufti5go80600sye-thumbnail.jpg" + }, + { + "id": "Kxv3hXqcQJecCkWdp", + "name": "Light in rain : side V", + "username": "phi16", + "avatarUrl": "https://lh6.googleusercontent.com/-EMFaalZS9Rg/AAAAAAAAAAI/AAAAAAAAAjg/SGZ_70U2Idc/photo.jpg", + "screenshotURL": "data/images/images-a8z01fgvo45zvgz00-thumbnail.jpg" + }, + { + "id": "mhyHwfLBurtz8PKsw", + "name": "boilerplate", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d16ig95j94du9covs-thumbnail.jpg" + }, + { + "id": "ZNyqShZSnzXJMjTPX", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jigj5pinfmwwm6phg-thumbnail.jpg" + }, + { + "id": "oRdsbtoX2Yngp5jeC", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gtobhr6a4f452mj5t-thumbnail.jpg" + }, + { + "id": "pheZX35Sbfgfj5ZJC", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-msqkc2cq8zxi2mzck-thumbnail.jpg" + }, + { + "id": "nNzkBw7xZnKhutAAz", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ogjtu8n5tqt976e3m-thumbnail.jpg" + }, + { + "id": "3GfvibHchBkZT4arh", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9h0vmzgjpsbnaw7yd-thumbnail.jpg" + }, + { + "id": "2iNJXhqJXRjFNZ3K7", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-28l0nzjsmirdufjpn-thumbnail.jpg" + }, + { + "id": "6Gubrbbo9gDv8wczK", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ad9tgxgftubtr19hb-thumbnail.jpg" + }, + { + "id": "sc6jikXkGhP7hihWb", + "name": "dotqyub", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fu3w8o71hsua28djt-thumbnail.jpg" + }, + { + "id": "iwn76AsDsRRmr5bae", + "name": "shock piints", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7i4sra99w3odylqk5-thumbnail.jpg" + }, + { + "id": "QGXB5e8RAqNJsredQ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7gpwriqsfz2qnlm2a-thumbnail.jpg" + }, + { + "id": "CzzSa7bQ9iZ5f9hNx", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-f4p2ciggwunepauof-thumbnail.jpg" + }, + { + "id": "Q3ckKgYEBkj3MgeLP", + "name": "bhatsux", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0x4xmpjl994ydidtk-thumbnail.jpg" + }, + { + "id": "ccQWyo6KBLufEhq89", + "name": "dotp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tvgoxbp3ecqk83ml4-thumbnail.jpg" + }, + { + "id": "iLmsLpSgTGLkxKPxP", + "name": "dotp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-orm852jzpbjddqq3l-thumbnail.jpg" + }, + { + "id": "XjN7HgsDKsJeibek9", + "name": "old greg kmachine wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xwv98khs20vbw6xzn-thumbnail.jpg" + }, + { + "id": "PRrsa99yGZN6XannP", + "name": "old greg kmachine wip2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qrykwnw7a1quvp65e-thumbnail.jpg" + }, + { + "id": "iiAQmTAWuGuLLKPiP", + "name": "old greg kmachine wip22", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fi7zat5g0zjit1o3s-thumbnail.jpg" + }, + { + "id": "mD6W2p47kSDX2WqK4", + "name": "old greg kmachine wip224", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ka4ooo1ckn1ev851e-thumbnail.jpg" + }, + { + "id": "nPZN7YmgWJCMBFrNd", + "name": "bhatsu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0f6rpxyljhcpn4z14-thumbnail.jpg" + }, + { + "id": "nQQ7HMj7XNCMLMMRp", + "name": "bhatsu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qxi8eogzmfsn6ilzj-thumbnail.jpg" + }, + { + "id": "9P4cTdzoK9rwM99kJ", + "name": "notmizu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4ki14b4tsiaqocbor-thumbnail.jpg" + }, + { + "id": "8xXukzezXszWuCGEN", + "name": "notmizu 4 KM wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lich1uojpvhd34g8k-thumbnail.jpg" + }, + { + "id": "FozLSgACn56r8QXk5", + "name": "omgregg KMachine WIP", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-jl5qiela8p3x8xeq9-thumbnail.jpg" + }, + { + "id": "WQxKx3Pee7i5gEdzG", + "name": "gworm KMACHINE wip2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-15wxwg3goxvxugzxu-thumbnail.jpg" + }, + { + "id": "jETzmmycobJrRvXH9", + "name": "SphereDistribution", + "username": "mrshoor", + "avatarUrl": "https://lh5.googleusercontent.com/-LXMYHmf3REM/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3re1I0lelewVaOzZYQnhGBlwPNSlaA/photo.jpg", + "screenshotURL": "data/images/images-21oa7dgp61i7nxthk-thumbnail.jpg" + }, + { + "id": "Piyv2py4bQL283mTB", + "name": "Sphere + Cube Distribution", + "username": "mrshoor", + "avatarUrl": "https://lh5.googleusercontent.com/-LXMYHmf3REM/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3re1I0lelewVaOzZYQnhGBlwPNSlaA/photo.jpg", + "screenshotURL": "data/images/images-o0l69ynhe0rxfgd8s-thumbnail.jpg" + }, + { + "id": "zxb8eWGChrW9wgd55", + "name": "delicoban", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-t5v3att07p0fxvcp2-thumbnail.jpg" + }, + { + "id": "SEk9EQMb8GksyQBhX", + "name": "Sphere + Cube Distribution", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-87cqg0o3cqw57neo3-thumbnail.jpg" + }, + { + "id": "zsPkZPEA85uft8ybJ", + "name": "Sphere + Cube Distribution", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ndvt06x0oabx68n1s-thumbnail.jpg" + }, + { + "id": "BxMWaxP7Sqiz38FgK", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8164z2ksyg481c9ol-thumbnail.jpg" + }, + { + "id": "mBEqnn3WYWhAt7vLy", + "name": "unnamed 4 K test", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-zy3wq7pw7m0zmz4bs-thumbnail.jpg" + }, + { + "id": "juXJpMEpt8YSWxSWY", + "name": "plasma waves", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-oyh2y8fnl7hvchhqc-thumbnail.jpg" + }, + { + "id": "ywWngPQ5Zn8DxNM24", + "name": "plasma waves", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-9bo862efqktfyg91d-thumbnail.jpg" + }, + { + "id": "kFw99h7A55BoqmFND", + "name": "old greg kmachine wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-poqb0wbuh8c22rach-thumbnail.jpg" + }, + { + "id": "5vBB6qnTBzuES7iu5", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bdss1thlfdt3mj4gr-thumbnail.jpg" + }, + { + "id": "88XwsAMToJSkDiwaB", + "name": " Sphere + Cube Distribution", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-t5oietkd48e36kkdn-thumbnail.jpg" + }, + { + "id": "BRW6CMT6qxyD5Qxs3", + "name": "sirp", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-3xf5ovy992aqezssq-thumbnail.jpg" + }, + { + "id": "BsrLb5e2Fujc6RvJf", + "name": "Simple Fractal wip", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-n0zaf10qbmxx47g7g-thumbnail.jpg" + }, + { + "id": "dCyrwwNxWC4gmj7zN", + "name": "Simple Fractal wip2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-lzcz7tctn124vvv6o-thumbnail.jpg" + }, + { + "id": "3DYWqaogssoxpbdKM", + "name": "julia point cloud", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-cw35418rszig29ehv-thumbnail.jpg" + }, + { + "id": "ssKwqvCp3dNhRbnLa", + "name": "perc2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-6ppzou4gx2du095ud-thumbnail.jpg" + }, + { + "id": "eE6QrFjkFRdezQsuW", + "name": "perc2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-wskcldpcdj1waig9s-thumbnail.jpg" + }, + { + "id": "296k8Y8nj6kcNxYG9", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9akdo1qlqwuqrwgfa-thumbnail.jpg" + }, + { + "id": "fcxZGWMjswfrJWNLZ", + "name": "준석", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-uvh7hp90hl3xiqtd4-thumbnail.jpg" + }, + { + "id": "cvcz6reqzpuyvdjvY", + "name": "newave", + "username": "mipmap", + "avatarUrl": "https://secure.gravatar.com/avatar/2840df8e29cba840a5b7f90f66bc66cd?default=retro&size=200", + "screenshotURL": "data/images/images-ld2t51bqtupcrtyrv-thumbnail.jpg" + }, + { + "id": "GgTexb5kxP7TtFtyP", + "name": "newave", + "username": "mipmap", + "avatarUrl": "https://secure.gravatar.com/avatar/2840df8e29cba840a5b7f90f66bc66cd?default=retro&size=200", + "screenshotURL": "data/images/images-sntqok46ffl0o9np7-thumbnail.jpg" + }, + { + "id": "N3hXFQfEHwQ9N3TkC", + "name": "mag", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-nejd8r5o2tptxich8-thumbnail.jpg" + }, + { + "id": "Sx3Sk35wbBx2sGAxM", + "name": "sdf-ish", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-lv949vucjio91xr9b-thumbnail.jpg" + }, + { + "id": "M922vaDbAxvAZALbx", + "name": "mag", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-ksqxhvymx2jhw00yc-thumbnail.jpg" + }, + { + "id": "gb48Jjp6zYH7bcWGN", + "name": "mag", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-bnga4x1sewsrwabbl-thumbnail.jpg" + }, + { + "id": "qvctZ7frDWv9mM6Do", + "name": "mag", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-2udscj6jid87vslkx-thumbnail.jpg" + }, + { + "id": "hdoyK6tHCoauDPZQL", + "name": "mag", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-3n7mcu0l7jpcztcpy-thumbnail.jpg" + }, + { + "id": "H45bQs2Q9fsMAjnWt", + "name": "perc2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-l8y802g4y6yjy1axx-thumbnail.jpg" + }, + { + "id": "RdimY5SHzK3msAHm4", + "name": "mag", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-f694wuro4td9j0k6g-thumbnail.jpg" + }, + { + "id": "So6hu3cdGNWJEi8HN", + "name": "mag", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-937xd567zr1ghpd86-thumbnail.jpg" + }, + { + "id": "fXjL89sHjq7Pkzz5X", + "name": "mag", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ub777b6slvrbq9pkq-thumbnail.jpg" + }, + { + "id": "QmjXyegEDvGDmMNkK", + "name": "mag", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5xupasfx1bc1rd9xh-thumbnail.jpg" + }, + { + "id": "MR2L3baykwugQk8qM", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-yz8hrq2sctf7mipqx-thumbnail.jpg" + }, + { + "id": "rYnPNYL9sQiTPrSfz", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-3jssc64o3ih3hg3wm-thumbnail.jpg" + }, + { + "id": "4QQxzF25ewQs8T5Kb", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-f0xrnndvecns2z8yq-thumbnail.jpg" + }, + { + "id": "raCeFgW4uDJ8yZBwD", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-7l5rj2ekldfap0aow-thumbnail.jpg" + }, + { + "id": "ZdjbNTWSNwcCQRwPT", + "name": "HexGrid", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-9r689snvffufx67by-thumbnail.jpg" + }, + { + "id": "Tv6txjYWJaTTTbyRp", + "name": "French Lorenz Attractor work", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-f65q6jvwpn6bcvn5f-thumbnail.jpg" + }, + { + "id": "oiHNm3fKqWoxXW5yJ", + "name": "French Lorenz Attractor work", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-cek3e40f8h9cxkznt-thumbnail.jpg" + }, + { + "id": "dAF9Jm3ZxebA7j6wX", + "name": "widr", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-i9geqj908wsd9weld-thumbnail.jpg" + }, + { + "id": "kmN3hqhTHv4SCqYcx", + "name": "HexGrid", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-b695s6en17kjgxda6-thumbnail.jpg" + }, + { + "id": "CTkvnfE6NaaXSPzzJ", + "name": "HexGrid2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-odx2a9cagv1jtbkc0-thumbnail.jpg" + }, + { + "id": "uw8sFSNiZKdTFYyqd", + "name": "HexGrid2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-esm9snrln1tjjpmqj-thumbnail.jpg" + }, + { + "id": "ZMzvpXNMZY9564WHh", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m7g23vjzoy73jmpw1-thumbnail.jpg" + }, + { + "id": "wfSM5cyoAJHAg6od5", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xq0u7j2ngl175rkqt-thumbnail.jpg" + }, + { + "id": "duHXW2G4Ct7oCwFdN", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-adl94rdj0yhl7a6ct-thumbnail.jpg" + }, + { + "id": "ozQWQuhmD57BYJsPh", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-suc6hnm9n2apny0k9-thumbnail.jpg" + }, + { + "id": "889PvtXA2o7P9ps9Y", + "name": "omgregg KMachine WIP", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-epqdq9qkvrct3ztcw-thumbnail.jpg" + }, + { + "id": "G6MPufoeDCrfmHjqf", + "name": "maggg", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-2vnism27eqjmmqnzl-thumbnail.jpg" + }, + { + "id": "mYvJWJgSmFTeFydSy", + "name": "K reptile void 2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-l9k0vprz1e8atordh-thumbnail.jpg" + }, + { + "id": "LvcnWcXcAvYeK7Hmf", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-m26c3rwhh57nmku13-thumbnail.jpg" + }, + { + "id": "3mX3aBsuhf372pLcD", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-v7vfvhlhv7e8q10pv-thumbnail.jpg" + }, + { + "id": "kReqbFTiLEP7PXoRp", + "name": "widr 4k", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-erswykw22b6f7ygjc-thumbnail.jpg" + }, + { + "id": "tDL9nRCoBMvh9R7Zh", + "name": "widr 4k", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-qlw8jqai18f2k15y1-thumbnail.jpg" + }, + { + "id": "y5x2iTpL5qQdipiKy", + "name": "maggg", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-mromo8j39eqa9ohuo-thumbnail.jpg" + }, + { + "id": "hDFNWtShKnbPxsk5g", + "name": "maggg", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-ewwkarcuf37j1lu2y-thumbnail.jpg" + }, + { + "id": "gxQFmkRMFP6oHs6Qb", + "name": "lines_dancing?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n2gix7iwgkccu74dk-thumbnail.jpg" + }, + { + "id": "FKW2yC28uaYuXntoz", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m2kamsv8foab92yd8-thumbnail.jpg" + }, + { + "id": "FJRdnZn9mERmk9Yaz", + "name": "FirstShader", + "username": "ארד", + "avatarUrl": "https://lh4.googleusercontent.com/-8413R_UAuFI/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdV_Fow1wVvKUVUEHJI563QumRktQ/photo.jpg", + "screenshotURL": "data/images/images-5d9tqrhkygzmgg6f3-thumbnail.jpg" + }, + { + "id": "soQPRE79HZt8hAGAh", + "name": "a cool shape", + "username": "ארד", + "avatarUrl": "https://lh4.googleusercontent.com/-8413R_UAuFI/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdV_Fow1wVvKUVUEHJI563QumRktQ/photo.jpg", + "screenshotURL": "data/images/images-dc8cnx2q7gt9gydjl-thumbnail.jpg" + }, + { + "id": "rsfLpHMoLXeSK4ybu", + "name": "24-cell", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ku8yibf3fp4zzjvug-thumbnail.jpg" + }, + { + "id": "57DGNjDnDYwrBWXqD", + "name": "blrp", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-sj86fly75hzdz7wct-thumbnail.jpg" + }, + { + "id": "RzDd4oDNK7htc9dqe", + "name": "Hello triangle", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-lt1p0bstdg9fo98xw-thumbnail.jpg" + }, + { + "id": "JWMAmcwDeMYh8uSZf", + "name": "kurb", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-bflvw9rcplt4dkghu-thumbnail.jpg" + }, + { + "id": "5CPofs7dnZ8Pd7KNv", + "name": "Happy_Christmas", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-5zjel6l9gayn2r62e-thumbnail.jpg" + }, + { + "id": "DaKrDq99EtHod6jAe", + "name": "compare 2 hash", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-kikaqqv5evbr3tf82-thumbnail.jpg" + }, + { + "id": "ABszkWtBmfrqcHecz", + "name": "lightD", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-apjt23vk7540lp76i-thumbnail.jpg" + }, + { + "id": "Cc5rgXprLDzaGgDGt", + "name": "flower", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-u1lthy52spu3zlqbj-thumbnail.jpg" + }, + { + "id": "bwr53KzdWw7hBTnsA", + "name": "stranded", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sgreoau9jthpzdty2-thumbnail.jpg" + }, + { + "id": "5TC2fdTpuR9MXHMhb", + "name": "adv_triangle", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-8b60h38trqrdr3ixs-thumbnail.jpg" + }, + { + "id": "L6xDZ78mbnpnMQGQj", + "name": "adv_Sphere", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-4wnxoqfogmuozeav9-thumbnail.jpg" + }, + { + "id": "cMSxxdiL7gecfonqz", + "name": "shadow_test", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-gc17abjxqx6i76z55-thumbnail.jpg" + }, + { + "id": "hmpjw2dG3vhXJ4Mhu", + "name": "French Lorenz Attractor work", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-hklifsgrrs3xpsexy-thumbnail.jpg" + }, + { + "id": "5NxpTo5tmZ5jQ3ZE5", + "name": "影 流 の 花", + "username": "evan_chen", + "avatarUrl": "https://secure.gravatar.com/avatar/cf83fa7e8a58a2de525a1b42e8550220?default=retro&size=200", + "screenshotURL": "data/images/images-b4xezbqcklxp7b6vz-thumbnail.jpg" + }, + { + "id": "ahsgh32ELS6fLxWcK", + "name": "SphereDistributionPawel", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cimnc9o070j4ku174-thumbnail.jpg" + }, + { + "id": "mbkRD28NZpJtGu2af", + "name": "sloncePawel", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u3sd5xmcqhln5o142-thumbnail.jpg" + }, + { + "id": "z4BHgWLrPnZbRvude", + "name": "sloncePawel2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m4ny7amzso1m0ldpd-thumbnail.jpg" + }, + { + "id": "zFRiazFDjmFNzD8ia", + "name": "sloncePawel3", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qj85ud6swzl2jpmhv-thumbnail.jpg" + }, + { + "id": "Hb6JwdFzxmc36PTuP", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fme6a319e5kp9hozo-thumbnail.jpg" + }, + { + "id": "uzebvE2bsmjwLjrKY", + "name": "test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-15gwsc7qd60g0avm9-thumbnail.jpg" + }, + { + "id": "ercnsAaqXuGhCCCAe", + "name": "Hello wobbly triangle", + "username": "nworblegin", + "avatarUrl": "https://secure.gravatar.com/avatar/9869f0d67f3bae85633a7fde13480565?default=retro&size=200", + "screenshotURL": "data/images/images-cyq3acn20wzdo62mo-thumbnail.jpg" + }, + { + "id": "LLTEjXA7Q49X7GMMm", + "name": "shadow_test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nrc1qatost8r66lf6-thumbnail.jpg" + }, + { + "id": "gAx4XYrQhtffjGR2v", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0com9xajg9jk73sje-thumbnail.jpg" + }, + { + "id": "NFjum54CBQsEgz5sK", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ocuoiiv74iapja0ft-thumbnail.jpg" + }, + { + "id": "iycvXPQfzvSbzg9JP", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-toat9uk4bsl3yv7na-thumbnail.jpg" + }, + { + "id": "Bt5C5fTXArXh3hvqh", + "name": "circles", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-p1gp7ox4oa5ehuxl3-thumbnail.jpg" + }, + { + "id": "KLtJG7Mcf8FhRihJn", + "name": "smaller sbd", + "username": "andris", + "avatarUrl": "https://lh5.googleusercontent.com/-NGcfEagpVJU/AAAAAAAAAAI/AAAAAAAAAAA/AKF05nBr6ANtWGgvfguJmVugmcp6_jd6hw/photo.jpg", + "screenshotURL": "data/images/images-tpn6igvq9nkm2dsi2-thumbnail.jpg" + }, + { + "id": "hJ9T5D48jyNh2Ziaf", + "name": "box", + "username": "andris", + "avatarUrl": "https://lh5.googleusercontent.com/-NGcfEagpVJU/AAAAAAAAAAI/AAAAAAAAAAA/AKF05nBr6ANtWGgvfguJmVugmcp6_jd6hw/photo.jpg", + "screenshotURL": "data/images/images-n0w85h2g0ej3r9amv-thumbnail.jpg" + }, + { + "id": "7qtbHrwZAwuFQLxhC", + "name": "shadow_test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5mu2m6nmgsugez4ov-thumbnail.jpg" + }, + { + "id": "njyWfszRg7gM9YrGs", + "name": "shadow_test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-we13h662eoncnka3l-thumbnail.jpg" + }, + { + "id": "KAsduiMs3RKWHDcHk", + "name": "essai", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ed4tiyto0y1w1ng9e-thumbnail.jpg" + }, + { + "id": "g5Ygw3eYNe7DzpA3a", + "name": "grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2tnc3kn4efn9m8b2d-thumbnail.jpg" + }, + { + "id": "72Qyo6BcBD6bt9NDW", + "name": "adv_Sphere", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hs0mc10gayrazpxni-thumbnail.jpg" + }, + { + "id": "RAbYpopPvqhdXyhM5", + "name": "adv_Sphere", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5wd2wj4qz4xdseqd6-thumbnail.jpg" + }, + { + "id": "ijffwwNcMKiZYCxge", + "name": "zheball", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d12lstbydjobppmuz-thumbnail.jpg" + }, + { + "id": "nXTGqimMaXu22Nqjs", + "name": "zheball", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xrpyaeiu2d2ffsh8j-thumbnail.jpg" + }, + { + "id": "hwZKXhEqYhJTNoSZX", + "name": "zheballv3", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-z896sest5fiw4cm4v-thumbnail.jpg" + }, + { + "id": "dMRx2bNxuYsRKSHKt", + "name": "zheballv4", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2igcj3m8r2wfr6io0-thumbnail.jpg" + }, + { + "id": "DRvinsX4dNgHKSnSm", + "name": "zheballv5", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tc07k34oe871vmj7o-thumbnail.jpg" + }, + { + "id": "CnETJJi9SW7LPRebg", + "name": "zheballv5", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0l0fnresu4z1qwvzd-thumbnail.jpg" + }, + { + "id": "kwpkNNSAmpsM6G7DB", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ssczqusw55ei5q9sn-thumbnail.jpg" + }, + { + "id": "xX4FaCRBAKRKxwQ5k", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e0ckwlaoke2twq0q9-thumbnail.jpg" + }, + { + "id": "nSfY6r4aXmvWBHYyo", + "name": "essai", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u6i85k7ljn4iag5mn-thumbnail.jpg" + }, + { + "id": "zvKXwd6wx6E38aPmf", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vhmv73mw29vegr359-thumbnail.jpg" + }, + { + "id": "ckAitsgFTQ4DbFHAC", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e6v19213q992xt2gf-thumbnail.jpg" + }, + { + "id": "ud8JyamidCEqTgz7R", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8ofp47deymvwnlxsz-thumbnail.jpg" + }, + { + "id": "bREFug9pGbyBNwXgE", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-whfg7yukhc9t46ua6-thumbnail.jpg" + }, + { + "id": "N9ij5y2vHTpi6aDYM", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ie2t9ag4g8ktc4h9x-thumbnail.jpg" + }, + { + "id": "RYrCnYygNSqgtTDKi", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-g3itdjhq4zurornkq-thumbnail.jpg" + }, + { + "id": "df3RvcwJQkovKdovf", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x22ij1sbnauep2wke-thumbnail.jpg" + }, + { + "id": "pezdXhrAjHoNYKCWE", + "name": "tristrip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bv9tqqzvlik4ueum1-thumbnail.jpg" + }, + { + "id": "7tj2CshkciWxyNNjh", + "name": "voxels", + "username": "abjeni", + "avatarUrl": "https://secure.gravatar.com/avatar/91501fff291d7e034ce6fecaebc60854?default=retro&size=200", + "screenshotURL": "data/images/images-omb48439vokffgmec-thumbnail.jpg" + }, + { + "id": "4AiWT3LpD8x6Ap7PA", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2hjzzen6somi04zbk-thumbnail.jpg" + }, + { + "id": "Cj2C3bSnE4yoFBfHp", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ayf89n1p5mxnlhpd5-thumbnail.jpg" + }, + { + "id": "57eTciQiKd6wT2ndd", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n8u1y2qvqedw28et1-thumbnail.jpg" + }, + { + "id": "c65csouQ75h2ArqRF", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-txppvt38n4149bsuo-thumbnail.jpg" + }, + { + "id": "D5f5NhSGgh7gLgnm3", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-39xin97zxjnlmpzuh-thumbnail.jpg" + }, + { + "id": "KGbmKNcckp4MMvaNK", + "name": "papipupepo", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-42dbezjh40lvcl8g8-thumbnail.jpg" + }, + { + "id": "7vsaPEdRhNyw6hBKg", + "name": "papipupepo", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0u7stxmmpvixhbckf-thumbnail.jpg" + }, + { + "id": "i3Zcb8RFiak58hsFx", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1uwipxrqhluc9cp90-thumbnail.jpg" + }, + { + "id": "dxmjSBXBuwTbPjkQZ", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cfk53e015vkune1kt-thumbnail.jpg" + }, + { + "id": "uYBa5uSws8jiReZXu", + "name": "mostly harmless", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kb0s8wmmdgcs37owr-thumbnail.jpg" + }, + { + "id": "T2fikhe7Y9nsT6rrx", + "name": "voxels", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-g8dhl7ap8kyw2rx23-thumbnail.jpg" + }, + { + "id": "eqcXviN95rTrGxwyW", + "name": "voxels", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xaqu6fg4bn96hfdkq-thumbnail.jpg" + }, + { + "id": "XsyLRu9hP28JhAank", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-da96k3zyasin0n5tw-thumbnail.jpg" + }, + { + "id": "3hNCrCAfmKvR2iKP8", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vzixo7slv71p6ynx8-thumbnail.jpg" + }, + { + "id": "jKgXdk6mRHxFesr5L", + "name": "crystal dancer (mouse.xy)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ld8jcaam55jqgqqkm-thumbnail.jpg" + }, + { + "id": "foJQ7C4rZnwuJSDxD", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tb96zlmyq4dpn6m9e-thumbnail.jpg" + }, + { + "id": "kwFY2DhDLc57jBEKg", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-s9y66gudoj1qz35ot-thumbnail.jpg" + }, + { + "id": "ofYQfSm7FHtddg7on", + "name": "Hello wobbly triangle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mamdgcfyuprsi5hju-thumbnail.jpg" + }, + { + "id": "4SRkNtncZayGZ5xBF", + "name": "Waves", + "username": "davide", + "avatarUrl": "https://lh3.googleusercontent.com/a-/AOh14Gi490kG9D7UEVvtNX8rZBCH1G4jKhV72cfZuabwxg", + "screenshotURL": "data/images/images-xp7ahtoy3v1hvriu4-thumbnail.jpg" + }, + { + "id": "4tdHwGGpfKN7AQpoQ", + "name": "Hello wobbly triangle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xawtx1iyojqtfrxhk-thumbnail.jpg" + }, + { + "id": "pd5cBhZ239NhxnEim", + "name": "mostly harmless", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-n0ga9ljlw8bb8x7ex-thumbnail.jpg" + }, + { + "id": "dJTCRw4XXeXH2rYMd", + "name": "mostly harmless", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-aa1i172l5fq3griyt-thumbnail.jpg" + }, + { + "id": "cm7ZiKYPzjYBqPSyQ", + "name": "mostly harmless", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-iklkbopsxvoxx2z8o-thumbnail.jpg" + }, + { + "id": "4fpR5Na5QhyEeF2yw", + "name": "omgregg KMachine WIP", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-6i34uti1b0px8ixkb-thumbnail.jpg" + }, + { + "id": "B6hCMdEJpbdKbEpYp", + "name": "kreeture KMachine WIP", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-pxbrux6rjc5r6igxi-thumbnail.jpg" + }, + { + "id": "wvtQDvQbMrdANuDHh", + "name": "kreeture KMachine WIP 2", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-a05svjj3hd0hwzvh1-thumbnail.jpg" + }, + { + "id": "gEkij9HTZTy6b4tRf", + "name": "cryb 4 Kmachinewip", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-qyxb7ch3s2yca52s9-thumbnail.jpg" + }, + { + "id": "Qx9JCRsXfk5Ajh3t7", + "name": "sockwaves", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-860e8l68bz126jbr2-thumbnail.jpg" + }, + { + "id": "p3J4jE3L87RgWNw5f", + "name": "mostly harmless 4 Kmaachine WIP", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-5et9m0aa2yanjcxdc-thumbnail.jpg" + }, + { + "id": "95xHq5YQNNvTEjhsq", + "name": "mostly harmless 4 Kmaachine WIP", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1ds11efn17xbnz11h-thumbnail.jpg" + }, + { + "id": "hXxx7rTq8dZYFKSs5", + "name": "mostly harmless 4 Kmaachine WIP", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-anlim9ijwf76f1pox-thumbnail.jpg" + }, + { + "id": "AK7yLDZv8JXbgW25h", + "name": "bb22", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2lea08o7mwykito11-thumbnail.jpg" + }, + { + "id": "8miH3KmYkczS5YbjP", + "name": "bb22", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9e2sq60d3uqjuctbl-thumbnail.jpg" + }, + { + "id": "k4wpsPnafQ4YQs6dJ", + "name": "c-pump By GMAN 4 Kmachine TESTED", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ty96knkj7ql6eacdy-thumbnail.jpg" + }, + { + "id": "XuJSbKXb7qtAKJ6AQ", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9f98n7x11dbzkcko8-thumbnail.jpg" + }, + { + "id": "LgRGGzXFTTEZFmP9x", + "name": "c-pump By GMAN 4 Kmachine TESTED", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7lh0vwembkphz9oj9-thumbnail.jpg" + }, + { + "id": "Guf53TWBqY43SzNeS", + "name": "c-pump By GMAN 4 Kmachine TESTED", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9wqgsjw8nlkunbbsa-thumbnail.jpg" + }, + { + "id": "KE36FRWxcF7s2qX3i", + "name": "c-pump By GMAN 4 Kmachine TESTED", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9mk4cqawu64psaqge-thumbnail.jpg" + }, + { + "id": "LvJLKq69EEcAHDcJh", + "name": "Rotating line", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-p0wqlcon0xw76q8g5-thumbnail.jpg" + }, + { + "id": "it3WZX5QHCABK6s7R", + "name": "residuallines", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ouda8pqptsnu9u9qb-thumbnail.jpg" + }, + { + "id": "7JTyL7fuENPgA9o2H", + "name": "strg", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-8js557ky0nikp5pu1-thumbnail.jpg" + }, + { + "id": "RNvmyLxwWoWWorb59", + "name": "first project", + "username": "ninja", + "avatarUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj-w1Ghj5YMiIFpayQEZMuePeU64oQTM2GR_7wc-Q", + "screenshotURL": "data/images/images-tnvlrihybkx0zf10f-thumbnail.jpg" + }, + { + "id": "Jr5nXxcZNwvx5K4Bd", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-rq4luf4fnnlhz9zcu-thumbnail.jpg" + }, + { + "id": "54ZGebYmzcwbkmgpF", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6sgri1m9mufzgy74n-thumbnail.jpg" + }, + { + "id": "MgCFmyZHQF4Xy4EsJ", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u66iretvmzye5qjmd-thumbnail.jpg" + }, + { + "id": "kJKd3eS8axidSmEcA", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5v52a6er3xjixg7j5-thumbnail.jpg" + }, + { + "id": "7gpAmyAsHMewhZvsN", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9v1wilhjotfsafjck-thumbnail.jpg" + }, + { + "id": "poNyz9Zbo5iQ6HjDH", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ecx2s6c9g65phl32v-thumbnail.jpg" + }, + { + "id": "B2Xb9dHRi7bYyQfjA", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u3f4kbdnhro8b0mg7-thumbnail.jpg" + }, + { + "id": "XASP5MBqwovRLqzqg", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-quwpp2v0w25pc3xoy-thumbnail.jpg" + }, + { + "id": "4abrmywD84XrJ5dNz", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ogy1d7ofns5q8iwdg-thumbnail.jpg" + }, + { + "id": "tTWmqDWD9Y3Gijkoy", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-aa2d0cd4x87w5ao0c-thumbnail.jpg" + }, + { + "id": "wXoyv2xNDqkKWzsJE", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xmfyffsismoc1qbez-thumbnail.jpg" + }, + { + "id": "HQrHbHySYQAdvmEGG", + "name": "antagonism", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-28mun08spla2b902d-thumbnail.jpg" + }, + { + "id": "LHgS8fK9eqJpbzbLF", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x33gar5fb1tzj4y9y-thumbnail.jpg" + }, + { + "id": "5eNtGMeN2Etw3d5dh", + "name": "antagonism", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-zg9kxy1sqmosyx4rh-thumbnail.jpg" + }, + { + "id": "pRauSxj3mNSdRas9Y", + "name": "glass of colors", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tlr2zldpo04caak0a-thumbnail.jpg" + }, + { + "id": "eN9F6DmmRZpCrr3v4", + "name": "my_demo", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-un9u5t0lu637ljqdb-thumbnail.jpg" + }, + { + "id": "PHWvovEcpp6R6yT8K", + "name": "s.o.i.", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9qm2rtzrqgbaw4qsy-thumbnail.jpg" + }, + { + "id": "rAzqz9fhRarpgzdC2", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-on7wa45l7howaanl6-thumbnail.jpg" + }, + { + "id": "Xr5DemAP52ZcKLRbQ", + "name": "seaqyuk", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-t7fxkyq6w8phdipef-thumbnail.jpg" + }, + { + "id": "nQhMRh5xxazydRqaC", + "name": "glass of colors", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-is36aw3iy0s29gjbc-thumbnail.jpg" + }, + { + "id": "vhkrDTrknFZgdQvw5", + "name": "bobble black matter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2nna6cjnhqfptxl1p-thumbnail.jpg" + }, + { + "id": "XwLcGCStsrbhX6jFY", + "name": "fft", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-4ai6dzvj6atvpy3e9-thumbnail.jpg" + }, + { + "id": "a2qkLCbs8jJyqJ4sJ", + "name": "crepe11", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-244ad5snqc1ucelg8-thumbnail.jpg" + }, + { + "id": "A9DLn3oYKaSRGEPt4", + "name": "crepe11", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xh384v4zhbezzra79-thumbnail.jpg" + }, + { + "id": "WMSNZ3Scdfw2fZJyw", + "name": "crepe3", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m03374aefkhqmhnyh-thumbnail.jpg" + }, + { + "id": "pPELYFMqZXHXgn5Yx", + "name": "Triangular Voronoi", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-bs0h3qbgcy93ex5ji-thumbnail.jpg" + }, + { + "id": "6K6qbdqNTrkx589QP", + "name": "crystal irisz (1xxx)rwpoint", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-vl1zk7phrwll58lxa-thumbnail.jpg" + }, + { + "id": "r3aahkgwBNMpNsWRz", + "name": "crystal irisz (1)X", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-lux1nnxt4yqhxogp6-thumbnail.jpg" + }, + { + "id": "ZfXn2xm6JJh3o5b7T", + "name": "HexGrid2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-3vk5ria549kvtwiwm-thumbnail.jpg" + }, + { + "id": "8AQFD78CWiZsN4phd", + "name": "Functions rotation animation", + "username": "morimea", + "avatarUrl": "https://secure.gravatar.com/avatar/8ff4b4cacdf52d8d31a020cd244c5269?default=retro&size=200", + "screenshotURL": "data/images/images-icfdnj1z1gcwact4x-thumbnail.jpg" + }, + { + "id": "mLtQNvFM6AJhHKbYq", + "name": "marching tetrahedra", + "username": "abjeni", + "avatarUrl": "https://secure.gravatar.com/avatar/91501fff291d7e034ce6fecaebc60854?default=retro&size=200", + "screenshotURL": "data/images/images-eq5uuag7aifi06hhw-thumbnail.jpg" + }, + { + "id": "iJobHmTq8ahMEWFSG", + "name": "new-desu-dance", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-k210otrzy5415ev5i-thumbnail.jpg" + }, + { + "id": "5kD5fS5JQyTcEzoY8", + "name": "Sound Texture Visualizer", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-1cxor1idzrh16a8c7-thumbnail.jpg" + }, + { + "id": "ranzZohyvMMY5qhCs", + "name": "fractal blue", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vs63o79i0liusp7g9-thumbnail.jpg" + }, + { + "id": "uX4j5TjepFCvRZJ7X", + "name": "dotp1", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-75wjvvmlefl787rgh-thumbnail.jpg" + }, + { + "id": "rGsksAzL2wfEQZTc9", + "name": "Spiral", + "username": "sylistine", + "avatarUrl": "https://secure.gravatar.com/avatar/3a93b17a430d08943deebdfb93d4cef3?default=retro&size=200", + "screenshotURL": "data/images/images-kyahbhq14imcddtpn-thumbnail.jpg" + }, + { + "id": "q9kGY6PexnYDi9oCF", + "name": "Sphere + Cube Distribution", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-q1koyr5tydd0ay6dr-thumbnail.jpg" + }, + { + "id": "FD5KhRKjCLtaEQWHM", + "name": "crystal dancer (mouse.xy)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0crnle6ycxd5mkhv9-thumbnail.jpg" + }, + { + "id": "8MxcbeeakhH3Zvjvm", + "name": "Jack-o'-lantern", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mblg3kcgb19vb7ggz-thumbnail.jpg" + }, + { + "id": "SLdjCgFb5gQiFcuAW", + "name": "bobble", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qgxjyqpi1ctwvd7he-thumbnail.jpg" + }, + { + "id": "eYuBQN69mTZCKaGdB", + "name": "bobblet", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qwgw5b71zv43vvguz-thumbnail.jpg" + }, + { + "id": "ToJKAtGKcN3vg5MJY", + "name": "barret blockz ", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4ucsh9d2402ttbrbf-thumbnail.jpg" + }, + { + "id": "Av2MKnW2EJCyL2soB", + "name": "barret blockz 2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0cuc94aul8wdawmwt-thumbnail.jpg" + }, + { + "id": "y6pAr7bDAF5LM9LLi", + "name": "morp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x5zxbkah1frvooizs-thumbnail.jpg" + }, + { + "id": "aqJ9RgEQBu63bvw2o", + "name": "blades", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-0s97jm0zph1gew89f-thumbnail.jpg" + }, + { + "id": "GDwqy5yjHyevhi2rK", + "name": "drev", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qt7523111dkpyost4-thumbnail.jpg" + }, + { + "id": "RdipyP4yy3xT5cbP5", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nl7k0orbtsxiydsvx-thumbnail.jpg" + }, + { + "id": "mf6PsGZxpSdyu4gkb", + "name": "BB", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-feg1s9rz0iydgm7tu-thumbnail.jpg" + }, + { + "id": "n8PMuEQT8BEAXbPgC", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wgaod2em2qmev5308-thumbnail.jpg" + }, + { + "id": "mmoaXfjg9s32v5Cpw", + "name": "hypercubermod", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9d88j4bsb7bk7ioya-thumbnail.jpg" + }, + { + "id": "fNYWAGT9SkHb3bQrk", + "name": "hypercubermod", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xyxzilawzfc16xh2w-thumbnail.jpg" + }, + { + "id": "epNhofNCAKkjo88eT", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ci68cfkpf8dpnig50-thumbnail.jpg" + }, + { + "id": "6xC43NutGGXHRTZ9p", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ydiu5ku4pirid8l9h-thumbnail.jpg" + }, + { + "id": "3RibQfbPe3tobLxLw", + "name": "hypercuber", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-7xhjal6h6ovvwctxu-thumbnail.jpg" + }, + { + "id": "njNz396TwkoZ7JoLd", + "name": "musicboxes", + "username": "galousis", + "avatarUrl": "https://avatars.githubusercontent.com/galousis?s=200", + "screenshotURL": "data/images/images-xcglu53eryk4d59z8-thumbnail.jpg" + }, + { + "id": "DiGpLPYqRW3DAtnFc", + "name": "crazyplanet", + "username": "galousis", + "avatarUrl": "https://avatars.githubusercontent.com/galousis?s=200", + "screenshotURL": "data/images/images-05fgsemszbjctt71m-thumbnail.jpg" + }, + { + "id": "sS597q4aY9wEpneFz", + "name": "crazymusicbox", + "username": "galousis", + "avatarUrl": "https://avatars.githubusercontent.com/galousis?s=200", + "screenshotURL": "data/images/images-w0kskivlej25q9evu-thumbnail.jpg" + }, + { + "id": "esyFcPb5cskLWGgGE", + "name": "surface", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-oawtgfc01fg4ilkxp-thumbnail.jpg" + }, + { + "id": "93FoywQqcRMeZNRcz", + "name": "fedge", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-9amu7dqnevio0ji6c-thumbnail.jpg" + }, + { + "id": "KFvg6n392t9qpC7HD", + "name": "crazymusicbox", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-pj8lji8n4d6b33xbo-thumbnail.jpg" + }, + { + "id": "Y3bsPmhHZNkBkDdhQ", + "name": "Hello Cube", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-79ikv67atb29a7z4m-thumbnail.jpg" + }, + { + "id": "7vbkgbBXwtnj4LbT2", + "name": "Smooth Icosahedron", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-slu79te05jep9jpm9-thumbnail.jpg" + }, + { + "id": "kRguYk2Yft2HDLmiP", + "name": "3D Point Cloud Scene", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-91t1366qo2iy6q8hv-thumbnail.jpg" + }, + { + "id": "9ikkGGKbk6D4k8eRa", + "name": "Shadertoy Renderer", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-4cwrlsae2orwwpycc-thumbnail.jpg" + }, + { + "id": "6RMx4XYpHck6oZZ4u", + "name": "Parametric Plotter - Torus", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-er4jpe4h70m8a7186-thumbnail.jpg" + }, + { + "id": "auetPcBpAZ2WyysTb", + "name": "point cloud vs spheres rmx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gcypxrg8ppp2ylt9b-thumbnail.jpg" + }, + { + "id": "cZZ3eyhcr5QzLGrqT", + "name": "point cloud vs spheres rmx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-eyo5kcj1k5c27dhmv-thumbnail.jpg" + }, + { + "id": "jdAf5zLP6coQorz8g", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-oc05m0uhuh2x69n9o-thumbnail.jpg" + }, + { + "id": "C549fio274zzAoidn", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-kl7wzjiscsnbod2ac-thumbnail.jpg" + }, + { + "id": "r2tz6uDybuH3HESEN", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vaykbal6owtecrdlv-thumbnail.jpg" + }, + { + "id": "A4aQeDP9zYwLTXGKd", + "name": "Block Party", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gzeted81ngf963e9n-thumbnail.jpg" + }, + { + "id": "wFtvqKAQ3wB8Hho3p", + "name": "undul", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-yheobgbtjk9ttasx6-thumbnail.jpg" + }, + { + "id": "FGbfRShZBrEzgsq9v", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4th7ngzptgb16wilw-thumbnail.jpg" + }, + { + "id": "CfHhvkT7qoHXgLNx6", + "name": "Hello Cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lwate8vg2gi22ndpg-thumbnail.jpg" + }, + { + "id": "d6HHmyLaBsmttvb5b", + "name": "myHello Cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wawjubb6axcnjmh5t-thumbnail.jpg" + }, + { + "id": "KgwQJvsXGiER7oBtf", + "name": "myHello Cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0j0toyhlvandw4d4m-thumbnail.jpg" + }, + { + "id": "FDYmXj7L2c7PJjTwe", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lg7amx490lfy9l7vw-thumbnail.jpg" + }, + { + "id": "mFr92RbhPmuJXKXWK", + "name": "Bilinear Patch", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-cz9gbdzg0o72kd02f-thumbnail.jpg" + }, + { + "id": "Yudd65BQfx92kHBcH", + "name": "run", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-3af3gds7ce4xxejhi-thumbnail.jpg" + }, + { + "id": "SAxr7jfCpJMn2zJyG", + "name": "cheese wheel", + "username": "blackle", + "avatarUrl": "https://secure.gravatar.com/avatar/32bd668863823ef987c1aa8d6f81ace6?default=retro&size=200", + "screenshotURL": "data/images/images-i425uicasg8nyron8-thumbnail.jpg" + }, + { + "id": "nCs6tW5ZLeSx7QoHm", + "name": "bobblet", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lgjohokupvnv60ml4-thumbnail.jpg" + }, + { + "id": "qGALguswrydAHGpCK", + "name": "Bezier Patch", + "username": "oneshade", + "avatarUrl": "https://secure.gravatar.com/avatar/f0d8718b5dc6efb4cf47453275108912?default=retro&size=200", + "screenshotURL": "data/images/images-fz6drbm3nq64ozhc4-thumbnail.jpg" + }, + { + "id": "9K6tGbtzRXNPPboM5", + "name": "flwr", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d1p9f1pwgfqv1xhlr-thumbnail.jpg" + }, + { + "id": "xJtSaCNJTKWjZF5jp", + "name": "Waves", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-xaxeb3eyozituvadl-thumbnail.jpg" + }, + { + "id": "fh74hqW59nbsQkT6N", + "name": "Montara", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-mbsypi50i68ym2i64-thumbnail.jpg" + }, + { + "id": "wxPvS64A9HG62L8za", + "name": "Pixel Waves", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-fp7o5ypxf3ibqk8mj-thumbnail.jpg" + }, + { + "id": "nb7JYJJLQtbayZHzh", + "name": "Pixel Storm", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-h30ilp6q57jd83df0-thumbnail.jpg" + }, + { + "id": "MrwTGnkcE7aQ4y6XX", + "name": "bhatsux", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-21qkfqta2myaxjy4q-thumbnail.jpg" + }, + { + "id": "md47PJjYvynaWJqMy", + "name": "synth", + "username": "sail", + "avatarUrl": "https://secure.gravatar.com/avatar/bca4a2f3b0c91f779e8844c21bc4b296?default=retro&size=200", + "screenshotURL": "data/images/images-gn0j9oum4zgacafk1-thumbnail.jpg" + }, + { + "id": "rcKFeaikB2g9P6Wf5", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sw27b7anx7rdr38ow-thumbnail.jpg" + }, + { + "id": "6J7Jj9F2CdctHCkXB", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-69rzkf81e9bp2b4hd-thumbnail.jpg" + }, + { + "id": "PMP5Sqmw8vLLrpJgw", + "name": "bhatsux", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4idqy6pnfswlwukfw-thumbnail.jpg" + }, + { + "id": "Px6gh46SuTaM4EEnF", + "name": "Pixel Storm", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-uh63fy28jajvpio8p-thumbnail.jpg" + }, + { + "id": "vBDBSAvnH4mCTZ4So", + "name": "Pixel Stormx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ny7768vo3dmybxoap-thumbnail.jpg" + }, + { + "id": "tQEPfhxxjYGjmL6LL", + "name": "Pixel Stormx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ovlffevkxqotbpz1h-thumbnail.jpg" + }, + { + "id": "dfb54ssJPtsdTbqaj", + "name": "glass of colors", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vd4en3frpc32r0x4o-thumbnail.jpg" + }, + { + "id": "C4gCacp8eQ337rdFD", + "name": "mouse-wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-a7uuhpsoqh6tni2ho-thumbnail.jpg" + }, + { + "id": "fdRMRscY4Te3iZPBF", + "name": "mouse-wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-bo7a7mz2kj4dqzopb-thumbnail.jpg" + }, + { + "id": "fHqs32thqJc7j2QR3", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-t3ye1v22de0ypn7qu-thumbnail.jpg" + }, + { + "id": "ZFhCyFCR3GKn8HkgG", + "name": "thumpy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gxszja6uxjn787m35-thumbnail.jpg" + }, + { + "id": "sr2hRa3R2XYEKwJyC", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n0tsrgasjjq1sqt3s-thumbnail.jpg" + }, + { + "id": "dQM2bdFTuo6XKyJ9B", + "name": "hypercuber", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3v58l2e254bjseaxp-thumbnail.jpg" + }, + { + "id": "aKaMTCwCLH9Wy2wfG", + "name": "hypercuber", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sc04zeskppxhbujy9-thumbnail.jpg" + }, + { + "id": "w2wizFHHNsMCjuyvJ", + "name": "mouse-wip", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-z3rh4fp54ouln35vb-thumbnail.jpg" + }, + { + "id": "RtPtBzZA48whTSdM4", + "name": "3D Point Cloud Scene", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-jw6fp556wmuk9cuu4-thumbnail.jpg" + }, + { + "id": "PERFs2wtC9jvSqbDY", + "name": "3D Point Cloud Scene", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-o4log2npwlpwswubi-thumbnail.jpg" + }, + { + "id": "oX5wEFKffEhvZmeJT", + "name": "3D Point Cloud Scene", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-alsdehi0rp2qwwoua-thumbnail.jpg" + }, + { + "id": "nvRC9PH5c7FhYT6vm", + "name": "3D Point Cloud Scene", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vq06qn55we3h7mh6i-thumbnail.jpg" + }, + { + "id": "xTioxG2q3bibRu5j8", + "name": "point cloud vs spheres rmx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u3zz5zb0k6owsvpb2-thumbnail.jpg" + }, + { + "id": "7EmHQKmTWXAwTXS63", + "name": "morp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2avr79rlrav34fenh-thumbnail.jpg" + }, + { + "id": "k2vXaRzFT8Nqdwfit", + "name": "morp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w02lk9av2jdvdyqe3-thumbnail.jpg" + }, + { + "id": "o39WoEQsYbe48X2id", + "name": "morp", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4tvt6i7su76kxx0w9-thumbnail.jpg" + }, + { + "id": "kmHZWuJ5wjmz7RQzS", + "name": "Triangle Tessellation", + "username": "przemyslawzaworski", + "avatarUrl": "https://secure.gravatar.com/avatar/3a3abcfa29dc9b0fa9fd2fb25ff10892?default=retro&size=200", + "screenshotURL": "data/images/images-dyruw6q6d1pz74oq5-thumbnail.jpg" + }, + { + "id": "bSWJchGnG97o3HQfE", + "name": "circles", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8tjij9c7bq0xl923x-thumbnail.jpg" + }, + { + "id": "STmreATrsBA7GMBzA", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9j767p40uod9wwul3-thumbnail.jpg" + }, + { + "id": "sA2GkcNB7H2biaXxg", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-io3g46f2mpkzk58ao-thumbnail.jpg" + }, + { + "id": "FuT3HckGWwv5PxkNP", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-o0m773xt4pt38ksqf-thumbnail.jpg" + }, + { + "id": "KRuXE4SBCi4kRBG6j", + "name": "seaworms", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-51wh6l8cue4tx7wk0-thumbnail.jpg" + }, + { + "id": "v5nH366PBWGH7qqG8", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9jh9okr2rknwuyjtw-thumbnail.jpg" + }, + { + "id": "sYdAq9WutD8TN6uxp", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vucna6khkfe36l2eh-thumbnail.jpg" + }, + { + "id": "easEJ6iaXWeeR99Gj", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-xrfr6bz31jn1bvc4m-thumbnail.jpg" + }, + { + "id": "J6Rbdqdhvx7Yjdh59", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0wsynpp1jwvq4z5ij-thumbnail.jpg" + }, + { + "id": "f2knCxK4pMLFDEZWB", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-f4kmyyz6quocwsyks-thumbnail.jpg" + }, + { + "id": "TDswsR4bMAPBnsQLT", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d68f6msei862fv8nx-thumbnail.jpg" + }, + { + "id": "bWGzwX6udGM4uM7ra", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ps0o4xp5rdoy1fp2n-thumbnail.jpg" + }, + { + "id": "yJStxdpLgCWHmBA7n", + "name": "second test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-l3yqem4dorrunlng2-thumbnail.jpg" + }, + { + "id": "ZZPtHWkxTWXKxGiJB", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e3i3deyf3k201t93b-thumbnail.jpg" + }, + { + "id": "tDPKDjEBxPf4GXgvv", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mjfno8utejh66oj8m-thumbnail.jpg" + }, + { + "id": "eCtymAejxmi75Fg78", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w4lm489ltdpqzowwm-thumbnail.jpg" + }, + { + "id": "LpWRC9LAg6ck6rSzf", + "name": "first test", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-q71qaduuozgoge1le-thumbnail.jpg" + }, + { + "id": "f9MztjgyzxAHdqsxy", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6crny2r0gk0rlosg5-thumbnail.jpg" + }, + { + "id": "9ydRokp8vXNSApmsq", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3p4e60ngudxsxynq8-thumbnail.jpg" + }, + { + "id": "4NywnD7ErprEsdfa8", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ob6j4s1fyu97c1f2o-thumbnail.jpg" + }, + { + "id": "b5fN5z5ZFYzsQukHD", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x95nqjo5vt1wfrrtr-thumbnail.jpg" + }, + { + "id": "LbkZcKYz5Z7nbCP4s", + "name": "D1_365", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vw4ecrvq04bazd9vj-thumbnail.jpg" + }, + { + "id": "AJ3iLGfbPGRTnZZn6", + "name": "qumu", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6b7gooaa9elc8ervf-thumbnail.jpg" + }, + { + "id": "nEpiQXnFSAvRvgwTY", + "name": "hexagon tile strings", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-zbuhh9hpbmomg0wok-thumbnail.jpg" + }, + { + "id": "yQxBYWw4sFSMS2gsp", + "name": "hexagon tile strings 3D", + "username": "jshrake", + "avatarUrl": "https://avatars.githubusercontent.com/jshrake?s=200", + "screenshotURL": "data/images/images-go2w1b1vibry40xk3-thumbnail.jpg" + }, + { + "id": "YTKN84yNr6RB2aDbB", + "name": "learn1", + "username": "muffin", + "avatarUrl": "https://secure.gravatar.com/avatar/62e506fb8f0b1139bce884d6e6fc93e7?default=retro&size=200", + "screenshotURL": "data/images/images-qq17maop7exb5hr97-thumbnail.jpg" + }, + { + "id": "mTt5zkdxxpb2F9px7", + "name": "hexagon tile strings 3D", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mc214dfiqr1fp63b7-thumbnail.jpg" + }, + { + "id": "PuJz9tt4xX8z7tBP8", + "name": "point cloud vs spheres rmx", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-efj2gg37jcx1bnxq7-thumbnail.jpg" + }, + { + "id": "a3o5rh2HCzLMPnSbn", + "name": "black eye", + "username": "leithba", + "avatarUrl": "https://avatars.githubusercontent.com/LeithBA?s=200", + "screenshotURL": "data/images/images-1oyzc51wdo5jdwgow-thumbnail.jpg" + }, + { + "id": "FtWQZjoHxqMK8dS5s", + "name": "sphere", + "username": "leithba", + "avatarUrl": "https://avatars.githubusercontent.com/LeithBA?s=200", + "screenshotURL": "data/images/images-yd5t6llew6sj0q4ad-thumbnail.jpg" + }, + { + "id": "FsdFwLEhLHY2TyemA", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-e2jilst5tshkd5426-thumbnail.jpg" + }, + { + "id": "suJcf7jB43TcT8x5X", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n01wh3zklbx8wxva2-thumbnail.jpg" + }, + { + "id": "J4JLEuTrJFshLPKeg", + "name": "Bezier Curves", + "username": "przemyslawzaworski", + "avatarUrl": "https://secure.gravatar.com/avatar/3a3abcfa29dc9b0fa9fd2fb25ff10892?default=retro&size=200", + "screenshotURL": "data/images/images-5fjdc82zhrln5r5vb-thumbnail.jpg" + }, + { + "id": "pDA68wnR6YFYgpH8G", + "name": "kwek", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d70c9odnh34fo1h8y-thumbnail.jpg" + }, + { + "id": "uQ6SBCL37HsvsjWYy", + "name": "wonk", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-itzj8smlszzcok3c5-thumbnail.jpg" + }, + { + "id": "H5bhy6dNpHRiJXWds", + "name": "Bezier Surface", + "username": "przemyslawzaworski", + "avatarUrl": "https://secure.gravatar.com/avatar/3a3abcfa29dc9b0fa9fd2fb25ff10892?default=retro&size=200", + "screenshotURL": "data/images/images-gtn6sfbe2rqjc5dvk-thumbnail.jpg" + }, + { + "id": "7avdmuC23kYit8KWs", + "name": "WAVE", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-r91ci666qv30l3sgz-thumbnail.jpg" + }, + { + "id": "jiYAbdiu7oseTcBzg", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mrbx9fhle4vyspycj-thumbnail.jpg" + }, + { + "id": "fLedbHFSXD9E4aMSv", + "name": "Oh my", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gu78a1hdbkc8e989z-thumbnail.jpg" + }, + { + "id": "EZmjdzfcpwjp7MSFM", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-njkwyn6cyahgjgqk5-thumbnail.jpg" + }, + { + "id": "rghHKREPitTaTLiyH", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1b6nxvxr6g7tjaqux-thumbnail.jpg" + }, + { + "id": "W6AZjsv3rqioGwCLa", + "name": "Oh my word", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-go3bn66wd32dq2ctc-thumbnail.jpg" + }, + { + "id": "bbpMGgfF9vceKwYEH", + "name": "mostly harmless 4 Kmaachine WIP", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-boxqh59px59rpwtoi-thumbnail.jpg" + }, + { + "id": "YazT6iXD9eAmLY6qD", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3hnnrwslmrr7bylwo-thumbnail.jpg" + }, + { + "id": "dDWeHcCfjXZ2qxCji", + "name": "mostly harmless 4 Kmaachine WIP", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-b22yd31wklvw8foma-thumbnail.jpg" + }, + { + "id": "sK7LiRcHNuXupG5ax", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-34zoofwmawlxo2ax2-thumbnail.jpg" + }, + { + "id": "coje67XoytKsXMYqF", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4gp5a7fswz9v16fiz-thumbnail.jpg" + }, + { + "id": "x7fjK2WqJCRmwvnuj", + "name": "Oh my word", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1cwoe7rtigtu9zysg-thumbnail.jpg" + }, + { + "id": "xqxGcpS5Ny2RtAwpm", + "name": "shock", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nzd47e78my7mq3qua-thumbnail.jpg" + }, + { + "id": "nBtQo8jPpr5y4bKyK", + "name": "WAVE guys", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-672pqtfjkume65ir7-thumbnail.jpg" + }, + { + "id": "w9fNQs5qa7s4CmEvg", + "name": "WAVE guys", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-36aub785g7fz54v0t-thumbnail.jpg" + }, + { + "id": "8wij3k6mQCLMeYsgw", + "name": "WAVE guys", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-68xxgigumfvm0qyrg-thumbnail.jpg" + }, + { + "id": "NpnhMDf6aivDMB3x9", + "name": "black eye", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u5bvcnvkl5f1w1gof-thumbnail.jpg" + }, + { + "id": "RZ3HmsB9XBnW5yn7k", + "name": "circles", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-s32bl6rwot1h2gvmf-thumbnail.jpg" + }, + { + "id": "NP3rRKeHPZeXBhymB", + "name": "circles", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-p55vl0rhufzj9ov0a-thumbnail.jpg" + }, + { + "id": "yfhr4C9ihGC54WwZ4", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-02ag42uhfgbxn62pb-thumbnail.jpg" + }, + { + "id": "99zvCpii8eiTj2fo8", + "name": "unnamed", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-fkeiuzqtr2so05eqx-thumbnail.jpg" + }, + { + "id": "XxN2enyHa2MMbayT5", + "name": "flow", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-reivvzf3jsx8b92xj-thumbnail.jpg" + }, + { + "id": "nfi9NM8Y8gRZNqaEF", + "name": "K Machine exposed shader", + "username": "zug", + "avatarUrl": "https://lh3.googleusercontent.com/-ic9UqwOeGYY/AAAAAAAAAAI/AAAAAAAAABU/vJK2D-kzm0k/photo.jpg", + "screenshotURL": "data/images/images-a09xg59c97pvo7nue-thumbnail.jpg" + }, + { + "id": "MaT4wjZqPmXjfRqe3", + "name": "jp", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-p7tvo3r9d4n67n4vy-thumbnail.jpg" + }, + { + "id": "m6Sw7fXzNji9JqQRk", + "name": "disruptive D", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-lrrjprp4nc8lvdpi3-thumbnail.jpg" + }, + { + "id": "XTMgvDzrnXxm3gSZQ", + "name": "disruptive D robots hail", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-thzo5hkb0awoyfmxv-thumbnail.jpg" + }, + { + "id": "QXw5ie5QNXrscXSgX", + "name": "disruptive D2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-53f2bo3xblywjqd6v-thumbnail.jpg" + }, + { + "id": "LDxR3x6bY8ujTYt3M", + "name": "black eye2", + "username": "trip-les-ix", + "avatarUrl": "https://avatars.githubusercontent.com/trip-les-ix?s=200", + "screenshotURL": "data/images/images-vnr2z620np0c86ir9-thumbnail.jpg" + }, + { + "id": "YoyxivmzQMzpahR8j", + "name": "sea_urkin", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-n6a19w5liwxn91pib-thumbnail.jpg" + }, + { + "id": "NZXTQnoGoqztxfJDm", + "name": "That spinner", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vrybjvc9nvdfejo54-thumbnail.jpg" + }, + { + "id": "L2TarY6jCmDDb2z8r", + "name": "smutz", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x0bxvj75lj4miydh2-thumbnail.jpg" + }, + { + "id": "PNhE8dDWq3i4kPX64", + "name": "wave ", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5bnlbabuqnjsbdg3b-thumbnail.jpg" + }, + { + "id": "Pzbk6qLsSg2d38JRq", + "name": "Procedural Sphere With Tessellation", + "username": "przemyslawzaworski", + "avatarUrl": "https://secure.gravatar.com/avatar/3a3abcfa29dc9b0fa9fd2fb25ff10892?default=retro&size=200", + "screenshotURL": "data/images/images-gzyo53tr1ng52yz76-thumbnail.jpg" + }, + { + "id": "B6DFsE8BsdxjmQSeD", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3tv0d984russ0ojiz-thumbnail.jpg" + }, + { + "id": "rXA7dW2QF9uYGive2", + "name": "trochoids", + "username": "argonblue", + "avatarUrl": "https://secure.gravatar.com/avatar/33a85e016ea152866eb10da331df9bb7?default=retro&size=200", + "screenshotURL": "data/images/images-nuewkledrnmenfsgg-thumbnail.jpg" + }, + { + "id": "BSig2nJzr4kavRSF2", + "name": "Vertexshaderart : Making a Grid", + "username": "hyosang_jung", + "avatarUrl": "https://secure.gravatar.com/avatar/012973e43b86800472c970853da48caf?default=retro&size=200", + "screenshotURL": "data/images/images-btltjypsix9rayu7h-thumbnail.jpg" + }, + { + "id": "3cvdmf4HtiuwSqeR8", + "name": "Vertexshaderart : Making a Grid NEW", + "username": "hyosang_jung", + "avatarUrl": "https://secure.gravatar.com/avatar/012973e43b86800472c970853da48caf?default=retro&size=200", + "screenshotURL": "data/images/images-00ase1ejdqge7ksql-thumbnail.jpg" + }, + { + "id": "hnZQWotZNLbSjY9bs", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-g84k9ktmw1u5u22tx-thumbnail.jpg" + }, + { + "id": "fvQTW8AHjW54ifFbh", + "name": "fuzeball", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4vzyacke43e0hh5rn-thumbnail.jpg" + }, + { + "id": "oEaayNGujJaMMkRSu", + "name": "sphere", + "username": "watermeloon", + "avatarUrl": "https://secure.gravatar.com/avatar/e0a1c061d10e360fcf5646229dd6e29a?default=retro&size=200", + "screenshotURL": "data/images/images-z3q0env186w8aditu-thumbnail.jpg" + }, + { + "id": "pnWPM9mLnuLMMHCFy", + "name": "texas by keyboarders", + "username": "molotovbliss", + "avatarUrl": "https://avatars.githubusercontent.com/molotovbliss?s=200", + "screenshotURL": "data/images/images-33q069wty019i4jip-thumbnail.jpg" + }, + { + "id": "HyBREewYeJJq8kxKa", + "name": "snd-scope ", + "username": "molotovbliss", + "avatarUrl": "https://avatars.githubusercontent.com/molotovbliss?s=200", + "screenshotURL": "data/images/images-4fhsfm0dxsyw1npml-thumbnail.jpg" + }, + { + "id": "hJS9jEgToDSA94vDA", + "name": "vu-spike-ball", + "username": "molotovbliss", + "avatarUrl": "https://avatars.githubusercontent.com/molotovbliss?s=200", + "screenshotURL": "data/images/images-alzu7hzvjaz1kt4fi-thumbnail.jpg" + }, + { + "id": "3GkC95J3qizbTmiwJ", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-w31227g1vlsb8ok72-thumbnail.jpg" + }, + { + "id": "FqSZrJ7rAfB3savC5", + "name": "sound cone", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2f79tm4lfguhhcmqx-thumbnail.jpg" + }, + { + "id": "3EGwvJZ5S8be4wM7t", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-i87yt5mo2qdvrbufg-thumbnail.jpg" + }, + { + "id": "9BDdcbJh6rDaD4MBi", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ljqz9tg2e96biba0y-thumbnail.jpg" + }, + { + "id": "tgnWFwxfEbt64aHfQ", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2t9b3pyfzxx84cj1w-thumbnail.jpg" + }, + { + "id": "ji6xYT7wScL9QmPmH", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-feghmwtod2ct5fr7n-thumbnail.jpg" + }, + { + "id": "5wpxiiCkDvE3Wsv5D", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5uges3daa81g028l4-thumbnail.jpg" + }, + { + "id": "dufQqpoG5ZrSfdkjf", + "name": "terrain", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c8hmo4y2h3f07cs3u-thumbnail.jpg" + }, + { + "id": "mHgyhLsuwpJinyxDH", + "name": "qyube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-divw09ujzictphpq4-thumbnail.jpg" + }, + { + "id": "85epXhdc6bNGzc5t4", + "name": "feels like debris", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-gx46ouixvfo8q5lzs-thumbnail.jpg" + }, + { + "id": "sPftu8weSr8Ej2krv", + "name": "galaxy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ptfoyfp5ejm55ipi3-thumbnail.jpg" + }, + { + "id": "MTW5NGatj8ZLp9cAD", + "name": "Super Triangles", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-vbsh00yiwbryqhu7f-thumbnail.jpg" + }, + { + "id": "ycNiGDhLy59Wqt9qN", + "name": "chamber lights", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ug26wkfn5k2mmo07o-thumbnail.jpg" + }, + { + "id": "nsh5oH8N9MEBb9AbT", + "name": "orbit", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-j6kf7gq4ag3espkos-thumbnail.jpg" + }, + { + "id": "85e3bGEKFA4Ac7pHh", + "name": "ball-otest", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-i9xq2a4msxc62rurp-thumbnail.jpg" + }, + { + "id": "QWNj2ZspFrBLdtsJm", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-9ewfpwmxi2ukbtscv-thumbnail.jpg" + }, + { + "id": "P4e5h3iG9MkcanmBM", + "name": "netflix lines", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ttns5u3x3yhhrwg52-thumbnail.jpg" + }, + { + "id": "jXYNwHmBj5miEkeS6", + "name": "cyclone", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-873y09mja4nztx8bd-thumbnail.jpg" + }, + { + "id": "s62zTw9wPkh2irNpz", + "name": "Knotted Candy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-wgdyzlw6vz0q335i8-thumbnail.jpg" + }, + { + "id": "JGGw63pb4BxyXBqyc", + "name": "Sir. Rup", + "username": "nkkky", + "avatarUrl": "https://avatars.githubusercontent.com/nkkky?s=200", + "screenshotURL": "data/images/images-so5lflx3v2310djhi-thumbnail.jpg" + }, + { + "id": "iw8FH3ButdB4ZzpsQ", + "name": "Sir. Rup 002", + "username": "nkkky", + "avatarUrl": "https://avatars.githubusercontent.com/nkkky?s=200", + "screenshotURL": "data/images/images-fq4nmm894gb1pqy7o-thumbnail.jpg" + }, + { + "id": "9SEaxhmGgtFCn7tXv", + "name": "technoball K machinzed dev1 (GL_LINE_LOOP)", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c348psbz7l0z9sg95-thumbnail.jpg" + }, + { + "id": "BEskWFZM826YNBJAN", + "name": "red bars", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-8kk1q0vbaljeoqim3-thumbnail.jpg" + }, + { + "id": "x4ozirAYAtKhvZGdo", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-udpgbtk7mfevs8ioa-thumbnail.jpg" + }, + { + "id": "KmPLGgqiLsMdk7QpB", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4iugfltq73592b12b-thumbnail.jpg" + }, + { + "id": "9adCiEobmkAuj8Gue", + "name": "tehland", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-kj403tp8c1m3o7gib-thumbnail.jpg" + }, + { + "id": "gFjsSoxA5bwzxPwXc", + "name": "pencilswirl", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-r6jjcmih2ttwfu564-thumbnail.jpg" + }, + { + "id": "rTaKpcsBkfYB9EWPk", + "name": "diamondshine", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-kq333heq8zn3tb5kh-thumbnail.jpg" + }, + { + "id": "fMPBsNwkev8DSYD72", + "name": "litelline", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-z6hyf2iuknjtljetj-thumbnail.jpg" + }, + { + "id": "55nRorvcAYfSEYJhZ", + "name": "magicsparkle", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-ec19nxkvgvj12vj8n-thumbnail.jpg" + }, + { + "id": "4mMg6kQXSNiEDkuwR", + "name": "firesun", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-3nmwhhmgzxc2wgvv4-thumbnail.jpg" + }, + { + "id": "JoWAeXNsfz23C8d8b", + "name": "graysounds", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-6qzsf4xfvsa9wh594-thumbnail.jpg" + }, + { + "id": "ssKvHBoYZGXuj88en", + "name": "gridpop", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-t4hn0ycil9ufaiq9s-thumbnail.jpg" + }, + { + "id": "ko66wgrdNeNbx9WDz", + "name": "ropepull", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nxrc35d6f0s6kkgxa-thumbnail.jpg" + }, + { + "id": "KZdmbdYsnSLLCa4bQ", + "name": "jiggleswirl", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-wpkpox3zosg9lahy8-thumbnail.jpg" + }, + { + "id": "a3JBo24QkPxvKYpja", + "name": "yellolong", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-43d7yf6za24synjei-thumbnail.jpg" + }, + { + "id": "rSvWfDGEoaa5hqb5j", + "name": "lightline", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-l7ilf7htifrovzg7t-thumbnail.jpg" + }, + { + "id": "x7PnnkNih93Fxm9A6", + "name": "coolswirly", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-qsh2hwhaurld8q092-thumbnail.jpg" + }, + { + "id": "2dNusyoCHaevCCYP7", + "name": "colorsound", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-d028m75nb0x0sxgif-thumbnail.jpg" + }, + { + "id": "japgmuqb6SYNuHBb4", + "name": "blocksfix", + "username": "jarredthecoder", + "avatarUrl": "https://avatars.githubusercontent.com/JarredTheCoder?s=200", + "screenshotURL": "data/images/images-m4kdlq8jon5l9hby8-thumbnail.jpg" + }, + { + "id": "eKqemqRBragaEs55Y", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-eztlitzffj21uloyh-thumbnail.jpg" + }, + { + "id": "KsdyG6xS6Dzvyi2wN", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-tjlfjn51z6mq5edzk-thumbnail.jpg" + }, + { + "id": "nxqCRh7kbHBXK4qNn", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-p9gppiaro099sb4fv-thumbnail.jpg" + }, + { + "id": "G2qYBmuQs2cA7C4ze", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-16qy3qcvp5qha4e5c-thumbnail.jpg" + }, + { + "id": "DNj4nZ8MZnj5JZFt2", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-id39thpy8e629p119-thumbnail.jpg" + }, + { + "id": "4BkjXGWjFkBTo7kEJ", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-add1ry2x6udi4y90o-thumbnail.jpg" + }, + { + "id": "QNRa7fHrHnYWcZoCm", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-oa5a4swy0aziifkdn-thumbnail.jpg" + }, + { + "id": "gWF8YEaiS44osT2K7", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-x5sk8ux4v7jw5o0s4-thumbnail.jpg" + }, + { + "id": "gJPot9c9wsbfuT6Md", + "name": "box", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fq2bl5x6nmigdkelx-thumbnail.jpg" + }, + { + "id": "QJskLnkaikLSdkYEs", + "name": "ball-o?", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d14t0js9z65qdfo9a-thumbnail.jpg" + }, + { + "id": "gKbNhtAK4AqZvFaQM", + "name": "audio cubes", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-jlvq4qrowcpvrqioz-thumbnail.jpg" + }, + { + "id": "pTwLX9y5LQfFD3iey", + "name": "vector field demonstration", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-s282s8olr9u4abgtn-thumbnail.jpg" + }, + { + "id": "WGdY3o9Nv6AqRvu5E", + "name": "vector field demonstration", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-u7x7y5e7l25hu68z2-thumbnail.jpg" + }, + { + "id": "s8fhTKeFZujEYyKJi", + "name": "vector field demonstration", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lsegf533xf05n5bgu-thumbnail.jpg" + }, + { + "id": "b3WFbQ4SDWLwXbcSp", + "name": "vector field demonstration2", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fwmwqwqtzlc2aq39a-thumbnail.jpg" + }, + { + "id": "emui4ppu4ZWu8iLwB", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qxe4loax4pibydqtz-thumbnail.jpg" + }, + { + "id": "FjA6DbEL9qbenj778", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cvc4cnxb7uua9k7ua-thumbnail.jpg" + }, + { + "id": "gkrLbb6TwrbveHw49", + "name": "crazy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-h2dnqkrvpzisr9lzq-thumbnail.jpg" + }, + { + "id": "vX6mGDTuwQmga2tvj", + "name": "technoball K machinized dev0", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1flpjy3ynqqpofr29-thumbnail.jpg" + }, + { + "id": "63qyzzMSCLNjCirhM", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-d4fibv7djvebcag69-thumbnail.jpg" + }, + { + "id": "HoKSKN5bu2omsjRi7", + "name": "etch a sketch", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-pfifpp4me2dxziq2w-thumbnail.jpg" + }, + { + "id": "Xf8ywY5kqr6qLRr2F", + "name": "etch a sketch", + "username": "chriscamplin", + "avatarUrl": "https://secure.gravatar.com/avatar/5798c9f697b3fea48de32ade2ba3e54c?default=retro&size=200", + "screenshotURL": "data/images/images-g5rjv9b4talrgrvqh-thumbnail.jpg" + }, + { + "id": "CiTmPsWuiBPzTRgDn", + "name": "Colorful Circle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-nx2k1jvqdmfkqwyam-thumbnail.jpg" + }, + { + "id": "gbv2z926cb7MWF3Gy", + "name": "Colorful Circle", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-5fnnehcthnc49607f-thumbnail.jpg" + }, + { + "id": "7YtDi4LTcGHk4Rv7A", + "name": "julia", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-4w32gpqpqn1t5yikr-thumbnail.jpg" + }, + { + "id": "vmttH6ixNxK3G3sTG", + "name": "juliaworld", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-so5wax3s8iqnb8gru-thumbnail.jpg" + }, + { + "id": "4X6mJigNvjatDJv4q", + "name": "RED HEXDROPS", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-ypmyuwl2kresc5s6h-thumbnail.jpg" + }, + { + "id": "DyvcR8jSTEBXSm6J7", + "name": "RED HEXDROPS 2", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-dlp6o7b9nvq90f4me-thumbnail.jpg" + }, + { + "id": "rdnpitzwjjAHK9Aef", + "name": "RED HEXDROPS 3", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-1umeb0fpmqzlt8p50-thumbnail.jpg" + }, + { + "id": "L4yzBqmc6NRwKXSrs", + "name": "RED HEXDROPS 4", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-olpd7focu18z17hef-thumbnail.jpg" + }, + { + "id": "4JPK5YpSAQRwHtgZX", + "name": "RED HEXDROPS 5", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-cqkw0b6xoe9tuf2by-thumbnail.jpg" + }, + { + "id": "biFYsrY6uepWwyQN8", + "name": "RED HEXDROPS 4 points", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-8dn2j8yhrlzs9o3ph-thumbnail.jpg" + }, + { + "id": "NJM9uDGaaTJfRnrQC", + "name": "RED HEXDROPS 4 trifan", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-wqsuzlzop0bl6xgbu-thumbnail.jpg" + }, + { + "id": "3icxEpds8WvgPmHy7", + "name": "RED HEXDROPS 4 trifan 2", + "username": "macro", + "avatarUrl": "https://lh3.googleusercontent.com/-hZKcNaW8AT0/AAAAAAAAAAI/AAAAAAAAEGM/geaXegN2s9U/photo.jpg", + "screenshotURL": "data/images/images-99x8e1vmxjbqq3xyf-thumbnail.jpg" + }, + { + "id": "Ga8SGpeNAfnweDCaB", + "name": "Knotted Candy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-yymqe7n0wz8y7pvpg-thumbnail.jpg" + }, + { + "id": "4qDhPQsi7RfmX6Ncw", + "name": "residuallines", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mtwjoodj78egcka1r-thumbnail.jpg" + }, + { + "id": "whWhE5dshEugnAaBD", + "name": "residuallinesJV", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-marber1fnt48zptmm-thumbnail.jpg" + }, + { + "id": "SenDt74iq42gPkfJk", + "name": "Making A Grid", + "username": "hyojoonkim0020", + "avatarUrl": "https://secure.gravatar.com/avatar/cefe773094bef8b88aa9bc719abe4874?default=retro&size=200", + "screenshotURL": "data/images/images-l7dxr8ig2smnbir0m-thumbnail.jpg" + }, + { + "id": "3PKtnXSrJ72kySj5P", + "name": "Making A Grid_hyojoonkim", + "username": "hyojoonkim0020", + "avatarUrl": "https://secure.gravatar.com/avatar/cefe773094bef8b88aa9bc719abe4874?default=retro&size=200", + "screenshotURL": "data/images/images-2gcweptjbxoehd9et-thumbnail.jpg" + }, + { + "id": "a9PxcWZgDCKCjv5qK", + "name": "Making a Grid", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-13mmf9wpnk8x7jrqp-thumbnail.jpg" + }, + { + "id": "BCqiiXBgBXYHTqw6G", + "name": "Making A Grid-JongHyeon Lee", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-e2m7r0pwzdx2wc2kd-thumbnail.jpg" + }, + { + "id": "bwv3qCqRiC5rfavvx", + "name": "Motion", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-kdmt87gz6x2y4mevw-thumbnail.jpg" + }, + { + "id": "ubXN9wpiu8DoS8vjW", + "name": "Motion - JongHyeon Lee", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-yi9l7mun72ywo063j-thumbnail.jpg" + }, + { + "id": "nSFFYqXN2ekMfQBzn", + "name": "Making A Grid", + "username": "myunghyunkim0227", + "avatarUrl": "https://avatars.githubusercontent.com/MyunghyunKim0227?s=200", + "screenshotURL": "data/images/images-jaf4q89jrtkva6al9-thumbnail.jpg" + }, + { + "id": "hXDoWkGSTBFBQGXnN", + "name": "Making A Grid by Jaeyeong An", + "username": "jaeyeong-an", + "avatarUrl": "https://avatars.githubusercontent.com/Jaeyeong-An?s=200", + "screenshotURL": "data/images/images-jvr097bu3nleexao4-thumbnail.jpg" + }, + { + "id": "DS8Yfx4noREuQ6YKi", + "name": "Making A Grid", + "username": "chaerinpark", + "avatarUrl": "https://avatars.githubusercontent.com/ChaerinPark?s=200", + "screenshotURL": "data/images/images-4fyf6w4vo3vkw062y-thumbnail.jpg" + }, + { + "id": "JhD7Yeh3NstvQbkhJ", + "name": "Colors", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-saxcpw39a4cogiu9h-thumbnail.jpg" + }, + { + "id": "moFoJGxvvHCxBdedE", + "name": "Colors", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-uuwss033ul0tqav60-thumbnail.jpg" + }, + { + "id": "qividt2tw6AP89Bn7", + "name": "Colors - JongHyeon Lee", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-08waa7vmldaafop14-thumbnail.jpg" + }, + { + "id": "cTjJFwZcBSSW8d9gw", + "name": "Making A Grid_Own variation", + "username": "chaerinpark", + "avatarUrl": "https://avatars.githubusercontent.com/ChaerinPark?s=200", + "screenshotURL": "data/images/images-3nsin53boylhavckc-thumbnail.jpg" + }, + { + "id": "vSoYhoMHS2k2S8ueR", + "name": "Making A Grid_myunghyun,kim", + "username": "myunghyunkim0227", + "avatarUrl": "https://avatars.githubusercontent.com/MyunghyunKim0227?s=200", + "screenshotURL": "data/images/images-5ufrcrfqcrl2s2h20-thumbnail.jpg" + }, + { + "id": "fSz8brGjX9TATFZLC", + "name": "Making A Grid by Jaeyeong An(own variation)", + "username": "jaeyeong-an", + "avatarUrl": "https://avatars.githubusercontent.com/Jaeyeong-An?s=200", + "screenshotURL": "data/images/images-vlsx6bdgp6tsk2bnu-thumbnail.jpg" + }, + { + "id": "E77bqBL3BGzWQsqBw", + "name": "making a grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-hqkd8x1d69ojbl5qp-thumbnail.jpg" + }, + { + "id": "fjN25zTwqLYMCNkJ4", + "name": "Motion", + "username": "chaerinpark", + "avatarUrl": "https://avatars.githubusercontent.com/ChaerinPark?s=200", + "screenshotURL": "data/images/images-adq4xfys08soo9ays-thumbnail.jpg" + }, + { + "id": "2n27TgzYcMngCYSTG", + "name": "Motion_Own variation", + "username": "chaerinpark", + "avatarUrl": "https://avatars.githubusercontent.com/ChaerinPark?s=200", + "screenshotURL": "data/images/images-hcqv8rqergkg1iahm-thumbnail.jpg" + }, + { + "id": "jY9RXPEf9rZ5Gv89N", + "name": "Colors", + "username": "minseok.kim", + "avatarUrl": "https://secure.gravatar.com/avatar/9dbf6d7b52812c1307f1a8c8f4872756?default=retro&size=200", + "screenshotURL": "data/images/images-r4v5hs9o06rez0rnl-thumbnail.jpg" + }, + { + "id": "akox4yJZBcHiLrbKy", + "name": "Colors_minseok_kim", + "username": "minseok.kim", + "avatarUrl": "https://secure.gravatar.com/avatar/9dbf6d7b52812c1307f1a8c8f4872756?default=retro&size=200", + "screenshotURL": "data/images/images-dapat16nmyupp9tty-thumbnail.jpg" + }, + { + "id": "tn7AoRaD9XwPucwsL", + "name": "Audio Reactive Art", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-m9e1tceae85wupy05-thumbnail.jpg" + }, + { + "id": "CgmFpc7tyuEKBCKdm", + "name": "Audio Reactive Art - jonghyeon.l", + "username": "jonghyeon-lee-digipen", + "avatarUrl": "https://avatars.githubusercontent.com/JongHyeon-Lee-Digipen?s=200", + "screenshotURL": "data/images/images-vjwitpzi4b2tfbxy8-thumbnail.jpg" + }, + { + "id": "dmBnGPyH5KjJbneie", + "name": "Audio Reactive_myunghyun.kim", + "username": "myunghyunkim0227", + "avatarUrl": "https://avatars.githubusercontent.com/MyunghyunKim0227?s=200", + "screenshotURL": "data/images/images-dfh6gc59eguxybrxq-thumbnail.jpg" + }, + { + "id": "i6KKW4mstdDQe6aQK", + "name": "Audio Reactive Art with rainbow color by Jaeyeong An", + "username": "jaeyeong-an", + "avatarUrl": "https://avatars.githubusercontent.com/Jaeyeong-An?s=200", + "screenshotURL": "data/images/images-y1h30l04ewwc6pb3m-thumbnail.jpg" + }, + { + "id": "Csow3AwA4u2Zotovs", + "name": "Spiral", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-b26mmzekmhq018tq9-thumbnail.jpg" + }, + { + "id": "7wueifQeGTg9ubjrp", + "name": "technokokoro", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-fvhma6k85fm0y3xqy-thumbnail.jpg" + }, + { + "id": "MvaSyANZqpM9Mewxp", + "name": "cubespace", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-di8ioxncx41ha0f02-thumbnail.jpg" + }, + { + "id": "kpxXuKKj3zwRaQ23J", + "name": "Cool Attractors", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-dlr1602tjq4skbp8k-thumbnail.jpg" + }, + { + "id": "Hap5jDJiPwQZ9oJx6", + "name": "Motion-1", + "username": "eren", + "avatarUrl": "https://lh3.googleusercontent.com/a/AAcHTteGyNZj5qjNhZ1PS7gklhngFJPOEGJ1ziUo1luJtIbl8o7k=s96-c", + "screenshotURL": "data/images/images-gf2p7e048xlcan3ah-thumbnail.jpg" + }, + { + "id": "bpX9tBkNhHiF6nHk8", + "name": "sound basics 1", + "username": "mv10", + "avatarUrl": "https://secure.gravatar.com/avatar/ae371690b3859dd1515ccf3e9ddc2ec8?default=retro&size=200", + "screenshotURL": "data/images/images-ef7ogza1aqocla6p6-thumbnail.jpg" + }, + { + "id": "yMrRxwDvaoSaokXzo", + "name": "sound basics 3", + "username": "mv10", + "avatarUrl": "https://secure.gravatar.com/avatar/ae371690b3859dd1515ccf3e9ddc2ec8?default=retro&size=200", + "screenshotURL": "data/images/images-yoxjqmao8yxtj3up1-thumbnail.jpg" + }, + { + "id": "N9XCgfYxZ2Ffxr7hk", + "name": "Block Party shadows scaled", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sqwmccwyqoewm6x8r-thumbnail.jpg" + }, + { + "id": "eCTzFjq4bRAxBAC7h", + "name": "heightfield plotter", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2ogmchyi1l2biqky3-thumbnail.jpg" + }, + { + "id": "2FpAyYRgGQytFrcAM", + "name": "SphereDistribution lines", + "username": "ersh", + "avatarUrl": "https://secure.gravatar.com/avatar/a55f941068214979f79e0d64d5062a5d?default=retro&size=200", + "screenshotURL": "data/images/images-rqz871idb95ap9wo9-thumbnail.jpg" + }, + { + "id": "kFydmLK7cBEcShhrj", + "name": "hello", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-qtjl1olthuh77fo1n-thumbnail.jpg" + }, + { + "id": "tbgH6FuoT5pxxDgfv", + "name": "point cloud vs spheres", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-2kdyioq5u3lamkaog-thumbnail.jpg" + }, + { + "id": "PG4Ca7xxyoYxNdTGe", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-sy6kbjjotxu4jbo95-thumbnail.jpg" + }, + { + "id": "5A8xZ8XRT4Rujidr9", + "name": "ah-me", + "username": "gman", + "avatarUrl": "https://secure.gravatar.com/avatar/dcc0309895c3d6db087631813efaa9d1?default=retro&size=200", + "screenshotURL": "data/images/images-ksrnkciu52b85jbns-thumbnail.jpg" + }, + { + "id": "KQLkpoBAPGrNrd3XK", + "name": "boilerplate", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-z929ey3qev30op9j2-thumbnail.jpg" + }, + { + "id": "pYmg39piqotd25sYc", + "name": "cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-3cpxxovn8lkbtvifn-thumbnail.jpg" + }, + { + "id": "jLsTszfmYpHj49XKx", + "name": "cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-82rnsdqwdfrktzgcp-thumbnail.jpg" + }, + { + "id": "chpxsLEkqhZkhLxDD", + "name": "cube", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-907ihbkmpi5rmhxa3-thumbnail.jpg" + }, + { + "id": "prW9D82SGpoazGXyC", + "name": "BouncingRuler", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mekiw39krlj07ju1k-thumbnail.jpg" + }, + { + "id": "FMpo6tgK5xszx7CuS", + "name": "Infinite Spiral", + "username": "inoculate", + "avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocLPX__XSzFEjiaLL7ngTjVY--ujLu-wtKbsHzVss-EoO7Q=s96-c", + "screenshotURL": "data/images/images-rxtzxsr3gyf2krcwv-thumbnail.jpg" + }, + { + "id": "keYAR2P7hmm2ei9uF", + "name": "RED HEXDROPS 5", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-0xa64yi4r9gkhttr9-thumbnail.jpg" + }, + { + "id": "sEwzQPsXsfiFvkjuQ", + "name": "somecopy", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-uirq4fkgq9n8chsew-thumbnail.jpg" + }, + { + "id": "tTGjfG5qvuESdFcQR", + "name": "color charge", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-cwexgm561wag3gefb-thumbnail.jpg" + }, + { + "id": "5EtotDS2NmQ69fxWF", + "name": "OVERSHOOT", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-szbazl937ioxoy43y-thumbnail.jpg" + }, + { + "id": "CtXSFrywWri4egF7m", + "name": "Bubble Universe", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ihujydzql8jnmlny2-thumbnail.jpg" + }, + { + "id": "XYGETLizFzAGcWS7N", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-pvu1mjo3k22dquxr5-thumbnail.jpg" + }, + { + "id": "DagQjjsyoq4ygNS4K", + "name": "Gay", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-mlp35pmvw7ntyujx7-thumbnail.jpg" + }, + { + "id": "ZbRaEcwQdQBWXwaX9", + "name": "primera vez", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8zjguu4aub63zn5ai-thumbnail.jpg" + }, + { + "id": "7iyrHWLQT836AWhNg", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-inakop1j9bieq21k5-thumbnail.jpg" + }, + { + "id": "JovmnYPALtpYmhbx3", + "name": "oceanwave", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-6box2rbjfvtabnp5h-thumbnail.jpg" + }, + { + "id": "CzKeby46tDXxFsGzL", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8h1plksd6zzq3bhub-thumbnail.jpg" + }, + { + "id": "kQB2kyZz5geDYpNeo", + "name": "gridpnt", + "username": "tapos", + "avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocLcSqwSc82VQduMzLtVzzfGNr9fy1Y-vHBpYEpqyKQiDA=s96-c", + "screenshotURL": "data/images/images-ljyteb19bhwlfgock-thumbnail.jpg" + }, + { + "id": "d7bnfzEFFTWGyQNaT", + "name": "squiro", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-m6e570ff6wrwxm5qa-thumbnail.jpg" + }, + { + "id": "7CY4KDf722AkkpwR2", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-lzoz3krf047zlu2dk-thumbnail.jpg" + }, + { + "id": "SNLk9sRqLuGqWmAYF", + "name": "unnamed", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-c5wu5gek5admbi9ng-thumbnail.jpg" + }, + { + "id": "Mm6CKQSnDcsLCorEL", + "name": "Be My Lover", + "username": "ultr7a", + "avatarUrl": "https://avatars.githubusercontent.com/ultr7A?s=200", + "screenshotURL": "data/images/images-npviscy5bouiby1w6-thumbnail.jpg" + }, + { + "id": "KgWfhQ8N9LTWDds2b", + "name": "plasma grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-45sqfjb6u3momy9r8-thumbnail.jpg" + }, + { + "id": "9L4TTn35TGvpgnmg9", + "name": "plasma grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-8rsdimycn88z4qzny-thumbnail.jpg" + }, + { + "id": "aXiR2fCcooYzoea9L", + "name": "plasma grid", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ltwaxsxbyifp8cjg8-thumbnail.jpg" + }, + { + "id": "gyyfnx8KyXiz9QvWn", + "name": "zheball", + "username": "masoud", + "avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocKduENtgZ5YgN-oFXWds5z6iD7S4GtlK8DMGCULeb3_jNsAvHg=s96-c", + "screenshotURL": "data/images/images-j1z04sh3qlgivmavm-thumbnail.jpg" + }, + { + "id": "kWRaQgwjzbFw55cxw", + "name": "uhhhh", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-otechd48mxfewps2n-thumbnail.jpg" + }, + { + "id": "3fJgrXgNHKr78pqQs", + "name": "points", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-ek948z8ppr8qt9880-thumbnail.jpg" + }, + { + "id": "uaxNZMjuMEduopGWR", + "name": "points", + "username": "anon", + "avatarUrl": "", + "screenshotURL": "data/images/images-1lqxzmjvfocxm21ol-thumbnail.jpg" + }, + { + "id": "NdqnSLhc6EZ67TXkP", + "name": "eh", + "username": "floppafilms google emails", + "avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocIuaBwUR9c6Zno3BImNS0s8sMlZcGj0gBrDxanr22L0IECUEO0=s96-c", + "screenshotURL": "data/images/images-xi7z5ypu2r43cz2zz-thumbnail.jpg" + }, + { + "id": "BKz7wnibraTYy2v8H", + "name": "shader template, sound variable", + "username": "floppafilms google emails", + "avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocIuaBwUR9c6Zno3BImNS0s8sMlZcGj0gBrDxanr22L0IECUEO0=s96-c", + "screenshotURL": "data/images/images-n19d4nevatvlfabzc-thumbnail.jpg" + } +] \ No newline at end of file