Rasagar/Library/PackageCache/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Raytracing/SubSurfaceScatteringEditor.cs
2024-08-26 23:07:20 +03:00

52 lines
2.0 KiB
C#

using UnityEditor.Rendering;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
namespace UnityEditor.Rendering.HighDefinition
{
[CanEditMultipleObjects]
[CustomEditor(typeof(SubSurfaceScattering))]
class SubSurfaceScatteringEditor : VolumeComponentEditor
{
SerializedDataParameter m_RayTracing;
SerializedDataParameter m_SampleCount;
public override void OnEnable()
{
var o = new PropertyFetcher<SubSurfaceScattering>(serializedObject);
m_RayTracing = Unpack(o.Find(x => x.rayTracing));
m_SampleCount = Unpack(o.Find(x => x.sampleCount));
}
public override void OnInspectorGUI()
{
HDEditorUtils.EnsureFrameSetting(FrameSettingsField.RayTracing, "Raytracing");
HDRenderPipelineAsset currentAsset = HDRenderPipeline.currentAsset;
bool notSupported = currentAsset != null && !currentAsset.currentPlatformRenderPipelineSettings.supportRayTracing;
if (notSupported)
{
EditorGUILayout.Space();
HDEditorUtils.QualitySettingsHelpBox(HDRenderPipelineUI.Styles.rayTracingUnsupportedMessage,
MessageType.Warning, HDRenderPipelineUI.ExpandableGroup.Rendering,
"m_RenderPipelineSettings.supportRayTracing");
}
using var disableScope = new EditorGUI.DisabledScope(notSupported);
PropertyField(m_RayTracing);
if (m_RayTracing.overrideState.boolValue && m_RayTracing.value.boolValue)
{
using (new IndentLevelScope())
{
// If ray tracing is supported display the content of the volume component
if (RenderPipelineManager.currentPipeline is not HDRenderPipeline { rayTracingSupported: true })
HDRenderPipelineUI.DisplayRayTracingSupportBox();
PropertyField(m_SampleCount);
}
}
}
}
}