void RenderLoop(int stagedLayer, SortingType sortType, bool clear, bool useGroupColor, Color overrideColor) { if (!useGroupColor) { Shader.SetGlobalColor(_Color, overrideColor); } bool clearedCamera = false; for (int i = 0; i < highlightGroups.Count; i++) { HighlightGroup group = highlightGroups[i]; if (group.sortingType == sortType) { TempCam.clearFlags = clearedCamera || !clear ? CameraClearFlags.Nothing : CameraClearFlags.Color; // if (clear) { // } clearedCamera = true; if (useGroupColor) { Shader.SetGlobalColor(_Color, group.highlightColor); } group.Stage(stagedLayer); TempCam.RenderWithShader(DrawSimple, ""); group.Unstage(); } } }
// we need this for the depth mask void RenderSceneWithoutHighlights(int stagedLayer) { //clear before we start renedering TempCam.clearFlags = CameraClearFlags.Color; //cull all highlighted renderers TempCam.cullingMask = ~(1 << stagedLayer); Shader.SetGlobalColor(_Color, Color.clear); StageAll(stagedLayer); TempCam.RenderWithShader(DrawSimple, ""); UnstageAll(); //cull eveyrthing but highlighted renderers TempCam.cullingMask = 1 << stagedLayer; }