Open 3D Engine AtomLyIntegration Gem API Reference  24.09
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZ::Render::LightDelegateBase< FeatureProcessorType > Class Template Referenceabstract

Delegate for managing light shape specific functionality in the AreaLightComponentController. More...

#include <LightDelegateBase.h>

Inherits AZ::Render::LightDelegateInterface, LmbrCentral::ShapeComponentNotificationsBus::Handler, and AZ::TransformNotificationBus::Handler.

Public Member Functions

 LightDelegateBase (EntityId entityId, bool isVisible)
 
void SetConfig (const AreaLightComponentConfig *config) override
 Sets the area light component config so delegates don't have to cache the same data locally.
 
void SetChroma (const Color &chroma) override
 Sets the color of the light independent of light intensity. The color is a mask on the total light intensity.
 
void SetIntensity (float intensity) override
 Sets the light intensity.
 
float SetPhotometricUnit (PhotometricUnit unit) override
 Sets the light unit, and returns the converted light intensity.
 
void SetAttenuationRadius (float radius) override
 Sets the maximum distance from any part of the surface of the area light at which this light will have an effect.
 
const PhotometricValue & GetPhotometricValue () const override
 Gets the light intensity.
 
void SetLightEmitsBothDirections ([[maybe_unused]] bool lightEmitsBothDirections) override
 Sets if this shape is double-sided (only applicable for 2d shapes).
 
void SetUseFastApproximation ([[maybe_unused]] bool useFastApproximation) override
 
void SetVisibility (bool visibility) override
 Turns the visibility of this light on/off.
 
void SetEnableShutters (bool enabled) override
 
void SetShutterAngles ([[maybe_unused]]float innerAngleDegrees, [[maybe_unused]]float outerAngleDegrees) override
 
void SetEnableShadow (bool enabled) override
 Sets if shadows should be enabled.
 
void SetShadowBias ([[maybe_unused]] float bias) override
 
void SetShadowmapMaxSize ([[maybe_unused]] ShadowmapSize size) override
 
void SetShadowFilterMethod ([[maybe_unused]] ShadowFilterMethod method) override
 
void SetFilteringSampleCount ([[maybe_unused]] uint32_t count) override
 
void SetEsmExponent ([[maybe_unused]] float esmExponent) override
 
void SetNormalShadowBias ([[maybe_unused]] float bias) override
 
void SetShadowCachingMode ([[maybe_unused]] AreaLightComponentConfig::ShadowCachingMode cachingMode) override
 
void SetAffectsGI ([[maybe_unused]] bool affectsGI) override
 
void SetAffectsGIFactor ([[maybe_unused]] float affectsGIFactor) override
 
void SetLightingChannelMask ([[maybe_unused]] uint32_t lightingChannelMask) override
 
void SetGoboTexture ([[maybe_unused]] AZ::Data::Instance< AZ::RPI::Image > goboTexture) override
 
- Public Member Functions inherited from AZ::Render::LightDelegateInterface
virtual float GetSurfaceArea () const =0
 Gets the surface area of the shape.
 
virtual float GetEffectiveSolidAngle () const =0
 Returns the number of steradians covered by this light type.
 
virtual float CalculateAttenuationRadius (float lightThreshold) const =0
 Calculates the attenuation radius for this light type based on a threshold value.
 
virtual void DrawDebugDisplay (const Transform &transform, const Color &color, AzFramework::DebugDisplayRequests &debugDisplay, bool isSelected) const =0
 Handle any additional debug display drawing for beyond what the shape already provides.
 
virtual void SetGoboTexture (AZ::Data::Instance< AZ::RPI::Image > goboTexture)=0
 
virtual void SetShutterAngles (float innerAngleDegrees, float outerAngleDegrees)=0
 
virtual void SetShadowBias (float bias)=0
 Sets the shadow bias.
 
virtual void SetShadowmapMaxSize (ShadowmapSize size)=0
 Sets the maximum resolution of the shadow map.
 
virtual void SetShadowFilterMethod (ShadowFilterMethod method)=0
 Sets the filter method for the shadow.
 
virtual void SetFilteringSampleCount (uint32_t count)=0
 Sets the sample count for filtering of the shadow boundary, max 64.
 
virtual void SetEsmExponent (float exponent)=0
 Sets the Esm exponent to use. Higher values produce a steeper falloff between light and shadow.
 
virtual void SetNormalShadowBias (float bias)=0
 Sets the normal bias. Reduces acne by biasing the shadowmap lookup along the geometric normal.
 
virtual void SetShadowCachingMode (AreaLightComponentConfig::ShadowCachingMode cachingMode)=0
 
virtual void SetAffectsGI (bool affectsGI)=0
 Sets if the light should affect diffuse global illumination.
 
virtual void SetAffectsGIFactor (float affectsGIFactor)=0
 Sets the multiplier on the contribution to diffuse global illumination.
 
virtual void SetLightingChannelMask (uint32_t lightingChannelMask)=0
 Set the lighting channel mask.
 
virtual Aabb GetLocalVisualizationBounds () const =0
 Returns the Aabb for the debug visualization of the light.
 

Protected Member Functions

void InitBase (EntityId entityId)
 
FeatureProcessorType * GetFeatureProcessor () const
 
const AreaLightComponentConfigGetConfig () const
 
FeatureProcessorType::LightHandle GetLightHandle () const
 
const Transform & GetTransform () const
 
bool GetShuttersEnabled ()
 
bool GetShadowsEnabled ()
 
virtual void HandleShapeChanged ()=0
 
void OnShapeChanged (ShapeChangeReasons changeReason) override
 
void OnTransformChanged (const Transform &local, const Transform &world) override
 

Protected Attributes

LmbrCentral::ShapeComponentRequests * m_shapeBus = nullptr
 

Detailed Description

template<typename FeatureProcessorType>
class AZ::Render::LightDelegateBase< FeatureProcessorType >

Delegate for managing light shape specific functionality in the AreaLightComponentController.

Member Function Documentation

◆ SetUseFastApproximation()

template<typename FeatureProcessorType >
void AZ::Render::LightDelegateBase< FeatureProcessorType >::SetUseFastApproximation ( [[maybe_unused] ] bool  useFastApproximation)
inlineoverridevirtual

Sets if this light uses linearly transformed cosines (false) or a faster approximation (true). Only applicable for shapes that support LTC.

Implements AZ::Render::LightDelegateInterface.


The documentation for this class was generated from the following files: