Skip to content

Commit

Permalink
feat: global culling
Browse files Browse the repository at this point in the history
  • Loading branch information
mob-sakai committed Nov 16, 2023
1 parent c812962 commit be0c648
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
4 changes: 2 additions & 2 deletions Assets/ProjectSettings/CompositeCanvasRenderer.asset
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8b894cfc7d9884b4d9a048119fbfde1e, type: 3}
m_Name: CompositeCanvasRenderer
m_EditorClassIdentifier:
m_DownSamplingRate: 1
m_TransformSensitivity: 1
m_EnableCullingInEditor: 0
m_EnableCullingInPlayMode: 1
m_EnableCullingInEditMode: 1
m_AutoIncludeShaders: 1
6 changes: 5 additions & 1 deletion Packages/src/Runtime/CompositeCanvasRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using CompositeCanvas.Effects;
using CompositeCanvas.Enums;
using CompositeCanvas.ProjectSettings;
using UnityEditor;
using UnityEngine;
using UnityEngine.Profiling;
Expand Down Expand Up @@ -289,7 +290,7 @@ public override Texture mainTexture
/// </summary>
public bool culling
{
get => m_Culling;
get => CompositeCanvasRendererProjectSettings.enableCulling && m_Culling;
set
{
if (m_Culling == value) return;
Expand Down Expand Up @@ -766,6 +767,7 @@ internal void Unregister(CompositeCanvasSource canvasSource)
private bool IsAnySourceInRenderer()
{
if (!transform.lossyScale.IsVisible()) return false;
if (!culling) return true;

for (var i = 0; i < sources.Count; i++)
{
Expand All @@ -781,6 +783,8 @@ private bool IsAnySourceInRenderer()

private bool IsInCanvasViewport()
{
if (!culling) return true;

if (FrameCache.TryGet(this, nameof(IsInCanvasViewport), out bool result))
{
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,32 @@ public class CompositeCanvasRendererProjectSettings
[SerializeField]
private TransformSensitivity m_TransformSensitivity = TransformSensitivity.Medium;

[SerializeField]
private bool m_EnableCullingInPlayMode = true;

[SerializeField]
private bool m_EnableCullingInEditMode = true;

#if UNITY_EDITOR
[Header("Shader")]
[SerializeField]
private bool m_AutoIncludeShaders = true;
#endif

public static bool enableCulling
{
get
{
#if UNITY_EDITOR
if (!Application.isPlaying)
{
return instance.m_EnableCullingInEditMode;
}
#endif
return instance.m_EnableCullingInPlayMode;
}
}

public static TransformSensitivity transformSensitivity
{
get => instance.m_TransformSensitivity;
Expand Down

0 comments on commit be0c648

Please sign in to comment.