ee5befae |
1 | // This file has been automatically generated from resource file src/Shaders/DeclarationsImpl.glsl |
2 | |
3 | static const char Shaders_DeclarationsImpl_glsl[] = |
ee5befae |
4 | "\n" |
d95f5ce1 |
5 | "//! @file DeclarationsImpl.glsl includes implementation of common functions and properties accessors\n" |
b17e5bae |
6 | "#if defined(FRAGMENT_SHADER)\n" |
c40eb6b9 |
7 | "//! Output color (and coverage for accumulation by OIT algorithm).\n" |
b17e5bae |
8 | "void occSetFragColor (in vec4 theColor)\n" |
9 | "{\n" |
c40eb6b9 |
10 | "#if defined(OCC_ALPHA_TEST)\n" |
11 | " if (theColor.a < occAlphaCutoff) discard;\n" |
12 | "#endif\n" |
13 | "#if defined(OCC_WRITE_WEIGHT_OIT_COVERAGE)\n" |
b17e5bae |
14 | " float aWeight = theColor.a * clamp (1e+2 * pow (1.0 - gl_FragCoord.z * occOitDepthFactor, 3.0), 1e-2, 1e+2);\n" |
15 | " occFragCoverage.r = theColor.a * aWeight;\n" |
16 | " occFragColor = vec4 (theColor.rgb * theColor.a * aWeight, theColor.a);\n" |
b17e5bae |
17 | "#else\n" |
c40eb6b9 |
18 | " occFragColor = theColor;\n" |
b17e5bae |
19 | "#endif\n" |
c40eb6b9 |
20 | "}\n" |
b17e5bae |
21 | "#endif\n" |
22 | "\n" |
daf73ab7 |
23 | "#if defined(THE_MAX_LIGHTS) && (THE_MAX_LIGHTS > 0)\n" |
ee5befae |
24 | "// arrays of light sources\n" |
25 | "uniform THE_PREC_ENUM ivec2 occLightSourcesTypes[THE_MAX_LIGHTS]; //!< packed light sources types\n" |
26 | "uniform vec4 occLightSources[THE_MAX_LIGHTS * 4]; //!< packed light sources parameters\n" |
27 | "\n" |
28 | "// light source properties accessors\n" |
29 | "int occLight_Type (in int theId) { return occLightSourcesTypes[theId].x; }\n" |
30 | "int occLight_IsHeadlight (in int theId) { return occLightSourcesTypes[theId].y; }\n" |
31 | "vec4 occLight_Diffuse (in int theId) { return occLightSources[theId * 4 + 0]; }\n" |
32 | "vec4 occLight_Specular (in int theId) { return occLightSources[theId * 4 + 0]; }\n" |
33 | "vec4 occLight_Position (in int theId) { return occLightSources[theId * 4 + 1]; }\n" |
34 | "vec4 occLight_SpotDirection (in int theId) { return occLightSources[theId * 4 + 2]; }\n" |
35 | "float occLight_ConstAttenuation (in int theId) { return occLightSources[theId * 4 + 3].x; }\n" |
36 | "float occLight_LinearAttenuation (in int theId) { return occLightSources[theId * 4 + 3].y; }\n" |
37 | "float occLight_SpotCutOff (in int theId) { return occLightSources[theId * 4 + 3].z; }\n" |
38 | "float occLight_SpotExponent (in int theId) { return occLightSources[theId * 4 + 3].w; }\n" |
daf73ab7 |
39 | "#endif\n" |
ee5befae |
40 | "\n" |
41 | "// material state\n" |
42 | "uniform vec4 occFrontMaterial[5];\n" |
43 | "uniform vec4 occBackMaterial[5];\n" |
44 | "\n" |
45 | "// front material properties accessors\n" |
46 | "vec4 occFrontMaterial_Ambient(void) { return occFrontMaterial[0]; }\n" |
47 | "vec4 occFrontMaterial_Diffuse(void) { return occFrontMaterial[1]; }\n" |
48 | "vec4 occFrontMaterial_Specular(void) { return occFrontMaterial[2]; }\n" |
49 | "vec4 occFrontMaterial_Emission(void) { return occFrontMaterial[3]; }\n" |
50 | "float occFrontMaterial_Shininess(void) { return occFrontMaterial[4].x; }\n" |
51 | "float occFrontMaterial_Transparency(void) { return occFrontMaterial[4].y; }\n" |
52 | "\n" |
53 | "// back material properties accessors\n" |
54 | "vec4 occBackMaterial_Ambient(void) { return occBackMaterial[0]; }\n" |
55 | "vec4 occBackMaterial_Diffuse(void) { return occBackMaterial[1]; }\n" |
56 | "vec4 occBackMaterial_Specular(void) { return occBackMaterial[2]; }\n" |
57 | "vec4 occBackMaterial_Emission(void) { return occBackMaterial[3]; }\n" |
58 | "float occBackMaterial_Shininess(void) { return occBackMaterial[4].x; }\n" |
59 | "float occBackMaterial_Transparency(void) { return occBackMaterial[4].y; }\n" |
60 | "\n" |
61 | "// 2D texture coordinates transformation\n" |
62 | "vec2 occTextureTrsf_Translation(void) { return occTexTrsf2d[0].xy; }\n" |
63 | "vec2 occTextureTrsf_Scale(void) { return occTexTrsf2d[0].zw; }\n" |
64 | "float occTextureTrsf_RotationSin(void) { return occTexTrsf2d[1].x; }\n" |
d95f5ce1 |
65 | "float occTextureTrsf_RotationCos(void) { return occTexTrsf2d[1].y; }\n" |
66 | "//! @endfile DeclarationsImpl.glsl\n"; |