Ejemplo n.º 1
0
        private void Start()
        {
            CreateCommandBuffer();

            if (m_renderersCache == null)
            {
                m_renderersCache = gameObject.GetComponent <IRenderersCache>();
            }

            if (m_meshesCache == null)
            {
                m_meshesCache = gameObject.GetComponent <IMeshesCache>();
            }

            RefreshCommandBuffer();

            if (m_renderersCache != null)
            {
                m_renderersCache.Refreshed += OnRefresh;
            }

            if (m_meshesCache != null)
            {
                m_meshesCache.Refreshing += OnRefresh;
            }
        }
 public void Setup(RenderTargetIdentifier camerColorRT, IMeshesCache meshesCache, IRenderersCache renderersCache, ICustomOutlineRenderersCache customRenderersCache)
 {
     m_meshesCache          = meshesCache;
     m_renderersCache       = renderersCache;
     m_customRenderersCache = customRenderersCache;
     m_cameraColorRT        = camerColorRT;
 }
 private void DestroyMeshesCache()
 {
     if (m_destroyMeshesCache && m_meshesCache != null)
     {
         m_meshesCache.Destroy();
         m_meshesCache = null;
     }
 }
        private void Start()
        {
            m_graphics                = IOC.Resolve <IRTEGraphics>();
            m_meshesCache             = m_graphics.CreateMeshesCache(CameraEvent.BeforeImageEffects);
            m_meshesCache.RefreshMode = CacheRefreshMode.OnTransformChange;

            Refresh();
            StartOverride();
        }
Ejemplo n.º 5
0
        public void Destroy(IMeshesCache cache)
        {
            Data tuple;

            if (m_meshesCache.TryGetValue(cache, out tuple))
            {
                Destroy(tuple.MonoBehaviour);
                for (int i = 0; i < tuple.RTECameras.Count; ++i)
                {
                    Destroy(tuple.RTECameras[i]);
                }
                m_meshesCache.Remove(cache);
            }
        }
        public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
        {
            if ((renderingData.cameraData.camera.cullingMask & m_settings.LayerMask) != 0)
            {
                IMeshesCache    meshesCache    = IOC.Resolve <IMeshesCache>(m_settings.MeshesCacheName);
                IRenderersCache renderersCache = IOC.Resolve <IRenderersCache>(m_settings.RenderersCacheName);

                if ((meshesCache == null || meshesCache.IsEmpty) && (renderersCache == null || renderersCache.IsEmpty))
                {
                    return;
                }

                var src = renderer.cameraColorTarget;
                m_scriptablePass.Setup(src, meshesCache, renderersCache);
                renderer.EnqueuePass(m_scriptablePass);
            }
        }
Ejemplo n.º 7
0
        public void RegisterCamera(Camera camera)
        {
            m_cameras.Add(camera.gameObject);

            foreach (KeyValuePair <IMeshesCache, Data> kvp in m_meshesCache)
            {
                IMeshesCache cache = kvp.Key;
                Data         data  = kvp.Value;
                CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras);
            }

            foreach (KeyValuePair <IRenderersCache, Data> kvp in m_renderersCache)
            {
                IRenderersCache cache = kvp.Key;
                Data            data  = kvp.Value;
                CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras);
            }
        }
Ejemplo n.º 8
0
        public void RegisterCamera(Camera camera)
        {
            foreach (KeyValuePair <IMeshesCache, Data> kvp in m_meshesCache)
            {
                IMeshesCache cache = kvp.Key;
                Data         data  = kvp.Value;
                CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras);
            }

            foreach (KeyValuePair <IRenderersCache, Data> kvp in m_renderersCache)
            {
                IRenderersCache cache = kvp.Key;
                Data            data  = kvp.Value;
                CreateRTECamera(camera.gameObject, data.Event, cache, data.RTECameras);
            }

            if (!m_cameras.ContainsKey(camera))
            {
                m_cameras.Add(camera, new Dictionary <CameraEvent, RTECamera>());
            }
        }
Ejemplo n.º 9
0
        private static void CreateRTECamera(GameObject camera, CameraEvent cameraEvent, IMeshesCache cache, List <RTECamera> rteCameras)
        {
            RTECamera rteCamera = camera.AddComponent <RTECamera>();

            rteCamera.Event       = cameraEvent;
            rteCamera.MeshesCache = cache;
            rteCameras.Add(rteCamera);
        }
Ejemplo n.º 10
0
        private static void CreateRTECamera(GameObject camera, CameraEvent cameraEvent, IMeshesCache cache, List <RTECamera> rteCameras)
        {
            bool wasActive = camera.gameObject.activeSelf;

            camera.SetActive(false);

            RTECamera rteCamera = camera.AddComponent <RTECamera>();

            rteCamera.Event       = cameraEvent;
            rteCamera.MeshesCache = cache;
            rteCameras.Add(rteCamera);

            camera.SetActive(wasActive);
        }
 public void CreateMeshesCache()
 {
     DestroyMeshesCache();
     m_meshesCache        = gameObject.AddComponent <MeshesCache>();
     m_destroyMeshesCache = true;
 }