Package-level declarations
Types
Restricts the implicit-receiver search inside nested scene declarations. See FilamentSceneScope.
A handle to a Filament Scene and its Engine, produced by rememberFilamentScene and consumed by one or more FilamentViews. The scene is the world — entities, lights, skybox, IBL — and knows nothing about cameras or viewports.
Receiver for the content lambda of rememberFilamentScene. Scene-content composables (io.github.erkko68.filament.compose.scene.Light, GltfInstance, Group, primitives, FilamentEffect, …) are extensions on this scope, so they only compile inside a scene declaration.
Hoisted handle to a FilamentView's live Filament objects. Create with rememberFilamentViewState, pass to a FilamentView, and use it for imperative access — picking, reading the viewport, or reaching the raw View/Renderer for advanced work.
Drives a CameraState using a Filament Manipulator in FLIGHT mode (first-person).
Drives a CameraState using a Filament Manipulator in MAP mode (top-down 2-D pan/zoom). Pair with Projection.Orthographic on the CameraState.
Drives a CameraState using a Filament Manipulator in ORBIT mode.
Functions
Entry point for Filament-powered Compose web apps.
Escape hatch for direct Filament API access inside rememberFilamentScene. Use it to add custom renderables to the scene or drive per-frame updates that the scene composables don't cover. For per-view, imperative access (picking, the raw View/Renderer), use FilamentViewState instead; for the camera, use io.github.erkko68.filament.compose.scene.CameraState.
All-in-one entry point for the common single-view case: declares a scene and renders it through one viewport in a single call. Equivalent to a rememberFilamentScene feeding one FilamentView — reach for those directly when you need multiple views over one scene, or to hoist the scene as a value.
A viewport onto a FilamentScene. Each FilamentView owns one Filament View, Camera, Renderer, and platform surface, and renders the given scene through them. Place several FilamentViews — anywhere in your layout — to render one scene through different cameras and post-processing setups.
Attaches flight camera gesture and keyboard handling to this element.
Attaches map gesture handling to this element.
The single per-frame primitive for filament-compose: runs onFrame once per display refresh (via withFrameNanos) without triggering recomposition. Every other per-frame helper — rememberSceneClock, FilamentEffect's onFrame, rememberFlightCameraState, io.github.erkko68.filament.compose.scene.rememberAnimationState — is built on this.
Attaches orbit gesture handling to this element.
Issues a Filament picking query at every tap position and delivers the result to onPick.
Creates and remembers a Engine for the lifetime of the composition.
Declares a Filament Scene as a value. The content lambda declares the world — lights, models, primitives, groups — via scene composables; it emits no UI and runs once at this call site regardless of how many FilamentViews later render the scene.
Creates and remembers a FilamentViewState.
Creates and remembers a FlightCameraState driving cameraState in FLIGHT mode.
Creates and remembers a MapCameraState driving cameraState in MAP mode.
Creates and remembers an OrbitCameraState that drives cameraState.
Renders a FilamentScene off-screen through its own camera into a Texture that you can feed back into a material — the building block for mini-maps, security-camera monitors, portals and thumbnails. Returns the color attachment as a sampleable Texture (null until valid).
A monotonic per-frame clock as a State<Float> — seconds elapsed since the composable entered the composition. Reading the value triggers recomposition every frame, so use it with a by delegate inside scene composables to drive animations cheaply: