GabeRundlett / desktop-shadertoy

A fully featured desktop client for shadertoy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Desktop Shadertoy

Why?

Desktop Shadertoy is a desktop client application for Shadertoy projects, allowing enthusiasts to open Shadertoys in profilers and graphics debuggers like Renderdoc or NVIDIA NSight.

Features

Desktop Shadertoy is absolutely a work in progress but it already supports multi-pass shaders such as this or this.

New in version 0.3.0, you can fetch the contents of shaders that use the "Public + API" setting through the download bar that comes up if you press the download button next to the fullscreen button. You can do so by providing either the URL or just the ID, which in this example is Xds3zN

Alternatively, you can create or fork a shadertoy. Then go to your profile, where you'll be able to export it as a json file. Drag and drop this json onto the app window, and it will compile the shadertoy for you!

You can use normal buffers, the common buffer, Cubemap buffers, and the image buffer. All built-in variables like iMouse and iTime are supported, and inputs can have the expected configuration parameters like mip-mapping, filtering modes and wrap modes.

The releases tentatively ship with the assets from the Shadertoy website itself, so projects that utilize the images and/or cubemaps from the site will work on desktop as well.

Issues

If you find any issues with Desktop Shadertoy, I'd love it if you opened an issue on GitHub. It should be noted that with the download feature, many "Public" shaders might not support the Public + API setting, and you'll notice that it results in an in-app error message of "Shader not found". A great issue to report is if a shadertoy that you run results in 1) a shader compilation error, or 2) an application crash. Be sure to include in the issue what shadertoy or json file caused the issue.

Some shadertoys use GLSL that is not compliant with Vulkan GLSL, and so Desktop Shadertoy does preprocessing on the shadercode to fix-up as many incompatibilities as possible. That being said, some issues still remain such as uninitialized local variables.

Future Plans

I'd like it if it was possible to configure the passes via a UI within the desktop client itself, as opposed to having to go through the web UI or modifying the json manually. And it would be even cooler if you could use your own local glsl text files as sources for the buffers, and have it reload automatically on file change.

I currently don't have plans on supporting Audio passes, however this would be a welcome and interesting PR if anyone was super passionate about it.

Platforms

Desktop Shadertoy is supported on Windows and Linux

About

A fully featured desktop client for shadertoy

License:Apache License 2.0


Languages

Language:C++ 86.2%Language:CMake 9.3%Language:GLSL 4.5%