Skip to content

A Light Table plugin for the OpenGL Shader Language (initially targeting OpenGL ES 2.0 / WebGL)

Notifications You must be signed in to change notification settings

sherbondy/glslt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

eb06ee7 · Jul 16, 2014

History

47 Commits
Jun 26, 2014
Jun 23, 2014
Jun 30, 2014
Jul 16, 2014
Jun 11, 2014
Jun 17, 2014
Jun 11, 2014
Jul 16, 2014
Jun 25, 2014
Jul 16, 2014
Jul 16, 2014
Jun 11, 2014
Jun 26, 2014
Jun 25, 2014
Jun 30, 2014

Repository files navigation

gestalt

Gestalt is a GLSL plugin for Light Table. It initially targets the OpenGL ES Shading Language v1.00 Specification (same as WebGL's GLSL). The goal is for the program to be a good teacher. Essentially, someone should be able to learn GLSL by fiddling with a sample program through the guidance of the plugin. I am guided by the philosophy that our tools should explain themselves and get out of the way.

In terms of functionality, this translates to:

  • Powerful, type/context-aware autocomplete for all built-in (and programmer-defined) functions, with inline documentation
  • Live re-rendering of a shader as you modify it
  • inline, helpful errors for invalid shaders
  • Graphical tools for feeding input (e.g. images, webcam) and observing intermediate values/output of a shader
  • Debugging functionality, e.g. stepping through the rendering pipeline on a per-vertex or per-pixel basis
  • Ctags-esque support for viewing the overall structure of a GLSL program in terms of functions, structs, variables.
  • Fullscreen mode to display the live output of the program under the text.
  • Just for the hell of it: ShaderToy integration.

For this to work, we need:

  • A GLSL parser, ideally an incremental one: for now the plan is to use MESA's glsl parser, compiled to js with emscripten.
  • A file watcher
  • Or maybe it is sufficient to use WebGL's compiler and ask it about the shader (active_uniforms, active_attributes)?
  • A pipeline for capturing/redirecting errors
  • A default WebGL context for rendering and plugging in new inputs
  • Nice tools like color pickers, matrix renderers, input fields for uniform values (a la shader builder: pictures, video, audio, webcam as texture inputs)...
  • Basic template files for a fragment and vertex shader (2d, 3d)?
  • Display graphical information about your hardware WebGL limitations (max textures, resolution requirements, etc.)

So, the initial goal is to obtain feature-parity with OpenGL Shader Builder. From here, we can start experimenting with goofy features that take full advantage of the fact that LT is essentially just a fancy web view (piping geometry/textures/shaders/params in and out from arbitrary sources online... dataflow programming sorts of ideas...)

Progress:

  • Initial Readme
  • Syntax highlighting
  • Inline documentation (grab from manglsl)
  • Parser: MESA glsl, piggybacking off GLSL optimizer -> emscripten
  • Autocomplete
  • Live preview
  • GUI input tools...

Just for the hell of it, I am interested in using powerful/experimental libraries to achieve this, such as:

  • core/async
  • om

Inspiration:

Resources:

My gratitude to the creators of light-haskell for giving me a sane starting-point for creating this plugin.

About

A Light Table plugin for the OpenGL Shader Language (initially targeting OpenGL ES 2.0 / WebGL)

Resources

Stars

Watchers

Forks

Packages

No packages published