////////////////////////////////////////////////////// // MK Glow Pipeline Properties // // // // Created by Michael Kremmel // // www.michaelkremmel.de // // Copyright © 2020 All rights reserved. // ////////////////////////////////////////////////////// using System.Collections; using System.Collections.Generic; using UnityEngine; namespace MK.Glow { #if UNITY_2018_3_OR_NEWER using XRSettings = UnityEngine.XR.XRSettings; #endif /// /// Contains all PipelineProperties used in MK Glow /// internal static class PipelineProperties { //For even super large displays preserve some extra memory to prevent erros and gc. internal static readonly int renderBufferSize = 15; internal static bool scriptableRenderPipelineActive{ get { return UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset != null; } } #if UNITY_2018_3_OR_NEWER #if ENABLE_VR internal static bool xrEnabled { get{ return XRSettings.enabled; } } internal static bool singlePassStereoDoubleWideEnabled { get{ return XRSettings.enabled && XRSettings.stereoRenderingMode == XRSettings.StereoRenderingMode.SinglePass; } } internal static bool singlePassStereoInstancedEnabled { get{ return XRSettings.enabled && (XRSettings.stereoRenderingMode == XRSettings.StereoRenderingMode.SinglePassInstanced || XRSettings.stereoRenderingMode == XRSettings.StereoRenderingMode.SinglePassMultiview); } } #else internal static bool xrEnabled { get{ return false; } } internal static bool singlePassStereoDoubleWideEnabled { get{ return false; } } internal static bool singlePassStereoInstancedEnabled { get{ return false; } } #endif #else //No proper way of detecting stereo rendering mode so just return false internal static bool xrEnabled { get{ return false; } } internal static bool singlePassStereoDoubleWideEnabled { get{ return false; } } internal static bool singlePassStereoInstancedEnabled { get{ return false; } } #endif /// /// Shader PipelineProperties as IDs /// internal static class ShaderProperties { /// /// Representation of a render property based on unity version /// The id of the given name will be autogenerated /// internal class DefaultProperty { protected string _name; internal string name { get{return _name;} } #if UNITY_2017_3_OR_NEWER protected int _id; internal int id { get{return _id;} } #else internal string id { get{return _name;} } #endif internal DefaultProperty(string name) { this._name = name; #if UNITY_2017_3_OR_NEWER this._id = Shader.PropertyToID(name); #endif } } //Main, Bloom internal static readonly DefaultProperty singlePassStereoScale = new DefaultProperty("_SinglePassStereoScale"); internal static readonly DefaultProperty viewMatrix = new DefaultProperty("_ViewMatrix"); internal static readonly DefaultProperty sourceTex = new DefaultProperty("_SourceTex"); internal static readonly DefaultProperty targetTex = new DefaultProperty("_TargetTex"); internal static readonly DefaultProperty copyTargetTex = new DefaultProperty("_CopyTargetTex"); internal static readonly DefaultProperty bloomTex = new DefaultProperty("_BloomTex"); internal static readonly DefaultProperty bloomTargetTex = new DefaultProperty("_BloomTargetTex"); internal static readonly DefaultProperty bloomSpread = new DefaultProperty("_BloomSpread"); internal static readonly DefaultProperty bloomThreshold = new DefaultProperty("_BloomThreshold"); internal static readonly DefaultProperty bloomIntensity = new DefaultProperty("_BloomIntensity"); internal static readonly DefaultProperty higherMipBloomTex = new DefaultProperty("_HigherMipBloomTex"); //Lens Surface internal static readonly DefaultProperty lensSurfaceDirtTex = new DefaultProperty("_LensSurfaceDirtTex"); internal static readonly DefaultProperty lensSurfaceDiffractionTex = new DefaultProperty("_LensSurfaceDiffractionTex"); internal static readonly DefaultProperty lensSurfaceDirtIntensity = new DefaultProperty("_LensSurfaceDirtIntensity"); internal static readonly DefaultProperty lensSurfaceDiffractionIntensity = new DefaultProperty("_LensSurfaceDiffractionIntensity"); internal static readonly DefaultProperty lensSurfaceDirtTexST = new DefaultProperty("_LensSurfaceDirtTex_ST"); } /// /// CommandBuffer PipelineProperties as strings /// internal static class CommandBufferProperties { //Main internal static readonly string commandBufferName = "MK Glow"; internal static readonly string selectiveRenderBuffer = "_SelectiveRenderBuffer"; internal static readonly string bloomDownsampleBuffer = "_BloomDownsampleBuffer"; internal static readonly string bloomUpsampleBuffer = "_BloomUpsampleBuffer"; internal static readonly string sourceBuffer = "_SourceBuffer"; //Buffer Samples internal static readonly string sampleDownsample = "Downsample"; internal static readonly string samplePreSample = "Presample"; internal static readonly string sampleUpsample = "Upsample"; internal static readonly string sampleComposite = "Composite"; internal static readonly string sampleCreateBuffers = "Create Mip Buffers"; internal static readonly string sampleClearBuffers = "Clear Mip Buffers"; internal static readonly string sampleSetup = "Setup Constant Buffer"; internal static readonly string sampleCopySource = "Copy Source"; internal static readonly string sampleReplacement = "Render Replacement"; internal static readonly string samplePrepare = "Prepare"; } } }