67 alignas(16) Vector3f position;
69 alignas(16) Matrix4f model;
70 alignas(16) Matrix4f invModel;
72 alignas(16) Matrix4f normalMatrix;
73 alignas(16) Matrix4f invNormalMatrix;
#define CE_FLAGS_OPERATORS(Enum)
Defines global operators for a Flags<Enum, Storage> implementation.
Definition Flags.hpp:216
#define CE_DECL_RENDERER_OBJECT(T)
Definition RendererObject.hpp:25
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
A GPU bindless buffer.
Definition GPUBufferObject.hpp:516
Definition GPUCommandBuffer.hpp:77
Definition GPUBufferObject.hpp:562
Definition GPUBufferObject.hpp:169
Definition GPUBufferObject.hpp:126
A element (usually a sub-mesh) visible on the screen.
Definition RendererRendering.hpp:18
The CeresEngine renderer.
Definition Renderer.hpp:35
An abstract class that represents a renderer material.
Definition RendererMaterial.hpp:31
A class that represents a scene inside the renderer.
Definition RendererScene.hpp:34
The rendering element for the terrain chunks.
Definition RendererTerrain.hpp:175
RendererTerrain & mTerrain
The owning terrain object.
Definition RendererTerrain.hpp:178
void draw(GPUCommandBuffer &commandBuffer) const final
Submits a draw command with the given renderer element.
Sphere getBoundingSphere() const final
Gets the renderable bounding sphere.
const GPUIndexBuffer & getIndexBuffer() const noexcept final
const RendererMeshPtr & getMesh() const noexcept
Definition RendererTerrain.hpp:201
RendererMeshPtr mMesh
Definition RendererTerrain.hpp:181
Vector3i mPosition
Definition RendererTerrain.hpp:180
AABox getBoundingBox() const final
Gets the renderable bounding box.
const GPUVertexBuffer & getVertexBuffer() const noexcept final
Element(RendererTerrain &terrain, MeshPtr mesh)
const RendererMaterial & getMaterial() const noexcept final
The material for the render element.
Definition RendererTerrain.hpp:204
const GPUVertexFormat & getVertexFormat() const noexcept final
Returns the vertex format which the graphics pipeline must be compatible with.
A class that represents a terrain inside the renderer.
Definition RendererTerrain.hpp:80
bool mInitialized
Definition RendererTerrain.hpp:112
const SPtr< RendererMaterial > & getMaterial() const noexcept
Definition RendererTerrain.hpp:169
RendererTerrain(RendererTerrainManager &manager, RendererScene &scene)
Creates a new RendererTerrain.
RendererTerrainFlags mFlags
A set of flags that customize and represent the state of the object.
Definition RendererTerrain.hpp:91
GPUDynamicBindlessBuffer< RendererTerrainParams > mUniformBuffer
The uniform buffer storing the terrain GPU parameters used by the renderer.
Definition RendererTerrain.hpp:107
RendererTerrainDirtyFlags mDirtyFlags
A set of flags that represent the dirty portions of the object.
Definition RendererTerrain.hpp:94
void setFlags(const RendererTerrainFlags &flags)
A set of flags that customize and represent the state of the object.
RendererTerrainParams mParameters
The GPU parameters. Will be copied to the GPU uniform buffer.
Definition RendererTerrain.hpp:104
const RendererTerrainInfo & getInfo() const
A structure that holds renderer-specific information for the terrain.
Definition RendererTerrain.hpp:160
const GPUBindlessBuffer & getUniformBuffer() const
The uniform buffer storing the terrain GPU parameters used by the renderer.
Definition RendererTerrain.hpp:166
const RendererTerrainFlags & getFlags() const noexcept
A set of flags that customize and represent the state of the object.
Definition RendererTerrain.hpp:145
TerrainRenderableComponent mComponent
A copy of the latest terrain component.
Definition RendererTerrain.hpp:88
bool mDirty
If set to true, the terrain is dirty and needs to be synchronized from the entity.
Definition RendererTerrain.hpp:98
RendererTerrainInfo & getInfo()
A structure that holds renderer-specific information for the terrain.
Definition RendererTerrain.hpp:163
void prepare(RendererContext &context)
Prepares the terrain for the rendering of the current frame.
RendererTerrainInfo mInfo
A structure that holds renderer-specific information for the terrain.
Definition RendererTerrain.hpp:101
~RendererTerrain() noexcept final
Destroys the renderer terrain and releases any renderer (and RenderAPI)-related resources.
const Vector< UPtr< Element > > & getElements() const noexcept
Definition RendererTerrain.hpp:171
const RendererTerrainDirtyFlags & getDirtyFlags() const noexcept
A set of flags that represent the dirty portions of the object.
Definition RendererTerrain.hpp:151
void draw(GPUCommandBuffer &commandBuffer)
bool isDirty() const noexcept
If set to true, the terrain is dirty and needs to be synchronized from the entity.
Definition RendererTerrain.hpp:154
Vector< UPtr< Element > > mElements
Definition RendererTerrain.hpp:110
SPtr< RendererMaterial > mMaterial
Definition RendererTerrain.hpp:109
void markAsDirty(const RendererTerrainDirtyFlags &flags=RendererTerrainDirtyFlag::All) noexcept
If set to true, the terrain is dirty and needs to be synchronized from the entity.
void synchronize(const Transform &transform, const TerrainRenderableComponent &component)
Update the renderer terrain with data from a transform and the component.
A manager that controls all terrains currently registered with the renderer.
Definition RendererTerrain.hpp:216
Async prepare(RendererContext &context)
Prepares the terrains for the rendering of the current frame.
RendererTerrainManager(Renderer &renderer)
Creates a new instance of the RendererTerrainManager.
void markAsDirty(RendererTerrain *const terrain)
Marks the given terrain as dirty.
Vector< UPtr< RendererTerrain > > mTerrains
A vector of all registered terrains.
Definition RendererTerrain.hpp:225
UniformBufferType mUniformBuffer
The uniform buffer storing all terrain GPU parameters used by the renderer.
Definition RendererTerrain.hpp:229
~RendererTerrainManager()
Destroys the RendererTerrainManager and releases all terrains objects managed by it.
Template class to help implement sub-classes of RendererSceneObject.
Definition RendererSceneObject.hpp:47
Template class to help implement sub-classes of RendererSceneObjectManager.
Definition RendererSceneObject.hpp:81
Definition Application.hpp:19
SPtr< Mesh > MeshPtr
Definition Forward.hpp:17
RendererTerrainFlag
Flags that can be either set by the renderer or by the user to customize the behavior of the terrain.
Definition RendererTerrain.hpp:30
std::shared_ptr< T > SPtr
SPtr is a smart pointer that retains shared ownership of an object through a pointer.
Definition SmartPtr.hpp:37
cti::continuable< Args... > Async
Defines a non-copyable continuation type which uses the function2 backend for type erasure.
Definition Async.hpp:22
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
@ UniformBuffer
Uniform buffer (or constant buffer) resource.
std::uint32_t UInt32
Definition DataTypes.hpp:23
@ Transform
Indicates that the object transform is dirty.
@ All
Specifies all shader stages.
auto transform(Container &container, Transform &&transform)
Returns an iterable object that iterates over the values of the container and applies transform to ev...
Definition Iterator.hpp:436
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
RendererTerrainDirtyFlag
Flags that can be either set by the renderer or by the user to customize the behavior of the mesh.
Definition RendererTerrain.hpp:39
@ None
Special value that represents a clean (i.e. non-dirty) object.
@ All
Special value that represents a dirty object with all parts dirty.
Components serve as the base for data storage for an entity.
Definition Component.hpp:68
A structure that contains context given by the renderer to render it's objects.
Definition Renderer.hpp:252
A structure that holds renderer-specific information for the terrain.
Definition RendererTerrain.hpp:77
A structure that mirrors the GPU uniform data for the terrain.
Definition RendererTerrain.hpp:64
The Terrain component.
Definition TerrainRenderable.hpp:23