A downloadable tool for Windows and Linux

Buy Now$25.00 USD or more

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.

Status

There are packages for both Linux and Windows and it works fine, but it's still a beta. There might be the rare edge case bug that I haven't caught but it's mostly in beta because I still have more I want to add, not because it's not perfectly usable.

It is currently on sale for 40% off. Any purchase will include all updates up through 1.x.y. Not sure if there ever will be another major version (ie 2.0.0) but even if there are, you will be able to use what the version you have for life and subsequent major versions would be discounted to all owners of prior versions. There is no subscription or built in ads or anything of the sort. Buy it once, own it forever.

Current Features

  • Write your shaders using arbitrary C/C++ code using libraries like GLM, my own C++ math library rsw_math, or PGL's builtin C math 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 more performance/flexibility (you write directly to the framebuffer allowing for many additional algorithms/techniques including kernels/convolutions, SIMD at the pixel level, etc.)
  • 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, videos, buffers/passes)
  • Use your own 2D textures, cubemaps, volumes, or videos, selected at startup time simply by replacing the provided files.
  • Use your own 2D textures live at runtime (file select local files or provide a URL), or shader compile time (hard coded local path or url)
  • Record your shaders, generating mp4 videos to share with others
  • FPS control (1 - monitor refresh rate if VSYNC is on, up to 1000 with it off)
  • Resolution control, variable or locked, similar to fragcoord.xyz
  • Time controls similar to fragcoord.xyz

Why Does it Exist

This is a valid question. There are so many shader art websites out there:

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.

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 beta state, with packages for both Linux and Windows. However, there are still a couple major features I'd like to add, and probably a dozen or more minor ones, plus ongoing polish (bug fixes, reorganization, optimization, etc.) and all of that takes time and effort.

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 use an opengl renderer by default on Linux (direct3D on windows) 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.

Purchase

Buy Now$25.00 USD or more

In order to download this tool you must purchase it at or above the minimum price of $25 USD. You will get access to the following files:

shader_workshop_0.5.0-368d106c.tar.gz 61 MB
shader_workshop_0.5.0-efd7b573.zip 190 MB

Development log

Leave a comment

Log in with itch.io to leave a comment.