//////////////////////////////////////////////////////
// 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";
}
}
}