BabylonJS/Babylon.js · error

Nothing else parsed so far

Error message

Nothing else parsed so far

What it means

When loading a .env (environment/DDSTI) cube texture in the native engine, the parsed header must contain a specular section (radiance/LOD data). If info.specular is missing after parsing, the loader throws 'Nothing else parsed so far' because the file contains only the spherical harmonics part and no specular mip chain.

Source

Thrown at packages/dev/core/src/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.ts:69

            texture._files = files;
            texture._buffer = buffer;
        }

        const lastDot = rootUrl.lastIndexOf(".");
        const extension = forcedExtension ? forcedExtension : lastDot > -1 ? rootUrl.substring(lastDot).toLowerCase() : "";

        // TODO: use texture loader to load env files?
        if (extension === ".env") {
            const onloaddata = (data: ArrayBufferView) => {
                const info = GetEnvInfo(data)!;
                texture.width = info.width;
                texture.height = info.width;

                UploadEnvSpherical(texture, info);

                const specularInfo = info.specular;
                if (!specularInfo) {
                    throw new Error(`Nothing else parsed so far`);
                }

                texture._lodGenerationScale = specularInfo.lodGenerationScale;
                const imageData = CreateRadianceImageDataArrayBufferViews(data, info);

                texture.format = Constants.TEXTUREFORMAT_RGBA;
                texture.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;
                texture.generateMipMaps = true;
                texture.getEngine().updateTextureSamplingMode(Texture.TRILINEAR_SAMPLINGMODE, texture);
                texture._isRGBD = true;
                texture.invertY = true;

                this._engine.loadCubeTextureWithMips(
                    texture._hardwareTexture!.underlyingResource,
                    imageData,
                    false,
                    texture._useSRGBBuffer,
                    () => {

View on GitHub (pinned to 0592b347b8)

Solutions

  1. Re-export the .env file with prefiltered radiance/specular data enabled (full IBL export, not spherical-harmonics-only)
  2. Verify the file is complete (check size/hash vs. source; re-download if truncated)
  3. Inspect the env JSON: it must contain a 'specular' object with lodGenerationScale and mip data — regenerate with Babylon's env exporter (https://sandbox.babylonjs.com) if missing
  4. If only diffuse lighting is needed, use a different loader path or upgrade the runtime so it can handle specular-less env files

Example fix

// before
scene.environmentTexture = new EnvironmentTexture('/assets/old-sphere.env'); // missing specular data
// after
// Re-export with prefiltered mips, then verify before use:
const buffer = await fetch('/assets/new-sphere.env').then(r => r.arrayBuffer());
const info = JSON.parse(new TextDecoder().decode(new Uint8Array(buffer, 0, headerLen)));
if (!info.specular) throw new Error('env file lacks specular data; re-export');
Defensive patterns

Strategy: validation

Validate before calling

async function validateEnvFile(url: string): Promise<void> {
  const buf = new Uint8Array(await (await fetch(url)).arrayBuffer());
  const jsonLen = new DataView(buf.buffer).getUint32(0, true);
  const info = JSON.parse(new TextDecoder().decode(buf.subarray(4, 4 + jsonLen)));
  if (!info.specular) throw new Error(`env file ${url} has no specular data; re-export with prefiltered mips`);
}

Try / catch

try {
  const tex = engine.createCubeTexture('/assets/sky.env', scene, [], false);
} catch (e) {
  if (String(e.message).includes('Nothing else parsed so far')) {
    // fall back to a plain cube texture or a known-good env file
  } else { throw e; }
}

Prevention

When it happens

Trigger: Calling NativeEngine's createCubeTexture / loadCubeTexture with an .env file (or buffer) whose parsed info has no specular block — i.e. a prefiltered-less env file, a truncated/corrupt file, or a JSON payload where the specular data was stripped.

Common situations: Env files exported without prefiltered/specular mips (e.g. minimal IBL exports from older tooling); files truncated in transit or partially downloaded; hand-crafted env JSON missing the 'specular' key; version mismatch between the exporter and the native loader expectations.

Related errors


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