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. :)
Idea: section for most popular Tags / trending Tags
@matiasmoreno15 @iqx22 Vertex and/or geometry shader support would be interesting.
@iqx22 How can I contribute (I mean source code) to ShaderToy (in my spare time)?
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.
So, isn't there a place where we can propose features?
Green indicates that the task is currently in progress.
We are this board to inform the Shadertoy.com 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.
Thanks!
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.
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.
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='.shadertoy.com/view':
...
plr = document.getElementById("demogl");
if (plr!==null)
{
plr.style.width="3240px";
plr.style.height="1800px";
}
It should also support HiDPi displays. When on a mac with a retina display, all pixels are currently quadrupled.
what about, first, briging controls when at fullscreen resolution ?
May be, half or quarter resolution for heavy shaders to keep them dynamic?
Ability to switch fullscreen resolution, for example to 1366x768 or 720 × 480.
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.
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
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:gShaderToy.SetTexture( /*slot, 0,1,2,3 */ 3, { mSrc:"https://img00.deviantart.net/06f2/i/2007/303/5/2/powerpuff_girls_fanart_by_petersvp.jpg", mType:"texture", 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 assetsThere is an example with a DATA URI:
https://www.shadertoy.com/view/XdVBzt
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 :)
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).
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
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.
@fabriceneyret I posted a shader with 'a trick' you can use.
https://www.shadertoy.com/view/llSSWd
or a simple brower-side trick to send an image file instead of webcam ?
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: 120Shader:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// ...
}
I made a custom version of glslsandbox with sliders, a similar approach could be used for shadertoy. http://www.backtothepixel.com/apps/GLSLSandboxHack/index.html
@iestyn6 and I would add to have these values tweakable WHILE the shader is running (change values without reloading the shader).
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
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).
@dilatube yes, but as an author you would define that kind parameters as const or defines. Not as uniforms.
What about first having access to mouse buttons, mouse move, wheel, + the regular timeline control of the videos, & shader , comprising in full screen ?
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.
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.
Yeah, the search page often makes my browser hang or crash. GIFs would make great embeddable image links on other sites too.
Yes, the main page and search page are way too heavy it's always making my browser buggy (even with my GTX 980)
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!
@this is a midi event driven music visualization made with the zgaeeditor visualizer.
https://www.youtube.com/watch?v=lt3Sp3WnVew
It is not easy to create something without midi input. Why? the fft only does pitch frequency - it does not know note chords.
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 interactiveshaderformat.com (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).
It would be awesome to be able to bind knobs and other controls to uniforms through WebGL.
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. https://wizgrav.github.io/clubber/
I've experimented alot with music visualisation and came to the conclusion that midi is not very practical. You could consider instead something like https://github.com/wizgrav/clubber which still analyses the audio but also takes the musical key into account
What about first urgently fixing the bug that delete all between "<" and ">" during copy past of code ?
it would be cool if it could stream directly from a youtube link (and this option would probably be enough for most people)
That would be great but it would require that it doesn't upload the music to shadertoy.com
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: https://www.shadertoy.com/view/Mss3zH
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.
Hmm... How can it be useful? We have different entrance point for VR already...
Could we refer to assets somewhere else like is done for sound with SoundCloud? Maybe using Flickr or imgur's API.
I would say a font map is missing more.
This would be so helpful for the code-golfers on Shadertoy like Fabrice and I.
... and display shader length in the data below the icon. :-)
What about about first having a usable embeding ? starting with sound=mute parameter, for instance. (imagine the zoo for a "page of my shaders").
Ctrl+S doesn't work for me, so I guess if you can run Chrome on a MacBook then try that ;)
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.
@patupl can you please report a bug info @ shadertoy . com
Thanks a lot!
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.