108 lines
3.3 KiB
C#
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
|