Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions com.unity.render-pipelines.high-definition/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fixed issue with automatic exposure settings not updating scene view.
- Fixed issue with velocity rejection in post-DoF TAA. Fixing this reduces ghosting (case 1304381).
- Fixed missing option to use POM on emissive for tessellated shaders.
- Fixed resize IES when already baked in the Atlas 1299233
- Fixed an issue in the planar reflection probe convolution.
- Fixed Rough Distortion frame setting not greyed out when Distortion is disabled in HDRP Asset
- Fixed ability to override AlphaToMask FrameSetting while camera in deferred lit shader mode
- Fixed issue with physically-based DoF computation and transparent materials with depth-writes ON.
- Fixed issue of accessing default frame setting stored in current HDRPAsset instead fo the default HDRPAsset
- Fixed SSGI frame setting not greyed out while SSGI is disabled in HDRP Asset

### Changed
- Updated the tooltip for the Decal Angle Fade property (requires to enable Decal Layers in both HDRP asset and Frame settings) (case 1308048).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ static HDRenderPipelineAsset GetHDRPAssetFor(Editor owner)

static FrameSettings GetDefaultFrameSettingsFor(Editor owner)
{
HDRenderPipelineAsset hdrpAsset = GetHDRPAssetFor(owner);
HDRenderPipelineAsset hdrpAsset = HDRenderPipeline.defaultAsset;

return owner is IDefaultFrameSettingsType getType
? hdrpAsset.GetDefaultFrameSettings(getType.GetFrameSettingsType())
: hdrpAsset.GetDefaultFrameSettings(FrameSettingsRenderType.Camera);
Expand Down Expand Up @@ -181,60 +182,27 @@ static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized,
bool msaaEnablable = hdrpSettings.supportMSAA && ((hdrpAssetSupportForward && (frameSettingsOverrideToForward || defaultForwardUsed)) || hdrpAssetIsForward) && !hdrpSettings.supportRayTracing;
area.AmmendInfo(FrameSettingsField.MSAA,
overrideable: () => msaaEnablable,
overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA),
customOverrideable: () =>
{
switch (hdrpSettings.supportedLitShaderMode)
{
case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
return false; //negative dependency
case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
return true; //negative dependency
case RenderPipelineSettings.SupportedLitShaderMode.Both:
return !(frameSettingsOverrideToForward || defaultForwardUsed); //negative dependency
default:
throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
}
});
ignoreDependencies: true,
overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA));

bool msaaIsOff = (msaaEnablable && serialized.GetOverrides(FrameSettingsField.MSAA)) ? !(serialized.IsEnabled(FrameSettingsField.MSAA) ?? false) : !defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA);
area.AmmendInfo(FrameSettingsField.AlphaToMask,
overrideable: () => msaaEnablable && !msaaIsOff,
ignoreDependencies: true,
overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.AlphaToMask) && !msaaIsOff);

bool defaultDeferredUsed = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Deferred;
bool depthPrepassEnablable = (hdrpAssetSupportDeferred && (defaultDeferredUsed || frameSettingsOverrideToDeferred)) || (hdrpAssetIsDeferred);
area.AmmendInfo(FrameSettingsField.DepthPrepassWithDeferredRendering,
overrideable: () => depthPrepassEnablable,
overridedDefaultValue: depthPrepassEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.DepthPrepassWithDeferredRendering),
customOverrideable: () =>
{
switch (hdrpSettings.supportedLitShaderMode)
{
case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
return false;
case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
return true;
case RenderPipelineSettings.SupportedLitShaderMode.Both:
return frameSettingsOverrideToDeferred || defaultDeferredUsed;
default:
throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
}
});
ignoreDependencies: true,
overridedDefaultValue: depthPrepassEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.DepthPrepassWithDeferredRendering));

bool clearGBufferEnablable = (hdrpAssetSupportDeferred && (defaultDeferredUsed || frameSettingsOverrideToDeferred)) ||(hdrpAssetIsDeferred);
area.AmmendInfo(FrameSettingsField.ClearGBuffers,
overrideable: () => clearGBufferEnablable,
overridedDefaultValue: clearGBufferEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.ClearGBuffers),
customOverrideable: () =>
{
switch (hdrpSettings.supportedLitShaderMode)
{
case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
return false;
case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
return true;
case RenderPipelineSettings.SupportedLitShaderMode.Both:
return frameSettingsOverrideToDeferred || defaultDeferredUsed;
default:
throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
}
});
ignoreDependencies: true,
overridedDefaultValue: clearGBufferEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.ClearGBuffers));

