Project Templates

Minimal Project

{
    "Image": {
        "Source": "Image.glsl",
        "Channel0": "Animation.gif"
    }
}

Note

If channel binding, or other pass options are not needed, Image.glsl can be loaded directly.

Two Pass Project

{
    "Common": "Common.glsl",

    "Buffer1": {
        "Source": "Buffer1.glsl",
        "Channel0": "Buffer1", // read the previous frame data
        "Channel1": "Keyboard"
    },

    "Image": {
        "Source": "Image.glsl",
        "Channel0": "Buffer1"
    }
}

Multi Pass Project

{
    "Common": [
        "%SHADERS_COMMON%/Include/SDF.glsl",
        "%SHADERS_COMMON%/Include/BlendModes.glsl"
    ],

    "Buffer1": {
        "DisplayName": "Computer Model",
        "Source": "Model.glsl",
        "DefaultViewer": "NormalsOverlay",
        "Channel0": "Buffer1", // read camera state from last frame
        "Channel1": "Keyboard" // use keyboard to move the camera
    },

    "Buffer2": {
        "DisplayName": "Outlines",
        "Source": "Outlines.glsl",
        "Channel0": {
            "Type": "Framebuffer",
            "Source": "Buffer1",
            "MipmapFilter": "Linear" // create mipmap, for blur approximation
        }
    },

    "Buffer3": {
        "DisplayName": "Monitor Animation",
        "Source": "ProcessAnimation.glsl",
        "Channel0": {
            "Type": "TextureSequence",
            "Source": "Resources/MonitorAnimation/Frame*.png",
            "FrameRate": 10
        },
        "RenderSize": "400, 300" // fixed size
    },

    "Image": {
        "DisplayName": "Composition",
        "Channel0": "Buffer2", // model and outlines data
        "Channel1": "Buffer3", // processed animation
        "Source": "Image.glsl"
    },

    "Viewers": {
        "NormalsOverlay": {
            "DisplayName": "Normals Overlay",
            "Source": "%SHADERS_COMMON%/Viewers/NormalsOverlay.glsl",
            "Channel0": "Viewer" // selected buffer
        }
    }
}