GDur GDur on What is this Board and how we use it

    Hi there, recently I started using shadertoy and it's pretty cool imo.
    I am a web developer and would love to help improve the website. Auto formatting (as and example) would be a great addition. :)

    Greg Downs Greg Downs on What is this Board and how we use it

    Idea: section for most popular Tags / trending Tags

    Steven on What is this Board and how we use it

    @matiasmoreno15 @iqx22 Vertex and/or geometry shader support would be interesting.

    Matías Moreno Matías Moreno on What is this Board and how we use it

    @iqx22 How can I contribute (I mean source code) to ShaderToy (in my spare time)?

    Thomas Willberger Thomas Willberger on What is this Board and how we use it

    Where should we report bugs? If I have a language other than English active in Shadertoy, saving an existing shader does not work. It says so (and flashes with a blue border) but nothing happens. Changed back to English, now it works.

    theGiallo theGiallo on What is this Board and how we use it

    So, isn't there a place where we can propose features?

    poljeremias poljeremias on What is this Board and how we use it

    Green indicates that the task is currently in progress.

    iql iql on What is this Board and how we use it

    We are this board to inform the users of what new features are coming next for the website.

    Features are organized in groups by functionality. Usually most imminent features will be represented higher in the column, but take this is a guide rather than a fixed planing. You can help us get a sense of what you want to see made first by voting. We listen to the community and prioritize task based on that and our big picture goals.

    Be patiente, we work on Shadertoy on our spare time, but we do it consistently.


Rendering Features


    David Hoskins on Dynamic resolution

    This would be really handy for experiments with multi-resolution ray maching, if you can set it to 'Image/2' or 'Image/4' etc. Or just to simply make our own 256x256 exponential random maps for more interesting (and cheap) terrain.

    Bernie Freidin on Dynamic resolution

    i like the idea of internal resolution (i.e. resolution rendered by the Image shader) being independent of the viewport resolution in WebGL. sometimes i want to render higher resolution that we are displaying (for supersampling) and sometimes i want to render lower resolution (i.e. if i'm running the shader on my phone, lol). i realize both of these can be "emulated" in the shader code itself, but it would be very convenient to have this available at all times.

    Tempally on Dynamic resolution

    Yes, yes! Especially for VR! (In this case we need to set resolution greater than fullscreen).
    I do it for myself now by attaching a UserScript to the browser
    with @includes='':
    plr = document.getElementById("demogl");
    if (plr!==null)

    ariromanopfefferkorn ariromanopfefferkorn on Dynamic resolution

    It should also support HiDPi displays. When on a mac with a retina display, all pixels are currently quadrupled.

    FabriceNEYRET on Dynamic resolution

    what about, first, briging controls when at fullscreen resolution ?

    alexkluchikov on Dynamic resolution

    May be, half or quarter resolution for heavy shaders to keep them dynamic?

    patupl on Dynamic resolution

    Ability to switch fullscreen resolution, for example to 1366x768 or 720 × 480.


    munrocket munrocket on Floating point textures

    For now only 50% support WEBGL_color_buffer_float. Why shadertoy not emulate 16 bit float texture buffers with 2 RGBA? You can make an abstraction layer with packing and unpacking which is working on every devices.


    Bernie Freidin on Multipass 2.0

    what is the plan for this? i would love to see the passes de-coupled from the buffers (rendertargets), i.e. we could add an arbitrary number of passes (maybe limit it to 16), each of which can write to any one of the buffers (currently A-D, but maybe allow for 8?)

    also - the ability to specify a buffer to be a specific resolution would be great. i'm currently working on a lightmapping prototype and i would like to fix the lightmap resolution independent of the scene resolution.

    so to summarize:

    buffers A - H: each of which specifies its resolution as either fixed (W x H) or relative to the viewport resolution (scale factor)
    passes 0 - 15: each of which specifies up to 16 input buffers and one output buffer


    Bernie Freidin on Multiple Render Targets

    i would love this for rendering spherical harmonics ..

Product Features


    PeterSvP PeterSvP on Use custom textures

    Sorry for doubleposting, but there is my hack:

    1, Disable CORS! You may use any plugin for that.
    2. Open DevTools, F12
    3. Paste in Console and alter the Slot and URL:

     /*slot, 0,1,2,3 */ 3, { 
     mSampler:{filter:"mipmap",wrap:"repeat",vflip: "true",srgb: "false"},

    Note that if you try to save such a shader, the site will refuse with:
    The shader coubld not be saved, it is using private assets

    There is an example with a DATA URI:

    PeterSvP PeterSvP on Use custom textures

    ShaderToy is completely unusable for drafting shaders / iterating shaders with prerendeded flowmaps and the like, side-by-side with gamedev software. Allow us at least to use something like pragma to set input from an URL hosted everywhere, or somehow, to load textures hosted elsewhere, e.g. on my website, or at least, to drag-drop set them without them being saved, just until refresh. This will make shadertoy usable in this usecase. I want to set flowmap and iterate on it faster. For now the only ways are to hack an inputs. either by using debugger proxies like Fiddler, or DevTools. At least allow some form of Drag-drop-set-no-persist :)

    We already have Soundcloud - Track URL, it will be easy to have Custom Image - URL :) You can even restrict users to publish shaders using this if copyrights are issue :)

    Tempally on Use custom textures

    I agree with Vladimir Zh: if texture uploading can cause some issues (space, bandwidth costs) it would be great to have a buffer that will be calculated once. In addition to capability of defining buffer dimensions it can GREATLY improve performance of the shaders!
    2 David Cañadas: unfortunately, it's just a matter of time - when you will receive first complaint, because somebody has procedurally reproduced an image protected by copyright (or illegal content).

    Vladimir (Second Account) Vladimir (Second Account) on Use custom textures (not save)

    I like the Idea of not allowing to save textures uploaded by users - it saves server space, and makes people think how to generate it all on the fly. But there are some cases when it's better to load data from static texture, like font, or spriteshit, or some precomputed distance field, uvmap, flowmap, etc.

    What about making it possible to refer first frame from another shader as a chanel, or make it possible to render buffer to texture only once at first frame ?

    This will save some cpu time on reused data, and at the same time don't break the idea of having only procedural content

    David Cañadas David Cañadas on Use custom textures (not save)

    I am totally in about using custom textures but if the "not save" remark is about people to upload textures to their own servers (or third party services) I think I'm not really in, as most shaders will get broke when people get moving from server to server, closing a blog and so. I know storing textures in your servers is an unaffordable idea due to storage and bandwidth costs. Also, did you have any point about "validating" textures? I mean, avoid textures containing inappropiate images, spam images and so.

    patupl on Use custom textures (not save)

    @fabriceneyret I posted a shader with 'a trick' you can use.

    FabriceNEYRET on Use custom textures (not save)

    or a simple brower-side trick to send an image file instead of webcam ?


    Roger Tremblay on Take high res screenshots

    e.g., from a 4k UHD screen or a 5k monitor.


    Hugo Silva Hugo Silva on Change literal constants with sliders IN editor

    Instead of using comments in the GLSL code to describe Sliders I would prefer separating the GUI controls from the shader with a keyword. The text below ilustrates the idea (with the GLSL code located after the keyword "Shader:")

    Uniform: float
    Name: uPixelCount
    UIText: Number Of Pixels
    Step: 1
    Min: 3
    Max: 1024
    Default: 120

    void mainImage( out vec4 fragColor, in vec2 fragCoord )
    // ...

    Paulo Falcao Paulo Falcao on Change literal constants with sliders IN editor

    I made a custom version of glslsandbox with sliders, a similar approach could be used for shadertoy.

    Matías Moreno Matías Moreno on Change literal constants with sliders IN editor

    @iestyn6 and I would add to have these values tweakable WHILE the shader is running (change values without reloading the shader).

    alijaya alijaya on Change literal constants with sliders IN editor

    Hi... I would really love this feature... maybe we can use the format like Natron? It will great improve the compatibility with Natron also :D

    iestyn6 iestyn6 on Change literal constants with sliders IN editor

    Not only would this speed up development a lot (hunting for that "just right" constant ;) but I would also use this to make shaders tweakable by the user (this would be great for the one I'm currently working on).

    Reinder Reinder on Change literal constants with sliders IN editor

    @dilatube yes, but as an author you would define that kind parameters as const or defines. Not as uniforms.

    FabriceNEYRET on Change literal constants with sliders IN editor

    What about first having access to mouse buttons, mouse move, wheel, + the regular timeline control of the videos, & shader , comprising in full screen ?

    Reinder Reinder on Change literal constants with sliders IN editor

    Maybe it would be possible to define (float) uniforms in top of your code, and add some min/max/default value in a special formatted comment behind the uniform. I think it would be really, really nice if there would be automatic created sliders for each of these uniforms to adjust their values.

    dilatube on Change literal constants with sliders IN editor

    It is a lot of work for the shader author to set sensible min/max/inc values for each parameter and most constants are by definition not meant to be changed, e.g the value of pi.


    iestyn6 iestyn6 on Generate GIFs

    Yeah, the search page often makes my browser hang or crash. GIFs would make great embeddable image links on other sites too.

    antoinedorni on Generate GIFs

    Yes, the main page and search page are way too heavy it's always making my browser buggy (even with my GTX 980)


    iestyn6 iestyn6 on Buffer previews (inputs area) updated in real-time

    This would be an amazing help for debugging!

    Also extremely useful would be a texel value watch attached to this. Mouseover and entering specific texel u,v coords would be amazing!


    Steven on WebMidi

    @this is a midi event driven music visualization made with the zgaeeditor visualizer.

    It is not easy to create something without midi input. Why? the fft only does pitch frequency - it does not know note chords.

    Macro Machines Macro Machines on WebMidi

    This would be amazing , And could be implemented along side the keyboard input using a similar process.

    On a related note I would absolutely love interactive shader format style widget-GUI custom uniform controls, which could be another way to implement a MIDI control scheme. I suggest referencing shaderfrog, he has nice attribute/custom uniform sliders. Also (all of his parsing and web work is on his git, so it would be relatively easy to reference/adopt, you can find this through his spec link at the top of the page).

    erikbystrom2 erikbystrom2 on WebMidi

    It would be awesome to be able to bind knobs and other controls to uniforms through WebGL.

    yannisg1 yannisg1 on WebMidi

    Here's a demo where I modulate some of my favorite shadertoys with clubber.js. All use the same 4 vec4s(4 bands) as input and do simple combinations of these in glsl. The results are pretty good even though there's lots of room for improvement.

    yannisg1 yannisg1 on WebMidi

    I've experimented alot with music visualisation and came to the conclusion that midi is not very practical. You could consider instead something like which still analyses the audio but also takes the musical key into account


    FabriceNEYRET on Configure per user preferences for TABS/spaces

    What about first urgently fixing the bug that delete all between "<" and ">" during copy past of code ?


    Angramme Angramme on Use custom music track

    it would be cool if it could stream directly from a youtube link (and this option would probably be enough for most people)

    antoinedorni on Use custom music track

    That would be great but it would require that it doesn't upload the music to


    WouterVanNifterick WouterVanNifterick on Mouse capture for FPS style naviation in 3D worlds and games

    While changing the mouse capture, the offset bug should be fixed.

    Right now, when you scroll the comments (+canvas) section down to read comments, and the canvas is still in view, the mouse offset that's passed to the shader does not take this offset in count.

    It's easy to visualize using this shader:


    iestyn6 iestyn6 on [VR] Add a VR #define for shaders when in VR mode

    This seems redundant; the two different entrypoints can call the same function with different parameters. Maybe not maximally efficient in some cases but it doesn't seem like a big problem.

    Tempally on [VR] Add a VR #define for shaders when in VR mode

    Hmm... How can it be useful? We have different entrance point for VR already...


    Julien Guertault Julien Guertault on Add some normal maps to the asset collection

    Could we refer to assets somewhere else like is done for sound with SoundCloud? Maybe using Flickr or imgur's API.

    FabriceNEYRET on Add some normal maps to the asset collection

    I would say a font map is missing more.


    Julien Guertault Julien Guertault on Sort shaders by length

    But also show the number of shader instructions. :)

    gregrostami on Sort shaders by length

    This would be so helpful for the code-golfers on Shadertoy like Fabrice and I.

    FabriceNEYRET on Sort shaders by length

    ... and display shader length in the data below the icon. :-)


    FabriceNEYRET on Embed Shader of the Week using the same http address :

    What about about first having a usable embeding ? starting with sound=mute parameter, for instance. (imagine the zoo for a "page of my shaders").



    iestyn6 iestyn6 on As a user I want an option to disable the CTRL-S hotkey to save my shaders.

    Ctrl+S doesn't work for me, so I guess if you can run Chrome on a MacBook then try that ;)

Bug Fixing


    David Hoskins on Synch music and visuals better (there's a delay now)

    This is still a problem. And a related problem is that sometimes we can get up to over frame 100 before the textures have loaded in properly which means people have to instruct users to rewind the shader. This is really annoying if you have multiple buffers that rely on textures that you only want to render only once. You might not see the bug at dev. central because you don't have the download delay.

    poljeremias poljeremias on Synch music and visuals better (there's a delay now)

    @patupl can you please report a bug info @ shadertoy . com

    Thanks a lot!

    patupl on Synch music and visuals better (there's a delay now)

    Also, there is difference between webAudio gain input on osx/win so music based shaders work diffrent on these OSes. Even if using chrome on both.


Home | Templates | Pricing | Apps | Jobs | Blog | @trello | Trello API | About | Help | Legal | Privacy | Integrations | Contact us | Terms
Your browser is not supported