Unity-Technologies/UnityCsReference · error · ArgumentException
material for submesh {submeshIndex} did not exist.
Error message
material for submesh {submeshIndex} did not exist. What it means
instanceToTransmissiveIndex throws ArgumentException 'material for submesh {n} did not exist' when the submesh's entry in submeshMaterialIndices is -1. A -1 sentinel means that submesh has no material assigned, so there is no transmissive mapping to return. This is a data-state condition (the instance has submeshes but this one is unmaterialed), not an index-range error.
Source
Thrown at Editor/Mono/GI/LightBaker.bindings.cs:565
return Internal_instanceAlbedoEmissiveIndex(instanceIndex);
}
public int instanceToEmissiveIndex(uint instanceIndex)
{
if (instanceIndex >= instanceCount)
throw new ArgumentException($"index must be between 0 and {instanceCount - 1}, but was {instanceIndex}");
return Internal_instanceAlbedoEmissiveIndex(instanceIndex);
}
public int instanceToTransmissiveIndex(uint instanceIndex, uint submeshIndex)
{
if (instanceIndex >= instanceCount)
throw new ArgumentException($"index must be between 0 and {instanceCount - 1}, but was {instanceIndex}");
Instance inst = instance(instanceIndex);
int submeshCount = inst.submeshMaterialIndices.Length;
if (submeshIndex >= submeshCount)
throw new ArgumentException($"submeshIndex must be between 0 and {submeshCount - 1}, but was {submeshIndex}");
int materialIndex = inst.submeshMaterialIndices[submeshIndex];
if (materialIndex == -1)
throw new ArgumentException($"material for submesh {submeshIndex} did not exist.");
return Internal_instanceTransmissiveIndex(instanceIndex, submeshIndex);
}
public extern uint albedoTextureCount { get; }
public extern uint albedoTexturePropertiesCount { get; }
extern TextureData Internal_GetAlbedoTextureData(uint index);
extern void Internal_SetAlbedoTextureData(uint index, TextureData textureData);
public TextureData GetAlbedoTextureData(uint index)
{
if (index >= albedoTextureCount)
throw new ArgumentException($"index must be between 0 and {albedoTextureCount - 1}, but was {index}");
return Internal_GetAlbedoTextureData(index);
}
public void SetAlbedoTextureData(uint index, TextureData textureData)
{
if (index >= albedoTextureCount)View on GitHub (pinned to 225b0fbdb5)
Solutions
- Check inst.submeshMaterialIndices[submeshIndex] != -1 before calling instanceToTransmissiveIndex.
- Treat a -1 entry as 'no material / not transmissive' and skip.
- Investigate upstream material assignment if the submesh should have a material.
Example fix
// before int tIdx = lightBaker.instanceToTransmissiveIndex(instIdx, subIdx); // after Instance inst = lightBaker.instance(instIdx); if (inst.submeshMaterialIndices[subIdx] == -1) continue; int tIdx = lightBaker.instanceToTransmissiveIndex(instIdx, subIdx);
Defensive patterns
Strategy: validation
Validate before calling
Instance inst = lightBaker.instance(instanceIndex);
if (inst.submeshMaterialIndices[submeshIndex] != -1)
int tIdx = lightBaker.instanceToTransmissiveIndex(instanceIndex, submeshIndex); Prevention
- Check submeshMaterialIndices[submeshIndex] != -1 before mapping transmissive.
- Treat -1 as 'no material assigned' and skip.
- Investigate submeshes that should have materials but report -1.
When it happens
Trigger: Calling instanceToTransmissiveIndex on a submesh whose submeshMaterialIndices entry is -1; instances with partially-assigned materials (some submeshes missing materials).
Common situations: Meshes with mixed material assignment (e.g. some submeshes intentionally unmaterialed); editor state where a material slot was cleared; assuming every submesh has a material.
Related errors
- index must be between 0 and {materialCount - 1}, but was {in
- instanceIndex must be between 0 and {instanceCount - 1}, but
- instance {instanceIndex} has not materials
- submeshIndex must be between 0 and {theInstance.submeshMater
- submeshIndex must be between 0 and {submeshCount - 1}, but w
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/a4edd5c616c9075d.
Report an issue: GitHub.