Shadershow::overview



A shadershow demo has 2 fixed points of reference in forms of files in the current directory.
If the soundfile exists then the system will play that music file, if not then the system will be timer driven.

The time.txt is the root item for the rest of the demo. It is formatted into lines as follows:
"<startTimeSecNum><spaces><stopTimeSecNum><spaces><event>"
(Event compromises the rest of the line)
For example: "0.1 10.1 #part1"
This example runs "part1" from 0.1 seconds to 10.1 seconds

You either create a file formatted like this manually or you can create the file from within the Audacity audio editor (can be used to convert your music to ogg aswell)

Within audacity you load your music file (for reference) and then create a "label track" (named differently in different locales)
After creating the track you can select timespans within the track, then start typing to enter your "event text". Once finished you can export the label track and it will be parsed by the demo.

Events have 2 forms (a 3rd is planned to be implemented)

Pixelshaders are normal GLSL (GL/GLES) pixelshaders
Notice that we use the Angle library (GLES) under win32 that emulates
GLES over d3d9 to get maximum compability with hardware and on other platforms we use the GLFW lib to use normal GL
A thing to be aware of is to add a GLES precision specifier for Angle at the top of your pixelshader.
#ifdef GL_ES
precision highp float;
#endif
As mentioned we have a special parser to automatically resolve uniform inputs.
If it detects a line such as "uniform vec3 test;" (A vec3 named test) it will look at the expression outputs and fill in the uniform "test" with the values specified in the expressions.
Also if it detects texture references ("uniform sampler2D tex;") it will try to load "tex.png" and connect it with the specified sampler.

So as a summary: