0027105: Make code ISO-compliant [-Wpedantic fixes]
[occt.git] / src / OpenGl / OpenGl_AspectFace.cxx
index 5b1e002..bd45199 100644 (file)
@@ -4,8 +4,8 @@
 //
 // This file is part of Open CASCADE Technology software library.
 //
-// This library is free software; you can redistribute it and / or modify it
-// under the terms of the GNU Lesser General Public version 2.1 as published
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
 // by the Free Software Foundation, with special exception defined in the file
 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
 // distribution for complete text of the license and disclaimer of any warranty.
 #include <OpenGl_Texture.hxx>
 #include <OpenGl_Workspace.hxx>
 
-#include <Graphic3d_CGroup.hxx>
 #include <Graphic3d_ShaderProgram.hxx>
 #include <Graphic3d_TextureMap.hxx>
+#include <Graphic3d_TextureParams.hxx>
 #include <Graphic3d_TypeOfReflection.hxx>
 #include <Graphic3d_MaterialAspect.hxx>
 
+#include <Image_PixMap.hxx>
+
 namespace
 {
   static OPENGL_SURF_PROP THE_DEFAULT_MATERIAL =
   {
     0.2F,  0.8F, 0.1F, 0.0F, // amb, diff, spec, emsv
-    1.0F, 10.0F, 0.0F,       // trans, shine, env_reflexion
+    1.0F, 10.0F, 1.0F, 0.0F, // trans, shine, index, env_reflexion
     0, // isphysic
     (OPENGL_AMBIENT_MASK | OPENGL_DIFFUSE_MASK | OPENGL_SPECULAR_MASK), // color_mask
     {{ 1.0F, 1.0F, 1.0F, 1.0F }}, // ambient color
     {{ 1.0F, 1.0F, 1.0F, 1.0F }}, // diffuse color
     {{ 1.0F, 1.0F, 1.0F, 1.0F }}, // specular color
     {{ 1.0F, 1.0F, 1.0F, 1.0F }}, // emissive color
-    {{ 1.0F, 1.0F, 1.0F, 1.0F }}  // material color
+    {{ 1.0F, 1.0F, 1.0F, 1.0F }}, // material color
+    Graphic3d_BSDF()
   };
 
-  static TEL_POFFSET_PARAM THE_DEFAULT_POFFSET = { Aspect_POM_Fill, 1.0F, 0.0F };
   static const TCollection_AsciiString THE_EMPTY_KEY;
-};
+}
 
 // =======================================================================
 // function : convertMaterial
@@ -112,6 +114,10 @@ void OpenGl_AspectFace::convertMaterial (const CALL_DEF_MATERIAL& theMat,
   // trans = 1. => transparent
   // in OpenGl it is opposite.
   theSurf.trans = 1.0f - theMat.Transparency;
+  theSurf.index = theMat.RefractionIndex;
+
+  // material BSDF (for physically-based rendering)
+  theSurf.BSDF = theMat.BSDF;
 }
 
 // =======================================================================
@@ -388,11 +394,11 @@ void OpenGl_AspectFace::Render (const Handle(OpenGl_Workspace)& theWorkspace) co
 // function : Release
 // purpose  :
 // =======================================================================
-void OpenGl_AspectFace::Release (const Handle(OpenGl_Context)& theContext)
+void OpenGl_AspectFace::Release (OpenGl_Context* theContext)
 {
   if (!myResources.Texture.IsNull())
   {
-    if (!theContext.IsNull())
+    if (theContext)
     {
       if (myResources.TextureId.IsEmpty())
       {
@@ -410,7 +416,7 @@ void OpenGl_AspectFace::Release (const Handle(OpenGl_Context)& theContext)
   myResources.ResetTextureReadiness();
 
   if (!myResources.ShaderProgram.IsNull()
-   && !theContext.IsNull())
+   && theContext)
   {
     theContext->ShaderManager()->Unregister (myResources.ShaderProgramId,
                                              myResources.ShaderProgram);
@@ -423,23 +429,21 @@ void OpenGl_AspectFace::Release (const Handle(OpenGl_Context)& theContext)
 // function : BuildTexture
 // purpose  :
 // =======================================================================
-void OpenGl_AspectFace::Resources::BuildTexture (const Handle(OpenGl_Workspace)& theWS,
+void OpenGl_AspectFace::Resources::BuildTexture (const Handle(OpenGl_Context)&       theCtx,
                                                  const Handle(Graphic3d_TextureMap)& theTexture)
 {
-  const Handle(OpenGl_Context)& aContext = theWS->GetGlContext();
-
   // release old texture resource
   if (!Texture.IsNull())
   {
     if (TextureId.IsEmpty())
     {
-      aContext->DelayedRelease (Texture);
+      theCtx->DelayedRelease (Texture);
       Texture.Nullify();
     }
     else
     {
       Texture.Nullify(); // we need nullify all handles before ReleaseResource() call
-      aContext->ReleaseResource (TextureId, Standard_True);
+      theCtx->ReleaseResource (TextureId, Standard_True);
     }
   }
 
@@ -447,17 +451,17 @@ void OpenGl_AspectFace::Resources::BuildTexture (const Handle(OpenGl_Workspace)&
 
   if (!theTexture.IsNull())
   {
-    if (TextureId.IsEmpty() || !aContext->GetResource<Handle(OpenGl_Texture)> (TextureId, Texture))
+    if (TextureId.IsEmpty() || !theCtx->GetResource<Handle(OpenGl_Texture)> (TextureId, Texture))
     {
       Texture = new OpenGl_Texture (theTexture->GetParams());
       Handle(Image_PixMap) anImage = theTexture->GetImage();
       if (!anImage.IsNull())
       {
-        Texture->Init (aContext, *anImage.operator->(), theTexture->Type());
+        Texture->Init (theCtx, *anImage.operator->(), theTexture->Type());
       }
       if (!TextureId.IsEmpty())
       {
-        aContext->ShareResource (TextureId, Texture);
+        theCtx->ShareResource (TextureId, Texture);
       }
     }
   }
@@ -467,11 +471,10 @@ void OpenGl_AspectFace::Resources::BuildTexture (const Handle(OpenGl_Workspace)&
 // function : BuildShader
 // purpose  :
 // =======================================================================
-void OpenGl_AspectFace::Resources::BuildShader (const Handle(OpenGl_Workspace)&        theWS,
+void OpenGl_AspectFace::Resources::BuildShader (const Handle(OpenGl_Context)&          theCtx,
                                                 const Handle(Graphic3d_ShaderProgram)& theShader)
 {
-  const Handle(OpenGl_Context)& aContext = theWS->GetGlContext();
-  if (!aContext->IsGlGreaterEqual (2, 0))
+  if (theCtx->core20fwd == NULL)
   {
     return;
   }
@@ -479,7 +482,7 @@ void OpenGl_AspectFace::Resources::BuildShader (const Handle(OpenGl_Workspace)&
   // release old shader program resources
   if (!ShaderProgram.IsNull())
   {
-    aContext->ShaderManager()->Unregister (ShaderProgramId, ShaderProgram);
+    theCtx->ShaderManager()->Unregister (ShaderProgramId, ShaderProgram);
     ShaderProgramId.Clear();
     ShaderProgram.Nullify();
   }
@@ -488,5 +491,5 @@ void OpenGl_AspectFace::Resources::BuildShader (const Handle(OpenGl_Workspace)&
     return;
   }
 
-  aContext->ShaderManager()->Create (theShader, ShaderProgramId, ShaderProgram);
+  theCtx->ShaderManager()->Create (theShader, ShaderProgramId, ShaderProgram);
 }