| 
    Open CASCADE Technology 7.8.2.dev
    
   | 
 
This class is responsible for generation of shader programs. More...
#include <Graphic3d_ShaderManager.hxx>

Public Member Functions | |
| Graphic3d_ShaderManager (Aspect_GraphicsLibrary theGapi) | |
| Creates new empty shader manager.   | |
| virtual | ~Graphic3d_ShaderManager () | 
| Releases resources of shader manager.   | |
| bool | IsGapiGreaterEqual (Standard_Integer theVerMajor, Standard_Integer theVerMinor) const | 
| Standard_Integer | GapiVersionMajor () const | 
| Return GAPI version major number.   | |
| Standard_Integer | GapiVersionMinor () const | 
| Return GAPI version minor number.   | |
| void | SetGapiVersion (Standard_Integer theVerMajor, Standard_Integer theVerMinor) | 
| Return GAPI version major number.   | |
| bool | UseRedAlpha () const | 
| Return TRUE if RED channel should be used instead of ALPHA for single-channel textures (e.g. GAPI supports only GL_RED textures and not GL_ALPHA).   | |
| void | SetUseRedAlpha (bool theUseRedAlpha) | 
| Set if RED channel should be used instead of ALPHA for single-channel textures.   | |
| bool | HasFlatShading () const | 
| Return flag indicating flat shading usage; TRUE by default.   | |
| bool | ToReverseDFdxSign () const | 
| Return flag indicating flat shading should reverse normal flag; FALSE by default.   | |
| void | SetFlatShading (bool theToUse, bool theToReverseSign) | 
| Set flag indicating flat shading usage.   | |
| bool | ToEmulateDepthClamp () const | 
| Return TRUE if depth clamping should be emulated by GLSL program; TRUE by default.   | |
| void | SetEmulateDepthClamp (bool theToEmulate) | 
| Set if depth clamping should be emulated by GLSL program.   | |
| bool | HasGlslExtension (Graphic3d_GlslExtension theExt) const | 
| Return TRUE if specified extension is available.   | |
| void | EnableGlslExtension (Graphic3d_GlslExtension theExt, bool theToEnable=true) | 
| Set if specified extension is available or not.   | |
  Public Member Functions inherited from Standard_Transient | |
| Standard_Transient () | |
| Empty constructor.   | |
| Standard_Transient (const Standard_Transient &) | |
| Copy constructor – does nothing.   | |
| Standard_Transient & | operator= (const Standard_Transient &) | 
| Assignment operator, needed to avoid copying reference counter.   | |
| virtual | ~Standard_Transient () | 
| Destructor must be virtual.   | |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const | 
| Returns a type descriptor about this object.   | |
| Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const | 
| Returns a true value if this is an instance of Type.   | |
| Standard_Boolean | IsInstance (const Standard_CString theTypeName) const | 
| Returns a true value if this is an instance of TypeName.   | |
| Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const | 
| Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.   | |
| Standard_Boolean | IsKind (const Standard_CString theTypeName) const | 
| Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.   | |
| Standard_Transient * | This () const | 
| Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.   | |
| Standard_Integer | GetRefCount () const noexcept | 
| Get the reference counter of this object.   | |
| void | IncrementRefCounter () noexcept | 
| Increments the reference counter of this object.   | |
| Standard_Integer | DecrementRefCounter () noexcept | 
| Decrements the reference counter of this object; returns the decremented value.   | |
| virtual void | Delete () const | 
| Memory deallocator for transient classes.   | |
Protected Attributes | |
| Aspect_GraphicsLibrary | myGapi | 
| GAPI name.   | |
| Graphic3d_Vec2i | myGapiVersion | 
| GAPI version major/minor number pair.   | |
| Standard_Boolean | myGlslExtensions [Graphic3d_GlslExtension_NB] | 
| Standard_Boolean | myHasFlatShading | 
| flag indicating flat shading usage   | |
| Standard_Boolean | myToReverseDFdxSign | 
| flag to reverse flat shading normal (workaround)   | |
| Standard_Boolean | mySetPointSize | 
| always set gl_PointSize variable   | |
| Standard_Boolean | myUseRedAlpha | 
| use RED channel instead of ALPHA (e.g. GAPI supports only GL_RED textures and not GL_ALPHA)   | |
| Standard_Boolean | myToEmulateDepthClamp | 
| emulate depth clamping in GLSL program   | |
| Standard_Boolean | mySRgbState | 
| track sRGB state   | |
Additional Inherited Members | |
  Public Types inherited from Standard_Transient | |
| typedef void | base_type | 
| Returns a type descriptor about this object.   | |
  Static Public Member Functions inherited from Standard_Transient | |
| static constexpr const char * | get_type_name () | 
| Returns a type descriptor about this object.   | |
| static const opencascade::handle< Standard_Type > & | get_type_descriptor () | 
| Returns type descriptor of Standard_Transient class.   | |
This class is responsible for generation of shader programs.
| Graphic3d_ShaderManager::Graphic3d_ShaderManager | ( | Aspect_GraphicsLibrary | theGapi | ) | 
Creates new empty shader manager.
      
  | 
  virtual | 
