Renderer · interface

GiFieldOptions

It no longer composes the field, and that is the whole of what changed on 2026-09-18.

Explained in Hello world.

interface GiFieldOptions
import type { GiFieldOptions } from '@driftengine/core';

In depth

This pass used to take a list of instances, compose the world's distance field from them and march the result. It was the only thing in the engine that composed a field at all — which meant the renderer had none, and the indirect-light plan had four tasks written on the assumption that it did. The lesson is in CONTRIBUTING.md, under auditing a closed plan: grep for who calls a thing, not only for whether it exists.

The composition now belongs to the renderer, from what a consumer declares with addDistanceField, and this marches what the renderer composed. So there is one field in a frame rather than two, and what this draws is the field the indirect light actually traces — which is the only thing that makes the picture worth looking at.

What draw does is a visualisation, and that is deliberate. A distance field is a thing you can look at, and looking is what a number cannot replace: if the geometry is in the right places at the right sizes the composition is right, and if a cascade boundary shows as a seam the fade is wrong. Wave 4A's own recorded failure — a phantom surface that passed 111,907 parity samples and was found by looking at a picture — is why this exists at all.

The field it marches is one frame old, because the renderer composes at endFrame and prepare runs at beginFrame. PrepareContext.distanceField says why that is right rather than merely what happens.

Properties

NameTypeDescription
marchStepsreadonlyoptionalnumberHow many steps a marched ray may take before it gives up.