/// <summary> /// Adds commands for rendering single outline object. /// </summary> public void RenderSingleObject(Renderer renderer, OutlineMaterialSet materials) { if (renderer == null) { throw new ArgumentNullException("renderer"); } if (materials == null) { throw new ArgumentNullException("materials"); } _commandBuffer.SetRenderTarget(_maskRtId); _commandBuffer.ClearRenderTarget(false, true, Color.black); if (renderer && renderer.gameObject.activeInHierarchy && renderer.enabled) { for (var i = 0; i < renderer.sharedMaterials.Length; ++i) { _commandBuffer.DrawRenderer(renderer, materials.RenderMaterial, i); } } _commandBuffer.SetGlobalFloatArray(materials.GaussSamplesNameId, materials.GaussSamples); _commandBuffer.SetGlobalTexture(_maskRtId, _maskRtId); _commandBuffer.Blit(_maskRtId, _hPassRtId, materials.HPassMaterial); _commandBuffer.Blit(_hPassRtId, _renderTarget, materials.VPassBlendMaterial); }
public void Dispose() { if (_materials != null) { _materials.Dispose(); _materials = null; } }
internal void SetResources(OutlineResources resources) { if (resources == null) { if (_materials != null) { _materials.Dispose(); _materials = null; } } else if (_materials == null || _materials.OutlineResources != resources) { _materials = resources.CreateMaterialSet(); _materials.Reset(this); _changed = true; } }
public void Init() { _resources = ScriptableObject.CreateInstance <OutlineResources>(); _materialSet = _resources.CreateMaterialSet(); Init(_materialSet); }