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); } } }
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(); } } }
private void OnEnable() { debugShader = Shader.Find(GPUInstancerConstants.SHADER_GPUI_HIZ_OCCLUSION_DEBUGGER); debugMaterial = new Material(debugShader); hiZOcclusionGenerator = FindObjectOfType <GPUInstancerHiZOcclusionGenerator>(); }