area.AmmendInfo(FrameSettingsField.RayTracing, overrideable: () => hdrpSettings.supportRayTracing);
#if !ENABLE_VIRTUALTEXTURES
Expand All @@ -246,6 +214,7 @@ static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized,
area.AmmendInfo(FrameSettingsField.Decals, overrideable: () => hdrpSettings.supportDecals);
area.AmmendInfo(FrameSettingsField.DecalLayers, overrideable: () => hdrpSettings.supportDecalLayers);
area.AmmendInfo(FrameSettingsField.Distortion, overrideable: () => hdrpSettings.supportDistortion);
area.AmmendInfo(FrameSettingsField.RoughDistortion, overrideable: () => hdrpSettings.supportDistortion);

area.AmmendInfo(FrameSettingsField.Postprocess, overrideable: () => (frameSettingType != FrameSettingsRenderType.CustomOrBakedReflection &&
frameSettingType != FrameSettingsRenderType.RealtimeReflection));
Expand All @@ -261,14 +230,16 @@ static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized,
overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.lodBiasQualityLevel.intValue,
customSetter: v => serialized.lodBiasQualityLevel.intValue = (int)v,
customOverrideable: () => serialized.lodBiasMode.GetEnumValue<LODBiasMode>() != LODBiasMode.OverrideQualitySettings,
overrideable: () => serialized.lodBiasMode.GetEnumValue<LODBiasMode>() != LODBiasMode.OverrideQualitySettings,
ignoreDependencies: true,
hasMixedValues: serialized.lodBiasQualityLevel.hasMultipleDifferentValues);

area.AmmendInfo(FrameSettingsField.LODBias,
overridedDefaultValue: hdrpSettings.lodBias[serialized.lodBiasQualityLevel.intValue],
customGetter: () => serialized.lodBias.floatValue,
customSetter: v => serialized.lodBias.floatValue = (float)v,
customOverrideable: () => serialized.lodBiasMode.GetEnumValue<LODBiasMode>() != LODBiasMode.FromQualitySettings,
overrideable: () => serialized.lodBiasMode.GetEnumValue<LODBiasMode>() != LODBiasMode.FromQualitySettings,
ignoreDependencies: true,
labelOverride: serialized.lodBiasMode.GetEnumValue<LODBiasMode>() == LODBiasMode.ScaleQualitySettings ? "Scale Factor" : "LOD Bias",
hasMixedValues: serialized.lodBias.hasMultipleDifferentValues);

Expand All @@ -283,14 +254,16 @@ static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized,
overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.maximumLODLevelQualityLevel.intValue,
customSetter: v => serialized.maximumLODLevelQualityLevel.intValue = (int)v,
customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue<MaximumLODLevelMode>() != MaximumLODLevelMode.OverrideQualitySettings,
overrideable: () => serialized.maximumLODLevelMode.GetEnumValue<MaximumLODLevelMode>() != MaximumLODLevelMode.OverrideQualitySettings,
ignoreDependencies: true,
hasMixedValues: serialized.maximumLODLevelQualityLevel.hasMultipleDifferentValues);

area.AmmendInfo(FrameSettingsField.MaximumLODLevel,
overridedDefaultValue: hdrpSettings.maximumLODLevel[serialized.maximumLODLevelQualityLevel.intValue],
customGetter: () => serialized.maximumLODLevel.intValue,
customSetter: v => serialized.maximumLODLevel.intValue = (int)v,
customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue<MaximumLODLevelMode>() != MaximumLODLevelMode.FromQualitySettings,
overrideable: () => serialized.maximumLODLevelMode.GetEnumValue<MaximumLODLevelMode>() != MaximumLODLevelMode.FromQualitySettings,
ignoreDependencies: true,
labelOverride: serialized.maximumLODLevelMode.GetEnumValue<MaximumLODLevelMode>() == MaximumLODLevelMode.OffsetQualitySettings ? "Offset Factor" : "Maximum LOD Level",
hasMixedValues: serialized.maximumLODLevel.hasMultipleDifferentValues);

Expand Down Expand Up @@ -322,6 +295,7 @@ static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, E
area.AmmendInfo(FrameSettingsField.SSR, overrideable: () => hdrpSettings.supportSSR);
area.AmmendInfo(FrameSettingsField.TransparentSSR, overrideable: () => (hdrpSettings.supportSSR && hdrpSettings.supportSSRTransparent));
area.AmmendInfo(FrameSettingsField.SSAO, overrideable: () => hdrpSettings.supportSSAO);
area.AmmendInfo(FrameSettingsField.SSGI, overrideable: () => hdrpSettings.supportSSGI);

