Unity-Technologies/UnityCsReference · error · ArgumentException

index must be between 0 and

Error message

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

What it means

Thrown by BakeInput.GetTransmissiveTextureProperties when the uint index is >= transmissiveTexturePropertiesCount. Transmissive TextureProperties are distinct from transmissive TextureData (transmissiveTextureCount) and from all other channels, so the bound must come from transmissiveTexturePropertiesCount.

Solutions

  1. Bound iteration by transmissiveTexturePropertiesCount.
  2. Confirm InputExtraction populated transmissive properties before reading them.
  3. Guard: if (index < bakeInput.transmissiveTexturePropertiesCount) { ... }

Example fix

// before
for (uint i = 0; i < bakeInput.transmissiveTextureCount; i++)
    p.Add(bakeInput.GetTransmissiveTextureProperties(i));
// after
for (uint i = 0; i < bakeInput.transmissiveTexturePropertiesCount; i++)
    p.Add(bakeInput.GetTransmissiveTextureProperties(i));
Defensive patterns

Strategy: validation

Validate before calling

if (index < bakeInput.transmissiveTexturePropertiesCount)
{
    var p = bakeInput.GetTransmissiveTextureProperties(index);
}

Prevention

When it happens

Trigger: Reading transmissive properties in a loop bounded by transmissiveTextureCount or another channel's count; reading properties that InputExtraction never populated.

Common situations: Readback assuming per-channel data and properties are 1:1; scenes where transmissive data exists but properties extraction was skipped.

Related errors


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

Appendix: source

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

        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)
        {
            if (index >= transmissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {transmissiveTexturePropertiesCount - 1}, but was {index}");
            Internal_SetTransmissiveTextureProperties(index, textureProperties);
        }

        public extern uint GetCookieCount();
        extern CookieData Internal_GetCookieData(uint index);
        extern void Internal_SetCookieData(uint index, CookieData cookieData);
        public CookieData GetCookieData(uint index)
        {
            if (index >= GetCookieCount())
                throw new ArgumentException($"index must be between 0 and {GetCookieCount() - 1}, but was {index}");
            return Internal_GetCookieData(index);

View on GitHub (pinned to 225b0fbdb5)