Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
shkyera::RenderingSystem< MainCameraTag > Class Template Reference

#include <RenderingSystem.hpp>

Inheritance diagram for shkyera::RenderingSystem< MainCameraTag >:
[legend]

Public Member Functions

 RenderingSystem (std::shared_ptr< Registry > registry)
 
std::optional< GLuintupdate ()
 
GLuint getRenderFrameBuffer ()
 
- Public Member Functions inherited from shkyera::RegistryViewer
template<typename... Resources>
 RegistryViewer (std::shared_ptr< Registry > registry, ReadAccess< Resources... > read)
 
template<typename... Resources>
 RegistryViewer (std::shared_ptr< Registry > registry, WriteAccess< Resources... > read)
 
template<typename... ReadResources, typename... WriteResources>
 RegistryViewer (std::shared_ptr< Registry > registry, ReadAccess< ReadResources... > read, WriteAccess< WriteResources... > write)
 
const PolicygetPolicy () const
 
template<typename Component , typename... Args>
Componentadd (Entity entity, Args &&... args)
 
template<typename Component >
void clear ()
 
template<typename Component >
bool has (Entity entity) const
 
template<typename Component >
Componentwrite (Entity entity)
 
template<typename Component >
const Componentread (Entity entity) const
 
template<NonSingletonComponentType Component>
const autoread () const
 
template<SingletonComponentType Component>
const autoread () const
 
template<NonSingletonComponentType Component>
autowrite ()
 
template<SingletonComponentType Component>
autowrite ()
 
template<SingletonComponentType Component>
std::optional< EntitygetEntity () const
 
const std::optional< EntitygetParent (Entity entity) const
 
template<typename Component >
SparseSet< Component > & writeAll ()
 
template<typename Component >
const SparseSet< Component > & readAll () const
 

Private Member Functions

void clearFrameBuffers ()
 
void setSize (uint32_t width, uint32_t height)
 
void renderViewPosition ()
 
void renderViewNormals ()
 
void renderSSAO (float strength, float radius)
 
void renderDirectionalLightShadowMaps ()
 
void renderPointLightShadowMaps ()
 
void renderSpotLightShadowMaps ()
 
void renderWorldObjects ()
 
void renderParticles ()
 
void renderBillboards ()
 
void renderDebugBillboards ()
 
void renderPostProcessingVolumes ()
 
void renderWireframes ()
 
void renderOutlineOfSelectedEntities ()
 
void renderOutline (const std::set< Entity > &entities)
 
void renderSkybox ()
 
void renderOverlayModels ()
 
void bloom (float threshold, float weight)
 
void toneMapping ()
 
void gammaCorrection (float gamma)
 
void antiAliasing ()
 
void setMaterial (Material const *material)
 
void setTexture (Material const *material, const std::string &textureName, auto textureMember)
 
PostProcessingVolumeComponent getPostProcessingSettings ()
 

Private Attributes

int _textureIndex
 
std::shared_ptr< Registry_registry
 
SceneFrameBuffer_mostRecentFrameBufferPtr
 
SceneFrameBuffer _litModelsFrameBuffer
 
ShaderProgram _modelShaderProgram
 
ShaderProgram _wireframeShaderProgram
 
SceneFrameBuffer _antiAliasedFrameBuffer
 
ShaderProgram _antiAliasingShaderProgram
 
SceneFrameBuffer _viewSpacePositionFrameBuffer
 
SceneFrameBuffer _viewSpaceNormalFrameBuffer
 
SceneFrameBuffer _ssaoFrameBuffer
 
ShaderProgram _viewSpaceNormalShaderProgram
 
ShaderProgram _viewSpacePositionShaderProgram
 
ShaderProgram _ssaoShaderProgram
 
std::vector< glm::vec3 > _ssaoKernel
 
float _usedSsaoRadius {0}
 
ShaderProgram _toneMappingShaderProgram
 
SceneFrameBuffer _toneMappedFrameBuffer
 
ShaderProgram _gammaCorrectionShaderProgram
 
SceneFrameBuffer _gammaCorrectedFrameBuffer
 
std::array< SceneFrameBuffer, BloomSteps_downscaledFrameBuffers
 
std::array< SceneFrameBuffer, BloomSteps_horizontallyBluredDownscaledFrameBuffers
 
std::array< SceneFrameBuffer, BloomSteps_fullyBluredDownscaledFrameBuffers
 
SceneFrameBuffer _bloomedFrameBuffer
 
ShaderProgram _thresholdShaderProgram
 
ShaderProgram _horizontalBlurShaderProgram
 
ShaderProgram _verticalBlurShaderProgram
 
ShaderProgram _weightedAdditionShaderProgram
 
SceneFrameBuffer _silhouetteFrameBuffer
 
SceneFrameBuffer _horizontallyDilatedFrameBuffer
 
SceneFrameBuffer _fullyDilatedFrameBuffer
 
SceneFrameBuffer _differenceFrameBuffer
 
SceneFrameBuffer _outlinedObjectsFrameBuffer
 
ShaderProgram _silhouetteShaderProgram
 
ShaderProgram _dilateShaderProgram
 
ShaderProgram _subtractShaderProgram
 
ShaderProgram _overlayShaderProgram
 
CubeMap _skyboxCubeMap
 
ShaderProgram _skyboxShaderProgram
 
std::unordered_map< Entity, DepthAtlasFrameBuffer_directionalLightToShadowMap
 
ShaderProgram _depthShaderProgram
 
std::unordered_map< Entity, DepthAtlasFrameBuffer_pointLightToShadowMap
 
ShaderProgram _distanceShaderProgram
 
std::unordered_map< Entity, DepthAtlasFrameBuffer_spotLightToShadowMap
 
Material _defaultMaterial
 
Material _directionalLightDebugMaterial
 
Material _spotLightDebugMaterial
 
Material _pointLightDebugMaterial
 
Material _ambientLightDebugMaterial
 
Material _particleEmitterDebugMaterial
 
Material _postProcessingVolumeDebugMaterial
 
Material _audioSourceDebugMaterial
 

Static Private Attributes

static constexpr size_t BloomSteps = 4
 

Constructor & Destructor Documentation

◆ RenderingSystem()

template<typename MainCameraTag >
shkyera::RenderingSystem< MainCameraTag >::RenderingSystem ( std::shared_ptr< Registry registry)

Member Function Documentation

◆ antiAliasing()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::antiAliasing ( )
private

◆ bloom()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::bloom ( float  threshold,
float  weight 
)
private

◆ clearFrameBuffers()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::clearFrameBuffers ( )
private

◆ gammaCorrection()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::gammaCorrection ( float  gamma)
private

◆ getPostProcessingSettings()

template<typename MainCameraTag >
PostProcessingVolumeComponent shkyera::RenderingSystem< MainCameraTag >::getPostProcessingSettings ( )
private

◆ getRenderFrameBuffer()

template<typename MainCameraTag >
GLuint shkyera::RenderingSystem< MainCameraTag >::getRenderFrameBuffer ( )

◆ renderBillboards()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderBillboards ( )
private

◆ renderDebugBillboards()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderDebugBillboards ( )
private

◆ renderDirectionalLightShadowMaps()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderDirectionalLightShadowMaps ( )
private

◆ renderOutline()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderOutline ( const std::set< Entity > &  entities)
private

◆ renderOutlineOfSelectedEntities()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderOutlineOfSelectedEntities ( )
private

◆ renderOverlayModels()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderOverlayModels ( )
private

◆ renderParticles()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderParticles ( )
private

◆ renderPointLightShadowMaps()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderPointLightShadowMaps ( )
private

◆ renderPostProcessingVolumes()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderPostProcessingVolumes ( )
private

◆ renderSkybox()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderSkybox ( )
private

◆ renderSpotLightShadowMaps()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderSpotLightShadowMaps ( )
private

◆ renderSSAO()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderSSAO ( float  strength,
float  radius 
)
private

◆ renderViewNormals()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderViewNormals ( )
private

◆ renderViewPosition()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderViewPosition ( )
private

◆ renderWireframes()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderWireframes ( )
private

◆ renderWorldObjects()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::renderWorldObjects ( )
private

◆ setMaterial()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::setMaterial ( Material const material)
private

◆ setSize()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::setSize ( uint32_t  width,
uint32_t  height 
)
private

◆ setTexture()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::setTexture ( Material const material,
const std::string &  textureName,
auto  textureMember 
)
private

◆ toneMapping()

template<typename MainCameraTag >
void shkyera::RenderingSystem< MainCameraTag >::toneMapping ( )
private

◆ update()

template<typename MainCameraTag >
std::optional< GLuint > shkyera::RenderingSystem< MainCameraTag >::update ( )

Member Data Documentation

◆ _ambientLightDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_ambientLightDebugMaterial
private

◆ _antiAliasedFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_antiAliasedFrameBuffer
private

◆ _antiAliasingShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_antiAliasingShaderProgram
private

◆ _audioSourceDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_audioSourceDebugMaterial
private

◆ _bloomedFrameBuffer

◆ _defaultMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_defaultMaterial
private

◆ _depthShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_depthShaderProgram
private

◆ _differenceFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_differenceFrameBuffer
private

◆ _dilateShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_dilateShaderProgram
private

◆ _directionalLightDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_directionalLightDebugMaterial
private

◆ _directionalLightToShadowMap

template<typename MainCameraTag >
std::unordered_map<Entity, DepthAtlasFrameBuffer> shkyera::RenderingSystem< MainCameraTag >::_directionalLightToShadowMap
private

◆ _distanceShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_distanceShaderProgram
private

◆ _downscaledFrameBuffers

template<typename MainCameraTag >
std::array<SceneFrameBuffer, BloomSteps> shkyera::RenderingSystem< MainCameraTag >::_downscaledFrameBuffers
private

◆ _fullyBluredDownscaledFrameBuffers

template<typename MainCameraTag >
std::array<SceneFrameBuffer, BloomSteps> shkyera::RenderingSystem< MainCameraTag >::_fullyBluredDownscaledFrameBuffers
private

◆ _fullyDilatedFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_fullyDilatedFrameBuffer
private

◆ _gammaCorrectedFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_gammaCorrectedFrameBuffer
private

◆ _gammaCorrectionShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_gammaCorrectionShaderProgram
private

◆ _horizontalBlurShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_horizontalBlurShaderProgram
private

◆ _horizontallyBluredDownscaledFrameBuffers

template<typename MainCameraTag >
std::array<SceneFrameBuffer, BloomSteps> shkyera::RenderingSystem< MainCameraTag >::_horizontallyBluredDownscaledFrameBuffers
private

◆ _horizontallyDilatedFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_horizontallyDilatedFrameBuffer
private

◆ _litModelsFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_litModelsFrameBuffer
private

◆ _modelShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_modelShaderProgram
private

◆ _mostRecentFrameBufferPtr

template<typename MainCameraTag >
SceneFrameBuffer* shkyera::RenderingSystem< MainCameraTag >::_mostRecentFrameBufferPtr
private

◆ _outlinedObjectsFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_outlinedObjectsFrameBuffer
private

◆ _overlayShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_overlayShaderProgram
private

◆ _particleEmitterDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_particleEmitterDebugMaterial
private

◆ _pointLightDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_pointLightDebugMaterial
private

◆ _pointLightToShadowMap

template<typename MainCameraTag >
std::unordered_map<Entity, DepthAtlasFrameBuffer> shkyera::RenderingSystem< MainCameraTag >::_pointLightToShadowMap
private

◆ _postProcessingVolumeDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_postProcessingVolumeDebugMaterial
private

◆ _registry

template<typename MainCameraTag >
std::shared_ptr<Registry> shkyera::RenderingSystem< MainCameraTag >::_registry
private

◆ _silhouetteFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_silhouetteFrameBuffer
private

◆ _silhouetteShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_silhouetteShaderProgram
private

◆ _skyboxCubeMap

template<typename MainCameraTag >
CubeMap shkyera::RenderingSystem< MainCameraTag >::_skyboxCubeMap
private

◆ _skyboxShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_skyboxShaderProgram
private

◆ _spotLightDebugMaterial

template<typename MainCameraTag >
Material shkyera::RenderingSystem< MainCameraTag >::_spotLightDebugMaterial
private

◆ _spotLightToShadowMap

template<typename MainCameraTag >
std::unordered_map<Entity, DepthAtlasFrameBuffer> shkyera::RenderingSystem< MainCameraTag >::_spotLightToShadowMap
private

◆ _ssaoFrameBuffer

◆ _ssaoKernel

template<typename MainCameraTag >
std::vector<glm::vec3> shkyera::RenderingSystem< MainCameraTag >::_ssaoKernel
private

◆ _ssaoShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_ssaoShaderProgram
private

◆ _subtractShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_subtractShaderProgram
private

◆ _textureIndex

template<typename MainCameraTag >
int shkyera::RenderingSystem< MainCameraTag >::_textureIndex
private

◆ _thresholdShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_thresholdShaderProgram
private

◆ _toneMappedFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_toneMappedFrameBuffer
private

◆ _toneMappingShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_toneMappingShaderProgram
private

◆ _usedSsaoRadius

template<typename MainCameraTag >
float shkyera::RenderingSystem< MainCameraTag >::_usedSsaoRadius {0}
private

◆ _verticalBlurShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_verticalBlurShaderProgram
private

◆ _viewSpaceNormalFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_viewSpaceNormalFrameBuffer
private

◆ _viewSpaceNormalShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_viewSpaceNormalShaderProgram
private

◆ _viewSpacePositionFrameBuffer

template<typename MainCameraTag >
SceneFrameBuffer shkyera::RenderingSystem< MainCameraTag >::_viewSpacePositionFrameBuffer
private

◆ _viewSpacePositionShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_viewSpacePositionShaderProgram
private

◆ _weightedAdditionShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_weightedAdditionShaderProgram
private

◆ _wireframeShaderProgram

template<typename MainCameraTag >
ShaderProgram shkyera::RenderingSystem< MainCameraTag >::_wireframeShaderProgram
private

◆ BloomSteps

template<typename MainCameraTag >
constexpr size_t shkyera::RenderingSystem< MainCameraTag >::BloomSteps = 4
inlinestaticconstexprprivate

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