Questão simples:
No GLSL, existe uma maneira de compartilhar funções em vários shaders, ou eu tenho que definir todas as funções em cada shader que precisar delas?
Você pode definir algumas funções em um arquivo de cabeçalho e # incluí-las no seu sombreador. É um pouco diferente do C / C ++, porque você coloca os corpos de suas funções nos cabeçalhos, não apenas nos protótipos (já que os shaders não têm conceito de compilação e vinculação separados), mas, além disso, é como o C / C ++ cabeçalhos.
Se #include não estiver disponível, você usaria os argumentos do glShaderSource para especificar o material compartilhado. Exemplo:
fonte