16#include "gpulang/render/system_shaders/lights_cluster.h"
221 std::array<Graphics::GraphicsEntityId, 6>,
222 std::array<Math::rectangle<int>, 6>,
223 std::array<Math::mat4, 6>
240 std::array<float, 2>,
264 std::array<Graphics::GraphicsEntityId, 2>,
265 std::array<Math::mat4, 2>,
266 std::array<Math::rectangle<int>, 2>,
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
static Math::vec3 GetColor(const Graphics::GraphicsEntityId id)
Definition lightcontext.cc:661
static const void SetScale(const Graphics::GraphicsEntityId id, const Math::vec3 &scale)
Set light scale.
Definition lightcontext.cc:865
@ PointLight_ShadowProjectionTransforms
Definition lightcontext.h:215
@ PointLight_Transform
Definition lightcontext.h:211
@ PointLight_ProjectionTexture
Definition lightcontext.h:212
@ PointLight_ShadowTiles
Definition lightcontext.h:214
@ PointLight_Observers
Definition lightcontext.h:213
@ ShadowCaster_Transform
Definition lightcontext.h:303
static ShadowCasterAllocator shadowCasterAllocator
Definition lightcontext.h:310
static void UpdateLights(const Graphics::FrameContext &ctx)
prepare light lists
Definition lightcontext.cc:1289
static const CoreGraphics::BufferId GetLightIndexBuffer()
get light index lists buffer
Definition lightcontext.cc:1251
@ DirectionalLight_Direction
Definition lightcontext.h:274
@ DirectionalLight_CascadeObservers
Definition lightcontext.h:276
@ DirectionalLight_CascadeTransforms
Definition lightcontext.h:279
@ DirectionalLight_CascadeDistances
Definition lightcontext.h:278
@ DirectionalLight_Transform
Definition lightcontext.h:275
@ DirectionalLight_View
Definition lightcontext.h:273
@ DirectionalLight_CascadeTiles
Definition lightcontext.h:277
static const Math::mat4 GetTransform(const Graphics::GraphicsEntityId id)
get transform
Definition lightcontext.cc:726
static float GetIntensity(const Graphics::GraphicsEntityId id)
Definition lightcontext.cc:691
static const Math::point GetPosition(const Graphics::GraphicsEntityId id)
Get light position.
Definition lightcontext.cc:791
static void SetRange(const Graphics::GraphicsEntityId id, const float range)
set range of light
Definition lightcontext.cc:671
static const Math::quat GetRotation(const Graphics::GraphicsEntityId id)
Get light rotation.
Definition lightcontext.cc:843
static void GetInnerOuterAngle(const Graphics::GraphicsEntityId id, float &inner, float &outer)
get inner and outer angle for spotlights
Definition lightcontext.cc:935
static const LightsCluster::LightUniforms::STRUCT & GetLightUniforms()
get light uniforms
Definition lightcontext.cc:1269
static const CoreGraphics::BufferId GetLightsBuffer()
get light lists buffer
Definition lightcontext.cc:1260
static const void SetRotation(const Graphics::GraphicsEntityId id, const Math::quat &rotation)
Set light rotation.
Definition lightcontext.cc:813
LightType
Definition lightcontext.h:32
@ PointLightType
Definition lightcontext.h:34
@ AreaLightType
Definition lightcontext.h:36
@ SpotLightType
Definition lightcontext.h:35
@ DirectionalLightType
Definition lightcontext.h:33
static void SetColor(const Graphics::GraphicsEntityId id, const Math::vec3 &color)
set color of light
Definition lightcontext.cc:651
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition lightcontext.cc:1628
static const Math::vec3 GetScale(const Graphics::GraphicsEntityId id)
Get light scale.
Definition lightcontext.cc:903
static void SetIntensity(const Graphics::GraphicsEntityId id, const float intensity)
set intensity of light
Definition lightcontext.cc:681
static void Discard()
discard light context
Definition lightcontext.cc:346
Ids::IdAllocator< Graphics::GraphicsEntityId, LightType, Math::vec3, float, bool, float, Ids::Id32, Graphics::StageMask > GenericLightAllocator
Definition lightcontext.h:201
static void SetInnerOuterAngle(const Graphics::GraphicsEntityId id, float inner, float outer)
set inner and outer angle for spotlights
Definition lightcontext.cc:949
static const void SetPosition(const Graphics::GraphicsEntityId id, const Math::point &position)
Set light position.
Definition lightcontext.cc:761
static void SetDirectionalLightTransform(const Graphics::ContextEntityId id, const Math::mat4 &transform, const Math::vector &direction)
Set global light transform.
Definition lightcontext.cc:1278
static AreaLightAllocator areaLightAllocator
Definition lightcontext.h:269
LightContext()
constructor
Definition lightcontext.cc:102
Ids::IdAllocator< Math::transform44, AreaLightShape, bool, std::array< Graphics::GraphicsEntityId, 2 >, std::array< Math::mat4, 2 >, std::array< Math::rectangle< int >, 2 >, bool > AreaLightAllocator
Definition lightcontext.h:268
static DirectionalLightAllocator directionalLightAllocator
Definition lightcontext.h:298
Ids::IdAllocator< Math::transform44, CoreGraphics::TextureId, std::array< Graphics::GraphicsEntityId, 6 >, std::array< Math::rectangle< int >, 6 >, std::array< Math::mat4, 6 > > PointLightAllocator
Definition lightcontext.h:224
static void OnPrepareView(const Graphics::ViewId view, const Graphics::FrameContext &ctx)
prepare light visibility
Definition lightcontext.cc:1100
@ SpotLight_Transform
Definition lightcontext.h:229
@ SpotLight_ProjectionTexture
Definition lightcontext.h:231
@ SpotLight_ShadowTile
Definition lightcontext.h:234
@ SpotLight_ShadowProjectionTransform
Definition lightcontext.h:233
@ SpotLight_ProjectionTransform
Definition lightcontext.h:232
@ SpotLight_Observer
Definition lightcontext.h:235
@ SpotLight_ConeAngles
Definition lightcontext.h:230
static PointLightAllocator pointLightAllocator
Definition lightcontext.h:225
@ Light_TypedLightId
Definition lightcontext.h:188
@ Light_Color
Definition lightcontext.h:184
@ Light_Entity
Definition lightcontext.h:182
@ Light_StageMask
Definition lightcontext.h:189
@ Light_Type
Definition lightcontext.h:183
@ Light_ShadowCaster
Definition lightcontext.h:186
@ Light_Intensity
Definition lightcontext.h:185
@ Light_Range
Definition lightcontext.h:187
static void SetTransform(const Graphics::GraphicsEntityId id, const float azimuth, const float zenith)
Set transform as angles.
Definition lightcontext.cc:701
static void OnRenderDebug(uint32_t flags)
render debug
Definition lightcontext.cc:1740
AreaLightShape
Definition lightcontext.h:40
@ Disk
Definition lightcontext.h:41
@ Rectangle
Definition lightcontext.h:42
@ Tube
Definition lightcontext.h:43
Ids::IdAllocator< Math::transform44, std::array< float, 2 >, CoreGraphics::TextureId, Math::mat4, Math::mat4, Math::rectangle< int >, Graphics::GraphicsEntityId > SpotLightAllocator
Definition lightcontext.h:246
virtual ~LightContext()
destructor
Definition lightcontext.cc:110
static void SetupSpotLight(const Graphics::GraphicsEntityId id, const SpotLightSetupInfo &info)
Setup entity as spot light.
Definition lightcontext.cc:483
static void Resize(const uint framescriptHash, SizeT width, SizeT height)
React to window resize event.
Definition lightcontext.cc:1574
static const Math::mat4 GetObserverTransform(const Graphics::GraphicsEntityId id)
get the view transform including projections
Definition lightcontext.cc:751
static void SetupTerrainShadows(const CoreGraphics::TextureId terrainShadowMap, const uint worldSize)
Setup terrain shadows.
Definition lightcontext.cc:1240
static SpotLightAllocator spotLightAllocator
Definition lightcontext.h:247
static GenericLightAllocator genericLightAllocator
Definition lightcontext.h:202
static LightType GetType(const Graphics::GraphicsEntityId id)
get the light type
Definition lightcontext.cc:925
static void SetupPointLight(const Graphics::GraphicsEntityId id, const PointLightSetupInfo &info)
Setup entity as point light source.
Definition lightcontext.cc:424
Ids::IdAllocator< Math::mat4 > ShadowCasterAllocator
Definition lightcontext.h:308
static void Create()
setup light context
Definition lightcontext.cc:119
static void Dealloc(Graphics::ContextEntityId id)
deallocate a slice
Definition lightcontext.cc:1637
static void SetupDirectionalLight(const Graphics::GraphicsEntityId id, const DirectionalLightSetupInfo &info)
setup entity as global light
Definition lightcontext.cc:355
Ids::IdAllocator< Graphics::ViewId, Math::vector, Math::mat4, Util::FixedArray< Graphics::GraphicsEntityId >, Util::FixedArray< Math::rectangle< int > >, Util::FixedArray< float >, Util::FixedArray< Math::mat4 > > DirectionalLightAllocator
Definition lightcontext.h:297
static Util::HashTable< Graphics::GraphicsEntityId, uint, 16, 1 > shadowCasterIndexMap
Definition lightcontext.h:311
static void RunFrameScriptJobs(const Graphics::FrameContext &ctx)
run framescript when visibility is done
@ AreaLight_ShadowProjectionTransforms
Definition lightcontext.h:255
@ AreaLight_TwoSided
Definition lightcontext.h:253
@ AreaLight_Shape
Definition lightcontext.h:252
@ AreaLight_ShadowTiles
Definition lightcontext.h:256
@ AreaLight_Observers
Definition lightcontext.h:254
@ AreaLight_RenderMesh
Definition lightcontext.h:257
@ AreaLight_Transform
Definition lightcontext.h:251
static void SetupAreaLight(const Graphics::GraphicsEntityId id, const AreaLightSetupInfo &info)
Setup entity as area light.
Definition lightcontext.cc:542
A 2d rectangle class.
Definition rectangle.h:20
Implements a fixed size one-dimensional array.
Definition fixedarray.h:20
Organizes key/value pairs by a hash code.
Definition hashtable.h:42
ImGUI debug interface for inspecting frame scripts.
Definition shaderserverbase.h:52
uint16_t StageMask
Definition view.h:23
uint32_t Id32
Definition id.h:138
The lighting subsystem allows for attaching light source functionality to a GraphicsEntityId.
Definition lightcontext.cc:34
CoreGraphics::TextureId terrainShadowMap
Definition lightcontext.cc:50
A shader represents an entire shader resource, containing several stages and programs.
texture type
Definition texture.h:25
Definition textureview.h:16
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
Definition lightcontext.h:100
bool castShadows
Definition lightcontext.h:107
bool twoSided
Definition lightcontext.h:106
Graphics::StageMask stageMask
Definition lightcontext.h:105
bool renderMesh
Definition lightcontext.h:108
float range
Definition lightcontext.h:104
Math::vec3 color
Definition lightcontext.h:102
AreaLightShape shape
Definition lightcontext.h:101
float intensity
Definition lightcontext.h:103
Definition lightcontext.h:205
uint offset
Definition lightcontext.h:206
uint slice
Definition lightcontext.h:206
Definition lightcontext.h:57
Graphics::ViewId view
Definition lightcontext.h:58
Graphics::StageMask stageMask
Definition lightcontext.h:62
float zenith
Definition lightcontext.h:61
Math::vec3 color
Definition lightcontext.h:59
float azimuth
Definition lightcontext.h:61
float intensity
Definition lightcontext.h:60
bool castShadows
Definition lightcontext.h:63
Definition lightcontext.h:70
bool castShadows
Definition lightcontext.h:75
float intensity
Definition lightcontext.h:72
CoreGraphics::TextureId projection
Definition lightcontext.h:76
Math::vec3 color
Definition lightcontext.h:71
Graphics::StageMask stageMask
Definition lightcontext.h:74
float range
Definition lightcontext.h:73
Definition lightcontext.h:283
CoreGraphics::PassId shadowPass
Definition lightcontext.h:286
CoreGraphics::TextureId shadowMap
Definition lightcontext.h:284
CoreGraphics::TextureViewId shadowView
Definition lightcontext.h:285
Definition lightcontext.h:82
float innerConeAngle
Definition lightcontext.h:85
float outerConeAngle
Definition lightcontext.h:86
Graphics::StageMask stageMask
Definition lightcontext.h:88
Math::vec3 color
Definition lightcontext.h:83
float intensity
Definition lightcontext.h:84
CoreGraphics::TextureId projection
Definition lightcontext.h:90
float range
Definition lightcontext.h:87
bool castShadows
Definition lightcontext.h:89
A 4x4 single point precision float matrix.
Definition mat4.h:49
Represents a 3D point in space.
Definition point.h:22
A quaternion is usually used to represent an orientation in 3D space.
Definition quat.h:30
A 3D vector.
Definition vec3.h:37
A vector is a 3D direction in space.
Definition vector.h:22
int SizeT
Definition types.h:42
unsigned int uint
Definition types.h:33