Open CASCADE Technology 7.8.2.dev
OpenGl_ShaderManager Class Reference

This class is responsible for managing shader programs. More...

#include <OpenGl_ShaderManager.hxx>

Inheritance diagram for OpenGl_ShaderManager:

Data Structures

struct  OpenGl_ShaderLightParameters
 Packed properties of light source. More...
 
class  OpenGl_ShaderProgramFFP
 Fake OpenGL program for tracking FFP state in the way consistent to programmable pipeline. More...
 

Public Member Functions

 OpenGl_ShaderManager (OpenGl_Context *theContext)
 Creates new empty shader manager.
 
virtual ~OpenGl_ShaderManager ()
 Releases resources of shader manager.
 
void clear ()
 Release all resources.
 
void UpdateSRgbState ()
 Fetch sRGB state from caps and invalidates programs, if necessary.
 
const gp_XYZLocalOrigin () const
 Return local camera transformation.
 
void SetLocalOrigin (const gp_XYZ &theOrigin)
 Setup local camera transformation for compensating float precision issues.
 
Standard_Real LocalClippingPlaneW (const Graphic3d_ClipPlane &thePlane) const
 Return clipping plane W equation value moved considering local camera transformation.
 
Standard_Boolean Create (const Handle< Graphic3d_ShaderProgram > &theProxy, TCollection_AsciiString &theShareKey, Handle< OpenGl_ShaderProgram > &theProgram)
 Creates new shader program or re-use shared instance.
 
void Unregister (TCollection_AsciiString &theShareKey, Handle< OpenGl_ShaderProgram > &theProgram)
 Unregisters specified shader program.
 
const OpenGl_ShaderProgramListShaderPrograms () const
 Returns list of registered shader programs.
 
Standard_Boolean IsEmpty () const
 Returns true if no program objects are registered in the manager.
 
Standard_Boolean BindFaceProgram (const Handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, Standard_Boolean theHasVertColor, Standard_Boolean theEnableEnvMap, const Handle< OpenGl_ShaderProgram > &theCustomProgram)
 Bind program for filled primitives rendering.
 
Standard_Boolean BindFaceProgram (const Handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, Aspect_InteriorStyle theInteriorStyle, Standard_Boolean theHasVertColor, Standard_Boolean theEnableEnvMap, Standard_Boolean theEnableMeshEdges, const Handle< OpenGl_ShaderProgram > &theCustomProgram)
 Bind program for filled primitives rendering.
 
Standard_Boolean BindLineProgram (const Handle< OpenGl_TextureSet > &theTextures, const Aspect_TypeOfLine theLineType, const Graphic3d_TypeOfShadingModel theShadingModel, const Graphic3d_AlphaMode theAlphaMode, const Standard_Boolean theHasVertColor, const Handle< OpenGl_ShaderProgram > &theCustomProgram)
 Bind program for line rendering.
 
Standard_Boolean BindMarkerProgram (const Handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, Standard_Boolean theHasVertColor, const Handle< OpenGl_ShaderProgram > &theCustomProgram)
 Bind program for point rendering.
 
Standard_Boolean BindFontProgram (const Handle< OpenGl_ShaderProgram > &theCustomProgram)
 Bind program for rendering alpha-textured font.
 
Standard_Boolean BindOutlineProgram ()
 Bind program for outline rendering.
 
Standard_Boolean BindFboBlitProgram (Standard_Integer theNbSamples, Standard_Boolean theIsFallback_sRGB)
 Bind program for FBO blit operation.
 
Standard_Boolean BindOitCompositingProgram (Standard_Boolean theIsMSAAEnabled)
 Bind program for blended order-independent transparency buffers compositing.
 
Standard_Boolean BindOitDepthPeelingBlendProgram (bool theIsMSAAEnabled)
 Bind program for Depth Peeling order-independent transparency back color blending.
 
Standard_Boolean BindOitDepthPeelingFlushProgram (bool theIsMSAAEnabled)
 Bind program for Depth Peeling order-independent transparency flush.
 
Standard_Boolean BindStereoProgram (Graphic3d_StereoMode theStereoMode)
 Bind program for rendering stereoscopic image.
 
Standard_Boolean BindBoundBoxProgram ()
 Bind program for rendering bounding box.
 
const Handle< OpenGl_VertexBuffer > & BoundBoxVertBuffer () const
 Returns bounding box vertex buffer.
 
Standard_Boolean BindPBREnvBakingProgram (Standard_Integer theIndex)
 Bind program for IBL maps generation in PBR pipeline.
 
const Handle< Graphic3d_ShaderProgram > & GetBgCubeMapProgram ()
 Generates shader program to render environment cubemap as background.
 
const Handle< Graphic3d_ShaderProgram > & GetBgSkydomeProgram ()
 Generates shader program to render skydome background.
 
const Handle< Graphic3d_ShaderProgram > & GetColoredQuadProgram ()
 Generates shader program to render correctly colored quad.
 
const OpenGl_LightSourceStateLightSourceState () const
 Returns current state of OCCT light sources.
 
void UpdateLightSourceStateTo (const Handle< Graphic3d_LightSet > &theLights, Standard_Integer theSpecIBLMapLevels, const Handle< OpenGl_ShadowMapArray > &theShadowMaps)
 Updates state of OCCT light sources.
 
bool SetCastShadows (const bool theToCast)
 Updates state of OCCT light sources to dynamically enable/disable shadowmap.
 
void UpdateLightSourceState ()
 Invalidate state of OCCT light sources.
 
void PushLightSourceState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT light sources to specified program (only on state change). Note that light sources definition depends also on WorldViewState.
 
