How to organize a shader system with opengl

I'm thinking of:

Having a main shader that will be applied to all objects of my application, it will be used for designing, transforming, positioning, coloring, etc.

And each object can have its own additional shader for additional material, for example, for a water object, an additional shader is definitely needed.

But there is a problem, how to apply two or more shaders to one object? Because I need to apply the main shader + my own shader.

+4
source share
1 answer

, OpenGL ( Direct3D!) // , , , .

, GLSL. , , . , .

, , ubershader, , main() // , . , .

#ifdefs main(). , - #defines, Gouraud. #define WATER, , #define DISTORT - , , #define FOG ,...

ubershader, #define glCompileShader.

, . - , - GLSL.

, , GLSL, . ubershader 1, 2,... main(). # 1, , # 2, // , # 3, ... , NOP, .

, , #define, . , , , WATER , , , #define.

, .

+2

Source: https://habr.com/ru/post/1541047/


All Articles