Skip to main content

A local shader development environment

Project description

Shader Workshop

This tool is a local HTTP/WebSocket server monitoring the specified shader fragment directory. It allows live coding fragment shaders with your preferred code editor, and having them rendered in your browser through WebGL2.

screenshot

Features

  • Hot reload
  • Live controls for basic uniforms
  • Mouse position
  • #include directive
  • Play/Pause/Reset time
  • Screenshot
  • Resolution and aspect ratio controls
  • Low resolution rendering
  • Lightweight, no web dependencies

Install

pipx install shader-workshop

pip can also be used.

Usage

sw-server /path/to/fragment/shaders

If unspecified, sw-server will use the examples directory.

All the .frag files in that directory will be tracked and accessible through the web interface.

Fragment inputs and outputs

Every fragment gets the following uniforms as input:

  • float time: the time in seconds
  • vec2 resolution: the canvas resolution in pixels
  • vec2 mouse: the mouse last press down position in pixels

They must write on the vec4 out_color output to produce a color.

The compatibility is currently set to 300 es.

Shorthand aliases

  • P: gl_FragCoord.xy
  • O: out_color
  • T: time
  • R: resolution
  • M: mouse

Live controls

To expose controls to the web UI, declare a uniform in your fragment shader. Optionally, in the comment beside, you can specify the default value and ranges. For example:

uniform float angle; // def:0.7 min:0.6 max:0.9
uniform int steps;   // def:7 min:0 max:10
uniform bool debug;  // def:1
uniform vec3 color;  // def:1,0.5,0

Currently, float, int, bool and vec3 (for colors only) are supported.

Includes

It is possible to include .glsl files using an #include directive: #include name (no quote nor explicit .glsl). Recursive includes (.glsl including .glsl) are supported, as well as including multiple times the same file (through recursion or not). Their changes are also monitored by the file watcher.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shader_workshop-0.6.0.tar.gz (25.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shader_workshop-0.6.0-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file shader_workshop-0.6.0.tar.gz.

File metadata

  • Download URL: shader_workshop-0.6.0.tar.gz
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shader_workshop-0.6.0.tar.gz
Algorithm Hash digest
SHA256 6c55556e8765395017ac6de1e70a7eff19e60b42ad37ec3a6b41b705c1415460
MD5 61db1ce0c31f6c8413562b32783e311b
BLAKE2b-256 a96702ae2256bc7cd044580d6339293e58401569a55b2b5d67b17a7687c1309e

See more details on using hashes here.

Provenance

The following attestation bundles were made for shader_workshop-0.6.0.tar.gz:

Publisher: python-publish.yml on ubitux/ShaderWorkshop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shader_workshop-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for shader_workshop-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24658c648e9edd9e85cb41d8bae4940295d06f0184a81583c97b5fde3470b565
MD5 d07f58a411864beafd684d4c86984218
BLAKE2b-256 4614608e42e2d8a4ffb496cf8e398d06233a87e39bc11f20ca87f2a7addb039d

See more details on using hashes here.

Provenance

The following attestation bundles were made for shader_workshop-0.6.0-py3-none-any.whl:

Publisher: python-publish.yml on ubitux/ShaderWorkshop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page