public static void Initialize() { ShaderKeywords.SetKeywordName( (int)ShaderKeyword.ENABLE_MAIN_COLOR, "ENABLE_MAIN_COLOR"); ShaderKeywords.SetKeywordName( (int)ShaderKeyword.ENABLE_RIM, "ENABLE_RIM"); }
private void OnWillRenderObject() { if (this.materials == null) { return; } ShaderKeywords usedKeyword = this.keywords; var materialsApl = this.AppliedMaterials; for (int i = 0; i < this.materials.Length; ++i) { var mat = this.materials[i]; if (mat != null) { materialsApl[i] = MaterialCache.Instance.GetMaterial(mat, this.renderQueue, usedKeyword); } else { materialsApl[i] = null; } } var unityRenderer = this.UnityRenderer; unityRenderer.sharedMaterials = materialsApl; if (this.propertyBlock != null) { unityRenderer.SetPropertyBlock(this.propertyBlock); } }
internal Material GetMaterial( Material origin, int renderQueue, ShaderKeywords keywords) { CacheKey key; key.MaterialID = origin.GetInstanceID(); key.RenderQueue = renderQueue; key.Keywords = keywords; Material material; if (this.cache.TryGetValue(key, out material)) { if (material != null) { return(material); } this.cache.Remove(key); } material = new Material(origin); material.hideFlags = HideFlags.DontSave; if (renderQueue != -1) { material.renderQueue = (int)renderQueue; } foreach (var k in key.Keywords) { string keyword = ShaderKeywords.GetKeywordName(k); material.EnableKeyword(keyword); #if UNITY_EDITOR material.name += "[" + keyword + "]"; #endif } this.cache.Add(key, material); return(material); }
public bool Equals(ShaderKeywords other) { return(this.keywords == other.keywords); }
public void Merge(ShaderKeywords keywords) { this.keywords |= keywords.keywords; }