Shader Workshop
A downloadable tool
Shader Workshop
In a nutshell, it is a standalone application designed to run shaders written in C/C++ similar to shaders written in GLSL for shadertoy.com. It is currently alpha and needs a lot of polish and to be built and tested on as well as packaged, for Windows.
Why Does it Exist
This is a valid question. There are so many shader art websites out there:
- shadertoy (the most well known/OG, original inspiration)
- twigl
- GLSLsandbox
- oneshader
- sledit.xyz
- fragcoord.xyz (cool new kid on the block, shamelessly borrowing ideas/design from)
Probably more that I'm unaware of.
There are several reasons for this to exist, though one of them is simply to have a shadertoy-like application that does not run in the browser and does not require an internet connection. Many other reasons are similar to the reasons that PortableGL exists in the first place even though it sacrifices the performance of the GPU, along with the full features and strict API compliance of real OpenGL. While it sacrifices the ergonomics of GLSL, it gives you the full power and control of C/C++. You can do many things that you can't do with real OpenGL/GLSL, such as real debugging. If you want to step through your shader line by line, or insert print statements, you can. If you want to declare random static/global variables and have real state, you can. If you want to mix real 3D geometry/rasterization with shadertoy style shaders, you can. You also have access to the full suite of standard tools that you might be more familiar with in terms of debugging, analyzing, profiling, etc. compared to the specialized tools you have to use for standard graphics applications that use the GPU.
Another potential reason that might apply to a small percentage of people is the demo/performance junkies, who have fun trying to eek out a few more FPS on the CPU even when the same shader might run 60+ FPS no problem on the GPU. For the really adventurous, Shader Workshop supports "frame" shaders where instead of writing a frag shader, you write a function where you get the framebuffer and you render the entire frame. Not only does this get the automatic savings of avoiding an indirect function call for every pixel, but it gives you the flexibilty to go crazy with SIMD and other micro optimizations.
Status
It works great but it is definitely unfinished/unpolished and I'm still adding/changing things. While the general design won't likely change at this point, the screenshots do not necessarily represent the final result. Elements may be added/shifted, colors may change, etc. I tried to make sure all the screenshots were up to date as of now but if you notice differences between screenshots/videos its simply because it's still changing and one is older than the other. It is currently available for pre-order and priced at a discount.
Current Features
- Write your shaders using arbitrary C/C++ code using libraries like GLM, our own math library, or PGL's builtin library
- Uses OpenMP to improve performance and you can adjust the thread count live to find the optimal setting
- Optionally write your own "frame" shaders for peak performance
- Runs entirely in software* so you don't have to worry about drivers or OpenGL/GLSL version issues
- Use any of the standard textures (2D, cubemaps, volumes, buffers/passes)
- Use your own 2D textures, cubemaps, volumes, selected at startup time simply by replacing the provided files.
- Use your own 2D textures live at runtime (file select local files), or shader compile time (hard coded local path or url)
- FPS control (1 - monitor refresh rate)
- Resolution control, variable or locked, similar to fragcoord.xyz
- Time controls similar to fragcoord.xyz
Why Support It
They say the first 90% of a project takes 90% of the time and the last 10% takes the other 90% of the time. Right now it is in a working, but alpha state. I'm changing things constantly and currently only building and running it Linux, though it should be fine on Windows. The base level of funding would allow me time to polish it sufficiently for at least beta-level if not 1.0, test it on Windows, and create and test proper packages of different types for both Linux and Windows. I have lots of ideas for features and stretch goals (some already made but unpublished) that i'd like to add but I really need/want to get it out there to people, see how much interest there is.
Another reason to support it is that, by supporting this project you would also be indirectly supporting the the development of PortableGL and other open source libraries being used like Nuklear. There is no question that I've fixed bugs and added features to PGL and Nuklear thanks to this project.
*I'm using SDL3 and select an opengl renderer by default but that's mostly for easy VSYNC as well as some Nuklear issues and it's just a compile time option to use a software renderer instead. The actual shaders are run/rendered on the CPU regardless of the backend renderer selected.
| Published | 9 days ago |
| Status | In development |
| Category | Tool |
| Author | Robert Winkler |
| Tags | 2D, 3D, No AI, programming, sdl, Shaders |
| Content | No generative AI was used |
Purchase
In order to download this tool you must purchase it at or above the minimum price of $10 USD. You will get access to the following files when they are released:





Leave a comment
Log in with itch.io to leave a comment.