private extern int GetFirstPropertyNameIdByAttribute(ShaderPropertyFlags attributeFlag);
[NativeName("GetFirstPropertyNameIdByAttributeFromScript")] extern private int GetFirstPropertyNameIdByAttribute(ShaderPropertyFlags attributeFlag);
public ShaderPropertyInfo(Shader shader, int propertyIndex) { m_Name = shader.GetPropertyName(propertyIndex); m_Id = Shader.PropertyToID(m_Name); m_DisplayName = shader.GetPropertyDescription(propertyIndex); m_Type = shader.GetPropertyType(propertyIndex); m_Flags = shader.GetPropertyFlags(propertyIndex); m_Range = default; if (m_Type == ShaderPropertyType.Range) { m_Range = shader.GetPropertyRangeLimits(propertyIndex); } m_TextureDimension = TextureDimension.None; m_DefaultFloatValue = 0; m_DefaultVectorValue = default; m_DefaultTexureName = string.Empty; m_DefaultTexureValue = null; switch (shader.GetPropertyType(propertyIndex)) { case ShaderPropertyType.Color: case ShaderPropertyType.Vector: m_DefaultVectorValue = shader.GetPropertyDefaultVectorValue(propertyIndex); break; case ShaderPropertyType.Float: case ShaderPropertyType.Range: m_DefaultFloatValue = shader.GetPropertyDefaultFloatValue(propertyIndex); break; case ShaderPropertyType.Texture: m_TextureDimension = shader.GetPropertyTextureDimension(propertyIndex); m_DefaultTexureName = shader.GetPropertyTextureDefaultName(propertyIndex); switch (m_TextureDimension) { case TextureDimension.Tex2D: switch (m_DefaultTexureName) { case "white": m_DefaultTexureValue = Texture2D.whiteTexture; break; case "black": m_DefaultTexureValue = Texture2D.blackTexture; break; case "gray": m_DefaultTexureValue = Texture2D.grayTexture; break; case "bump": m_DefaultTexureValue = Texture2D.normalTexture; break; } break; case TextureDimension.Tex3D: m_DefaultTexureValue = CoreUtils.blackVolumeTexture; break; case TextureDimension.Cube: m_DefaultTexureValue = CoreUtils.blackCubeTexture; break; case TextureDimension.CubeArray: m_DefaultTexureValue = CoreUtils.magentaCubeTextureArray; break; } break; } }