{"record":{"id":"fa865c5cec731af9","repo":"Unity-Technologies/UnityCsReference","slug":"index-must-be-between-0-and-transmissivetexturepr","errorCode":null,"errorMessage":"index must be between 0 and {transmissiveTexturePropertiesCount - 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":653,"sourceCode":"        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        {\n            if (index >= transmissiveTexturePropertiesCount)\n                throw new ArgumentException($\"index must be between 0 and {transmissiveTexturePropertiesCount - 1}, but was {index}\");\n            Internal_SetTransmissiveTextureProperties(index, textureProperties);\n        }\n\n        public extern uint GetCookieCount();\n        extern CookieData Internal_GetCookieData(uint index);\n        extern void Internal_SetCookieData(uint index, CookieData cookieData);\n        public CookieData GetCookieData(uint index)\n        {\n            if (index >= GetCookieCount())\n                throw new ArgumentException($\"index must be between 0 and {GetCookieCount() - 1}, but was {index}\");\n            return Internal_GetCookieData(index);","sourceCodeStart":635,"sourceCodeEnd":671,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/GI/LightBaker.bindings.cs#L635-L671","documentation":"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.","triggerScenarios":"Reading transmissive properties in a loop bounded by transmissiveTextureCount or another channel's count; reading properties that InputExtraction never populated.","commonSituations":"Readback assuming per-channel data and properties are 1:1; scenes where transmissive data exists but properties extraction was skipped.","solutions":["Bound iteration by transmissiveTexturePropertiesCount.","Confirm InputExtraction populated transmissive properties before reading them.","Guard: if (index < bakeInput.transmissiveTexturePropertiesCount) { ... }"],"exampleFix":"// before\nfor (uint i = 0; i < bakeInput.transmissiveTextureCount; i++)\n    p.Add(bakeInput.GetTransmissiveTextureProperties(i));\n// after\nfor (uint i = 0; i < bakeInput.transmissiveTexturePropertiesCount; i++)\n    p.Add(bakeInput.GetTransmissiveTextureProperties(i));","handlingStrategy":"validation","validationCode":"if (index < bakeInput.transmissiveTexturePropertiesCount)\n{\n    var p = bakeInput.GetTransmissiveTextureProperties(index);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use transmissiveTexturePropertiesCount for properties, transmissiveTextureCount for data.","Confirm properties were populated before reading.","Keep data and properties aligned if 1:1 is assumed."],"tags":["lightmapping","gi","bake-input","index-bounds","transmissive","properties","unity"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}