Releases resources of shader manager.
      
  | 
  protected | 
Prepare GLSL version header.
| theProgram | [in] [out] program to set version header | 
| theName | [in] program id suffix | 
| theBits | [in] program bits | 
| theUsesDerivates | [in] program uses standard derivatives functions or not | 
      
  | 
  protected | 
Prepare GLSL version header for OIT composition programs.
| theProgram | [in] [out] program to set version header | 
| theName | [in] program id suffix | 
| theMsaa | [in] multisampling flag | 
      
  | 
  inline | 
Set if specified extension is available or not.
      
  | 
  inline | 
Return GAPI version major number.
      
  | 
  inline | 
Return GAPI version minor number.
      
  | 
  protected | 
Generate map key for light sources configuration.
| theLights | [in] list of light sources | 
| theHasShadowMap | [in] flag indicating shadow maps usage | 
      
  | 
  protected | 
Generates shader program to render environment cubemap as background.
      
  | 
  protected | 
Generates shader program to render skydome background.
      
  | 
  protected | 
Generates shader program to render correctly colored quad.
      
  | 
  protected | 
Prepare GLSL source for IBL generation used in PBR pipeline.
      
  | 
  protected | 
Prepare standard GLSL program for bounding box.
      
  | 
  protected | 
Prepare standard GLSL program for FBO blit operation.
      
  | 
  protected | 
Prepare standard GLSL program for textured font.
      
  | 
  protected | 
Prepare standard GLSL program with per-vertex lighting.
| theLights | [in] list of light sources | 
| theBits | [in] program bits | 
      
  | 
  protected | 
Prepare standard GLSL programs for OIT compositing operation.
      
  | 
  protected | 
Prepare standard GLSL programs for OIT Depth Peeling blend operation.
      
  | 
  protected | 
Prepare standard GLSL programs for OIT Depth Peeling flush operation.
      
  | 
  protected | 
Prepare standard GLSL program with per-pixel lighting.
| theLights | [in] list of light sources | 
| theBits | [in] program bits | 
| theIsFlatNormal | [in] when TRUE, the Vertex normals will be ignored and Face normal will be computed instead | 
| theIsPBR | [in] when TRUE, the PBR pipeline will be activated | 
| theNbShadowMaps | [in] number of shadow maps | 
      
  | 
  protected | 
Prepare standard GLSL program for stereoscopic image.
      
  | 
  protected | 
Prepare standard GLSL program without lighting.
| theBits | [in] program bits | 
| theIsOutline | [in] draw silhouette | 
      
  | 
  inline | 
Return flag indicating flat shading usage; TRUE by default.
      
  | 
  protected | 
Return TRUE if bitwise operations can be used in GLSL program.
      
  | 
  inline | 
Return TRUE if specified extension is available.
      
  | 
  inline | 
      
  | 
  protected | 
Prepare standard GLSL program for accessing point sprite alpha.
      
  | 
  protected | 
Prepare standard GLSL program for computing point sprite shading.
      
  | 
  inline | 
Set if depth clamping should be emulated by GLSL program.
Set flag indicating flat shading usage.
      
  | 
  inline | 
Return GAPI version major number.
      
  | 
  inline | 
Set if RED channel should be used instead of ALPHA for single-channel textures.
      
  | 
  protected | 
Define computeLighting GLSL function depending on current lights configuration.
| theNbLights | [out] number of defined light sources | 
| theLights | [in] light sources list | 
| theHasVertColor | [in] flag to use getVertColor() instead of Ambient and Diffuse components of active material | 
| theIsPBR | [in] flag to activate PBR pipeline | 
| theHasTexColor | [in] flag to include color texturing | 
| theNbShadowMaps | [in] flag to include shadow map | 
      
  | 
  inline | 
Return TRUE if depth clamping should be emulated by GLSL program; TRUE by default.
      
  | 
  inline | 
Return flag indicating flat shading should reverse normal flag; FALSE by default.
      
  | 
  inline | 
Return TRUE if RED channel should be used instead of ALPHA for single-channel textures (e.g. GAPI supports only GL_RED textures and not GL_ALPHA).
      
  | 
  protected | 
GAPI name.
      
  | 
  protected | 
GAPI version major/minor number pair.
      
  | 
  protected | 
      
  | 
  protected | 
flag indicating flat shading usage
      
  | 
  protected | 
always set gl_PointSize variable
      
  | 
  protected | 
track sRGB state
      
  | 
  protected | 
emulate depth clamping in GLSL program
      
  | 
  protected | 
flag to reverse flat shading normal (workaround)
      
  | 
  protected | 
use RED channel instead of ALPHA (e.g. GAPI supports only GL_RED textures and not GL_ALPHA)