// SSS
area.AmmendInfo(
Expand All @@ -334,26 +308,29 @@ static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, E
overridedDefaultValue: SssQualityMode.FromQualitySettings,
customGetter: () => serialized.sssQualityMode.GetEnumValue<SssQualityMode>(),
customSetter: v => serialized.sssQualityMode.SetEnumValue((SssQualityMode)v),
customOverrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false),
overrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false),
ignoreDependencies: true,
hasMixedValues: serialized.sssQualityMode.hasMultipleDifferentValues
);
area.AmmendInfo(FrameSettingsField.SssQualityLevel,
overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.sssQualityLevel.intValue, // 3 levels
customSetter: v => serialized.sssQualityLevel.intValue = Math.Max(0, Math.Min((int)v, 2)), // Levels 0-2
customOverrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false)
&& (serialized.sssQualityMode.GetEnumValue<SssQualityMode>() == SssQualityMode.FromQualitySettings),
overrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false)
&& (serialized.sssQualityMode.GetEnumValue<SssQualityMode>() == SssQualityMode.FromQualitySettings),
ignoreDependencies: true,
hasMixedValues: serialized.sssQualityLevel.hasMultipleDifferentValues
);
area.AmmendInfo(FrameSettingsField.SssCustomSampleBudget,
overridedDefaultValue: (int)DefaultSssSampleBudgetForQualityLevel.Low,
customGetter: () => serialized.sssCustomSampleBudget.intValue,
customSetter: v => serialized.sssCustomSampleBudget.intValue = Math.Max(1, Math.Min((int)v, (int)DefaultSssSampleBudgetForQualityLevel.Max)),
customOverrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false)
&& (serialized.sssQualityMode.GetEnumValue<SssQualityMode>() != SssQualityMode.FromQualitySettings),
overrideable: () => hdrpSettings.supportSubsurfaceScattering
&& (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false)
&& (serialized.sssQualityMode.GetEnumValue<SssQualityMode>() != SssQualityMode.FromQualitySettings),
ignoreDependencies: true,
hasMixedValues: serialized.sssCustomSampleBudget.hasMultipleDifferentValues
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ private struct Field
{
public FrameSettingsField field;
public Func<bool> overrideable;
public Func<bool> customOverrideable;
public bool ignoreDependencies;
public Func<object> customGetter;
public Action<object> customSetter;
public object overridedDefaultValue;
Expand All @@ -60,7 +60,7 @@ public bool IsOverrideableWithDependencies(SerializedFrameSettings serialized, F
FrameSettingsFieldAttribute attribute = attributes[field];
bool locallyOverrideable = overrideable == null || overrideable();
FrameSettingsField[] dependencies = attribute.dependencies;
if (dependencies == null || !locallyOverrideable)
if (dependencies == null || ignoreDependencies || !locallyOverrideable)
return locallyOverrideable;

bool dependenciesOverrideable = true;
Expand Down Expand Up @@ -96,7 +96,7 @@ public static OverridableFrameSettingsArea GetGroupContent(int groupIndex, Frame
return area;
}

public void AmmendInfo(FrameSettingsField field, Func<bool> overrideable = null, Func<object> customGetter = null, Action<object> customSetter = null, object overridedDefaultValue = null, Func<bool> customOverrideable = null, string labelOverride = null, bool hasMixedValues = false)
public void AmmendInfo(FrameSettingsField field, Func<bool> overrideable = null, bool ignoreDependencies = false, Func<object> customGetter = null, Action<object> customSetter = null, object overridedDefaultValue = null, string labelOverride = null, bool hasMixedValues = false)
{
var matchIndex = fields.FindIndex(f => f.field == field);

Expand All @@ -106,8 +106,7 @@ public void AmmendInfo(FrameSettingsField field, Func<bool> overrideable = null,
var match = fields[matchIndex];
if (overrideable != null)
match.overrideable = overrideable;
if (customOverrideable != null)
match.customOverrideable = customOverrideable;
match.ignoreDependencies = ignoreDependencies;
if (customGetter != null)
match.customGetter = customGetter;
if (customSetter != null)
Expand All @@ -123,9 +122,6 @@ public void AmmendInfo(FrameSettingsField field, Func<bool> overrideable = null,
static bool EvaluateBoolWithOverride(FrameSettingsField field, Field forField, FrameSettings defaultFrameSettings, SerializedFrameSettings serializedFrameSettings, bool negative)
{
bool value;
if (forField.customOverrideable != null)
return forField.customOverrideable() ^ negative;

if (serializedFrameSettings.GetOverrides(field))
value = serializedFrameSettings.IsEnabled(field) ?? false;
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,13 @@ public FrameSettingsFieldAttribute(
int customOrderInGroup = -1)
{
if (string.IsNullOrEmpty(displayedName))
displayedName = s_FrameSettingsEnumNameMap[autoName].CamelToPascalCaseWithSpace();
{
if (!s_FrameSettingsEnumNameMap.TryGetValue(autoName, out displayedName))
{
displayedName = autoName.ToString();
}
displayedName = displayedName.CamelToPascalCaseWithSpace();
}

// Editor and Runtime debug menu
this.group = group;
Expand Down
Loading