|
SleakEngine 1.0.0
C++23 multi-backend game engine
|
OpenGL 3.3+ backend: deferred GBuffer pipeline, SSAO, shadow mapping, and baked IBL. More...
#include <OpenGLRenderer.hpp>
Public Member Functions | |
| OpenGLRenderer (Window *window) | |
| Registers this backend's buffer/shader/texture factories with ResourceManager. | |
| virtual | ~OpenGLRenderer () |
| void | ApplyMSAAChange () override |
| void | ApplyVSyncChange () override |
| virtual void | BeginDebugLinePass () override |
| void | BeginRender () override |
| Acquires the next frame and prepares it for command recording. | |
| virtual void | BindBoneBuffer (RefPtr< BufferBase > buffer) override |
| virtual void | BindConstantBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0) override |
| virtual void | BindIndexBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0) override |
| virtual void | BindTexture (RefPtr< Sleak::Texture > texture, uint32_t slot=0) override |
| virtual void | BindVertexBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0) override |
| void | Cleanup () override |
| virtual void | ClearDepthStencil (bool clearDepth, bool clearStencil, float depth, uint8_t stencil) override |
| virtual void | ClearRenderTarget (float r, float g, float b, float a) override |
| virtual BufferBase * | CreateBuffer (BufferType Type, uint32_t size, void *data) override |
| Allocates a backend buffer, optionally seeded with initial data. | |
| Texture * | CreateCubemapTexture (const std::array< std::string, 6 > &facePaths) |
| Loads a cubemap from six face image paths. | |
| Texture * | CreateCubemapTextureFromPanorama (const std::string &panoramaPath) |
| Loads a cubemap by converting a single equirectangular panorama. | |
| virtual bool | CreateImGUI () override |
| Initializes ImGui integration for this backend. | |
| virtual Shader * | CreateShader (const std::string &shaderSource) override |
| Compiles a shader program from source or a source-file path. | |
| virtual Texture * | CreateTexture (const std::string &TexturePath) override |
| Loads a texture from disk. | |
| virtual Texture * | CreateTextureFromData (uint32_t width, uint32_t height, void *data) override |
| Creates a texture from an in-memory pixel buffer. | |
| virtual void | Draw (uint32_t vertexCount) override |
| Non-indexed draw from the currently bound vertex buffer. | |
| virtual void | DrawIndexed (uint32_t indexCount) override |
| Indexed draw from the currently bound vertex/index buffers. | |
| virtual void | DrawIndexedInstance (uint32_t instanceCount, uint32_t indexPerInstance) override |
| Indexed instanced draw. | |
| virtual void | DrawInstance (uint32_t instanceCount, uint32_t vertexPerInstance) override |
| Non-indexed instanced draw. | |
| virtual void | EndDebugLinePass () override |
| void | EndRender () override |
| Submits recorded commands and presents the frame. | |
| virtual RenderContext * | GetContext () override |
| Returns the backend's command-recording interface. | |
| virtual uint32_t | GetFeatureCaps () const override |
| Feature capability mask; backends override with the audited truth. | |
| bool | Initialize () override |
| Creates the device, swapchain, and backend resources. | |
| virtual void | Resize (uint32_t width, uint32_t height) override |
| Recreates swapchain-dependent resources for a new surface size. | |
| virtual void | SetCullEnabled (bool enabled) override |
| virtual void | SetDepthCompare (DepthCompare compare) override |
| virtual void | SetDepthWrite (bool enabled) override |
| virtual void | SetRenderFace (RenderFace face) override |
| virtual void | SetRenderMode (RenderMode mode) override |
| virtual void | SetViewport (float x, float y, float width, float height, float minDepth=0.0f, float maxDepth=1.0f) override |
| Sets the active viewport rect and depth range in pixel/NDC units. | |
| Public Member Functions inherited from Sleak::RenderEngine::Renderer | |
| virtual | ~Renderer ()=0 |
| virtual void | ApplyShadowResolutionChange () |
| virtual void | FlushPendingTransfers () |
| Flushes any buffered upload/staging transfers still in flight. | |
| float | GetCPUUsage () const |
| bool | GetDeferredEnabled () const |
| float | GetExposure () const |
| int | GetFrameRate () const |
| float | GetFrameTime () const |
| float | GetGamma () const |
| virtual size_t | GetGPUMemoryBudget () const |
| virtual size_t | GetGPUMemoryUsed () const |
| float | GetIBLIntensity () const |
| bool | GetImGUIEnabled () |
| bool | GetIsPerformanceCounter () |
| uint32_t | GetMaxMSAASampleCount () const |
| uint32_t | GetMSAASampleCount () const |
| float | GetRamUsage () const |
| RenderMode | GetRenderMode () const |
| uint32_t | GetShadowMapResolution () const |
| float | GetSSAOBias () const |
| float | GetSSAOPower () const |
| float | GetSSAORadius () const |
| int | GetTriangles () const |
| RendererType | GetType () const |
| const char * | GetTypeStr () const |
| int | GetVertices () const |
| bool | GetVSync () const |
| bool | IsBloomEnabled () const |
| bool | IsIBLEnabled () const |
| bool | IsPCSSEnabled () const |
| bool | IsShadowPassEnabled () const |
| bool | IsSSAOEnabled () const |
| bool | IsSSREnabled () const |
| bool | IsTAAEnabled () const |
| bool | IsTonemappingEnabled () const |
| void | SetBloomEnabled (bool enabled) |
| void | SetDeferredEnabled (bool enabled) |
| void | SetExposure (float exposure) |
| void | SetGamma (float gamma) |
| void | SetIBLEnabled (bool enabled) |
| void | SetIBLIntensity (float intensity) |
| void | SetImGUI (bool bEnable) |
| virtual void | SetMSAASampleCount (uint32_t samples) |
| Requests a new MSAA sample count; rejects invalid values and samples above 1 while deferred shading is on. | |
| void | SetPCSSEnabled (bool enabled) |
| void | SetPerformanceCounter (bool value) |
| void | SetRenderCullFace (RenderFace face) |
| void | SetRenderDrawMode (RenderMode mode) |
| void | SetShadowMapResolution (uint32_t res) |
| Requests a new shadow map size, clamped to [256, 8192] and queued if resources already exist. | |
| void | SetShadowPassEnabled (bool enabled) |
| void | SetSSAOBias (float bias) |
| void | SetSSAOEnabled (bool enabled) |
| void | SetSSAOPower (float power) |
| void | SetSSAORadius (float radius) |
| void | SetSSREnabled (bool enabled) |
| void | SetTAAEnabled (bool enabled) |
| void | SetTonemappingEnabled (bool enabled) |
| virtual void | SetVSync (bool enabled) |
| virtual void | WaitIdle () |
| Blocks until the GPU has finished all outstanding work. | |
| Public Member Functions inherited from Sleak::RenderEngine::RenderContext | |
| virtual void | BeginCustomFormatPass (VertexFormatHandle format) |
| Binds the pipeline built for a registered vertex layout in the active render pass. | |
| virtual void | BeginShadowPass () |
| virtual void | BeginSkinnedPass () |
| virtual void | BeginSkyboxPass () |
| virtual void | BindTextureRaw (Sleak::Texture *texture, uint32_t slot=0) |
| virtual void | EndCustomFormatPass () |
| Restores the pipeline that was active before the custom format draws. | |
| virtual void | EndShadowPass () |
| virtual void | EndSkinnedPass () |
| virtual void | EndSkyboxPass () |
| virtual bool | IsShadowPassActive () const |
Additional Inherited Members | |
| Protected Member Functions inherited from Sleak::RenderEngine::Renderer | |
| void | UpdateFrameMetrics () |
| Rolls up frame count into rate/time/triangle stats once per MetricUpdateInterval. | |
| Protected Attributes inherited from Sleak::RenderEngine::Renderer | |
| bool | bEnabledPerformanceCounter = false |
| bool | bImFrameActive = false |
| bool | bImInitialized = false |
| int | DisplayTriangles = 0 |
| int | DisplayVertices = 0 |
| int | DrawnTriangles = 0 |
| int | DrawnVertices = 0 |
| RenderFace | Face |
| int | frameRate = 0 |
| float | frameTime = 0 |
| bool | m_bloomEnabled = true |
| bool | m_deferredEnabled = true |
| float | m_exposure = 1.0f |
| uint32_t | m_frameCount = 0 |
| Timer | m_frameTimer |
| float | m_gamma = 2.2f |
| bool | m_iblEnabled = false |
| float | m_iblIntensity = 0.5f |
| uint32_t | m_maxMsaaSampleCount = 1 |
| bool | m_msaaChangeRequested = false |
| uint32_t | m_msaaSampleCount = 1 |
| bool | m_pcssEnabled = true |
| uint32_t | m_pendingMsaaSampleCount = 1 |
| uint32_t | m_pendingShadowMapResolution = 2048 |
| uint32_t | m_shadowMapResolution = 2048 |
| bool | m_shadowPassEnabled = false |
| bool | m_shadowResChangeRequested = false |
| bool | m_shadowResourcesCreated = false |
| float | m_ssaoBias = 0.025f |
| bool | m_ssaoEnabled = false |
| float | m_ssaoPower = 2.0f |
| float | m_ssaoRadius = 0.8f |
| bool | m_ssrEnabled = false |
| bool | m_taaEnabled = false |
| bool | m_tonemapEnabled = false |
| bool | m_vsync = false |
| bool | m_vsyncChangeRequested = false |
| RenderMode | Mode |
| RendererType | Type |
| float | UsedCPU = 0 |
| float | UsedRam = 0 |
| Static Protected Attributes inherited from Sleak::RenderEngine::Renderer | |
| static constexpr float | MetricUpdateInterval = 0.5f |
OpenGL 3.3+ backend: deferred GBuffer pipeline, SSAO, shadow mapping, and baked IBL.
Definition at line 19 of file OpenGLRenderer.hpp.
| Sleak::RenderEngine::OpenGLRenderer::OpenGLRenderer | ( | Window * | window | ) |
Registers this backend's buffer/shader/texture factories with ResourceManager.
Definition at line 28 of file OpenGLRenderer.cpp.
|
virtual |
Definition at line 51 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::Renderer.
Definition at line 557 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::Renderer.
Definition at line 569 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 263 of file OpenGLRenderer.cpp.
|
overridevirtual |
Acquires the next frame and prepares it for command recording.
Implements Sleak::RenderEngine::Renderer.
Definition at line 119 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 475 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 435 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 427 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 336 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 341 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::Renderer.
Definition at line 190 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 296 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 290 of file OpenGLRenderer.cpp.
|
overridevirtual |
Allocates a backend buffer, optionally seeded with initial data.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 479 of file OpenGLRenderer.cpp.
| Texture * Sleak::RenderEngine::OpenGLRenderer::CreateCubemapTexture | ( | const std::array< std::string, 6 > & | facePaths | ) |
Loads a cubemap from six face image paths.
Definition at line 613 of file OpenGLRenderer.cpp.
| Texture * Sleak::RenderEngine::OpenGLRenderer::CreateCubemapTextureFromPanorama | ( | const std::string & | panoramaPath | ) |
Loads a cubemap by converting a single equirectangular panorama.
Definition at line 622 of file OpenGLRenderer.cpp.
|
overridevirtual |
Initializes ImGui integration for this backend.
Implements Sleak::RenderEngine::Renderer.
Definition at line 631 of file OpenGLRenderer.cpp.
|
overridevirtual |
Compiles a shader program from source or a source-file path.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 489 of file OpenGLRenderer.cpp.
|
overridevirtual |
Loads a texture from disk.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 498 of file OpenGLRenderer.cpp.
|
overridevirtual |
Creates a texture from an in-memory pixel buffer.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 507 of file OpenGLRenderer.cpp.
|
overridevirtual |
Non-indexed draw from the currently bound vertex buffer.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 231 of file OpenGLRenderer.cpp.
|
overridevirtual |
Indexed draw from the currently bound vertex/index buffers.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 238 of file OpenGLRenderer.cpp.
|
overridevirtual |
Indexed instanced draw.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 254 of file OpenGLRenderer.cpp.
|
overridevirtual |
Non-indexed instanced draw.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 245 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 267 of file OpenGLRenderer.cpp.
|
overridevirtual |
Submits recorded commands and presents the frame.
Implements Sleak::RenderEngine::Renderer.
Definition at line 165 of file OpenGLRenderer.cpp.
|
inlineoverridevirtual |
Returns the backend's command-recording interface.
Implements Sleak::RenderEngine::Renderer.
Definition at line 40 of file OpenGLRenderer.hpp.
|
inlineoverridevirtual |
Feature capability mask; backends override with the audited truth.
Reimplemented from Sleak::RenderEngine::Renderer.
Definition at line 29 of file OpenGLRenderer.hpp.
|
overridevirtual |
Creates the device, swapchain, and backend resources.
Implements Sleak::RenderEngine::Renderer.
Definition at line 55 of file OpenGLRenderer.cpp.
|
overridevirtual |
Recreates swapchain-dependent resources for a new surface size.
Implements Sleak::RenderEngine::Renderer.
Definition at line 218 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 329 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 314 of file OpenGLRenderer.cpp.
|
overridevirtual |
Reimplemented from Sleak::RenderEngine::RenderContext.
Definition at line 310 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 271 of file OpenGLRenderer.cpp.
|
overridevirtual |
Implements Sleak::RenderEngine::RenderContext.
Definition at line 276 of file OpenGLRenderer.cpp.
|
overridevirtual |
Sets the active viewport rect and depth range in pixel/NDC units.
Implements Sleak::RenderEngine::RenderContext.
Definition at line 281 of file OpenGLRenderer.cpp.