133 float range()
const {
return _range; }
134 void setRange(
const float value) { _range = value; }
144 bool _clusteredLighting;
146 bool _atlasViewportAllocated =
false;
148 bool _atlasSlotUpdated =
false;
150 bool _enabled =
false;
154 bool _visibleThisFrame =
false;
158 bool _castShadows =
false;
165 int _numCascades = 4;
166 float _cascadeDistribution = 0.5f;
167 float _cascadeBlend = 0.0f;
174 std::array<Vector4, 4> _cascadeViewports = {{
Vector4(0,0,0.5f,0.5f),
Vector4(0,0.5f,0.5f,0.5f),
Vector4(0.5f,0,0.5f,0.5f),
Vector4(0.5f,0.5f,0.5f,0.5f) }};
178 std::array<float, 64> _shadowMatrixPalette = {};
182 std::array<float, 4> _shadowCascadeDistances = {};
184 ShadowMap* _shadowMap =
nullptr;
186 std::vector<LightRenderData*> _renderData;
190 GraphNode* _node =
nullptr;
192 float _shadowDistance = 40.0f;
194 int _shadowResolution = 2048;
197 float _shadowBias = -0.0005f;
200 float _normalBias = 0.0f;
203 float _shadowIntensity = 1.0f;
209 float _range = 10.0f;
210 float _outerConeAngle = 45.0f;
Perspective or orthographic camera with projection matrix, jitter (TAA), and render target binding.
Hierarchical scene graph node with local/world transforms and parent-child relationships.
Abstract GPU interface for resource creation, state management, and draw submission.
Directional, point, spot, or area light with shadow mapping and cookie projection.
float cascadeBlend() const
bool atlasViewportAllocated() const
const Matrix4 & shadowViewProjection() const
void setShadowBias(const float value)
void setNumCascades(int value)
float shadowIntensity() const
int shadowResolution() const
float * shadowCascadeDistancesData()
float shadowDistance() const
float * shadowMatrixPaletteData()
void setCascadeDistribution(const float value)
void setNode(GraphNode *value)
const std::array< float, 4 > & shadowCascadeDistances() const
float outerConeAngle() const
void setShadowDistance(const float value)
ShadowUpdateType shadowUpdateMode() const
GraphicsDevice * device() const
bool atlasSlotUpdated() const
ShadowType shadowType() const
void setEnabled(const bool value)
void setCastShadows(const bool value)
void setShadowIntensity(const float value)
float cascadeDistribution() const
void setNormalBias(const float value)
bool visibleThisFrame() const
void setShadowResolution(const int value)
int numShadowFaces() const
ShadowMap * shadowMap() const
void setShadowViewProjection(const Matrix4 &value)
LightRenderData * getRenderData(Camera *camera, int face)
void setRange(const float value)
const std::array< Vector4, 4 > & cascadeViewports() const
void setShadowMap(ShadowMap *value)
void setCascadeBlend(const float value)
void setVisibleThisFrame(const bool value)
void setOuterConeAngle(const float value)
void setMask(const MaskType value)
void setShadowType(const ShadowType value)
const std::array< float, 64 > & shadowMatrixPalette() const
void setShadowUpdateMode(const ShadowUpdateType mode)
Light(GraphicsDevice *graphicsDevice, bool clusteredLighting)
void setType(const LightType value)
Per-face shadow rendering data: shadow camera, viewport, and scissor.
LightRenderData(Camera *camera, int face, Light *light)
GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management.
4x4 column-major transformation matrix with SIMD acceleration.
static Matrix4 identity()
4D vector for homogeneous coordinates, color values, and SIMD operations.