ee5befae |
1 | // This file has been automatically generated from resource file src/Shaders/DeclarationsImpl.glsl |
2 | |
3 | static const char Shaders_DeclarationsImpl_glsl[] = |
4 | "// Created on: 2013-10-10\n" |
5 | "// Created by: Denis BOGOLEPOV\n" |
6 | "// Copyright (c) 2013-2014 OPEN CASCADE SAS\n" |
7 | "//\n" |
8 | "// This file is part of Open CASCADE Technology software library.\n" |
9 | "//\n" |
10 | "// This library is free software; you can redistribute it and/or modify it under\n" |
11 | "// the terms of the GNU Lesser General Public License version 2.1 as published\n" |
12 | "// by the Free Software Foundation, with special exception defined in the file\n" |
13 | "// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT\n" |
14 | "// distribution for complete text of the license and disclaimer of any warranty.\n" |
15 | "//\n" |
16 | "// Alternatively, this file may be used under the terms of Open CASCADE\n" |
17 | "// commercial license or contractual agreement.\n" |
18 | "\n" |
19 | "// This file includes implementation of common functions and properties accessors\n" |
20 | "\n" |
b17e5bae |
21 | "#if defined(FRAGMENT_SHADER)\n" |
22 | "#if defined(OCC_WRITE_WEIGHT_OIT_COVERAGE)\n" |
23 | "//! Output color and coverage for accumulation by OIT algorithm.\n" |
24 | "void occSetFragColor (in vec4 theColor)\n" |
25 | "{\n" |
26 | " float aWeight = theColor.a * clamp (1e+2 * pow (1.0 - gl_FragCoord.z * occOitDepthFactor, 3.0), 1e-2, 1e+2);\n" |
27 | " occFragCoverage.r = theColor.a * aWeight;\n" |
28 | " occFragColor = vec4 (theColor.rgb * theColor.a * aWeight, theColor.a);\n" |
29 | "}\n" |
30 | "#else\n" |
31 | "//! Output color.\n" |
32 | "void occSetFragColor (in vec4 theColor) { occFragColor = theColor; }\n" |
33 | "#endif\n" |
34 | "#endif\n" |
35 | "\n" |
daf73ab7 |
36 | "#if defined(THE_MAX_LIGHTS) && (THE_MAX_LIGHTS > 0)\n" |
ee5befae |
37 | "// arrays of light sources\n" |
38 | "uniform THE_PREC_ENUM ivec2 occLightSourcesTypes[THE_MAX_LIGHTS]; //!< packed light sources types\n" |
39 | "uniform vec4 occLightSources[THE_MAX_LIGHTS * 4]; //!< packed light sources parameters\n" |
40 | "\n" |
41 | "// light source properties accessors\n" |
42 | "int occLight_Type (in int theId) { return occLightSourcesTypes[theId].x; }\n" |
43 | "int occLight_IsHeadlight (in int theId) { return occLightSourcesTypes[theId].y; }\n" |
44 | "vec4 occLight_Diffuse (in int theId) { return occLightSources[theId * 4 + 0]; }\n" |
45 | "vec4 occLight_Specular (in int theId) { return occLightSources[theId * 4 + 0]; }\n" |
46 | "vec4 occLight_Position (in int theId) { return occLightSources[theId * 4 + 1]; }\n" |
47 | "vec4 occLight_SpotDirection (in int theId) { return occLightSources[theId * 4 + 2]; }\n" |
48 | "float occLight_ConstAttenuation (in int theId) { return occLightSources[theId * 4 + 3].x; }\n" |
49 | "float occLight_LinearAttenuation (in int theId) { return occLightSources[theId * 4 + 3].y; }\n" |
50 | "float occLight_SpotCutOff (in int theId) { return occLightSources[theId * 4 + 3].z; }\n" |
51 | "float occLight_SpotExponent (in int theId) { return occLightSources[theId * 4 + 3].w; }\n" |
daf73ab7 |
52 | "#endif\n" |
ee5befae |
53 | "\n" |
54 | "// material state\n" |
55 | "uniform vec4 occFrontMaterial[5];\n" |
56 | "uniform vec4 occBackMaterial[5];\n" |
57 | "\n" |
58 | "// front material properties accessors\n" |
59 | "vec4 occFrontMaterial_Ambient(void) { return occFrontMaterial[0]; }\n" |
60 | "vec4 occFrontMaterial_Diffuse(void) { return occFrontMaterial[1]; }\n" |
61 | "vec4 occFrontMaterial_Specular(void) { return occFrontMaterial[2]; }\n" |
62 | "vec4 occFrontMaterial_Emission(void) { return occFrontMaterial[3]; }\n" |
63 | "float occFrontMaterial_Shininess(void) { return occFrontMaterial[4].x; }\n" |
64 | "float occFrontMaterial_Transparency(void) { return occFrontMaterial[4].y; }\n" |
65 | "\n" |
66 | "// back material properties accessors\n" |
67 | "vec4 occBackMaterial_Ambient(void) { return occBackMaterial[0]; }\n" |
68 | "vec4 occBackMaterial_Diffuse(void) { return occBackMaterial[1]; }\n" |
69 | "vec4 occBackMaterial_Specular(void) { return occBackMaterial[2]; }\n" |
70 | "vec4 occBackMaterial_Emission(void) { return occBackMaterial[3]; }\n" |
71 | "float occBackMaterial_Shininess(void) { return occBackMaterial[4].x; }\n" |
72 | "float occBackMaterial_Transparency(void) { return occBackMaterial[4].y; }\n" |
73 | "\n" |
74 | "// 2D texture coordinates transformation\n" |
75 | "vec2 occTextureTrsf_Translation(void) { return occTexTrsf2d[0].xy; }\n" |
76 | "vec2 occTextureTrsf_Scale(void) { return occTexTrsf2d[0].zw; }\n" |
77 | "float occTextureTrsf_RotationSin(void) { return occTexTrsf2d[1].x; }\n" |
78 | "float occTextureTrsf_RotationCos(void) { return occTexTrsf2d[1].y; }\n"; |