public void SetupOcclusionCulling(GPUInstancerCameraData renderingCameraData)
        {
            if (renderingCameraData == null || renderingCameraData.mainCamera == null)
            {
                return;
            }

#if UNITY_EDITOR
            if (renderingCameraData.mainCamera.name == GPUInstancerEditorSimulator.sceneViewCameraName)
            {
                return;
            }
#endif

            if (isOcclusionCulling)
            {
                if (renderingCameraData.hiZOcclusionGenerator == null)
                {
                    GPUInstancerHiZOcclusionGenerator hiZOcclusionGenerator =
                        renderingCameraData.mainCamera.GetComponent <GPUInstancerHiZOcclusionGenerator>();

                    if (hiZOcclusionGenerator == null)
                    {
                        hiZOcclusionGenerator = renderingCameraData.mainCamera.gameObject.AddComponent <GPUInstancerHiZOcclusionGenerator>();
                    }

                    renderingCameraData.hiZOcclusionGenerator = hiZOcclusionGenerator;
                    renderingCameraData.hiZOcclusionGenerator.Initialize(renderingCameraData.mainCamera);
                }
            }
        }
Example #2
0
        public void SetupOcclusionCulling(GPUInstancerCameraData renderingCameraData)
        {
            if (renderingCameraData == null || renderingCameraData.mainCamera == null)
            {
                return;
            }

#if UNITY_EDITOR
            if (renderingCameraData.mainCamera.name == GPUInstancerEditorSimulator.sceneViewCameraName)
            {
                return;
            }
#endif

            // Occlusion Culling with VR is not implemented yet.
#if UNITY_2017_2_OR_NEWER
            if (isOcclusionCulling && UnityEngine.XR.XRSettings.enabled)
#else
            if (isOcclusionCulling && UnityEngine.VR.VRSettings.enabled)
#endif
            {
                isOcclusionCulling = false;
                Debug.LogWarning("Currently GPU Instancer doesn't support Occlusion Culling for VR. Disabling the Occlusion Culling feature.");
            }

            if (isOcclusionCulling)
            {
                if (renderingCameraData.hiZOcclusionGenerator == null)
                {
                    GPUInstancerHiZOcclusionGenerator hiZOcclusionGenerator =
                        renderingCameraData.mainCamera.GetComponent <GPUInstancerHiZOcclusionGenerator>();

                    if (hiZOcclusionGenerator == null)
                    {
                        hiZOcclusionGenerator = renderingCameraData.mainCamera.gameObject.AddComponent <GPUInstancerHiZOcclusionGenerator>();
                    }

                    renderingCameraData.hiZOcclusionGenerator = hiZOcclusionGenerator;

                    renderingCameraData.mainCamera.depthTextureMode      = DepthTextureMode.Depth;
                    renderingCameraData.hiZOcclusionGenerator.mainCamera = renderingCameraData.mainCamera;
                    renderingCameraData.hiZOcclusionGenerator.OnPreRender();
                }
            }
        }
Example #3
0
 private void OnEnable()
 {
     debugShader           = Shader.Find(GPUInstancerConstants.SHADER_GPUI_HIZ_OCCLUSION_DEBUGGER);
     debugMaterial         = new Material(debugShader);
     hiZOcclusionGenerator = FindObjectOfType <GPUInstancerHiZOcclusionGenerator>();
 }