Unity-Technologies/UnityCsReference · error · ArgumentException

index must be between 0 and {transmissiveTextureCount - 1},

Error message

index must be between 0 and {transmissiveTextureCount - 1}, but was {index}

What it means

Thrown by BakeInput.GetTransmissiveTextureData when the uint index is >= transmissiveTextureCount. Transmissive TextureData is its own collection, separate from transmissive properties and from albedo/emissive data; only transmissiveTextureCount is a valid bound here.

Source

Thrown at Editor/Mono/GI/LightBaker.bindings.cs:640

        {
            if (index >= emissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}");
            return Internal_GetEmissiveTextureProperties(index);
        }
        extern void Internal_SetEmissiveTextureProperties(uint index, TextureProperties textureProperties);
        public void SetEmissiveTextureProperties(uint index, TextureProperties textureProperties)
        {
            if (index >= emissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}");
            Internal_SetEmissiveTextureProperties(index, textureProperties);
        }

        extern TextureData Internal_GetTransmissiveTextureData(uint index);
        extern void Internal_SetTransmissiveTextureData(uint index, TextureData textureData);
        public TextureData GetTransmissiveTextureData(uint index)
        {
            if (index >= transmissiveTextureCount)
                throw new ArgumentException($"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}");
            return Internal_GetTransmissiveTextureData(index);
        }
        public void SetTransmissiveTextureData(uint index, TextureData textureData)
        {
            if (index >= emissiveTextureCount)
                throw new ArgumentException($"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}");
            Internal_SetTransmissiveTextureData(index, textureData);
        }
        extern TextureProperties Internal_GetTransmissiveTextureProperties(uint index);
        public TextureProperties GetTransmissiveTextureProperties(uint index)
        {
            if (index >= transmissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {transmissiveTexturePropertiesCount - 1}, but was {index}");
            return Internal_GetTransmissiveTextureProperties(index);
        }
        extern void Internal_SetTransmissiveTextureProperties(uint index, TextureProperties textureProperties);
        public void SetTransmissiveTextureProperties(uint index, TextureProperties textureProperties)
        {

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Bound the loop with transmissiveTextureCount.
  2. Skip transmissive readback when transmissiveTextureCount == 0.
  3. Guard: if (index < bakeInput.transmissiveTextureCount) { ... }

Example fix

// before
for (uint i = 0; i < bakeInput.emissiveTextureCount; i++)
    data.Add(bakeInput.GetTransmissiveTextureData(i));
// after
for (uint i = 0; i < bakeInput.transmissiveTextureCount; i++)
    data.Add(bakeInput.GetTransmissiveTextureData(i));
Defensive patterns

Strategy: validation

Validate before calling

if (index < bakeInput.transmissiveTextureCount)
{
    var d = bakeInput.GetTransmissiveTextureData(index);
}

Prevention

When it happens

Trigger: Iterating transmissive data with transmissiveTexturePropertiesCount, emissiveTextureCount, or instance/material counts; reading transmissive data on a BakeInput whose transmissive textures were never extracted.

Common situations: Scenes without transmissive materials (count 0, any read throws); readback that assumes one shared count across all four texture channels.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/a907acedbc5a77b0. Report an issue: GitHub.