Log inGet started
Package

lensFx.package

Newest version

This package holds more than this page lists. See all of its files in its world.

README.md

lensFx

The settings behind the LensFx component, and the way to drive the lens from a script — a photo mode that dirties the glass, a cutscene that opens the flare up, a quality slider that drops the ghost count.

local lensFx = require("@builtin::systems.lensFx.lensFx")

lensFx.set({ flareIntensity = 1.0, grainIntensity = 0.03 })
lensFx.tick(dt)     -- advance the clock the grain is drawn against
lensFx.get()        -- a copy of the settings in force
lensFx.active()     -- whether the passes are running
lensFx.clear()      -- flare and grain off, settings kept

set takes any subset of the fields; whatever is omitted keeps its current value. With both flareIntensity and grainIntensity at 0 the render feature is released rather than running three passes that change nothing, and clear is the named way to say the same thing.

tick is separate from set for a reason. Grain is a fresh field every frame, so it needs the frame's own time — and a setting that has not changed is not re-pushed, so time cannot ride along inside set. Drive the module directly and you own tick; use the component and it does this for you. Calling tick while the feature is released is a no-op.

The clock wraps rather than growing without bound: the grain hash loses precision on a large argument, and every value in the cycle is as good as any other.

The module packs the settings into the lens_fx_params buffer the passes read, so a change lands on the next frame without recompiling anything.