0029337: Visualization, TKOpenGl - visual artifacts on Intel Broadwell GPU
[occt.git] / src / Shaders / Shaders_DeclarationsImpl_glsl.pxx
index 48e69b3..4ff7592 100644 (file)
@@ -18,6 +18,21 @@ static const char Shaders_DeclarationsImpl_glsl[] =
   "\n"
   "// This file includes implementation of common functions and properties accessors\n"
   "\n"
+  "#if defined(FRAGMENT_SHADER)\n"
+  "#if defined(OCC_WRITE_WEIGHT_OIT_COVERAGE)\n"
+  "//! Output color and coverage for accumulation by OIT algorithm.\n"
+  "void occSetFragColor (in vec4 theColor)\n"
+  "{\n"
+  "  float aWeight     = theColor.a * clamp (1e+2 * pow (1.0 - gl_FragCoord.z * occOitDepthFactor, 3.0), 1e-2, 1e+2);\n"
+  "  occFragCoverage.r = theColor.a * aWeight;\n"
+  "  occFragColor      = vec4 (theColor.rgb * theColor.a * aWeight, theColor.a);\n"
+  "}\n"
+  "#else\n"
+  "//! Output color.\n"
+  "void occSetFragColor (in vec4 theColor) { occFragColor = theColor; }\n"
+  "#endif\n"
+  "#endif\n"
+  "\n"
   "#if defined(THE_MAX_LIGHTS) && (THE_MAX_LIGHTS > 0)\n"
   "// arrays of light sources\n"
   "uniform THE_PREC_ENUM ivec2 occLightSourcesTypes[THE_MAX_LIGHTS]; //!< packed light sources types\n"