0026404: Visualization, Ray Tracing - use solid background color when gradient color...
authorkgv <kgv@opencascade.com>
Thu, 9 Jul 2015 11:25:31 +0000 (14:25 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 9 Jul 2015 11:27:10 +0000 (14:27 +0300)
Test-case for issue #26404

src/OpenGl/OpenGl_View_Raytrace.cxx
tests/bugs/vis/bug26404 [new file with mode: 0644]

index d5923c5..cf34ca2 100644 (file)
@@ -2263,13 +2263,25 @@ Standard_Boolean OpenGl_View::setUniformState (const Graphic3d_CView&        the
   }
 
   // Set background colors (only gradient background supported)
-  if (myBgGradientArray != NULL)
+  if (myBgGradientArray != NULL
+   && myBgGradientArray->IsDefined())
   {
     theProgram->SetUniform (theGlContext,
       myUniformLocations[theProgramId][OpenGl_RT_uBackColorTop], myBgGradientArray->GradientColor (0));
     theProgram->SetUniform (theGlContext,
       myUniformLocations[theProgramId][OpenGl_RT_uBackColorBot], myBgGradientArray->GradientColor (1));
   }
+  else
+  {
+    const OpenGl_Vec4 aBackColor (theCView.DefWindow.Background.r,
+                                  theCView.DefWindow.Background.g,
+                                  theCView.DefWindow.Background.b,
+                                  1.0f);
+    theProgram->SetUniform (theGlContext,
+      myUniformLocations[theProgramId][OpenGl_RT_uBackColorTop], aBackColor);
+    theProgram->SetUniform (theGlContext,
+      myUniformLocations[theProgramId][OpenGl_RT_uBackColorBot], aBackColor);
+  }
 
   theProgram->SetUniform (theGlContext,
     myUniformLocations[theProgramId][OpenGl_RT_uSphereMapForBack], theCView.RenderParams.UseEnvironmentMapBackground ?  1 : 0);
diff --git a/tests/bugs/vis/bug26404 b/tests/bugs/vis/bug26404
new file mode 100644 (file)
index 0000000..62f56d9
--- /dev/null
@@ -0,0 +1,27 @@
+puts "========"
+puts "OCC26404"
+puts "========"
+puts ""
+###########################################################################################
+# Visualization, Ray Tracing - use solid background color when gradient color is disabled
+###########################################################################################
+
+box b 1 2 3
+vinit View1
+vclear
+vaxo
+vsetdispmode 1
+vsetcolorbg 10 10 10
+vdisplay b
+vfit
+vraytrace 1
+set bug_info_1 [vreadpixel 50 50 rgb name]
+if {$bug_info_1 != "GRAY8"} {
+  puts "ERROR: OCC26404 is reproduced. Background color is invalid (case #1)."
+}
+vsetgradientbg 255 0 0 0 0 255 1
+vsetgradientbg 255 0 0 0 0 255 0
+set bug_info_2 [vreadpixel 50 50 rgb name]
+if {$bug_info_2 != "GRAY8"} {
+  puts "ERROR: OCC26404 is reproduced. Background color is invalid (case #2)."
+}