Search code examples
openglglslshaderpixelfragment-shader

Can you have multiple pixel (fragment) shaders in the same program?


I would like to have two pixel shaders; the first doing one thing, and then the next doing something else. Is this possible, or do I have to pack everything into the one shader?


Solution

  • You can do do this, e.g. by doing function calls from the main entrypoint to functions that are implemented in the various shader objects.

    main() {
        callToShaderObject1()
        callToShaderObject2()
    }
    

    each of those callToShaderObject functions can live in different shader objects, but all objects have to be attached and linked in the same program before it can be used.