Help this tool reach its goal

Raised
$0.00
Goal
$2,000.00
0%
of goal

A downloadable tool for Windows and Linux

Get this tool and 2 more for $20.00 USD
View bundle
Buy Now
On Sale!
40% Off
$20.00 $12.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. It is currently in beta but works well.

Status

The first public beta is released and the latest videos demoing 0.4.0 are the most up to date representation of its status. The screenshots are older. 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.

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 more performance/flexibility (you write directly to the framebuffer opening the way for many additional algorithms/techniques as well as the use of SIMD)
  • 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 provide a URL), 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 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, but beta state, running on both Linux and Windows. I have lots of ideas for possible features that i'd like to add but I really need/want to get it out there to people, see how much interest there is in general and get feedback.

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 and will continue to do so.

*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

Get this tool and 2 more for $20.00 USD
View bundle
Buy Now
On Sale!
40% Off
$20.00 $12.00 USD or more

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

shader_workshop_0.4.0-b4f89c9.tar.gz 22 MB
shader_workshop_0.4.0-b4f89c9.zip 23 MB

Development log

Leave a comment

Log in with itch.io to leave a comment.