]> OCCT Git - occt-copy.git/commitdiff
Fix Path Tracing trouble. CR0-AVD
authorisk <isk@opencascade.com>
Tue, 3 Nov 2015 14:08:08 +0000 (17:08 +0300)
committerisk <isk@opencascade.com>
Tue, 3 Nov 2015 14:08:08 +0000 (17:08 +0300)
src/OpenGl/OpenGl_View_Raytrace.cxx
src/OpenGl/OpenGl_View_Redraw.cxx

index a9ea769aba6f26fe503775abf0f188179ae09c1e..79d4a180f96268f69834e9b728b592ab6003c111 100644 (file)
@@ -2442,8 +2442,8 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer
     {
       for (int aPassIndex = 0; aPassIndex < aSamplesPerPixel; ++aPassIndex)
       {
-        aRenderFramebuffer = myAccumFrames % 2 ? myRaytraceFBO1[aFBOIdx] : myRaytraceFBO2[aFBOIdx];
-        anAccumFramebuffer = myAccumFrames % 2 ? myRaytraceFBO2[aFBOIdx] : myRaytraceFBO1[aFBOIdx];
+        aRenderFramebuffer = (myAccumFrames + aPassIndex) % 2 ? myRaytraceFBO1[aFBOIdx] : myRaytraceFBO2[aFBOIdx];
+        anAccumFramebuffer = (myAccumFrames + aPassIndex) % 2 ? myRaytraceFBO2[aFBOIdx] : myRaytraceFBO1[aFBOIdx];
 
         aRenderFramebuffer->BindBuffer (theGlContext);
 
@@ -2452,14 +2452,14 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer
 
         // Set frame accumulation weight
         myRaytraceProgram->SetUniform (theGlContext,
-          myUniformLocations[0][OpenGl_RT_uSampleWeight], 1.f / (myAccumFrames + 1));
+          myUniformLocations[0][OpenGl_RT_uSampleWeight], 1.f / (myAccumFrames + aPassIndex + 1));
 
         // Set random number generator seed
         myRaytraceProgram->SetUniform (theGlContext,
           myUniformLocations[0][OpenGl_RT_uFrameRndSeed], static_cast<Standard_Integer> (myRNG.NextInt() >> 2));
 
         theGlContext->core20fwd->glDrawArrays (GL_TRIANGLES, 0, 6);
-        ++myAccumFrames;
+        //++myAccumFrames;
         glFinish();
       }
     }
index 5fb382dc9d171fe49f9f3b6f415df1300e2b52b1..309490d40e9b6d0f99e196063afdb84de48bfbeb 100644 (file)
@@ -463,7 +463,8 @@ void OpenGl_View::Redraw()
   if (myRenderParams.Method == Graphic3d_RM_RAYTRACING
    && myRenderParams.IsGlobalIlluminationEnabled)
   {
-    myAccumFrames++;
+    //myAccumFrames++;
+    myAccumFrames += myRenderParams.SamplesPerPixel ? myRenderParams.SamplesPerPixel : 1;
   }
 
   // bind default FBO