heygen-com/hyperframes · error · CubeLutParseError
LUT_3D_INPUT_RANGE max must exceed min
Error message
LUT_3D_INPUT_RANGE max must exceed min
What it means
After confirming two tokens, parseCubeLut requires the LUT_3D_INPUT_RANGE max to strictly exceed min (line 131-132). An equal or inverted pair would describe a zero-length or negative domain, which cannot be sampled.
Source
Thrown at packages/core/src/colorLuts.ts:132
title = parseTitle(line);
continue;
}
if (keyword === "DOMAIN_MIN") {
domainMin = parseVec3(rest, keyword, lineNumber);
continue;
}
if (keyword === "DOMAIN_MAX") {
domainMax = parseVec3(rest, keyword, lineNumber);
continue;
}
if (keyword === "LUT_3D_INPUT_RANGE") {
if (rest.length !== 2) {
throw new CubeLutParseError(`${keyword} expects two numbers`, lineNumber);
}
const min = parseFiniteNumber(rest[0]!, lineNumber);
const max = parseFiniteNumber(rest[1]!, lineNumber);
if (max <= min) {
throw new CubeLutParseError("LUT_3D_INPUT_RANGE max must exceed min", lineNumber);
}
domainMin = [min, min, min];
domainMax = [max, max, max];
continue;
}
if (keyword === "LUT_1D_SIZE") {
lut1dSize = parseSize(rest[0], keyword, lineNumber);
continue;
}
if (keyword === "LUT_3D_SIZE") {
lut3dSize = parseSize(rest[0], keyword, lineNumber);
if (lut3dSize > maxSize) {
throw new CubeLutParseError(`LUT_3D_SIZE ${lut3dSize} exceeds max ${maxSize}`, lineNumber);
}
continue;
}
if (!isNumericDataLine(keyword)) {View on GitHub (pinned to c2996c8626)
Solutions
- Set max strictly greater than min, e.g. 'LUT_3D_INPUT_RANGE 0 1'.
- If your LUT operates in a narrower band, choose a min/max pair with min < max (e.g. 0.1 0.9).
- Remove the line entirely to fall back to the default [0,0,0]..[1,1,1] domain.
Example fix
// before LUT_3D_INPUT_RANGE 0.5 0.5 // after LUT_3D_INPUT_RANGE 0 1
Defensive patterns
Strategy: try-catch
Validate before calling
function assertInputRangeOrdered(line: string): void {
const [, a, b] = line.trim().split(/\s+/).map(Number);
if (!(a < b)) throw new Error(`LUT_3D_INPUT_RANGE max must exceed min, got ${a} ${b}`);
} Try / catch
try {
parseCubeLut(fileText);
} catch (err) {
if (err instanceof CubeLutParseError && /max must exceed min/.test(err.message)) {
// suggest falling back to default domain by removing the line
} else throw err;
} Prevention
- Write min before max in LUT_3D_INPUT_RANGE.
- Remove the line to accept the default [0,0,0]..[1,1,1] domain.
- Re-export from the source tool.
When it happens
Trigger: 'LUT_3D_INPUT_RANGE 0.5 0.5' (equal) or 'LUT_3D_INPUT_RANGE 1 0' (inverted).
Common situations: Copy-paste producing two identical values; swapping min/max when hand-editing; default placeholders left at the same value.
Related errors
- ${keyword} expects two numbers
- Invalid number "${value}"
- ${keyword} expects three numbers
- ${keyword} expects a size
- ${keyword} must be an integer greater than 1
AI-assisted analysis of heygen-com/hyperframes@c2996c8626 (2026-08-12).
Data as JSON: /api/errors/5e1b0d4043b6850c.
Report an issue: GitHub.