A major contributor to this article appears to have a close connection with its subject. (August 2016) |
Shadertoy is an online community and tool for creating and sharing shaders through WebGL, used for both learning and teaching 3D computer graphics in a web browser.
Original author(s) | Inigo Quilez & Pol Jeremias |
---|---|
Initial release | February 14, 2013 |
Stable release | Release 0.8.3
/ March 3, 2016 |
Written in | GLSL, JavaScript, PHP |
Type | 3D computer graphics tool community |
Website | www |
Overview
editShadertoy is an online community and platform for computer graphics professionals, academics[1] and enthusiasts who share, learn and experiment with rendering techniques and procedural art through GLSL code. There are more than 52 thousand public contributions as of mid-2021 coming from thousands of users. WebGL[2] allows Shadertoy to access the compute power of the GPU to generate procedural art, animation, models, lighting, state based logic and sound.
History
editShadertoy was created by Pol Jeremias and Inigo Quilez in January 2013 and came online in February the same year.
The roots of the effort are in Inigo's "Shadertoy" section [3] in his computer graphics educational website.[4] With the arrival of the initial WebGL implementation by Mozilla's Firefox in 2009, Quilez created the first online live coding environment and curated repository of procedural shaders. This content was donated by 18 authors from the Demoscene and showcased advanced real-time and interactive animations never seen in the Web before, such as raymarched metaballs, fractals and tunnel effects.
After having worked together in several real-time rendering projects together for years, in December 2012 Quilez and Pol decided to create a new Shadertoy site that would follow the tradition of the original Shadertoy page with its demoscene flavored resource and size constrained real-time graphics content, but would add social and community features and embrace an open-source attitude.
The page came out with the live editor, real-time playback, browsing and searching capabilities, tagging and commenting features. Content wise, Shadertoy provided a fixed and limited set of textures for its users to utilize in creative ways. Over the years Shadertoy added extra features, such as webcam and microphone input support, video, music, Virtual Reality rendering and multi-pass rendering.
There are over 31 thousand contributions in total from thousands of users, several of which are referenced in academic papers. Shadertoy also hosts annual competitions and events for its community to enjoy, such as the Siggraph 2015 Shadertoy Competition[5]
Features
edit- Editing: syntax highlighted editor with immediate visual feedback
- Social: commenting on shadertoys, voting (liking)
- Sharing: permanent URLs, embedded in other websites, private shader sharing
- Rendering: floating point buffer based multipass and history
- Media inputs: microphone, webcam, keyboard, mouse, VR HMDs, soundcloud, video, textures
Usage
edit‹The template Manual is being considered for merging.›
This article is written like a manual or guide. (August 2016) |
An example of a procedural animation created in Shadertoy could be the following square tunnel:
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
// input: pixel coordinates
vec2 p = (-iResolution.xy + 2.0 * fragCoord) / iResolution.y;
// angle of each pixel to the center of the screen
float a = atan(p.y, p.x);
// modified distance metric
float r = pow(pow(p.x * p.x, 4.0) + pow(p.y * p.y, 4.0), 1.0/8.0);
// index texture by (animated inverse) radius and angle
vec2 uv = vec2(1.0 / r + 0.2 * iTime, a);
// pattern: cosines
float f = cos(12.0 * uv.x) * cos(6.0 * uv.y);
// color fetch: palette
vec3 col = 0.5 + 0.5 * sin(3.1416 * f + vec3(0.0, 0.5, 1.0));
// lighting: darken at the center
col = col * r;
// output: pixel color
fragColor = vec4(col, 1.0);
}
The code above generates the following image:
Mentions
editShadertoy is referenced in several sources:
- NVidia developer blog, Jun 2016, Shadertoy Contest 2016 Announced.[6]
- Siggraph Real-Time Live!, 2015, an interactive sound visualizing project.[7]
- Hacker News, 2014, Shadertoy adds procedural GPU-generated music in the browser.[8]
- Numerical Methods for Ray Tracing Implicitly Defined Surfaces,[9]
- CS 371 Course at Williams College, 2014, Inspiration for CS 371[10]
- Real-Time Rendering, Aug 2015, Seven Things for August 20, 2015.[11]
References
edit- ^ McGuire, Morgan. "Midterm Inspiration" (PDF). CS371: Computational Graphics [Fall 2014]. Archived (PDF) from the original on 2020-11-15. Retrieved 29 June 2024.
- ^ "Khronos Releases Final WebGL 1.0 Specification". Khronos Group. March 3, 2011. Retrieved 2 June 2012.
- ^ "Shader Toy". www.iquilezles.org. Archived from the original on 2019-06-30. Retrieved 2016-08-07.
- ^ "Inigo Quilez".
- ^ "Siggraph 2015 Shadertoy Competition". Archived from the original on 2016-09-10. Retrieved 2016-08-07.
- ^ "NVidia developer blog". 2016. Retrieved 2 June 2016.
- ^ "Shadertoy Competition at Siggraph 2015 . Real-Time Live!". Archived from the original on 2016-09-10. Retrieved 2015-08-13.
- ^ "Hacker News". ycombinator. Retrieved 2020-08-31.
- ^ "Numerical Methods for Ray Tracing Implicitly Defined Surfaces" (PDF). Williams College. Archived from the original (PDF) on 2015-09-06. Retrieved 2014-09-25.
- ^ "CS 371" (PDF). Williams College.[dead link ]
- ^ "Real-Time Rendering - Seven Things for August 20, 2015". realtimerendering.com. 2015. Retrieved 20 August 2015.