Nebula
Loading...
Searching...
No Matches
cameracontext.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
11//------------------------------------------------------------------------------
13#include "camerasettings.h"
14#include "math/scalar.h"
15namespace Graphics
16{
17
19{
21public:
22
26 virtual ~CameraContext();
27
29 static void Create();
30
32 static void UpdateCameras(const Graphics::FrameContext& ctx);
33
35 static void SetupProjectionFov(const Graphics::GraphicsEntityId id, float aspect, float fov, float znear, float zfar, const Graphics::StageMask = Graphics::PRIMARY_STAGE_MASK);
37 static void SetupOrthographic(const Graphics::GraphicsEntityId id, float width, float height, float znear, float zfar, const Graphics::StageMask = Graphics::PRIMARY_STAGE_MASK);
38
40 static void SetView(const Graphics::GraphicsEntityId id, const Math::mat4& mat);
42 static const Math::mat4& GetView(const Graphics::GraphicsEntityId id);
45
54
58 static void AddLODCamera(const Graphics::GraphicsEntityId id);
60 static void RemoveLODCamera(const Graphics::GraphicsEntityId id);
61
65 static void SetLODCamera(const Graphics::GraphicsEntityId id);
66
67private:
68
69 enum
70 {
76 };
77 typedef Ids::IdAllocator<
79 Math::mat4, // projection
80 Math::mat4, // view-transform
81 Math::mat4, // view-projection
82 Graphics::StageMask // Mask indicating the stages this camera exists in
85
88
92 static void Dealloc(const Graphics::ContextEntityId id);
93};
94
95//------------------------------------------------------------------------------
100{
101 return cameraAllocator.Alloc();
102}
103
104//------------------------------------------------------------------------------
107inline void
112
113} // namespace Graphics
virtual ~CameraContext()
destructor
Definition cameracontext.cc:28
static void UpdateCameras(const Graphics::FrameContext &ctx)
runs before frame is updated
Definition cameracontext.cc:48
static const Math::mat4 GetTransform(const Graphics::GraphicsEntityId id)
get transform
Definition cameracontext.cc:111
static void Create()
create context
Definition cameracontext.cc:37
static const Math::mat4 & GetView(const Graphics::GraphicsEntityId id)
get view
Definition cameracontext.cc:101
static const CameraSettings & GetSettings(const Graphics::GraphicsEntityId id)
get settings
Definition cameracontext.cc:141
@ Camera_Projection
Definition cameracontext.h:72
@ Camera_Settings
Definition cameracontext.h:71
@ Camera_View
Definition cameracontext.h:73
@ Camera_ViewProjection
Definition cameracontext.h:74
@ Camera_StageMask
Definition cameracontext.h:75
CameraContext()
constructor
Definition cameracontext.cc:20
static Graphics::StageMask GetStageMask(const Graphics::GraphicsEntityId id)
Get stage mask.
Definition cameracontext.cc:151
static void SetView(const Graphics::GraphicsEntityId id, const Math::mat4 &mat)
set view
Definition cameracontext.cc:91
static Graphics::GraphicsEntityId lodCamera
Definition cameracontext.h:87
static const Math::mat4 & GetViewProjection(const Graphics::GraphicsEntityId id)
get view-projection
Definition cameracontext.cc:131
static void SetupProjectionFov(const Graphics::GraphicsEntityId id, float aspect, float fov, float znear, float zfar, const Graphics::StageMask=Graphics::PRIMARY_STAGE_MASK)
setup as projection and fov
Definition cameracontext.cc:65
static void SetLODCamera(const Graphics::GraphicsEntityId id)
set the LOD camera
Definition cameracontext.cc:199
static void SetupOrthographic(const Graphics::GraphicsEntityId id, float width, float height, float znear, float zfar, const Graphics::StageMask=Graphics::PRIMARY_STAGE_MASK)
setup as ortographic
Definition cameracontext.cc:78
static Graphics::GraphicsEntityId GetLODCamera()
get the LOD camera
Definition cameracontext.cc:190
static const Math::mat4 & GetProjection(const Graphics::GraphicsEntityId id)
get projection
Definition cameracontext.cc:121
Ids::IdAllocator< Graphics::CameraSettings, Math::mat4, Math::mat4, Math::mat4, Graphics::StageMask > CameraAllocator
Definition cameracontext.h:83
static void RemoveLODCamera(const Graphics::GraphicsEntityId id)
Remove a camera from affecting lod.
Definition cameracontext.cc:179
static void AddLODCamera(const Graphics::GraphicsEntityId id)
Add a camera to affect lod.
Definition cameracontext.cc:170
static CameraAllocator cameraAllocator
Definition cameracontext.h:84
static void Dealloc(const Graphics::ContextEntityId id)
deallocate a slice
Definition cameracontext.h:108
static Util::Array< Graphics::GraphicsEntityId > LodCameras
Definition cameracontext.h:86
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition cameracontext.h:99
static const Util::Array< Graphics::GraphicsEntityId > & GetLODCameras()
Get all cameras affecting LOD.
Definition cameracontext.cc:161
Definition camerasettings.h:20
Definition graphicscontext.h:175
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:39
Nebula's dynamic array class.
Definition array.h:60
Implements the shader server used by Vulkan.
Definition cameramanager.h:22
static constexpr StageMask PRIMARY_STAGE_MASK
Definition view.h:24
uint16_t StageMask
Definition view.h:23
Nebula's scalar datatype.
Definition graphicscontext.h:143
Definition graphicsserver.h:31
The graphics entity is only an Id, to which we can attach GraphicsContexts.
Definition graphicsentity.h:16
A 4x4 single point precision float matrix.
Definition mat4.h:49