Example #1
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
            }
        }
        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);
                }
            }
        }
        /// <summary>
        /// Renders all layers.
        /// </summary>
        public void Render(OutlineRenderer renderer, OutlineResources resources)
        {
            UpdateSortedLayersIfNeeded();

            foreach (var layer in _sortedLayers)
            {
                layer.Render(renderer, resources);
            }
        }
Example #4
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);
         }
     }
 }
Example #5
0
        private void FillCommandBuffer()
        {
            _commandBuffer.Clear();

            if (_outlineResources && _outlineResources.IsValid)
            {
                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    _outlineLayers.Render(renderer, _outlineResources);
                }
            }
        }
Example #6
0
        internal void Render(OutlineRenderer renderer, OutlineResources resources)
        {
            _settings.SetResources(resources);

            foreach (var kvp in _outlineObjects)
            {
                if (kvp.Key)
                {
                    renderer.RenderSingleObject(kvp.Value, _settings.OutlineMaterials);
                }
            }
        }
        /// <summary>
        /// Gets cached gauss samples for the specified outline <paramref name="width"/>.
        /// </summary>
        public float[] GetGaussSamples(int width)
        {
            if (_gaussSmples == null)
            {
                _gaussSmples = new float[OutlineRenderer.MaxWidth][];
            }

            if (_gaussSmples[width] == null)
            {
                _gaussSmples[width] = OutlineRenderer.GetGaussSamples(width, null);
            }

            return(_gaussSmples[width]);
        }
Example #8
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);
                    }
                }
            }
        }
Example #9
0
        /// <summary>
        /// Gets cached gauss samples for the specified outline <paramref name="width"/>.
        /// </summary>
        public float[] GetGaussSamples(int width)
        {
            var index = Mathf.Clamp(width, 1, OutlineRenderer.MaxWidth) - 1;

            if (_gaussSamples == null)
            {
                _gaussSamples = new float[OutlineRenderer.MaxWidth][];
            }

            if (_gaussSamples[index] == null)
            {
                _gaussSamples[index] = OutlineRenderer.GetGaussSamples(width, null);
            }

            return(_gaussSamples[index]);
        }
Example #10
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);
                    }
                }
            }
        }
Example #11
0
        private void FillCommandBuffer()
        {
            _commandBuffer.Clear();

            if (_outlineResources && _outlineResources.IsValid)
            {
                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    _outlineLayers.Render(renderer, _outlineResources);
                }
            }

            _changed = false;

#if UNITY_EDITOR
            _commandBufferUpdateCounter++;
#endif
        }
Example #12
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);
                }
            }
        }
Example #13
0
        private void FillCommandBuffer()
        {
            if (_outlineResources && _outlineResources.IsValid)
            {
                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    for (var i = 0; i < _outlineLayers.Count; ++i)
                    {
                        if (_outlineLayers[i] != null)
                        {
                            _outlineLayers[i].Render(renderer, _outlineResources);
                        }
                    }
                }
            }
            else
            {
                _commandBuffer.Clear();
            }

            _changed = false;
        }
Example #14
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)
            {
                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    renderer.RenderSingleObject(_renderers, _outlineSettings.OutlineMaterials);
                }

                _outlineSettings.AcceptChanges();
            }
        }
Example #15
0
 public void Init()
 {
     _commandBuffer = new CommandBuffer();
     _renderer      = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget);
 }
 private void UpdateGaussSamples()
 {
     OutlineRenderer.GetGaussSamples(_width, _gaussSamples);
 }