The graphics device.
The camera frame the effect is registered with, or null.
The graphics device.
Whether the effect is enabled. An effect can additionally disable itself from its own parameters, see CameraFrameEffect#active.
The flares registered with the effect, in the order they are drawn. Treat the array as read-only; use LensFlareEffect#add and LensFlareEffect#remove to change it.
The brightness of all flares. Zero disables the effect. Defaults to 1.
The resolution the flares are drawn at, relative to the resolution of the scene, 0.25-1 range. Lower values are cheaper and soften the elements slightly, which suits soft shapes, while 1 keeps small sharp elements crisp. Defaults to 0.5.
Gets whether the effect contributes to the frame: when it is enabled, its intensity is positive and it has flares.
Gets the name the compose chunk can be overridden under in ShaderChunks, the same
way as the built-in chunks. Derived from the id as compose<Id>PS unless given.
Gets the names of the debug views the chunk provides.
Gets the define set on the compose shader while the effect is active: the id in upper snake
case, colorEnhance giving COLOR_ENHANCE.
Gets the name of the function the composition calls at the effect's slot. Derived from the
id as apply<Id> unless given. The signature depends on the slot: colour slots take
(vec3 color, vec2 uv) and return the colour, COMPOSESLOT_SCENE takes and returns a
vec4.
Gets the GLSL source of the compose chunk, or null when the effect has none.
Gets the identifier of the effect.
Gets the frame resources the effect needs, the FRAMERESOURCE_* constants - for its passes, or for its compose chunk, such as the scene depth. The camera frame provides them while the effect is active. Requirements which depend on the device are computed when constructing the effect; override this as a getter when they depend on a parameter, and the camera frame provides what it returns from the next CameraFrame#update.
Gets the shape library.
Sets the shape library, see LensFlareShapeLibrary: the textures the elements of the flares reference by name. Nothing is drawn until it is set. The textures are copied into the effect at the next CameraFrame#update; assigning the library again copies them again, so assign it after editing its shapes in place, or when a texture has loaded.
Gets the compose slot the entry function is called at, or null for an effect that does not take part in the composition.
Gets the WGSL source of the compose chunk, or null when the effect has none.
Registers a flare with the effect, drawn from the next CameraFrame#update. A flare can be registered with the effects of several camera frames.
The flare.
Destroys the effect, removing it from its camera frame if it is still registered and
releasing everything it owns, the passes it created included. Subclasses which create
resources in their constructor release them in an override, calling super.destroy(). The
removal takes effect for the frames rendered after the next CameraFrame#update, which
is due before the next frame renders.
The values of this frame.
Returns the compose chunk source for a shader language.
SHADERLANGUAGE_GLSL or SHADERLANGUAGE_WGSL.
The source, or null when the effect has no chunk.
Removes a flare from the effect, from the next CameraFrame#update.
The flare.
Sets a define on the compose shader. The define persists until changed, so fixed defines can be set once in the constructor and those depending on the parameters from CameraFrameEffect#update. A value of false, null or undefined removes it. Changing a define rebuilds the compose shader.
The define name.
The value.
Sets the value of a uniform the effect's shader chunk reads. Like a material parameter, the value is stored by reference, so an array or a texture can be updated in place. Set the values in CameraFrameEffect#update, or in CameraFrameEffect#frameUpdate for a value which changes every frame.
The name of the uniform, as declared in the chunk.
The value.
Applies the effect's parameters. Called by CameraFrame#update while the effect is active: set the uniform values with CameraFrameEffect#setUniform here, and the defines which depend on the parameters. Everything it sets is what the frames rendered until the next update use.
The lens flare effect: draws the flares of the lights, or of any positions, in the scene. A flare is a LensFlare, following its light, whose look places shapes along the axis from the light through the centre of the screen. The shapes are textures, given to the effect as a LensFlareShapeLibrary it copies into one texture array shared by all its flares. The flares fade as their source is covered by the scene, measured against the scene depth, as it leaves the screen, and for a spot light as the camera leaves its cone.
The flares are drawn by passes the effect owns, at the resolution LensFlareEffect#scale gives, half of the scene's by default, and added to the scene in linear HDR space, before tone mapping.
Add one to a camera frame with CameraFrame#addEffect; it is not a built-in effect.
Example