using System.Reflection; using UnityEngine.Rendering.Universal; using X.Rendering.Feature; namespace UnityEngine.Rendering.Universal { public partial class UniversalRenderPipelineAsset { [SerializeField] private ESuperResolution superResolution; [SerializeField] private ERenderScale sSRenderScale; public ERenderScale SSRenderScale { get => sSRenderScale; set { sSRenderScale = value; switch (value) { case ERenderScale.Factor1: this.renderScale = 1.0f; break; case ERenderScale.Factor09: this.renderScale = .9f; break; case ERenderScale.Factor08: this.renderScale = .8f; break; case ERenderScale.Factor075: this.renderScale = .75f; break; case ERenderScale.Factor06: this.renderScale = .6f; break; case ERenderScale.Factor05: this.renderScale = .5f; break; default: break; } } } public ESuperResolution SuperResolution { get => superResolution; set { superResolution = value; var renderer = GetRenderer(this.m_DefaultRendererIndex); foreach (var item in renderer.rendererFeatures) { if (item is ISuperResolution isr) { isr.SetSR(value); } } } } } } #if UNITY_EDITOR namespace UnityEditor.Rendering.Universal { internal class SerializedUniversalRenderPipelineAsset { public UniversalRenderPipelineAsset asset { get; } public SerializedObject serializedObject { get; } public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) { asset = serializedObject.targetObject as UniversalRenderPipelineAsset; this.serializedObject = serializedObject; } public void Update() { serializedObject.Update(); } public void Apply() { serializedObject.ApplyModifiedProperties(); } } [CustomEditor(typeof(UniversalRenderPipelineAsset)), CanEditMultipleObjects] public class SuperRenderingAssetEditor : Editor { private SerializedUniversalRenderPipelineAsset m_SerializedURPAsset; public override void OnInspectorGUI() { m_SerializedURPAsset.Update(); //UniversalRenderPipelineAssetUI.Inspector.Draw(m_SerializedURPAsset, this); m_SerializedURPAsset.Apply(); } void OnEnable() { var t = Assembly.GetAssembly(typeof(UnityEditor.Rendering.Universal.SceneViewDrawMode)).GetType("UniversalRenderPipelineAssetUI"); m_SerializedURPAsset = new SerializedUniversalRenderPipelineAsset(serializedObject); } } } #endif