{
    "name": "Uniform Showcase",
    "description": "Zeigt alle verfuegbaren Uniforms",
    "vertex_shader": "attribute vec2 a_position;\nvoid main() {\n    gl_Position = vec4(a_position, 0.0, 1.0);\n}",
    "fragment_shader": "precision mediump float;\nuniform float u_time;\nuniform float u_deltaTime;\nuniform int   u_frame;\nuniform float u_fps;\nuniform vec2  u_resolution;\nuniform float u_aspectRatio;\nuniform float u_pixelRatio;\nuniform vec2  u_mouse;\nuniform vec2  u_mouseNorm;\nuniform vec4  u_mouseClick;\nuniform vec2  u_mouseVel;\nuniform vec4  u_date;\nuniform float u_random;\nuniform vec2  u_random2;\nuniform vec3  u_random3;\nuniform vec3  u_cameraPos;\nuniform vec3  u_cameraDir;\nuniform vec3  u_cameraUp;\nuniform float u_cameraFov;\nuniform float u_audioLow;\nuniform float u_audioMid;\nuniform float u_audioHigh;\nuniform float u_audioVolume;\nuniform vec2  u_scroll;\nuniform float u_zoom;\n\nvoid main() {\n    vec2 uv = gl_FragCoord.xy \/ u_resolution.xy;\n    vec3 col = vec3(0.05);\n    vec2 grid = fract(uv * 20.0);\n    col += vec3(0.08) * (step(0.95, grid.x) + step(0.95, grid.y));\n    float t = u_time;\n    col += 0.5 + 0.5 * cos(t + uv.xyx + vec3(0,2,4)) * 0.2;\n    float mouseDist = length(uv - u_mouseNorm);\n    col += vec3(1.0, 0.5, 0.2) * smoothstep(0.2, 0.0, mouseDist);\n    if (u_mouseClick.z > 0.5) {\n        col += vec3(0.0, 1.0, 0.0) * smoothstep(0.3, 0.0, mouseDist) * 0.5;\n    }\n    if (uv.y > 0.92 && uv.x < 0.25) {\n        col = mix(col, vec3(0.0), 0.8);\n        if (uv.y > 0.95 && uv.x < 0.05) col = vec3(0.0, u_fps\/60.0, 0.0);\n    }\n    float barH = 0.08;\n    if (uv.y < barH) {\n        float bar = uv.x;\n        if (bar < 0.25) col = mix(col, vec3(1.0, 0.2, 0.2), u_audioLow * step(bar, 0.25));\n        else if (bar < 0.5) col = mix(col, vec3(0.2, 1.0, 0.2), u_audioMid * step(bar, 0.5));\n        else if (bar < 0.75) col = mix(col, vec3(0.2, 0.2, 1.0), u_audioHigh * step(bar, 0.75));\n        else col = mix(col, vec3(1.0, 1.0, 0.2), u_audioVolume * step(bar, 1.0));\n    }\n    col += u_random * 0.02;\n    gl_FragColor = vec4(col, 1.0);\n}"
}