Nebula
Loading...
Searching...
No Matches
volumetricfogcontext.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
14//------------------------------------------------------------------------------
16namespace Frame
17{
18class FrameScript;
19};
20
21namespace Fog
22{
23
25{
27public:
28
32 virtual ~VolumetricFogContext();
33
35 static void Create();
37 static void Discard();
38
40 static void SetupBoxVolume(
42 const Math::mat4& transform,
43 const float density,
44 const Math::vec3& absorption,
46 );
48 static void SetBoxTransform(const Graphics::GraphicsEntityId id, const Math::mat4& transform);
49
50
52 static void SetupSphereVolume(
54 const Math::vec3& position,
55 float radius,
56 const float density,
57 const Math::vec3& absorption,
59 );
61 static void SetSpherePosition(const Graphics::GraphicsEntityId id, const Math::vec3& position);
63 static void SetSphereRadius(const Graphics::GraphicsEntityId id, const float radius);
64
66 static void SetTurbidity(const Graphics::GraphicsEntityId id, const float turbidity);
68 static void SetAbsorption(const Graphics::GraphicsEntityId id, const Math::vec3& absorption);
69
71 static const Math::vec3& GetGlobalFogAbsorption();
73 static void SetGlobalFogAbsorption(const Math::vec3& color);
75 static float GetGlobalFogTurbidity();
77 static void SetGlobalFogTurbidity(float turbidity);
78
80 static void UpdateFogVolumes(const Graphics::FrameContext& ctx);
82 static void RenderUI(const Graphics::FrameContext& ctx);
83
85 void SetGlobalTurbidity(float f);
88
92 static void SetTransform(const Graphics::GraphicsEntityId id, const Math::mat4& mat);
93
94private:
95
101 enum
102 {
108 };
109 typedef Ids::IdAllocator<
111 Ids::Id32,
112 float,
117
118 enum
119 {
121 };
122 typedef Ids::IdAllocator<
126
127 enum
128 {
131 };
132 typedef Ids::IdAllocator<
134 float
137
141 static void Dealloc(Graphics::ContextEntityId id);
142};
143
144} // namespace Fog
Definition volumetricfogcontext.h:25
static FogBoxVolumeAllocator fogBoxVolumeAllocator
Definition volumetricfogcontext.h:125
static void SetupSphereVolume(const Graphics::GraphicsEntityId id, const Math::vec3 &position, float radius, const float density, const Math::vec3 &absorption, const Graphics::StageMask stageMask=Graphics::PRIMARY_STAGE_MASK)
setup a new volume as a sphere
Definition volumetricfogcontext.cc:268
static void SetGlobalFogTurbidity(float turbidity)
Set global particle turbidity.
Definition volumetricfogcontext.cc:366
static void SetTransform(const Graphics::GraphicsEntityId id, const Math::mat4 &mat)
set transform
Definition volumetricfogcontext.cc:532
Ids::IdAllocator< FogVolumeType, Ids::Id32, float, Math::vec3, Graphics::StageMask > FogGenericVolumeAllocator
Definition volumetricfogcontext.h:115
@ FogVolume_StageMask
Definition volumetricfogcontext.h:107
@ FogVolume_TypedId
Definition volumetricfogcontext.h:104
@ FogVolume_Type
Definition volumetricfogcontext.h:103
@ FogVolume_Turbidity
Definition volumetricfogcontext.h:105
@ FogVolume_Absorption
Definition volumetricfogcontext.h:106
static void SetTurbidity(const Graphics::GraphicsEntityId id, const float turbidity)
set volume turbidity
Definition volumetricfogcontext.cc:319
static void SetupBoxVolume(const Graphics::GraphicsEntityId id, const Math::mat4 &transform, const float density, const Math::vec3 &absorption, const Graphics::StageMask stageMask=Graphics::PRIMARY_STAGE_MASK)
setup a new volume as a box
Definition volumetricfogcontext.cc:232
@ FogSphereVolume_Position
Definition volumetricfogcontext.h:129
@ FogSphereVolume_Radius
Definition volumetricfogcontext.h:130
static Math::mat4 GetTransform(const Graphics::GraphicsEntityId id)
get transform
Definition volumetricfogcontext.cc:513
static void Dealloc(Graphics::ContextEntityId id)
deallocate a slice
Definition volumetricfogcontext.cc:559
static void SetAbsorption(const Graphics::GraphicsEntityId id, const Math::vec3 &absorption)
set volume absorption
Definition volumetricfogcontext.cc:329
void SetGlobalTurbidity(float f)
set global turbidity (fog turbidity)
Definition volumetricfogcontext.cc:495
static void SetSpherePosition(const Graphics::GraphicsEntityId id, const Math::vec3 &position)
set sphere position
Definition volumetricfogcontext.cc:293
virtual __DeclareContext() public ~VolumetricFogContext()
destructor
Definition volumetricfogcontext.cc:74
static void UpdateFogVolumes(const Graphics::FrameContext &ctx)
prepare light lists
Definition volumetricfogcontext.cc:375
static void Discard()
discard volumetric fog context
Definition volumetricfogcontext.cc:224
Ids::IdAllocator< Math::vec3, float > FogSphereVolumeAllocator
Definition volumetricfogcontext.h:135
static void SetGlobalFogAbsorption(const Math::vec3 &color)
Set global fog color.
Definition volumetricfogcontext.cc:348
static void SetSphereRadius(const Graphics::GraphicsEntityId id, const float radius)
set sphere radius
Definition volumetricfogcontext.cc:306
static FogSphereVolumeAllocator fogSphereVolumeAllocator
Definition volumetricfogcontext.h:136
static FogGenericVolumeAllocator fogGenericVolumeAllocator
Definition volumetricfogcontext.h:116
FogVolumeType
Definition volumetricfogcontext.h:97
@ SphereVolume
Definition volumetricfogcontext.h:99
@ BoxVolume
Definition volumetricfogcontext.h:98
static void RenderUI(const Graphics::FrameContext &ctx)
render ui
Definition volumetricfogcontext.cc:473
static void Create()
setup volumetric fog context
Definition volumetricfogcontext.cc:83
static const Math::vec3 & GetGlobalFogAbsorption()
Get global fog color.
Definition volumetricfogcontext.cc:339
void SetGlobalAbsorption(const Math::vec3 &color)
set the global fog absorption color
Definition volumetricfogcontext.cc:504
@ FogBoxVolume_Transform
Definition volumetricfogcontext.h:120
Ids::IdAllocator< Math::mat4 > FogBoxVolumeAllocator
Definition volumetricfogcontext.h:124
static void SetBoxTransform(const Graphics::GraphicsEntityId id, const Math::mat4 &transform)
set box transform
Definition volumetricfogcontext.cc:255
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition volumetricfogcontext.cc:550
static float GetGlobalFogTurbidity()
Get global particle turbidity.
Definition volumetricfogcontext.cc:357
A FrameScript describes render operations being done to produce a single frame.
Definition framescript.h:41
Definition graphicscontext.h:175
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:39
#define __DeclareContext()
Definition graphicscontext.h:46
Definition volumetricfogcontext.cc:22
float turbidity
Definition volumetricfogcontext.cc:41
Math::vec3 color
Definition volumetricfogcontext.cc:42
ImGUI debug interface for inspecting frame scripts.
Definition shaderserverbase.h:52
static constexpr StageMask PRIMARY_STAGE_MASK
Definition view.h:24
uint16_t StageMask
Definition view.h:23
uint32_t Id32
Definition id.h:138
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
A 3D vector.
Definition vec3.h:37