diff --git a/com.unity.render-pipelines.core/CHANGELOG.md b/com.unity.render-pipelines.core/CHANGELOG.md
index a4ddc266923..3cf10c64a57 100644
--- a/com.unity.render-pipelines.core/CHANGELOG.md
+++ b/com.unity.render-pipelines.core/CHANGELOG.md
@@ -51,6 +51,7 @@ The version number for this package has increased due to a version update of a r
- Added UNITY_PREV_MATRIX_M and UNITY_PREV_MATRIX_I_M shader macros to support instanced motion vector rendering
- Added new API to customize the rtHandleProperties of a particular RTHandle. This is a temporary work around to assist with viewport setup of Custom post process when dealing with DLSS or TAAU
- Added `IAdditionalData` interface to identify the additional datas on the core package.
+- Added new API to draw color temperature for Lights.
### Fixed
- Help boxes with fix buttons do not crop the label.
diff --git a/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs b/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs
new file mode 100644
index 00000000000..3ab9553165d
--- /dev/null
+++ b/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs
@@ -0,0 +1,66 @@
+using System;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+namespace UnityEditor.Rendering
+{
+ ///
+ /// Contains a set of methods to help render the inspectors of Lights across SRP's
+ ///
+ public partial class LightUI
+ {
+ ///
+ /// Draws the color temperature for a serialized light
+ ///
+ /// The serizalized light
+ /// The editor
+ public static void DrawColor(ISerializedLight serialized, Editor owner)
+ {
+ if (GraphicsSettings.lightsUseLinearIntensity && GraphicsSettings.lightsUseColorTemperature)
+ {
+ // Use the color temperature bool to create a popup dropdown to choose between the two modes.
+ var colorTemperaturePopupValue = Convert.ToInt32(serialized.settings.useColorTemperature.boolValue);
+ colorTemperaturePopupValue = EditorGUILayout.Popup(Styles.lightAppearance, colorTemperaturePopupValue, Styles.lightAppearanceOptions);
+ serialized.settings.useColorTemperature.boolValue = Convert.ToBoolean(colorTemperaturePopupValue);
+
+ if (serialized.settings.useColorTemperature.boolValue)
+ {
+ EditorGUI.indentLevel += 1;
+ EditorGUILayout.PropertyField(serialized.settings.color, Styles.colorFilter);
+
+ // Light unit slider
+ const int k_ValueUnitSeparator = 2;
+ var lineRect = EditorGUILayout.GetControlRect();
+ var labelRect = lineRect;
+ labelRect.width = EditorGUIUtility.labelWidth;
+ EditorGUI.LabelField(labelRect, Styles.colorTemperature);
+
+ var temperatureSliderRect = lineRect;
+ temperatureSliderRect.x += EditorGUIUtility.labelWidth + k_ValueUnitSeparator;
+ temperatureSliderRect.width -= EditorGUIUtility.labelWidth + k_ValueUnitSeparator;
+ TemperatureSliderUIDrawer.Draw(serialized.settings, serialized.serializedObject, serialized.settings.colorTemperature, temperatureSliderRect);
+
+ // Value and unit label
+ // Match const defined in EditorGUI.cs
+ const int k_IndentPerLevel = 15;
+ const int k_UnitWidth = 60 + k_IndentPerLevel;
+ int indent = k_IndentPerLevel * EditorGUI.indentLevel;
+ Rect valueRect = EditorGUILayout.GetControlRect();
+ valueRect.width += indent - k_ValueUnitSeparator - k_UnitWidth;
+ Rect unitRect = valueRect;
+ unitRect.x += valueRect.width - indent + k_ValueUnitSeparator;
+ unitRect.width = k_UnitWidth + k_ValueUnitSeparator;
+
+ EditorGUI.PropertyField(valueRect, serialized.settings.colorTemperature, CoreEditorStyles.empty);
+ EditorGUI.LabelField(unitRect, Styles.lightAppearanceUnits[0]);
+
+ EditorGUI.indentLevel -= 1;
+ }
+ else
+ EditorGUILayout.PropertyField(serialized.settings.color, Styles.color);
+ }
+ else
+ EditorGUILayout.PropertyField(serialized.settings.color, Styles.color);
+ }
+ }
+}
diff --git a/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs.meta b/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs.meta
new file mode 100644
index 00000000000..32dec915f3e
--- /dev/null
+++ b/com.unity.render-pipelines.core/Editor/Lighting/LightUI.Drawers.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63524ac66f4f7c044bc3dc991c570e89
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightUI.cs b/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightUI.cs
index 5cbe52ba27a..872b3da020a 100644
--- a/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightUI.cs
+++ b/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightUI.cs
@@ -94,7 +94,7 @@ static HDLightUI()
CED.FoldoutGroup(s_Styles.celestialBodyHeader, Expandable.CelestialBody, k_ExpandedState, DrawCelestialBodyContent)),
CED.AdditionalPropertiesFoldoutGroup(LightUI.Styles.emissionHeader, Expandable.Emission, k_ExpandedState, AdditionalProperties.Emission, k_AdditionalPropertiesState,
CED.Group(
- DrawColor,
+ LightUI.DrawColor,
DrawLightIntensityGUILayout,
DrawEmissionContent),
DrawEmissionAdditionalContent),
@@ -137,7 +137,9 @@ static HDLightUI()
EditorGUILayout.HelpBox(LightUI.Styles.unsupportedPresetPropertiesMessage, MessageType.Info)),
CED.Group((serialized, owner) => EditorGUILayout.Space()),
CED.FoldoutGroup(LightUI.Styles.generalHeader, Expandable.General, k_ExpandedStatePreset, CED.Group((serialized, owner) => DrawGeneralContent(serialized, owner, true))),
- CED.FoldoutGroup(LightUI.Styles.emissionHeader, Expandable.Emission, k_ExpandedStatePreset, CED.Group(DrawColor, DrawEmissionContent)),
+ CED.FoldoutGroup(LightUI.Styles.emissionHeader, Expandable.Emission, k_ExpandedStatePreset, CED.Group(
+ LightUI.DrawColor,
+ DrawEmissionContent)),
CED.FoldoutGroup(LightUI.Styles.shadowHeader, Expandable.Shadows, k_ExpandedStatePreset, DrawEnableShadowMapInternal)
);
@@ -666,55 +668,6 @@ static void DrawLightIntensityGUILayout(SerializedHDLight serialized, Editor own
}
}
- static void DrawColor(SerializedHDLight serialized, Editor owner)
- {
- if (GraphicsSettings.lightsUseLinearIntensity && GraphicsSettings.lightsUseColorTemperature)
- {
- // Use the color temperature bool to create a popup dropdown to choose between the two modes.
- var colorTemperaturePopupValue = Convert.ToInt32(serialized.settings.useColorTemperature.boolValue);
- colorTemperaturePopupValue = EditorGUILayout.Popup(LightUI.Styles.lightAppearance, colorTemperaturePopupValue, LightUI.Styles.lightAppearanceOptions);
- serialized.settings.useColorTemperature.boolValue = Convert.ToBoolean(colorTemperaturePopupValue);
-
- if (serialized.settings.useColorTemperature.boolValue)
- {
- EditorGUI.indentLevel += 1;
- EditorGUILayout.PropertyField(serialized.settings.color, LightUI.Styles.colorFilter);
-
- // Light unit slider
- const int k_ValueUnitSeparator = 2;
- var lineRect = EditorGUILayout.GetControlRect();
- var labelRect = lineRect;
- labelRect.width = EditorGUIUtility.labelWidth;
- EditorGUI.LabelField(labelRect, LightUI.Styles.colorTemperature);
-
- var temperatureSliderRect = lineRect;
- temperatureSliderRect.x += EditorGUIUtility.labelWidth + k_ValueUnitSeparator;
- temperatureSliderRect.width -= EditorGUIUtility.labelWidth + k_ValueUnitSeparator;
- TemperatureSliderUIDrawer.Draw(serialized.settings, serialized.serializedObject, serialized.settings.colorTemperature, temperatureSliderRect);
-
- // Value and unit label
- // Match const defined in EditorGUI.cs
- const int k_IndentPerLevel = 15;
- const int k_UnitWidth = 100 + k_IndentPerLevel;
- int indent = k_IndentPerLevel * EditorGUI.indentLevel;
- Rect valueRect = EditorGUILayout.GetControlRect();
- valueRect.width += indent - k_ValueUnitSeparator - k_UnitWidth;
- Rect unitRect = valueRect;
- unitRect.x += valueRect.width - indent + k_ValueUnitSeparator;
- unitRect.width = k_UnitWidth + .5f;
-
- EditorGUI.PropertyField(valueRect, serialized.settings.colorTemperature, CoreEditorStyles.empty);
- EditorGUI.Popup(unitRect, 0, new[] { "Kelvin" });
-
- EditorGUI.indentLevel -= 1;
- }
- else
- EditorGUILayout.PropertyField(serialized.settings.color, LightUI.Styles.color);
- }
- else
- EditorGUILayout.PropertyField(serialized.settings.color, LightUI.Styles.color);
- }
-
static void DrawEmissionContent(SerializedHDLight serialized, Editor owner)
{
HDLightType lightType = serialized.type;
@@ -1183,9 +1136,9 @@ static void DrawShadowMapContent(SerializedHDLight serialized, Editor owner)
if (serialized.settings.isMixed)
{
- bool enabled = HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.supportShadowMask;
- if (Lightmapping.TryGetLightingSettings(out var settings))
- enabled &= settings.mixedBakeMode == MixedLightingMode.Shadowmask;
+ bool enabled = HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.supportShadowMask;
+ if (Lightmapping.TryGetLightingSettings(out var settings))
+ enabled &= settings.mixedBakeMode == MixedLightingMode.Shadowmask;
using (new EditorGUI.DisabledScope(!enabled))
{
Rect nonLightmappedOnlyRect = EditorGUILayout.GetControlRect();
diff --git a/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.Drawers.cs
index 174a6835dbd..753075edfc5 100644
--- a/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.Drawers.cs
+++ b/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.Drawers.cs
@@ -59,7 +59,9 @@ enum Expandable
CED.FoldoutGroup(LightUI.Styles.emissionHeader,
Expandable.Emission,
k_ExpandedState,
- CED.Group(DrawerColor, DrawEmissionContent)),
+ CED.Group(
+ LightUI.DrawColor,
+ DrawEmissionContent)),
CED.FoldoutGroup(LightUI.Styles.renderingHeader,
Expandable.Rendering,
k_ExpandedState,
@@ -241,33 +243,6 @@ static void DrawAreaShapeContent(UniversalRenderPipelineSerializedLight serializ
serializedLight.settings.DrawArea();
}
- static void DrawerColor(UniversalRenderPipelineSerializedLight serializedLight, Editor owner)
- {
- using (var changes = new EditorGUI.ChangeCheckScope())
- {
- if (GraphicsSettings.lightsUseLinearIntensity && GraphicsSettings.lightsUseColorTemperature)
- {
- // Use the color temperature bool to create a popup dropdown to choose between the two modes.
- var colorTemperaturePopupValue = Convert.ToInt32(serializedLight.settings.useColorTemperature.boolValue);
- colorTemperaturePopupValue = EditorGUILayout.Popup(LightUI.Styles.lightAppearance, colorTemperaturePopupValue, LightUI.Styles.lightAppearanceOptions);
- serializedLight.settings.useColorTemperature.boolValue = Convert.ToBoolean(colorTemperaturePopupValue);
-
- using (new EditorGUI.IndentLevelScope())
- {
- if (serializedLight.settings.useColorTemperature.boolValue)
- {
- EditorGUILayout.PropertyField(serializedLight.settings.color, LightUI.Styles.colorFilter);
- k_SliderWithTexture(LightUI.Styles.colorTemperature, serializedLight.settings.colorTemperature, serializedLight.settings);
- }
- else
- EditorGUILayout.PropertyField(serializedLight.settings.color, LightUI.Styles.color);
- }
- }
- else
- EditorGUILayout.PropertyField(serializedLight.settings.color, LightUI.Styles.color);
- }
- }
-
static void DrawEmissionContent(UniversalRenderPipelineSerializedLight serializedLight, Editor owner)
{
serializedLight.settings.DrawIntensity();
diff --git a/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.PresetInspector.cs b/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.PresetInspector.cs
index 3145fbc1311..64c7993c9bc 100644
--- a/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.PresetInspector.cs
+++ b/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.PresetInspector.cs
@@ -22,8 +22,13 @@ partial class UniversalRenderPipelineLightUI
CED.FoldoutGroup(LightUI.Styles.emissionHeader,
Expandable.Emission,
k_ExpandedStatePreset,
- CED.Group(DrawerColor,
- DrawEmissionContent))
+ CED.Group(
+ LightUI.DrawColor,
+ DrawEmissionContent)),
+ CED.FoldoutGroup(Styles.lightCookieHeader,
+ Expandable.LightCookie,
+ k_ExpandedState,
+ DrawLightCookieContent)
);
}
}