0030483: Visualization, Path Tracing - make Tile Size configurable
[occt.git] / src / Shaders / Shaders_Display_fs.pxx
index 043f72b..281fdcc 100644 (file)
@@ -13,6 +13,12 @@ static const char Shaders_Display_fs[] =
   "  //! OpenGL image storing variance of sampled pixels blocks.\n"
   "  volatile restrict layout(size1x32) uniform iimage2D uVarianceImage;\n"
   "\n"
+  "  //! Scale factor used to quantize visual error (float) into signed integer.\n"
+  "  uniform float uVarianceScaleFactor;\n"
+  "\n"
+  "  //! Screen space tile size.\n"
+  "  uniform ivec2 uTileSize;\n"
+  "\n"
   "#else // ADAPTIVE_SAMPLING\n"
   "\n"
   "  //! Input image.\n"
@@ -45,9 +51,6 @@ static const char Shaders_Display_fs[] =
   "//! RGB weight factors to calculate luminance.\n"
   "#define LUMA vec3 (0.2126f, 0.7152f, 0.0722f)\n"
   "\n"
-  "//! Scale factor used to quantize visual error.\n"
-  "#define SCALE_FACTOR 1.0e6f\n"
-  "\n"
   "// =======================================================================\n"
   "// function : ToneMappingFilmic\n"
   "// purpose  :\n"
@@ -116,7 +119,8 @@ static const char Shaders_Display_fs[] =
   "\n"
   "  // accumulate visual error to current block; estimated error is written only\n"
   "  // after the first 40 samples and path length has reached 10 bounces or more\n"
-  "  imageAtomicAdd (uVarianceImage, ivec2 (aPixel / vec2 (BLOCK_SIZE)), int (mix (SCALE_FACTOR, anError * SCALE_FACTOR, aColor.w > 40.f)));\n"
+  "  imageAtomicAdd (uVarianceImage, aPixel / uTileSize,\n"
+  "                  int (mix (uVarianceScaleFactor, anError * uVarianceScaleFactor, aColor.w > 40.f)));\n"
   "\n"
   "  if (uDebugAdaptive == 0) // normal rendering\n"
   "  {\n"