BabylonJS/Babylon.js · error

The ${ConnectionPointType[input.type]} input named "${input.

Error message

The ${ConnectionPointType[input.type]} input named "${input.name}" is missing for the ${this.getClassName()} named "${this.name}"

What it means

_confirmRuntimeDataSupplied reads the runtimeData off an input connection point and throws if it is null/undefined. Blocks call it when they need a concrete runtime value (e.g. a texture or number) for an input that was expected to be supplied at runtime.

Source

Thrown at packages/dev/smartFilters/src/blockFoundation/baseBlock.ts:335

     * @param type - Defines the type of the output connection point
     * @param initialValue - Defines the initial value of the output connection point
     * @returns The new output connection point with a default value
     * @internal
     */
    public _registerOutputWithDefault<U extends ConnectionPointType>(name: string, type: U, initialValue: RuntimeData<U>): ConnectionPointWithDefault<U> {
        const output = new ConnectionPointWithDefault(name, this, type, ConnectionPointDirection.Output, initialValue);
        this._outputs.push(output);
        return output;
    }

    /**
     * Gets the required RuntimeData for the given input, throwing with a clear message if it is null
     * @param input - The input to get the runtime data for
     * @returns The runtimeData or throws if it was undefined
     */
    protected _confirmRuntimeDataSupplied<U extends ConnectionPointType = ConnectionPointType>(input: ConnectionPoint<U>): RuntimeData<U> {
        if (!input.runtimeData) {
            throw new Error(`The ${ConnectionPointType[input.type]} input named "${input.name}" is missing for the ${this.getClassName()} named "${this.name}"`);
        }
        return input.runtimeData;
    }
}

View on GitHub (pinned to 0592b347b8)

Solutions

  1. Set runtimeData on the named input before running: input.runtimeData = value (or use the block's setInput API).
  2. Provide a default value when the input connection point is registered so it is never null.
  3. Check your binding code targets the exact input name reported in the error for that block.
  4. Connect the input to another block's output so the value propagates instead of relying on runtimeData.

Example fix

// before
block.runtimeInputs.texture; // runtimeData is null
// after
const input = block.input("texture");
input.runtimeData = texture;
block.propagateRuntimeData(runtimeData);
Defensive patterns

Strategy: try-catch

Validate before calling

for (const name of ['texture', 'time']) {
    const input = block.input(name);
    if (input && !input.runtimeData && !input.connectedTo) {
        throw new Error(`input '${name}' has neither runtimeData nor a connection`);
    }
}

Type guard

function hasRuntimeData<U extends ConnectionPointType>(input: ConnectionPoint<U>): input is ConnectionPoint<U> & { runtimeData: RuntimeData<U> } {
    return input.runtimeData != null;
}

Try / catch

try {
    block.propagateRuntimeData(runtimeData);
} catch (e) {
    if (e instanceof Error && e.message.includes('is missing for the')) {
        // parse input.name from the message and supply the missing value
    } else throw e;
}

Prevention

When it happens

Trigger: Calling propagateRuntimeData / inputsToBind / _confirmRuntimeDataSupplied (or block APIs like input, time, background, foreground) while the named input connection point has no runtimeData set — it is unbound and has no default value.

Common situations: Forgetting to bind a required texture/number input before running the filter, connecting a runtime value to the wrong input name, or a runtime binding that silently failed so runtimeData stayed null.

Related errors


AI-assisted analysis of BabylonJS/Babylon.js@0592b347b8 (2026-08-30). Data as JSON: /api/errors/c017d66c117898cf. Report an issue: GitHub.