{"record":{"id":"a907acedbc5a77b0","repo":"Unity-Technologies/UnityCsReference","slug":"index-must-be-between-0-and-transmissivetextureco","errorCode":null,"errorMessage":"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}","messagePattern":"index must be between 0 and (.+?), but was (.+?)","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/GI/LightBaker.bindings.cs","lineNumber":640,"sourceCode":"        {\n            if (index >= emissiveTexturePropertiesCount)\n                throw new ArgumentException($\"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}\");\n            return Internal_GetEmissiveTextureProperties(index);\n        }\n        extern void Internal_SetEmissiveTextureProperties(uint index, TextureProperties textureProperties);\n        public void SetEmissiveTextureProperties(uint index, TextureProperties textureProperties)\n        {\n            if (index >= emissiveTexturePropertiesCount)\n                throw new ArgumentException($\"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}\");\n            Internal_SetEmissiveTextureProperties(index, textureProperties);\n        }\n\n        extern TextureData Internal_GetTransmissiveTextureData(uint index);\n        extern void Internal_SetTransmissiveTextureData(uint index, TextureData textureData);\n        public TextureData GetTransmissiveTextureData(uint index)\n        {\n            if (index >= transmissiveTextureCount)\n                throw new ArgumentException($\"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}\");\n            return Internal_GetTransmissiveTextureData(index);\n        }\n        public void SetTransmissiveTextureData(uint index, TextureData textureData)\n        {\n            if (index >= emissiveTextureCount)\n                throw new ArgumentException($\"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}\");\n            Internal_SetTransmissiveTextureData(index, textureData);\n        }\n        extern TextureProperties Internal_GetTransmissiveTextureProperties(uint index);\n        public TextureProperties GetTransmissiveTextureProperties(uint index)\n        {\n            if (index >= transmissiveTexturePropertiesCount)\n                throw new ArgumentException($\"index must be between 0 and {transmissiveTexturePropertiesCount - 1}, but was {index}\");\n            return Internal_GetTransmissiveTextureProperties(index);\n        }\n        extern void Internal_SetTransmissiveTextureProperties(uint index, TextureProperties textureProperties);\n        public void SetTransmissiveTextureProperties(uint index, TextureProperties textureProperties)\n        {","sourceCodeStart":622,"sourceCodeEnd":658,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/GI/LightBaker.bindings.cs#L622-L658","documentation":"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.","triggerScenarios":"Iterating transmissive data with transmissiveTexturePropertiesCount, emissiveTextureCount, or instance/material counts; reading transmissive data on a BakeInput whose transmissive textures were never extracted.","commonSituations":"Scenes without transmissive materials (count 0, any read throws); readback that assumes one shared count across all four texture channels.","solutions":["Bound the loop with transmissiveTextureCount.","Skip transmissive readback when transmissiveTextureCount == 0.","Guard: if (index < bakeInput.transmissiveTextureCount) { ... }"],"exampleFix":"// before\nfor (uint i = 0; i < bakeInput.emissiveTextureCount; i++)\n    data.Add(bakeInput.GetTransmissiveTextureData(i));\n// after\nfor (uint i = 0; i < bakeInput.transmissiveTextureCount; i++)\n    data.Add(bakeInput.GetTransmissiveTextureData(i));","handlingStrategy":"validation","validationCode":"if (index < bakeInput.transmissiveTextureCount)\n{\n    var d = bakeInput.GetTransmissiveTextureData(index);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Bound transmissive data reads with transmissiveTextureCount.","Skip readback when transmissiveTextureCount == 0.","Do not reuse emissive/albedo counts for transmissive."],"tags":["lightmapping","gi","bake-input","index-bounds","transmissive","unity"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}