public static void SetRenderMode(Material material, UniUnlitRenderMode mode, float?cuttOff) { material.SetInt(PropNameBlendMode, (int)mode); if (mode == UniUnlitRenderMode.Cutout && cuttOff.HasValue) { material.SetFloat(PropNameCutoff, cuttOff.Value); } }
private static void SetupBlendMode(Material material, UniUnlitRenderMode renderMode, bool isRenderModeChangedByUser = false) { switch (renderMode) { case UniUnlitRenderMode.Opaque: material.SetOverrideTag(TagRenderTypeKey, TagRenderTypeValueOpaque); material.SetInt(PropNameSrcBlend, (int)BlendMode.One); material.SetInt(PropNameDstBlend, (int)BlendMode.Zero); material.SetInt(PropNameZWrite, 1); SetKeyword(material, KeywordAlphaTestOn, false); SetKeyword(material, KeywordAlphaBlendOn, false); if (isRenderModeChangedByUser) { material.renderQueue = -1; } break; case UniUnlitRenderMode.Cutout: material.SetOverrideTag(TagRenderTypeKey, TagRenderTypeValueTransparentCutout); material.SetInt(PropNameSrcBlend, (int)BlendMode.One); material.SetInt(PropNameDstBlend, (int)BlendMode.Zero); material.SetInt(PropNameZWrite, 1); SetKeyword(material, KeywordAlphaTestOn, true); SetKeyword(material, KeywordAlphaBlendOn, false); if (isRenderModeChangedByUser) { material.renderQueue = (int)RenderQueue.AlphaTest; } break; case UniUnlitRenderMode.Transparent: material.SetOverrideTag(TagRenderTypeKey, TagRenderTypeValueTransparent); material.SetInt(PropNameSrcBlend, (int)BlendMode.SrcAlpha); material.SetInt(PropNameDstBlend, (int)BlendMode.OneMinusSrcAlpha); material.SetInt(PropNameZWrite, 0); SetKeyword(material, KeywordAlphaTestOn, false); SetKeyword(material, KeywordAlphaBlendOn, true); if (isRenderModeChangedByUser) { material.renderQueue = (int)RenderQueue.Transparent; } break; case UniUnlitRenderMode.TransparentWithZWrite: material.SetOverrideTag(TagRenderTypeKey, TagRenderTypeValueTransparent); material.SetInt(PropNameSrcBlend, (int)BlendMode.SrcAlpha); material.SetInt(PropNameDstBlend, (int)BlendMode.OneMinusSrcAlpha); material.SetInt(PropNameZWrite, 1); SetKeyword(material, KeywordAlphaTestOn, false); SetKeyword(material, KeywordAlphaBlendOn, true); if (isRenderModeChangedByUser) { material.renderQueue = (int)RenderQueue.AlphaTest + 150; } break; } }
public static void SetRenderMode(Material material, UniUnlitRenderMode mode) { material.SetInt(PropNameBlendMode, (int)mode); }