예제 #1
0
        private void Update()
        {
            _cameraMapUpdateTimer += Time.deltaTime;

            if (_cameraMapUpdateTimer > 16)
            {
                RemoveDestroyedCameras();
                _cameraMapUpdateTimer = 0;
            }

            if (_outlineResources != null && _renderers != null)
            {
                if (_updateRenderers)
                {
                    _renderers.Reset(false);
                }

                _commandBuffer.Clear();

                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    renderer.Render(_renderers.GetList(), _outlineSettings.OutlineResources, _outlineSettings);
                }
            }
        }
예제 #2
0
        private void Update()
        {
            _cameraMapUpdateTimer += Time.deltaTime;

            if (_cameraMapUpdateTimer > 16)
            {
                RemoveDestroyedCameras();
                _cameraMapUpdateTimer = 0;
            }

#if UNITY_EDITOR
            UpdateChanged();
#endif

            if (_outlineResources != null && _renderers != null && (_outlineSettings.IsChanged || _commandBuffer.sizeInBytes == 0))
            {
                _commandBuffer.Clear();

                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    renderer.Render(_renderers, _outlineSettings.OutlineResources, _outlineSettings);
                }

                _outlineSettings.AcceptChanges();

#if UNITY_EDITOR
                _commandBufferUpdateCounter++;
#endif
            }
        }
예제 #3
0
 private void FillCommandBuffer(Camera camera, CommandBuffer cmdBuffer)
 {
     if (_renderers.Count > 0)
     {
         using (var renderer = new OutlineRenderer(cmdBuffer, _outlineResources, camera.actualRenderingPath))
         {
             renderer.Render(_renderers.GetList(), _outlineSettings, name);
         }
     }
 }
예제 #4
0
        /// <summary>
        /// Renders the layers.
        /// </summary>
        public void Render(OutlineRenderer renderer, OutlineResources resources)
        {
            if (_enabled)
            {
                _settings.SetResources(resources);

                foreach (var kvp in _outlineObjects)
                {
                    if (kvp.Key && kvp.Key.activeInHierarchy)
                    {
                        renderer.Render(kvp.Value, _settings.OutlineResources, _settings);
                    }
                }
            }
        }
예제 #5
0
        private void FillCommandBuffer()
        {
            if (_camera && _outlineLayers && _commandBuffer != null)
            {
                _commandBuffer.Clear();

                if (_outlineResources && _outlineResources.IsValid)
                {
                    using (var renderer = new OutlineRenderer(_commandBuffer, _outlineResources, _camera.actualRenderingPath))
                    {
                        _renderObjects.Clear();
                        _outlineLayers.GetRenderObjects(_renderObjects);
                        renderer.Render(_renderObjects);
                    }
                }
            }
        }
예제 #6
0
        private void Update()
        {
            if (_outlineResources != null && _renderers != null)
            {
                _camerasToRemove.Clear();

                if (_updateRenderers)
                {
                    _renderers.Reset(false, _layerMask);
                }

                foreach (var kvp in _cameraMap)
                {
                    var camera    = kvp.Key;
                    var cmdBuffer = kvp.Value;

                    if (camera)
                    {
                        cmdBuffer.Clear();

                        if (_renderers.Count > 0)
                        {
                            using (var renderer = new OutlineRenderer(cmdBuffer, _outlineResources, camera.actualRenderingPath))
                            {
                                renderer.Render(_renderers.GetList(), _outlineSettings, name);
                            }
                        }
                    }
                    else
                    {
                        cmdBuffer.Dispose();
                        _camerasToRemove.Add(camera);
                    }
                }

                foreach (var camera in _camerasToRemove)
                {
                    _cameraMap.Remove(camera);
                }
            }
        }
예제 #7
0
 public void RenderSingleObject_ThrowsIfNullArguments()
 {
     Assert.Throws <ArgumentNullException>(() => _renderer.Render(default(IList <Renderer>), null, null));
     Assert.Throws <ArgumentNullException>(() => _renderer.Render(default(Renderer), null, null));
 }