2024-11-01 16:55:46 +08:00

108 lines
3.3 KiB
C#

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