void pushLightSourceState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT light sources to specified program.
 
const OpenGl_ProjectionStateProjectionState () const
 Returns current state of OCCT projection transform.
 
void UpdateProjectionStateTo (const OpenGl_Mat4 &theProjectionMatrix)
 Updates state of OCCT projection transform.
 
void PushProjectionState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT projection transform to specified program (only on state change).
 
void pushProjectionState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT projection transform to specified program.
 
const OpenGl_ModelWorldStateModelWorldState () const
 Returns current state of OCCT model-world transform.
 
void UpdateModelWorldStateTo (const OpenGl_Mat4 &theModelWorldMatrix)
 Updates state of OCCT model-world transform.
 
void PushModelWorldState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT model-world transform to specified program (only on state change).
 
void pushModelWorldState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT model-world transform to specified program.
 
const OpenGl_WorldViewStateWorldViewState () const
 Returns current state of OCCT world-view transform.
 
void UpdateWorldViewStateTo (const OpenGl_Mat4 &theWorldViewMatrix)
 Updates state of OCCT world-view transform.
 
void PushWorldViewState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT world-view transform to specified program (only on state change).
 
void pushWorldViewState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT world-view transform to specified program.
 
void UpdateClippingState ()
 Updates state of OCCT clipping planes.
 
void RevertClippingState ()
 Reverts state of OCCT clipping planes.
 
void PushClippingState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT clipping planes to specified program (only on state change).
 
void pushClippingState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of OCCT clipping planes to specified program.
 
const OpenGl_MaterialStateMaterialState () const
 Returns current state of material.
 
void UpdateMaterialStateTo (const OpenGl_Material &theMat, const float theAlphaCutoff, const bool theToDistinguish, const bool theToMapTexture)
 Updates state of material.
 
void UpdateMaterialState ()
 Updates state of material.
 
void PushMaterialState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of material to specified program (only on state change).
 
void pushMaterialState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes current state of material to specified program.
 
void PushInteriorState (const Handle< OpenGl_ShaderProgram > &theProgram, const Handle< Graphic3d_Aspects > &theAspect) const
 Setup interior style line edges variables.
 
const OpenGl_OitStateOitState () const
 Returns state of OIT uniforms.
 
void ResetOitState ()
 Reset the state of OIT rendering pass (only on state change).
 
void SetOitState (Graphic3d_RenderTransparentMethod theMode)
 Set the state of OIT rendering pass (only on state change).
 
void SetWeighedOitState (float theDepthFactor)
 Set the state of weighed OIT rendering pass (only on state change).
 
void PushOitState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes state of OIT uniforms to the specified program.
 
void pushOitState (const Handle< OpenGl_ShaderProgram > &theProgram) const
 Pushes state of OIT uniforms to the specified program.
 
void PushState (const Handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel=Graphic3d_TypeOfShadingModel_Unlit) const
 Pushes current state of OCCT graphics parameters to specified program.
 
void SetContext (OpenGl_Context *theCtx)
 Overwrites context.
 
bool IsSameContext (OpenGl_Context *theCtx) const
 Returns true when provided context is the same as used one by shader manager.
 
Graphic3d_TypeOfShadingModel ChooseFaceShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const
 Choose Shading Model for filled primitives. Fallbacks to FACET model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.
 
Graphic3d_TypeOfShadingModel ChooseLineShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const
 Choose Shading Model for line primitives. Fallbacks to UNLIT model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.
 
Graphic3d_TypeOfShadingModel ChooseMarkerShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const
 Choose Shading Model for Marker primitives.
 
Graphic3d_TypeOfShadingModel ShadingModel () const
 Returns default Shading Model.
 
void SetShadingModel (const Graphic3d_TypeOfShadingModel theModel)
 Sets shading model.
 
