A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
Definition GPUCommandBuffer.hpp:77
Definition GPUDevice.hpp:357
A manager that controls all cameras currently registered with the renderer.
Definition RendererCamera.hpp:188
The renderer compute pipeline manager that is responsible for managing and re-using GPU compute pipel...
Definition RendererComputePipeline.hpp:110
A manager that controls all environments currently registered with the renderer.
Definition RendererEnvironment.hpp:209
The renderer graphics pipeline manager that is responsible for managing and re-using GPU graphics pip...
Definition RendererGraphicsPipeline.hpp:182
The CeresEngine renderer.
Definition Renderer.hpp:35
bool isBindlessSupported() const noexcept
Checks if bindless rendering is supported by the device.
Definition Renderer.hpp:238
ResourceManager & getResourceManager() const noexcept
The resource manager to load renderer resources from.
Definition Renderer.hpp:170
const GPUImagePtr & getNullCubeTexture() const
A null cube texture image to be used when one is not necessary.
Definition Renderer.hpp:226
UPtr< RendererGraphicsPipelineManager > mGraphicsPipelineManager
The renderer graphics pipeline manager that is responsible for managing and re-using GPU graphics pip...
Definition Renderer.hpp:59
RendererShaderPtr getShader(StringView name)
Finds a shader by name.
RendererGraphicsPipelineManager & getGraphicsPipelineManager() const noexcept
The renderer graphics pipeline manager that is responsible for managing and re-using GPU graphics pip...
Definition Renderer.hpp:210
void render()
Renders all cameras in all registered scenes.
RendererMeshManager & getMeshManager() const noexcept
The renderer mesh manager that is responsible for taking a in-engine mesh, convert and upload it to t...
Definition Renderer.hpp:198
RendererTerrainManager & getTerrainManager() const noexcept
The renderer mesh manager that is responsible for tracking active Terrain entities and maintain a con...
Definition Renderer.hpp:192
GPUImagePtr generateBRDF(GPUCommandBuffer &commandBuffer)
Generates the BRDF texture.
UPtr< RendererSceneManager > mSceneManager
The renderer scene manager that is responsible for taking a Scene entity and all manage all it's chil...
Definition Renderer.hpp:72
UPtr< RendererCameraManager > mCameraManager
The renderer mesh manager that is responsible for tracking active Camera entities and maintain a cons...
Definition Renderer.hpp:77
UPtr< RendererLightManager > mLightManager
The renderer mesh manager that is responsible for tracking active Light entities and maintain a consi...
Definition Renderer.hpp:82
GPUPipelineLayoutPtr mBindlessPipelineLayout
The bindless pipeline layout.
Definition Renderer.hpp:122
void setSettings(const RendererSettings &rendererSettings)
Global settings for the renderer.
RendererEnvironmentManager & getEnvironmentManager() const noexcept
The renderer mesh manager that is responsible for tracking active Environment entities and maintain a...
Definition Renderer.hpp:195
UPtr< RendererTextureManager > mTextureManager
The renderer texture manager that is responsible for taking a in-engine image, convert and upload it ...
Definition Renderer.hpp:51
Renderer(GPUDevice &device, ResourceManager &resourceManager)
Creates a new renderer instance that uses the given render API device.
UPtr< RendererRenderableManager > mRenderableManager
The renderer mesh manager that is responsible for tracking active Renderable entities and maintain a ...
Definition Renderer.hpp:87
RendererMaterial & getDefaultMaterial() const
RendererShaderPtr getBasePass()
Gets the base pass shader.
GPUDevice & getDevice() const noexcept
The device the renderer will render to.
Definition Renderer.hpp:167
ShadowRenderer & getShadowRenderer() const noexcept
A renderer that is responsible for drawing shadow maps for lights.
Definition Renderer.hpp:216
UPtr< RendererTerrainManager > mTerrainManager
The renderer mesh manager that is responsible for tracking active Terrain entities and maintain a con...
Definition Renderer.hpp:92
RendererTextureManager & getTextureManager() const noexcept
The renderer texture manager that is responsible for taking a in-engine image, convert and upload it ...
Definition Renderer.hpp:201
SPtr< RendererMaterial > findMaterial(const HMaterial &material)
Finds a renderer material for a material resource.
UPtr< RendererComputePipelineManager > mComputePipelineManager
The renderer compute pipeline manager that is responsible for managing and re-using GPU compute pipel...
Definition Renderer.hpp:63
ResourceManager & mResourceManager
The resource manager to load renderer resources from.
Definition Renderer.hpp:42
UPtr< ShadowRenderer > mShadowRenderer
A renderer that is responsible for drawing shadow maps for lights.
Definition Renderer.hpp:100
~Renderer()
Destroys the renderer.
UPtr< RendererEnvironmentManager > mEnvironmentManager
The renderer mesh manager that is responsible for tracking active Environment entities and maintain a...
Definition Renderer.hpp:97
const GPUImagePtr & getNullTexture() const
A null cube texture image to be used when one is not necessary.
Definition Renderer.hpp:223
RendererShaderPtr getOldShader(StringView name)
Finds a shader by name.
GPUImagePtr mNullTexture
A null cube texture image to be used when one is not necessary.
Definition Renderer.hpp:115
GPUImagePtr mNullCubeTexture
A null cube texture image to be used when one is not necessary.
Definition Renderer.hpp:112
RendererMaterialManager & getMaterialManager() const noexcept
The renderer material manager that is responsible for taking a material resource and make it usable b...
Definition Renderer.hpp:204
RendererComputePipelineManager & getComputePipelineManager() const noexcept
The renderer compute pipeline manager that is responsible for managing and re-using GPU compute pipel...
Definition Renderer.hpp:213
RendererScene & createScene()
Registers a new scene entity with the renderer.
void render(const RendererView &view)
Renders a single view.
UPtr< RendererShaderManager > mShaderManager
The renderer shader manager that is responsible for managing and re-using GPU shaders.
Definition Renderer.hpp:55
HashMap< UInt64, RendererShaderPtr > mShaders
A cache of loaded shaders. Indexed by their shader name hash.
Definition Renderer.hpp:108
RendererShaderManager & getShaderManager() const noexcept
The renderer shader manager that is responsible for managing and re-using GPU shaders.
Definition Renderer.hpp:207
RendererCameraManager & getCameraManager() const noexcept
The renderer mesh manager that is responsible for tracking active Camera entities and maintain a cons...
Definition Renderer.hpp:183
RendererSettings mSettings
Global settings for the renderer.
Definition Renderer.hpp:105
GPUDevice & mDevice
The device the renderer will render to.
Definition Renderer.hpp:39
UPtr< RendererMaterialManager > mMaterialManager
The renderer material manager that is responsible for taking a material resource and make it usable b...
Definition Renderer.hpp:67
UPtr< RendererMeshManager > mMeshManager
The renderer mesh manager that is responsible for taking a in-engine mesh, convert and upload it to t...
Definition Renderer.hpp:47
RendererRenderableManager & getRenderableManager() const noexcept
The renderer mesh manager that is responsible for tracking active Renderable entities and maintain a ...
Definition Renderer.hpp:189
const GPUImagePtr & getBRDF() const
The pre-baked BRDF texture.
Definition Renderer.hpp:229
const GPUPipelineLayoutPtr & getBindlessPipelineLayout() const noexcept
The bindless pipeline layout.
Definition Renderer.hpp:232
RendererSceneManager & getSceneManager() const noexcept
The renderer scene manager that is responsible for taking a Scene entity and all manage all it's chil...
Definition Renderer.hpp:180
GPUImagePtr mBRDF
The pre-baked BRDF texture.
Definition Renderer.hpp:118
Matrix4 getClipMatrix() const
Returns the clip matrix for the renderer.
const RendererSettings & getSettings() const noexcept
Global settings for the renderer.
Definition Renderer.hpp:173
RendererLightManager & getLightManager() const noexcept
The renderer mesh manager that is responsible for tracking active Light entities and maintain a consi...
Definition Renderer.hpp:186
A manager that controls all lights currently registered with the renderer.
Definition RendererLight.hpp:208
An abstract class that represents a renderer material.
Definition RendererMaterial.hpp:31
A manager that controls all materials currently in use by the renderer.
Definition RendererMaterial.hpp:256
A manager class that creates, manages and handles GPU vertex and index buffers for meshes used by the...
Definition RendererMesh.hpp:283
A manager that controls all renderables currently registered with the renderer.
Definition RendererRenderable.hpp:303
A class that represents a scene inside the renderer.
Definition RendererScene.hpp:34
A manager that controls all scenes currently registered with the renderer.
Definition RendererScene.hpp:156
The renderer shader manager that is responsible for managing and re-using GPU shaders.
Definition RendererShader.hpp:85
A manager that controls all terrains currently registered with the renderer.
Definition RendererTerrain.hpp:216
A manager class that creates, manages and handles GPU images for images and textures used by the rend...
Definition RendererTexture.hpp:225
A class that represents a view inside the renderer.
Definition RendererView.hpp:46
The ResourceManager is the main class responsible for managing and handling all resources in the engi...
Definition ResourceManager.hpp:47
A shadow renderer. Used to render the depth map for the shadow maps.
Definition ShadowRenderer.hpp:24
Definition Application.hpp:19
std::unique_ptr< T, Deleter > UPtr
UPtr is a smart pointer that owns and manages another object through a pointer and disposes of that o...
Definition SmartPtr.hpp:28
std::shared_ptr< T > SPtr
SPtr is a smart pointer that retains shared ownership of an object through a pointer.
Definition SmartPtr.hpp:37
std::unordered_map< Key, T, Hash, KeyEqual, ScopedAllocatorAdaptor< StdAllocator< Pair< const Key, T >, RawAllocator > > > HashMap
HashMap is an associative container that contains key-value pairs with unique keys.
Definition Map.hpp:33
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
A structure that contains context given by the renderer to render it's objects.
Definition Renderer.hpp:252
GPUUniformBufferPool uniforms
A uniform buffer pool to be used when allocating temporary uniform buffers.
Definition Renderer.hpp:261
GPUCommandBuffer & commandBuffer
A command buffer to submit any graphics command required.
Definition Renderer.hpp:257
AnyExecutor executor
The executor that will be used to schedule renderer tasks.
Definition Renderer.hpp:268
GPUDevice & device
The device being used for rendering.
Definition Renderer.hpp:254
GPUStorageBufferPool storage
A uniform buffer pool to be used when allocating temporary storage buffers.
Definition Renderer.hpp:265
RendererContext(GPUCommandBuffer &commandBuffer, AnyExecutor executor)
Creates a new RendererContext with the given command buffer.
Definition RendererSettings.hpp:22