0030483: Visualization, Path Tracing - make Tile Size configurable
[occt.git] / src / Shaders / Shaders_RaytraceBase_fs.pxx
index 81a2ae0..eeab5a9 100644 (file)
@@ -104,6 +104,9 @@ static const char Shaders_RaytraceBase_fs[] =
   "\n"
   "  //! OpenGL image storing offsets of sampled pixels blocks.\n"
   "  coherent restrict layout(size2x32) uniform iimage2D uOffsetImage;\n"
+  "\n"
+  "  //! Screen space tile size.\n"
+  "  uniform ivec2 uTileSize;\n"
   "#endif\n"
   "\n"
   "//! Top color of gradient background.\n"
@@ -278,10 +281,9 @@ static const char Shaders_RaytraceBase_fs[] =
   "\n"
   "  ivec2 aFragCoord = ivec2 (gl_FragCoord.xy);\n"
   "\n"
-  "  ivec2 aTileXY = imageLoad (uOffsetImage, ivec2 (aFragCoord.x / BLOCK_SIZE,\n"
-  "                                                  aFragCoord.y / BLOCK_SIZE)).xy;\n"
+  "  ivec2 aTileXY = imageLoad (uOffsetImage, aFragCoord / uTileSize).xy * uTileSize;\n"
   "\n"
-  "  aTileXY.y += aFragCoord.y % min (uWinSizeY - aTileXY.y, BLOCK_SIZE);\n"
+  "  aTileXY.y += aFragCoord.y % min (uWinSizeY - aTileXY.y, uTileSize.y);\n"
   "\n"
   "  return mix (uBackColorBot, uBackColorTop, float (aTileXY.y) / uWinSizeY);\n"
   "\n"