- Public Member Functions inherited from Graphic3d_ShaderManager
 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_Transientoperator= (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_TransientThis () 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.
 

Static Public Member Functions

static Graphic3d_TypeOfShadingModel PBRShadingModelFallback (Graphic3d_TypeOfShadingModel theShadingModel, Standard_Boolean theIsPbrAllowed=Standard_False)
 Resets PBR shading models to corresponding non-PBR ones if PBR is not allowed.
 
- 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.
 

Protected Member Functions

Standard_Integer getClipPlaneBits () const
 Define clipping planes program bits.
 
Standard_Integer getProgramBits (const Handle< OpenGl_TextureSet > &theTextures, Graphic3d_AlphaMode theAlphaMode, Aspect_InteriorStyle theInteriorStyle, Standard_Boolean theHasVertColor, Standard_Boolean theEnableEnvMap, Standard_Boolean theEnableMeshEdges) const
 Define program bits.
 
Handle< OpenGl_ShaderProgram > & getStdProgram (Graphic3d_TypeOfShadingModel theShadingModel, Standard_Integer theBits)
 Prepare standard GLSL program.
 
Standard_Boolean prepareStdProgramUnlit (Handle< OpenGl_ShaderProgram > &theProgram, Standard_Integer theBits, Standard_Boolean theIsOutline=false)
 Prepare standard GLSL program without lighting.
 
Standard_Boolean prepareStdProgramLight (Handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel, Standard_Integer theBits)
 Prepare standard GLSL program with lighting.
 
Standard_Boolean prepareStdProgramGouraud (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits)
 Prepare standard GLSL program with per-vertex lighting.
 
Standard_Boolean prepareStdProgramPhong (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits, const Standard_Boolean theIsFlatNormal=false, const Standard_Boolean theIsPBR=false)
 Prepare standard GLSL program with per-pixel lighting.
 
Standard_Boolean bindProgramWithState (const Handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel)
 Bind specified program to current context and apply state.
 
void switchLightPrograms ()
 Set pointer myLightPrograms to active lighting programs set from myMapOfLightPrograms.
 
Standard_Boolean prepareStdProgramBoundBox ()
 Prepare standard GLSL program for bounding box.
 
Standard_Boolean preparePBREnvBakingProgram (Standard_Integer theIndex)
 Prepare GLSL source for IBL generation used in PBR pipeline.
 
Standard_Boolean IsPbrAllowed () const
 Checks whether one of PBR shading models is set as default model.
 
void addClippingPlane (Standard_Integer &thePlaneId, const Graphic3d_ClipPlane &thePlane, const Graphic3d_Vec4d &theEq, const Standard_Integer theChainFwd) const
 Append clipping plane definition to temporary buffers.
 
- Protected Member Functions inherited from Graphic3d_ShaderManager
TCollection_AsciiString genLightKey (const Handle< Graphic3d_LightSet > &theLights, const bool theHasShadowMap) const
 Generate map key for light sources configuration.
 
Handle< Graphic3d_ShaderProgramgetStdProgramFont () const
 Prepare standard GLSL program for textured font.
 
Handle< Graphic3d_ShaderProgramgetStdProgramUnlit (Standard_Integer theBits, Standard_Boolean theIsOutline=false) const
 Prepare standard GLSL program without lighting.
 
Handle< Graphic3d_ShaderProgramgetStdProgramGouraud (const Handle< Graphic3d_LightSet > &theLights, Standard_Integer theBits) const
 Prepare standard GLSL program with per-vertex lighting.
 
Handle< Graphic3d_ShaderProgramgetStdProgramPhong (const Handle< Graphic3d_LightSet > &theLights, const Standard_Integer theBits, const Standard_Boolean theIsFlatNormal, const Standard_Boolean theIsPBR, const Standard_Integer theNbShadowMaps) const
 Prepare standard GLSL program with per-pixel lighting.
 
Handle< Graphic3d_ShaderProgramgetStdProgramBoundBox () const
 Prepare standard GLSL program for bounding box.
 
Handle< Graphic3d_ShaderProgramgetBgCubeMapProgram () const
 Generates shader program to render environment cubemap as background.
 
Handle< Graphic3d_ShaderProgramgetBgSkydomeProgram () const
 Generates shader program to render skydome background.
 
Handle< Graphic3d_ShaderProgramgetColoredQuadProgram () const
 Generates shader program to render correctly colored quad.
 
Handle< Graphic3d_ShaderProgramgetPBREnvBakingProgram (Standard_Integer theIndex) const
 Prepare GLSL source for IBL generation used in PBR pipeline.
 
Handle< Graphic3d_ShaderProgramgetStdProgramFboBlit (Standard_Integer theNbSamples, Standard_Boolean theIsFallback_sRGB) const
 Prepare standard GLSL program for FBO blit operation.
 
Handle< Graphic3d_ShaderProgramgetStdProgramStereo (Graphic3d_StereoMode theStereoMode) const
 Prepare standard GLSL program for stereoscopic image.
 
Handle< Graphic3d_ShaderProgramgetStdProgramOitCompositing (Standard_Boolean theMsaa) const
 Prepare standard GLSL programs for OIT compositing operation.
 
Handle< Graphic3d_ShaderProgramgetStdProgramOitDepthPeelingBlend (Standard_Boolean theMsaa) const
 Prepare standard GLSL programs for OIT Depth Peeling blend operation.
 
Handle< Graphic3d_ShaderProgramgetStdProgramOitDepthPeelingFlush (Standard_Boolean theMsaa) const
 Prepare standard GLSL programs for OIT Depth Peeling flush operation.
 
bool hasGlslBitwiseOps () const
 Return TRUE if bitwise operations can be used in GLSL program.
 
Standard_Integer defaultGlslVersion (const Handle< Graphic3d_ShaderProgram > &theProgram, const TCollection_AsciiString &theName, Standard_Integer theBits, bool theUsesDerivates=false) const
 Prepare GLSL version header.
 
void defaultOitGlslVersion (const Handle< Graphic3d_ShaderProgram > &theProgram, const TCollection_AsciiString &theName, bool theMsaa) const
 Prepare GLSL version header for OIT composition programs.
 
TCollection_AsciiString pointSpriteAlphaSrc (Standard_Integer theBits) const
 Prepare standard GLSL program for accessing point sprite alpha.
 
TCollection_AsciiString pointSpriteShadingSrc (const TCollection_AsciiString &theBaseColorSrc, Standard_Integer theBits) const
 Prepare standard GLSL program for computing point sprite shading.
 
TCollection_AsciiString stdComputeLighting (Standard_Integer &theNbLights, const Handle< Graphic3d_LightSet > &theLights, Standard_Boolean theHasVertColor, Standard_Boolean theIsPBR, Standard_Boolean theHasTexColor, Standard_Integer theNbShadowMaps) const
 Define computeLighting GLSL function depending on current lights configuration.
 

Protected Attributes

Handle< OpenGl_ShaderProgramFFPmyFfpProgram
 
Graphic3d_TypeOfShadingModel myShadingModel
 lighting shading model
 
OpenGl_ShaderProgramList myProgramList
 The list of shader programs.
 
Handle< OpenGl_SetOfShaderProgramsmyLightPrograms
 pointer to active lighting programs matrix
 
Handle< OpenGl_SetOfProgramsmyUnlitPrograms
 programs matrix without lighting
 
Handle< OpenGl_SetOfProgramsmyOutlinePrograms
 programs matrix without lighting for outline presentation
 
Handle< OpenGl_ShaderProgrammyFontProgram
 standard program for textured text
 
NCollection_Array1< Handle< OpenGl_ShaderProgram > > myBlitPrograms [2]
 standard program for FBO blit emulation
 
Handle< OpenGl_ShaderProgrammyBoundBoxProgram
 standard program for bounding box
 
Handle< OpenGl_ShaderProgrammyOitCompositingProgram [2]
 standard program for OIT compositing (default and MSAA).
 
Handle< OpenGl_ShaderProgrammyOitDepthPeelingBlendProgram [2]
 standard program for OIT Depth Peeling blend (default and MSAA)
 
Handle< OpenGl_ShaderProgrammyOitDepthPeelingFlushProgram [2]
 standard program for OIT Depth Peeling flush (default and MSAA)
 
OpenGl_MapOfShaderPrograms myMapOfLightPrograms
 map of lighting programs depending on lights configuration
 
Handle< OpenGl_ShaderProgrammyPBREnvBakingProgram [3]
 programs for IBL maps generation used in PBR pipeline (0 for Diffuse; 1 for Specular; 2 for fallback)
 
Handle< Graphic3d_ShaderProgrammyBgCubeMapProgram
 program for background cubemap rendering
 
Handle< Graphic3d_ShaderProgrammyBgSkydomeProgram
 program for background cubemap rendering
 
Handle< Graphic3d_ShaderProgrammyColoredQuadProgram
 program for correct quad rendering
 
Handle< OpenGl_ShaderProgrammyStereoPrograms [Graphic3d_StereoMode_NB]
 standard stereo programs
 
Handle< OpenGl_VertexBuffermyBoundBoxVertBuffer
 bounding box vertex buffer
 
Handle< OpenGl_PBREnvironmentmyPBREnvironment
 manager of IBL maps used in PBR pipeline
 
OpenGl_ContextmyContext
 OpenGL context.
 
OpenGl_ProjectionState myProjectionState
 State of OCCT projection transformation.
 
OpenGl_ModelWorldState myModelWorldState
 State of OCCT model-world transformation.
 
OpenGl_WorldViewState myWorldViewState
 State of OCCT world-view transformation.
 
OpenGl_ClippingState myClippingState
 State of OCCT clipping planes.
 
OpenGl_LightSourceState myLightSourceState
 State of OCCT light sources.
 
OpenGl_MaterialState myMaterialState
 State of Front and Back materials.
 
OpenGl_OitState myOitState
 State of OIT uniforms.
 
gp_XYZ myLocalOrigin
 local camera transformation
 
Standard_Boolean myHasLocalOrigin
 flag indicating that local camera transformation has been set
 
NCollection_Array1< Standard_IntegermyLightTypeArray
 
NCollection_Array1< OpenGl_ShaderLightParametersmyLightParamsArray
 
NCollection_Array1< Graphic3d_Mat4myShadowMatArray
 
NCollection_Array1< OpenGl_Vec4myClipPlaneArray
 
NCollection_Array1< OpenGl_Vec4dmyClipPlaneArrayFfp
 
NCollection_Array1< Standard_IntegermyClipChainArray
 
- Protected Attributes inherited from Graphic3d_ShaderManager
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.
 

Detailed Description

This class is responsible for managing shader programs.

Constructor & Destructor Documentation

◆ OpenGl_ShaderManager()

OpenGl_ShaderManager::OpenGl_ShaderManager ( OpenGl_Context * theContext)

Creates new empty shader manager.

◆ ~OpenGl_ShaderManager()

virtual OpenGl_ShaderManager::~OpenGl_ShaderManager ( )
virtual

Releases resources of shader manager.

Member Function Documentation

◆ addClippingPlane()

void OpenGl_ShaderManager::addClippingPlane ( Standard_Integer & thePlaneId,
const Graphic3d_ClipPlane & thePlane,
const Graphic3d_Vec4d & theEq,
const Standard_Integer theChainFwd ) const
inlineprotected

Append clipping plane definition to temporary buffers.

◆ BindBoundBoxProgram()

Standard_Boolean OpenGl_ShaderManager::BindBoundBoxProgram ( )
inline

Bind program for rendering bounding box.

◆ BindFaceProgram() [1/2]

Standard_Boolean OpenGl_ShaderManager::BindFaceProgram ( const Handle< OpenGl_TextureSet > & theTextures,
Graphic3d_TypeOfShadingModel theShadingModel,
Graphic3d_AlphaMode theAlphaMode,
Aspect_InteriorStyle theInteriorStyle,
Standard_Boolean theHasVertColor,
Standard_Boolean theEnableEnvMap,
Standard_Boolean theEnableMeshEdges,
const Handle< OpenGl_ShaderProgram > & theCustomProgram )
inline

Bind program for filled primitives rendering.

◆ BindFaceProgram() [2/2]

Standard_Boolean OpenGl_ShaderManager::BindFaceProgram ( const Handle< OpenGl_TextureSet > & theTextures,
Graphic3d_TypeOfShadingModel theShadingModel,
Graphic3d_AlphaMode theAlphaMode,
Standard_Boolean theHasVertColor,
Standard_Boolean theEnableEnvMap,
const Handle< OpenGl_ShaderProgram > & theCustomProgram )
inline

Bind program for filled primitives rendering.

◆ BindFboBlitProgram()

Standard_Boolean OpenGl_ShaderManager::BindFboBlitProgram ( Standard_Integer theNbSamples,
Standard_Boolean theIsFallback_sRGB )

Bind program for FBO blit operation.

Parameters
theNbSamples[in] number of samples within source MSAA texture
theIsFallback_sRGB[in] flag indicating that destination buffer is not sRGB-ready

◆ BindFontProgram()

Standard_Boolean OpenGl_ShaderManager::BindFontProgram ( const Handle< OpenGl_ShaderProgram > & theCustomProgram)

Bind program for rendering alpha-textured font.

◆ BindLineProgram()

Standard_Boolean OpenGl_ShaderManager::BindLineProgram ( const Handle< OpenGl_TextureSet > & theTextures,
const Aspect_TypeOfLine theLineType,
const Graphic3d_TypeOfShadingModel theShadingModel,
const Graphic3d_AlphaMode theAlphaMode,
const Standard_Boolean theHasVertColor,
const Handle< OpenGl_ShaderProgram > & theCustomProgram )
inline

Bind program for line rendering.

◆ BindMarkerProgram()

Standard_Boolean OpenGl_ShaderManager::BindMarkerProgram ( const Handle< OpenGl_TextureSet > & theTextures,
Graphic3d_TypeOfShadingModel theShadingModel,
Graphic3d_AlphaMode theAlphaMode,
Standard_Boolean theHasVertColor,
const Handle< OpenGl_ShaderProgram > & theCustomProgram )

Bind program for point rendering.

◆ BindOitCompositingProgram()

Standard_Boolean OpenGl_ShaderManager::BindOitCompositingProgram ( Standard_Boolean theIsMSAAEnabled)

Bind program for blended order-independent transparency buffers compositing.

◆ BindOitDepthPeelingBlendProgram()

Standard_Boolean OpenGl_ShaderManager::BindOitDepthPeelingBlendProgram ( bool theIsMSAAEnabled)

Bind program for Depth Peeling order-independent transparency back color blending.

◆ BindOitDepthPeelingFlushProgram()

Standard_Boolean OpenGl_ShaderManager::BindOitDepthPeelingFlushProgram ( bool theIsMSAAEnabled)

Bind program for Depth Peeling order-independent transparency flush.

◆ BindOutlineProgram()

Standard_Boolean OpenGl_ShaderManager::BindOutlineProgram ( )
inline

Bind program for outline rendering.

◆ BindPBREnvBakingProgram()

Standard_Boolean OpenGl_ShaderManager::BindPBREnvBakingProgram ( Standard_Integer theIndex)
inline

Bind program for IBL maps generation in PBR pipeline.

◆ bindProgramWithState()

Standard_Boolean OpenGl_ShaderManager::bindProgramWithState ( const Handle< OpenGl_ShaderProgram > & theProgram,
Graphic3d_TypeOfShadingModel theShadingModel )
protected

Bind specified program to current context and apply state.

◆ BindStereoProgram()

Standard_Boolean OpenGl_ShaderManager::BindStereoProgram ( Graphic3d_StereoMode theStereoMode)

Bind program for rendering stereoscopic image.

◆ BoundBoxVertBuffer()

const Handle< OpenGl_VertexBuffer > & OpenGl_ShaderManager::BoundBoxVertBuffer ( ) const
inline

Returns bounding box vertex buffer.

◆ ChooseFaceShadingModel()

Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::ChooseFaceShadingModel ( Graphic3d_TypeOfShadingModel theCustomModel,
bool theHasNodalNormals ) const
inline

Choose Shading Model for filled primitives. Fallbacks to FACET model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.

◆ ChooseLineShadingModel()

Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::ChooseLineShadingModel ( Graphic3d_TypeOfShadingModel theCustomModel,
bool theHasNodalNormals ) const
inline

Choose Shading Model for line primitives. Fallbacks to UNLIT model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.

◆ ChooseMarkerShadingModel()

Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::ChooseMarkerShadingModel ( Graphic3d_TypeOfShadingModel theCustomModel,
bool theHasNodalNormals ) const
inline

Choose Shading Model for Marker primitives.

◆ clear()

void OpenGl_ShaderManager::clear ( )

Release all resources.

◆ Create()

Standard_Boolean OpenGl_ShaderManager::Create ( const Handle< Graphic3d_ShaderProgram > & theProxy,
TCollection_AsciiString & theShareKey,
Handle< OpenGl_ShaderProgram > & theProgram )

Creates new shader program or re-use shared instance.

Parameters
theProxy[IN] program definition
theShareKey[OUT] sharing key
theProgram[OUT] OpenGL program
Returns
true on success

◆ GetBgCubeMapProgram()

const Handle< Graphic3d_ShaderProgram > & OpenGl_ShaderManager::GetBgCubeMapProgram ( )

Generates shader program to render environment cubemap as background.

◆ GetBgSkydomeProgram()

const Handle< Graphic3d_ShaderProgram > & OpenGl_ShaderManager::GetBgSkydomeProgram ( )

Generates shader program to render skydome background.

◆ getClipPlaneBits()

Standard_Integer OpenGl_ShaderManager::getClipPlaneBits ( ) const
inlineprotected

Define clipping planes program bits.

◆ GetColoredQuadProgram()

const Handle< Graphic3d_ShaderProgram > & OpenGl_ShaderManager::GetColoredQuadProgram ( )

Generates shader program to render correctly colored quad.

◆ getProgramBits()

Standard_Integer OpenGl_ShaderManager::getProgramBits ( const Handle< OpenGl_TextureSet > & theTextures,
Graphic3d_AlphaMode theAlphaMode,
Aspect_InteriorStyle theInteriorStyle,
Standard_Boolean theHasVertColor,
Standard_Boolean theEnableEnvMap,
Standard_Boolean theEnableMeshEdges ) const
inlineprotected

Define program bits.

◆ getStdProgram()

Handle< OpenGl_ShaderProgram > & OpenGl_ShaderManager::getStdProgram ( Graphic3d_TypeOfShadingModel theShadingModel,
Standard_Integer theBits )
inlineprotected

Prepare standard GLSL program.

◆ IsEmpty()

Standard_Boolean OpenGl_ShaderManager::IsEmpty ( ) const
inline

Returns true if no program objects are registered in the manager.

◆ IsPbrAllowed()

Standard_Boolean OpenGl_ShaderManager::IsPbrAllowed ( ) const
inlineprotected

Checks whether one of PBR shading models is set as default model.

◆ IsSameContext()

bool OpenGl_ShaderManager::IsSameContext ( OpenGl_Context * theCtx) const
inline

Returns true when provided context is the same as used one by shader manager.

◆ LightSourceState()

const OpenGl_LightSourceState & OpenGl_ShaderManager::LightSourceState ( ) const
inline

Returns current state of OCCT light sources.

◆ LocalClippingPlaneW()

Standard_Real OpenGl_ShaderManager::LocalClippingPlaneW ( const Graphic3d_ClipPlane & thePlane) const
inline

Return clipping plane W equation value moved considering local camera transformation.

◆ LocalOrigin()

const gp_XYZ & OpenGl_ShaderManager::LocalOrigin ( ) const
inline

Return local camera transformation.

◆ MaterialState()

const OpenGl_MaterialState & OpenGl_ShaderManager::MaterialState ( ) const
inline

Returns current state of material.

◆ ModelWorldState()

const OpenGl_ModelWorldState & OpenGl_ShaderManager::ModelWorldState ( ) const
inline

Returns current state of OCCT model-world transform.

◆ OitState()

const OpenGl_OitState & OpenGl_ShaderManager::OitState ( ) const
inline

Returns state of OIT uniforms.

◆ PBRShadingModelFallback()

static Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::PBRShadingModelFallback ( Graphic3d_TypeOfShadingModel theShadingModel,
Standard_Boolean theIsPbrAllowed = Standard_False )
inlinestatic

Resets PBR shading models to corresponding non-PBR ones if PBR is not allowed.

◆ preparePBREnvBakingProgram()

Standard_Boolean OpenGl_ShaderManager::preparePBREnvBakingProgram ( Standard_Integer theIndex)
protected

Prepare GLSL source for IBL generation used in PBR pipeline.

◆ prepareStdProgramBoundBox()

Standard_Boolean OpenGl_ShaderManager::prepareStdProgramBoundBox ( )
protected

Prepare standard GLSL program for bounding box.

◆ prepareStdProgramGouraud()

Standard_Boolean OpenGl_ShaderManager::prepareStdProgramGouraud ( Handle< OpenGl_ShaderProgram > & theProgram,
const Standard_Integer theBits )
protected

Prepare standard GLSL program with per-vertex lighting.

◆ prepareStdProgramLight()

Standard_Boolean OpenGl_ShaderManager::prepareStdProgramLight ( Handle< OpenGl_ShaderProgram > & theProgram,
Graphic3d_TypeOfShadingModel theShadingModel,
Standard_Integer theBits )
inlineprotected

Prepare standard GLSL program with lighting.

◆ prepareStdProgramPhong()

Standard_Boolean OpenGl_ShaderManager::prepareStdProgramPhong ( Handle< OpenGl_ShaderProgram > & theProgram,
const Standard_Integer theBits,
const Standard_Boolean theIsFlatNormal = false,
const Standard_Boolean theIsPBR = false )
protected

Prepare standard GLSL program with per-pixel lighting.

Parameters
theIsFlatNormalwhen TRUE, the Vertex normals will be ignored and Face normal will be computed instead
theIsPBRwhen TRUE, the PBR pipeline will be activated

◆ prepareStdProgramUnlit()

Standard_Boolean OpenGl_ShaderManager::prepareStdProgramUnlit ( Handle< OpenGl_ShaderProgram > & theProgram,
Standard_Integer theBits,
Standard_Boolean theIsOutline = false )
protected

Prepare standard GLSL program without lighting.

◆ ProjectionState()

const OpenGl_ProjectionState & OpenGl_ShaderManager::ProjectionState ( ) const
inline

Returns current state of OCCT projection transform.

◆ PushClippingState()

void OpenGl_ShaderManager::PushClippingState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of OCCT clipping planes to specified program (only on state change).

◆ pushClippingState()

void OpenGl_ShaderManager::pushClippingState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of OCCT clipping planes to specified program.

◆ PushInteriorState()

void OpenGl_ShaderManager::PushInteriorState ( const Handle< OpenGl_ShaderProgram > & theProgram,
const Handle< Graphic3d_Aspects > & theAspect ) const

Setup interior style line edges variables.

◆ PushLightSourceState()

void OpenGl_ShaderManager::PushLightSourceState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of OCCT light sources to specified program (only on state change). Note that light sources definition depends also on WorldViewState.

◆ pushLightSourceState()

void OpenGl_ShaderManager::pushLightSourceState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of OCCT light sources to specified program.

◆ PushMaterialState()

void OpenGl_ShaderManager::PushMaterialState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of material to specified program (only on state change).

◆ pushMaterialState()

void OpenGl_ShaderManager::pushMaterialState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of material to specified program.

◆ PushModelWorldState()

void OpenGl_ShaderManager::PushModelWorldState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of OCCT model-world transform to specified program (only on state change).

◆ pushModelWorldState()

void OpenGl_ShaderManager::pushModelWorldState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of OCCT model-world transform to specified program.

◆ PushOitState()

void OpenGl_ShaderManager::PushOitState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes state of OIT uniforms to the specified program.

◆ pushOitState()

void OpenGl_ShaderManager::pushOitState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes state of OIT uniforms to the specified program.

◆ PushProjectionState()

void OpenGl_ShaderManager::PushProjectionState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of OCCT projection transform to specified program (only on state change).

◆ pushProjectionState()

void OpenGl_ShaderManager::pushProjectionState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of OCCT projection transform to specified program.

◆ PushState()

void OpenGl_ShaderManager::PushState ( const Handle< OpenGl_ShaderProgram > & theProgram,
Graphic3d_TypeOfShadingModel theShadingModel = Graphic3d_TypeOfShadingModel_Unlit ) const

Pushes current state of OCCT graphics parameters to specified program.

◆ PushWorldViewState()

void OpenGl_ShaderManager::PushWorldViewState ( const Handle< OpenGl_ShaderProgram > & theProgram) const
inline

Pushes current state of OCCT world-view transform to specified program (only on state change).

◆ pushWorldViewState()

void OpenGl_ShaderManager::pushWorldViewState ( const Handle< OpenGl_ShaderProgram > & theProgram) const

Pushes current state of OCCT world-view transform to specified program.

◆ ResetOitState()

void OpenGl_ShaderManager::ResetOitState ( )
inline

Reset the state of OIT rendering pass (only on state change).

◆ RevertClippingState()

void OpenGl_ShaderManager::RevertClippingState ( )

Reverts state of OCCT clipping planes.

◆ SetCastShadows()

bool OpenGl_ShaderManager::SetCastShadows ( const bool theToCast)
inline

Updates state of OCCT light sources to dynamically enable/disable shadowmap.

Parameters
theToCast[in] flag to enable/disable shadowmap
Returns
previous flag state

◆ SetContext()

void OpenGl_ShaderManager::SetContext ( OpenGl_Context * theCtx)
inline

Overwrites context.

◆ SetLocalOrigin()

void OpenGl_ShaderManager::SetLocalOrigin ( const gp_XYZ & theOrigin)
inline

Setup local camera transformation for compensating float precision issues.

◆ SetOitState()

void OpenGl_ShaderManager::SetOitState ( Graphic3d_RenderTransparentMethod theMode)
inline

Set the state of OIT rendering pass (only on state change).

Parameters
theMode[in] flag indicating whether the special output should be written for OIT algorithm

◆ SetShadingModel()

void OpenGl_ShaderManager::SetShadingModel ( const Graphic3d_TypeOfShadingModel theModel)

Sets shading model.

◆ SetWeighedOitState()

void OpenGl_ShaderManager::SetWeighedOitState ( float theDepthFactor)
inline

Set the state of weighed OIT rendering pass (only on state change).

Parameters
theDepthFactor[in] the scalar factor of depth influence to the fragment's coverage

◆ ShaderPrograms()

const OpenGl_ShaderProgramList & OpenGl_ShaderManager::ShaderPrograms ( ) const
inline

Returns list of registered shader programs.

◆ ShadingModel()

Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::ShadingModel ( ) const
inline

Returns default Shading Model.

◆ switchLightPrograms()

void OpenGl_ShaderManager::switchLightPrograms ( )
protected

Set pointer myLightPrograms to active lighting programs set from myMapOfLightPrograms.

◆ Unregister()

void OpenGl_ShaderManager::Unregister ( TCollection_AsciiString & theShareKey,
Handle< OpenGl_ShaderProgram > & theProgram )

Unregisters specified shader program.

◆ UpdateClippingState()

void OpenGl_ShaderManager::UpdateClippingState ( )

Updates state of OCCT clipping planes.

◆ UpdateLightSourceState()

void OpenGl_ShaderManager::UpdateLightSourceState ( )

Invalidate state of OCCT light sources.

◆ UpdateLightSourceStateTo()

void OpenGl_ShaderManager::UpdateLightSourceStateTo ( const Handle< Graphic3d_LightSet > & theLights,
Standard_Integer theSpecIBLMapLevels,
const Handle< OpenGl_ShadowMapArray > & theShadowMaps )

Updates state of OCCT light sources.

◆ UpdateMaterialState()

void OpenGl_ShaderManager::UpdateMaterialState ( )
inline

Updates state of material.

◆ UpdateMaterialStateTo()

void OpenGl_ShaderManager::UpdateMaterialStateTo ( const OpenGl_Material & theMat,
const float theAlphaCutoff,
const bool theToDistinguish,
const bool theToMapTexture )
inline

Updates state of material.

◆ UpdateModelWorldStateTo()

void OpenGl_ShaderManager::UpdateModelWorldStateTo ( const OpenGl_Mat4 & theModelWorldMatrix)

Updates state of OCCT model-world transform.

◆ UpdateProjectionStateTo()

void OpenGl_ShaderManager::UpdateProjectionStateTo ( const OpenGl_Mat4 & theProjectionMatrix)

Updates state of OCCT projection transform.

◆ UpdateSRgbState()

void OpenGl_ShaderManager::UpdateSRgbState ( )

Fetch sRGB state from caps and invalidates programs, if necessary.

◆ UpdateWorldViewStateTo()

void OpenGl_ShaderManager::UpdateWorldViewStateTo ( const OpenGl_Mat4 & theWorldViewMatrix)

Updates state of OCCT world-view transform.

◆ WorldViewState()

const OpenGl_WorldViewState & OpenGl_ShaderManager::WorldViewState ( ) const
inline

Returns current state of OCCT world-view transform.

Field Documentation

◆ myBgCubeMapProgram

Handle< Graphic3d_ShaderProgram > OpenGl_ShaderManager::myBgCubeMapProgram
protected

program for background cubemap rendering

◆ myBgSkydomeProgram

Handle< Graphic3d_ShaderProgram > OpenGl_ShaderManager::myBgSkydomeProgram
protected

program for background cubemap rendering

◆ myBlitPrograms

NCollection_Array1< Handle< OpenGl_ShaderProgram > > OpenGl_ShaderManager::myBlitPrograms[2]
protected

standard program for FBO blit emulation

◆ myBoundBoxProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myBoundBoxProgram
protected

standard program for bounding box

◆ myBoundBoxVertBuffer

Handle< OpenGl_VertexBuffer > OpenGl_ShaderManager::myBoundBoxVertBuffer
protected

bounding box vertex buffer

◆ myClipChainArray

NCollection_Array1<Standard_Integer> OpenGl_ShaderManager::myClipChainArray
mutableprotected

◆ myClippingState

OpenGl_ClippingState OpenGl_ShaderManager::myClippingState
protected

State of OCCT clipping planes.

◆ myClipPlaneArray

NCollection_Array1<OpenGl_Vec4> OpenGl_ShaderManager::myClipPlaneArray
mutableprotected

◆ myClipPlaneArrayFfp

NCollection_Array1<OpenGl_Vec4d> OpenGl_ShaderManager::myClipPlaneArrayFfp
mutableprotected

◆ myColoredQuadProgram

Handle< Graphic3d_ShaderProgram > OpenGl_ShaderManager::myColoredQuadProgram
protected

program for correct quad rendering

◆ myContext

OpenGl_Context* OpenGl_ShaderManager::myContext
protected

OpenGL context.

◆ myFfpProgram

Handle< OpenGl_ShaderProgramFFP > OpenGl_ShaderManager::myFfpProgram
protected

◆ myFontProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myFontProgram
protected

standard program for textured text

◆ myHasLocalOrigin

Standard_Boolean OpenGl_ShaderManager::myHasLocalOrigin
protected

flag indicating that local camera transformation has been set

◆ myLightParamsArray

NCollection_Array1<OpenGl_ShaderLightParameters> OpenGl_ShaderManager::myLightParamsArray
mutableprotected

◆ myLightPrograms

Handle< OpenGl_SetOfShaderPrograms > OpenGl_ShaderManager::myLightPrograms
protected

pointer to active lighting programs matrix

◆ myLightSourceState

OpenGl_LightSourceState OpenGl_ShaderManager::myLightSourceState
protected

State of OCCT light sources.

◆ myLightTypeArray

NCollection_Array1<Standard_Integer> OpenGl_ShaderManager::myLightTypeArray
mutableprotected

◆ myLocalOrigin

gp_XYZ OpenGl_ShaderManager::myLocalOrigin
protected

local camera transformation

◆ myMapOfLightPrograms

OpenGl_MapOfShaderPrograms OpenGl_ShaderManager::myMapOfLightPrograms
protected

map of lighting programs depending on lights configuration

◆ myMaterialState

OpenGl_MaterialState OpenGl_ShaderManager::myMaterialState
protected

State of Front and Back materials.

◆ myModelWorldState

OpenGl_ModelWorldState OpenGl_ShaderManager::myModelWorldState
protected

State of OCCT model-world transformation.

◆ myOitCompositingProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myOitCompositingProgram[2]
protected

standard program for OIT compositing (default and MSAA).

◆ myOitDepthPeelingBlendProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myOitDepthPeelingBlendProgram[2]
protected

standard program for OIT Depth Peeling blend (default and MSAA)

◆ myOitDepthPeelingFlushProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myOitDepthPeelingFlushProgram[2]
protected

standard program for OIT Depth Peeling flush (default and MSAA)

◆ myOitState

OpenGl_OitState OpenGl_ShaderManager::myOitState
protected

State of OIT uniforms.

◆ myOutlinePrograms

Handle< OpenGl_SetOfPrograms > OpenGl_ShaderManager::myOutlinePrograms
protected

programs matrix without lighting for outline presentation

◆ myPBREnvBakingProgram

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myPBREnvBakingProgram[3]
protected

programs for IBL maps generation used in PBR pipeline (0 for Diffuse; 1 for Specular; 2 for fallback)

◆ myPBREnvironment

Handle< OpenGl_PBREnvironment > OpenGl_ShaderManager::myPBREnvironment
mutableprotected

manager of IBL maps used in PBR pipeline

◆ myProgramList

OpenGl_ShaderProgramList OpenGl_ShaderManager::myProgramList
protected

The list of shader programs.

◆ myProjectionState

OpenGl_ProjectionState OpenGl_ShaderManager::myProjectionState
protected

State of OCCT projection transformation.

◆ myShadingModel

Graphic3d_TypeOfShadingModel OpenGl_ShaderManager::myShadingModel
protected

lighting shading model

◆ myShadowMatArray

NCollection_Array1<Graphic3d_Mat4> OpenGl_ShaderManager::myShadowMatArray
mutableprotected

◆ myStereoPrograms

Handle< OpenGl_ShaderProgram > OpenGl_ShaderManager::myStereoPrograms[Graphic3d_StereoMode_NB]
protected

standard stereo programs

◆ myUnlitPrograms

Handle< OpenGl_SetOfPrograms > OpenGl_ShaderManager::myUnlitPrograms
protected

programs matrix without lighting

◆ myWorldViewState

OpenGl_WorldViewState OpenGl_ShaderManager::myWorldViewState
protected

State of OCCT world-view transformation.


The documentation for this class was generated from the following file: