public float GetValue(Material material, RenderStatePropertyType type) { if (!states.ContainsKey(material.shader)) { CacheShaderRenderState(material.shader); } RenderState state = states[material.shader]; RenderStateProperty property = state.properties[type - RenderStatePropertyType.Begin]; if (string.IsNullOrEmpty(property.propertyName)) { return(property.defaultValue); } return(material.GetFloat(property.propertyName)); }
public RenderState() { RenderStateProperty cull = new RenderStateProperty() { name = "Cull", defaultValue = (float)CullMode.Back, parse = RenderStateProperty.ParseValueOfCull }; properties[RenderStatePropertyType.Cull - RenderStatePropertyType.Begin] = cull; RenderStateProperty zwrite = new RenderStateProperty() { name = "ZWrite", defaultValue = (float)ZWrite.On, parse = RenderStateProperty.ParseValueOfZWrite }; properties[RenderStatePropertyType.ZWrite - RenderStatePropertyType.Begin] = zwrite; RenderStateProperty ztest = new RenderStateProperty() { name = "ZTest", defaultValue = (float)CompareFunction.LessEqual, parse = RenderStateProperty.ParseValueOfZTest }; properties[RenderStatePropertyType.ZTest - RenderStatePropertyType.Begin] = ztest; }