, , . , , , .
, GL_ARB_shading_language_include ( , ) , include source:
#define DS_VENDOR_NVIDIA 1
#define DS_VENDOR_AMD 2
#define DS_VENDOR_INTEL 3
#if __VERSION__ >= 130
#define ATTRIBUTE in
#define SHADER_IN in
#define SHADER_OUT out
#define OUT out
#else
#define ATTRIBUTE attribute
#define SHADER_IN varying
#define SHADER_OUT varying
#define OUT
#endif
#if __VERSION__ >= 130
#define ARRAY_ATTRIBUTE(name, size) name[size]
#else
#define ARRAY_ATTRIBUTE(name, size) name[size]
#endif
#if __VERSION__ >= 130
#define BEGIN_UNIFORM_BLOCK(name) uniform name {
#define END_UNIFORM_BLOCK() };
#else
#define BEGIN_UNIFORM_BLOCK(name)
#define END_UNIFORM_BLOCK()
#endif
#if __VERSION__ >= 150
#define BEGIN_INPUT_BLOCK(name) in name {
#define END_INPUT_BLOCK() };
#define BEGIN_OUTPUT_BLOCK(name) out name {
#define END_OUTPUT_BLOCK() };
#else
#define BEGIN_INPUT_BLOCK(name)
#define END_INPUT_BLOCK()
#define BEGIN_OUTPUT_BLOCK(name)
#define END_OUTPUT_BLOCK()
#endif
#if __VERSION__ >= 130
#define TEXTURE_2D texture
#define TEXTURE_3D texture
#define TEXTURE_RECT texture
#define TEXTURE_CUBE texture
#if __VERSION__ >= 150
#define TEXTURE_SIZE(sampler) textureSize(sampler)
#else
#define TEXTURE_SIZE(sampler) sampler ## _Size
#endif
#else
#define TEXTURE_2D texture2D
#define TEXTURE_3D texture3D
#define TEXTURE_RECT texture2DRect
#define TEXTURE_CUBE textureCube
#endif
#if __VERSION__ >= 120
#define INVARIANT invariant
#else
#define INVARIANT
#endif
#if defined(GL_ARB_explicit_attrib_location)
#define LOCATION(loc) layout(location = loc)
#else
#define LOCATION(loc)
#endif
#if __VERSION__ >= 150
#define GEOMETRY_LAYOUT_IN(from) layout (from) in
#define GEOMETRY_LAYOUT(to, max) layout (to, max_vertices = max) out
#else
#define GEOMETRY_LAYOUT_IN(from)
#define GEOMETRY_LAYOUT(to, max)
#endif
, , . , , ( , > 1.0 ).
, . GLSL 1.50 , .