public static void InitShaderRenderers(Transform root, List <Renderer> shaderRenderers, ref Renderer shadowRenderer, ref ShadowSlicePlane shadowSlicePlane) { shaderRenderers.Clear(); Renderer[] componentsInChildren = root.GetComponentsInChildren <Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Renderer renderer = componentsInChildren[i]; if (renderer == null) { Debug.LogError("item is null"); } else if (ShadowSlicePlaneMgr.IsShadow(renderer.get_gameObject())) { shadowRenderer = renderer; shadowSlicePlane = renderer.GetComponent <ShadowSlicePlane>(); if (shadowSlicePlane == null) { Debug.LogError("shadowSlicePlane is null"); } } else { shaderRenderers.Add(renderer); } } }
public static void SetIsNearCamera(Transform root, bool isHide = false) { if (!SystemConfig.IsFindOcclusionByCameraOn) { return; } if (!SystemConfig.IsShaderEffectOn) { return; } if (root == null) { return; } Renderer[] componentsInChildren = root.GetComponentsInChildren <Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Renderer renderer = componentsInChildren[i]; if (!LayerSystem.IsSpecialEffectLayers(renderer.get_gameObject().get_layer()) && !ShadowSlicePlaneMgr.IsShadow(renderer.get_gameObject())) { Material[] materials = renderer.get_materials(); if (materials != null && materials.Length > 0) { AdjustTransparency adjustTransparency = renderer.get_gameObject().AddMissingComponent <AdjustTransparency>(); adjustTransparency.SetIsNearCamera(isHide); } } } }