diff --git a/.gitattributes b/.gitattributes index 2ccd6ba96a3..05481a1b526 100644 --- a/.gitattributes +++ b/.gitattributes @@ -64,6 +64,11 @@ Repositories.ini eol=lf *.[mM][sS][iI] filter=lfs diff=lfs merge=lfs -text *.[aA][rR][cC] filter=lfs diff=lfs merge=lfs -text +# media files +*.[mM][pP]4 filter=lfs diff=lfs merge=lfs -text +*.[mM][oO][vV] filter=lfs diff=lfs merge=lfs -text +*.[wW][eE][bB][mM] filter=lfs diff=lfs merge=lfs -text + # executables and libraries *.[aA] filter=lfs diff=lfs merge=lfs -text *.[oO] filter=lfs diff=lfs merge=lfs -text @@ -361,6 +366,12 @@ Editor/Resources/unity[[:space:]]editor[[:space:]]resources filter=lfs diff=lfs **/GfxTestProjectFolder/**/*.[pP][rR][xX] filter=lfs diff=lfs merge=lfs -text **/GfxTestProjectFolder/**/*.[dD][fF][oO][nN][tT] filter=lfs diff=lfs merge=lfs -text +# Video tests +# --- +# `.ts` is used for MPEG Transport Stream files. This rule is very specific to a certain video +# package because the `.ts` extension clashes with the TypeScript file extension. +**/EditModeAndPlayModeTests/Video/**/HLS/**/*.[tT][sS] filter=lfs diff=lfs merge=lfs -text + # memoryprofiler test snapshots **/com.unity.memoryprofiler.tests/**/*.[sS][nN][aA][pP] filter=lfs diff=lfs merge=lfs -text diff --git a/Packages/com.unity.render-pipelines.core/CHANGELOG.md b/Packages/com.unity.render-pipelines.core/CHANGELOG.md index abcc691caac..97d1d7ae7ca 100644 --- a/Packages/com.unity.render-pipelines.core/CHANGELOG.md +++ b/Packages/com.unity.render-pipelines.core/CHANGELOG.md @@ -12,7 +12,7 @@ The version number for this package has increased due to a version update of a r ## [17.0.3] - 2025-02-13 -This version is compatible with Unity 6000.2.0a17. +This version is compatible with Unity 6000.2.0a5. ### Added - Added Variable Rate Shading API support for (Raster)CommandBuffer(s), RenderGraph and RTHandles. diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/Images/videos/light-anchor-animation.mp4 b/Packages/com.unity.render-pipelines.core/Documentation~/Images/videos/light-anchor-animation.mp4 index 1b7784f1e57..053921f77c8 100644 Binary files a/Packages/com.unity.render-pipelines.core/Documentation~/Images/videos/light-anchor-animation.mp4 and b/Packages/com.unity.render-pipelines.core/Documentation~/Images/videos/light-anchor-animation.mp4 differ diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/advanced-properties.md b/Packages/com.unity.render-pipelines.core/Documentation~/advanced-properties.md index c62806f8d8e..7796caa848f 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/advanced-properties.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/advanced-properties.md @@ -14,7 +14,7 @@ There is a global state per user that stores if Unity displays **advanced proper Not every component or Volume Override includes advanced properties. If one does, it has a contextual menu to the right of each property section header that includes additional properties. To expose advanced properties for that section, open the contextual menu and click **Advanced Properties**. -For an example, see the **Water Surface** component in [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest). +For an example, refer to the **Water Surface** component in [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest?subfolder=/manual/settings-and-properties-related-to-the-water-system.html). By default only standard properties are shown. diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/api_index.md b/Packages/com.unity.render-pipelines.core/Documentation~/api_index.md new file mode 100644 index 00000000000..22bf55986dd --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Documentation~/api_index.md @@ -0,0 +1,12 @@ +--- +uid: srp-core-api-index +--- + +# Scriptable Render Pipeline Core scripting API + +This is the documentation for the scripting APIs of the Scriptable Render Pipeline (SRP) Core package. + +**Note**: URP and HDRP are built on the Scriptable Render Pipeline (SRP) Core package, but have their own class types. For more information, refer to the following: + +- [Universal Render Pipeline (URP) Scripting API](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.2/api/index.html) +- [High Definition Render Pipeline (HDRP) Scripting API](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.2/api/index.html) diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/customize-ui-for-a-setting.md b/Packages/com.unity.render-pipelines.core/Documentation~/customize-ui-for-a-setting.md index bf340bb3b79..59bd163b680 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/customize-ui-for-a-setting.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/customize-ui-for-a-setting.md @@ -55,16 +55,16 @@ public class MySettingsPropertyDrawer : PropertyDrawer To add items to the **More** (⋮) menu of a settings group, follow these steps: -1. Create a class that implements the [`IRenderPipelineGraphicsSettingsContextMenu`](https://docs.unity3d.com/6000.1/Documentation/ScriptReference/Rendering.IRenderPipelineGraphicsSettingsContextMenu.html) interface. +1. Create a class that implements the [`IRenderPipelineGraphicsSettingsContextMenu2`](https://docs.unity3d.com/6000.1/Documentation/ScriptReference/Rendering.IRenderPipelineGraphicsSettingsContextMenu2_1.html) interface. 2. Implement the `PopulateContextMenu` method. 3. To add an item, use the `AddItem` API. For example: ```c# -public class MySettingsContextMenu : IRenderPipelineGraphicsSettingsContextMenu +public class MySettingsContextMenu : IRenderPipelineGraphicsSettingsContextMenu2 { - void IRenderPipelineGraphicsSettingsContextMenu.PopulateContextMenu(MySettings setting, PropertyDrawer _, ref GenericMenu menu) + void IRenderPipelineGraphicsSettingsContextMenu2.PopulateContextMenu(MySettings setting, SerializedProperty _, ref GenericMenu menu) { menu.AddItem(new GUIContent("My custom menu item"), false, () => { Debug.Log("Menu item was selected."); }); } @@ -74,4 +74,5 @@ public class MySettingsContextMenu : IRenderPipelineGraphicsSettingsContextMenu< ## Additional resources - [PropertyDrawer](xref:UnityEditor.PropertyDrawer) -- [IRenderPipelineGraphicsSettingsContextMenu](https://docs.unity3d.com/6000.1/Documentation/ScriptReference/Rendering.IRenderPipelineGraphicsSettingsContextMenu.html) +- [IRenderPipelineGraphicsSettingsContextMenu2](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/Rendering.IRenderPipelineGraphicsSettingsContextMenu2.html) +- [IRenderPipelineGraphicsSettingsContextMenu2](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/Rendering.IRenderPipelineGraphicsSettingsContextMenu2_1.html) diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-render-pipeline-asset-and-render-pipeline-instance.md b/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-render-pipeline-asset-and-render-pipeline-instance.md index 4d4b8f1088b..6631071b23e 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-render-pipeline-asset-and-render-pipeline-instance.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-render-pipeline-asset-and-render-pipeline-instance.md @@ -45,13 +45,14 @@ The following example shows how to create a script for a basic custom Render Pip ```lang-csharp using UnityEngine; using UnityEngine.Rendering; + using System.Collections.Generic; public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { } - protected override void Render (ScriptableRenderContext context, Camera[] cameras) { + protected override void Render (ScriptableRenderContext context, List cameras) { // This is where you can write custom rendering code. Customize this method to customize your SRP. } } @@ -98,6 +99,7 @@ The following example shows how to create a `RenderPipelineAsset` script that de ```lang-csharp using UnityEngine; using UnityEngine.Rendering; + using System.Collections.Generic; public class ExampleRenderPipelineInstance : RenderPipeline { @@ -119,4 +121,4 @@ The following example shows how to create a `RenderPipelineAsset` script that de ``` -5. In the Project view, either click the add (+) button, or open the context menu and navigate to **Create**, and then choose **Rendering** > **Example Render Pipeline Asset**. Unity creates a new Render Pipeline Asset in the Project view. \ No newline at end of file +5. In the Project view, either click the add (+) button, or open the context menu and navigate to **Create**, and then choose **Rendering** > **Example Render Pipeline Asset**. Unity creates a new Render Pipeline Asset in the Project view. diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-simple-render-loop.md b/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-simple-render-loop.md index 39bdda28010..95a31250e4b 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-simple-render-loop.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/srp-creating-simple-render-loop.md @@ -131,12 +131,13 @@ It shows the clearest workflow, rather than the most efficient runtime performan using UnityEngine; using UnityEngine.Rendering; +using System.Collections.Generic; public class ExampleRenderPipeline : RenderPipeline { public ExampleRenderPipeline() { } - protected override void Render (ScriptableRenderContext context, Camera[] cameras) { + protected override void Render(ScriptableRenderContext context, List cameras) { // Create and schedule a command to clear the current render target var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, true, Color.black); @@ -172,12 +173,13 @@ It shows the clearest workflow, rather than the most efficient runtime performan using UnityEngine; using UnityEngine.Rendering; +using System.Collections.Generic; public class ExampleRenderPipeline : RenderPipeline { public ExampleRenderPipeline() { } - protected override void Render (ScriptableRenderContext context, Camera[] cameras) { + protected override void Render(ScriptableRenderContext context, List cameras) { // Create and schedule a command to clear the current render target var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, true, Color.black); @@ -225,12 +227,13 @@ It shows the clearest workflow, rather than the most efficient runtime performan using UnityEngine; using UnityEngine.Rendering; +using System.Collections.Generic; public class ExampleRenderPipeline : RenderPipeline { public ExampleRenderPipeline() { } - protected override void Render (ScriptableRenderContext context, Camera[] cameras) { + protected override void Render(ScriptableRenderContext context, List cameras) { // Create and schedule a command to clear the current render target var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, true, Color.black); diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/srp-using-scriptable-render-context.md b/Packages/com.unity.render-pipelines.core/Documentation~/srp-using-scriptable-render-context.md index 114362d9edc..5b34b69e6d5 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/srp-using-scriptable-render-context.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/srp-using-scriptable-render-context.md @@ -26,11 +26,12 @@ This example code demonstrates how to schedule and perform a command to clear th ```lang-csharp using UnityEngine; using UnityEngine.Rendering; +using System.Collections.Generic; public class ExampleRenderPipeline : RenderPipeline { - public ExampleRenderPipeline() { - } + public ExampleRenderPipeline() { + } protected override void Render(ScriptableRenderContext context, List cameras) { // Create and schedule a command to clear the current render target diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/whats-new-17.md b/Packages/com.unity.render-pipelines.core/Documentation~/whats-new-17.md index 0aee2ac7f4f..eb305f87c54 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/whats-new-17.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/whats-new-17.md @@ -1,4 +1,8 @@ -# What's new in SRP Core 17.1 / Unity 6.1 +# What's new in SRP Core 17 / Unity 6 + +**Note:** Starting with 17.2 (Unity 6.2), refer to [What’s new in Unity](xref:um-whats-new) for the latest updates and improvements. + +## What's new in SRP Core 17.1 / Unity 6.1 The following are the new features and improvements added to the SRP Core package 17.1, embedded Unity 6.1. ## Added diff --git a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CoreBuildData.cs b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CoreBuildData.cs index 08e01d12352..a6455d25afb 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CoreBuildData.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CoreBuildData.cs @@ -19,11 +19,6 @@ public class CoreBuildData : IDisposable /// public static CoreBuildData instance => m_Instance ??= CreateInstance(); - /// - /// Returns if the build is done for debug - /// - public bool isDevelopmentBuild { get; set; } - /// /// If the target build has an SRP configured /// @@ -44,32 +39,24 @@ public class CoreBuildData : IDisposable internal bool pipelineSupportGPUResidentDrawer { get; private set; } = false; internal bool playerNeedGPUResidentDrawer { get; private set; } = false; - /// - /// Initializes a new instance of the class for the core library. - /// This constructor may also be invoked when building Asset Bundles. - /// - /// The target platform for the build (e.g., Standalone, iOS, Android). - /// Indicates whether the build is a development build. If true, the build includes debugging and logging features. - public CoreBuildData(BuildTarget buildTarget, bool isDevelopmentBuild) - + private CoreBuildData(BuildTarget buildTarget) { - if (buildTarget.TryGetRenderPipelineAssets(renderPipelineAssets)) - { - buildingPlayerForRenderPipeline = true; + m_Instance = this; + + if (!buildTarget.TryGetRenderPipelineAssets(renderPipelineAssets)) + return; - //We can check only the first as we don't support multiple pipeline type in player - var asset = renderPipelineAssets[0]; - currentRenderPipelineAssetType = asset.GetType(); + buildingPlayerForRenderPipeline = true; - CheckGPUResidentDrawerUsage(); - } + //We can check only the first as we don't support multiple pipeline type in player + var asset = renderPipelineAssets[0]; + currentRenderPipelineAssetType = asset.GetType(); - this.isDevelopmentBuild = isDevelopmentBuild; - m_Instance = this; + CheckGPUResidentDrawerUsage(); } private static CoreBuildData CreateInstance() - => new(EditorUserBuildSettings.activeBuildTarget, Debug.isDebugBuild); + => new(EditorUserBuildSettings.activeBuildTarget); private void CheckGPUResidentDrawerUsage() { diff --git a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CorePreprocessBuild.cs b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CorePreprocessBuild.cs index 54c9eae7730..066461e1dda 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CorePreprocessBuild.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CorePreprocessBuild.cs @@ -3,7 +3,7 @@ namespace UnityEditor.Rendering { - // Make CoreBuildData constructed and keep the instance until the end of build + //Make CoreBuildData constructed and kept till end of build class CorePreprocessBuild : IPreprocessBuildWithReport, IPostprocessBuildWithReport { int IOrderedCallback.callbackOrder => int.MinValue + 50; @@ -13,8 +13,7 @@ class CorePreprocessBuild : IPreprocessBuildWithReport, IPostprocessBuildWithRep void IPreprocessBuildWithReport.OnPreprocessBuild(BuildReport report) { m_BuildData?.Dispose(); - bool isDevelopmentBuild = (report.summary.options & BuildOptions.Development) != 0; - m_BuildData = new CoreBuildData(EditorUserBuildSettings.activeBuildTarget, isDevelopmentBuild); + m_BuildData = CoreBuildData.instance; } void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport report) diff --git a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs deleted file mode 100644 index 8d8de53132f..00000000000 --- a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs +++ /dev/null @@ -1,17 +0,0 @@ -using UnityEngine.Rendering; - -namespace UnityEditor.Rendering -{ - class RenderingDebuggerRuntimeResourcesStripper : IRenderPipelineGraphicsSettingsStripper - { - public bool active => true; - - public bool CanRemoveSettings(RenderingDebuggerRuntimeResources settings) - { - // When building for any SRP, we assume that we support the Rendering Debugger - // But, if we are building for retail builds, we strip those runtime UI resources from the final player - if (!CoreBuildData.instance.buildingPlayerForRenderPipeline) return true; - return !CoreBuildData.instance.isDevelopmentBuild; - } - } -} diff --git a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs.meta b/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs.meta deleted file mode 100644 index 100a6dca5a2..00000000000 --- a/Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/SettingsStrippers/RenderingDebuggerRuntimeResourcesStripper.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 6e822da6eeb446d6b972b3dd976f906e -timeCreated: 1736862653 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Editor/CoreEditorStyles.cs b/Packages/com.unity.render-pipelines.core/Editor/CoreEditorStyles.cs index c624b204fad..45fcdc57e02 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/CoreEditorStyles.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/CoreEditorStyles.cs @@ -118,6 +118,8 @@ public static GUIStyle miniLabelButton /// Warning icon public static readonly Texture2D iconWarn; + /// Info icon + public static readonly Texture2D iconInfo; /// Help icon public static readonly Texture2D iconHelp; /// Fail icon @@ -144,7 +146,7 @@ internal static Texture2D GetMessageTypeIcon(MessageType messageType) case MessageType.None: return null; case MessageType.Info: - return iconHelp; + return iconInfo; case MessageType.Warning: return iconWarn; case MessageType.Error: @@ -215,7 +217,8 @@ static CoreEditorStyles() greenTexture = CoreEditorUtils.CreateColoredTexture2D(Color.green, "Green 1x1"); blueTexture = CoreEditorUtils.CreateColoredTexture2D(Color.blue, "Blue 1x1"); - iconHelp = CoreEditorUtils.LoadIcon("icons", "console.infoicon", ".png"); + iconHelp = CoreEditorUtils.LoadIcon("icons", "_Help", ".png"); + iconInfo = CoreEditorUtils.LoadIcon("icons", "console.infoicon", ".png"); iconWarn = CoreEditorUtils.LoadIcon("icons", "console.warnicon", ".png"); iconFail = CoreEditorUtils.LoadIcon("icons", "console.erroricon", ".png"); iconSuccess = EditorGUIUtility.FindTexture("TestPassed"); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs index cbd40f64e0f..2e72da47421 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs @@ -179,7 +179,7 @@ public sealed class DebugStateInt : DebugState { } /// /// Object Debug State. /// - [Serializable, DebugState(typeof(DebugUI.ObjectPopupField), typeof(DebugUI.CameraSelector))] + [Serializable, DebugState(typeof(DebugUI.ObjectPopupField), typeof(DebugUI.CameraSelector), typeof(DebugUI.ObjectField))] public sealed class DebugStateObject : DebugState { /// diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs index 6c31172a55e..1236c047ef2 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs @@ -477,6 +477,8 @@ static void DisplayColumns(Rect drawRect, List rowContents) /// Debug State associated with the Debug Item. public override void Begin(DebugUI.Widget widget, DebugState state) { + CoreEditorUtils.DrawSplitter(); + var w = Cast(widget); var s = Cast(state); @@ -484,7 +486,7 @@ public override void Begin(DebugUI.Widget widget, DebugState state) Action fillContextMenuAction = null; - if (w.contextMenuItems != null) + if (w.contextMenuItems is { Count: > 0 }) { fillContextMenuAction = menu => { @@ -495,7 +497,7 @@ public override void Begin(DebugUI.Widget widget, DebugState state) }; } - bool previousValue = (bool)w.GetValue(); + bool previousValue = w.GetValue(); bool value = CoreEditorUtils.DrawHeaderFoldout(title, previousValue, isTitleHeader: w.isHeader, customMenuContextAction: fillContextMenuAction, documentationURL: w.documentationUrl); if (previousValue != value) Apply(w, s, value); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs index be733338d7c..625821b9870 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs @@ -132,6 +132,7 @@ static void Init() { var window = GetWindow(); window.titleContent = Styles.windowTitle; + window.minSize = new Vector2(800f, 300f); } [MenuItem("Window/Analysis/Rendering Debugger", validate = true)] @@ -409,16 +410,6 @@ void OnGUI() return; } - // Background color - var wrect = position; - wrect.x = 0; - wrect.y = 0; - var oldColor = GUI.color; - GUI.color = s_Styles.skinBackgroundColor; - GUI.DrawTexture(wrect, EditorGUIUtility.whiteTexture); - GUI.color = oldColor; - - GUILayout.BeginHorizontal(EditorStyles.toolbar); GUILayout.FlexibleSpace(); if (GUILayout.Button(Styles.resetButtonContent, EditorStyles.toolbarButton)) @@ -513,8 +504,14 @@ void OnGUI() using (var scrollScope = new EditorGUILayout.ScrollViewScope(m_ContentScroll)) { + const float scrollViewTopMargin = 4f; + GUILayout.Space(scrollViewTopMargin); + TraverseContainerGUI(selectedPanel); m_ContentScroll = scrollScope.scrollPosition; + + const float scrollViewBottomMargin = 10f; + GUILayout.Space(scrollViewBottomMargin); } } @@ -567,8 +564,6 @@ void OnWidgetGUI(DebugUI.Widget widget) return; } - GUILayout.Space(4); - if (!s_WidgetDrawerMap.TryGetValue(widget.GetType(), out DebugUIDrawer drawer)) { foreach (var pair in s_WidgetDrawerMap) @@ -635,8 +630,6 @@ public class Styles public readonly GUIStyle sectionScrollView = "PreferencesSectionBox"; public readonly GUIStyle sectionElement = new GUIStyle("PreferencesSection"); public readonly GUIStyle selected = "OL SelectedRow"; - public readonly GUIStyle sectionHeader = new GUIStyle(EditorStyles.largeLabel); - public readonly Color skinBackgroundColor; public static GUIStyle centeredLeft = new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleLeft }; public static GUIStyle centeredLeftAlternate = new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleLeft }; @@ -646,15 +639,10 @@ public class Styles public Styles() { - Color textColorDarkSkin = new Color32(210, 210, 210, 255); - Color textColorLightSkin = new Color32(102, 102, 102, 255); - Color backgroundColorDarkSkin = new Color32(38, 38, 38, 128); - Color backgroundColorLightSkin = new Color32(128, 128, 128, 96); - centeredLeftAlternate.normal.background = CoreEditorUtils.CreateColoredTexture2D( EditorGUIUtility.isProSkin ? new Color(63 / 255.0f, 63 / 255.0f, 63 / 255.0f, 255 / 255.0f) - : new Color(202 / 255.0f, 202 / 255.0f, 202 / 255.0f, 255 / 255.0f), + : new Color(211 / 255.0f, 211 / 255.0f, 211 / 255.0f, 211 / 255.0f), "centeredLeftAlternate Background"); sectionScrollView = new GUIStyle(sectionScrollView); @@ -662,19 +650,12 @@ public Styles() sectionElement.alignment = TextAnchor.MiddleLeft; - sectionHeader.fontStyle = FontStyle.Bold; - sectionHeader.fontSize = 18; - sectionHeader.margin.top = 10; - sectionHeader.margin.left += 1; - sectionHeader.normal.textColor = EditorGUIUtility.isProSkin ? textColorDarkSkin : textColorLightSkin; - skinBackgroundColor = EditorGUIUtility.isProSkin ? backgroundColorDarkSkin : backgroundColorLightSkin; - labelWithZeroValueStyle.normal.textColor = Color.gray; // Make sure that textures are unloaded on domain reloads. void OnBeforeAssemblyReload() { - UnityEngine.Object.DestroyImmediate(centeredLeftAlternate.normal.background); + DestroyImmediate(centeredLeftAlternate.normal.background); AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload; } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs b/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs index cea5bdd6459..e2431b6ecaa 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; +using UnityEngine.UIElements; namespace UnityEditor.Rendering { @@ -182,7 +183,28 @@ public DefaultVolumeProfileEditor(Editor baseEditor, VolumeProfile profile) } } + public abstract partial class DefaultVolumeProfileSettingsPropertyDrawer + { + /// + /// Context menu implementation for Default Volume Profile. + /// + /// Default Volume Profile Settings type + /// Render Pipeline type + [Obsolete("Use DefaultVolumeProfileSettingsPropertyDrawer.DefaultVolumeProfileSettingsContextMenu2 instead #from(6000.0)")] + public abstract class DefaultVolumeProfileSettingsContextMenu : IRenderPipelineGraphicsSettingsContextMenu + where TSetting : class, IDefaultVolumeProfileSettings + where TRenderPipeline : RenderPipeline + { + /// + /// Path where new Default Volume Profile will be created. + /// + [Obsolete("Not used anymore. #from(6000.0)")] + protected abstract string defaultVolumeProfilePath { get; } + [Obsolete("Not used anymore. #from(6000.0)")] + void IRenderPipelineGraphicsSettingsContextMenu.PopulateContextMenu(TSetting setting, PropertyDrawer property, ref GenericMenu menu){ } + } + } /// /// Builtin Drawer for Maskfield Debug Items. diff --git a/Packages/com.unity.render-pipelines.core/Editor/FilterWindow.cs b/Packages/com.unity.render-pipelines.core/Editor/FilterWindow.cs index 3be64f05a9e..f765de2fce3 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/FilterWindow.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/FilterWindow.cs @@ -232,8 +232,6 @@ void OnDisable() s_FilterWindow = null; } - void OnLostFocus() => Close(); - internal static bool ValidateAddComponentMenuItem() { return true; diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/.buginfo b/Packages/com.unity.render-pipelines.core/Editor/Icons/.buginfo index 232e4ce2766..dab9babb33b 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Icons/.buginfo +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/.buginfo @@ -1,4 +1,5 @@ -area: SRP Settings +default: + area: SRP Settings graphic-tools: when: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs index bb04940a8bb..de20efb7d8e 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs @@ -647,7 +647,12 @@ public void Dispose() static bool m_IsInit = false; static BakingBatch m_BakingBatch; - static ProbeVolumeBakingSet m_BakingSet = null; + static ProbeVolumeBakingSetWeakReference m_BakingSetReference = new(); + static ProbeVolumeBakingSet m_BakingSet + { + get => m_BakingSetReference.Get(); + set => m_BakingSetReference.Set(value); + } static TouchupVolumeWithBoundsList s_AdjustmentVolumes; static Bounds globalBounds = new Bounds(); @@ -945,8 +950,11 @@ internal static bool PrepareBaking() static bool InitializeBake() { - if (ProbeVolumeLightingTab.instance?.PrepareAPVBake() == false) return false; - if (!ProbeReferenceVolume.instance.isInitialized || !ProbeReferenceVolume.instance.enabledBySRP) return false; + if (ProbeVolumeLightingTab.instance?.PrepareAPVBake(ProbeReferenceVolume.instance) == false) + return false; + + if (!ProbeReferenceVolume.instance.isInitialized || !ProbeReferenceVolume.instance.enabledBySRP) + return false; using var scope = new BakingSetupProfiling(BakingSetupProfiling.Stages.PrepareWorldSubdivision); @@ -961,13 +969,16 @@ static bool InitializeBake() } } - if (ProbeReferenceVolume.instance.perSceneDataList.Count == 0) return false; + if (ProbeReferenceVolume.instance.perSceneDataList.Count == 0) + return false; var sceneDataList = GetPerSceneDataList(); - if (sceneDataList.Count == 0) return false; + if (sceneDataList.Count == 0) + return false; var pvList = GetProbeVolumeList(); - if (pvList.Count == 0) return false; // We have no probe volumes. + if (pvList.Count == 0) + return false; // We have no probe volumes. CachePVHashes(pvList); @@ -1491,11 +1502,14 @@ static void ApplyPostBakeOperations() if (m_BakingSet.hasDilation) { // This subsequent block needs to happen AFTER we call WriteBakingCells. - // Otherwise in cases where we change the spacing between probes, we end up loading cells with a certain layout in ForceSHBand + // Otherwise, in cases where we change the spacing between probes, we end up loading cells with a certain layout in ForceSHBand // And then we unload cells using the wrong layout in PerformDilation (after WriteBakingCells updates the baking set object) which leads to a broken internal state. // Don't use Disk streaming to avoid having to wait for it when doing dilation. probeRefVolume.ForceNoDiskStreaming(true); + // Increase the memory budget to make sure we can fit the current cell and all its neighbors when doing dilation. + var prevMemoryBudget = probeRefVolume.memoryBudget; + probeRefVolume.ForceMemoryBudget(ProbeVolumeTextureMemoryBudget.MemoryBudgetHigh); // Force maximum sh bands to perform baking, we need to store what sh bands was selected from the settings as we need to restore it after. var prevSHBands = probeRefVolume.shBands; probeRefVolume.ForceSHBand(ProbeVolumeSHBands.SphericalHarmonicsL2); @@ -1506,8 +1520,9 @@ static void ApplyPostBakeOperations() using (new BakingCompleteProfiling(BakingCompleteProfiling.Stages.PerformDilation)) PerformDilation(); - // Need to restore the original state + // Restore the original state. probeRefVolume.ForceNoDiskStreaming(false); + probeRefVolume.ForceMemoryBudget(prevMemoryBudget); probeRefVolume.ForceSHBand(prevSHBands); } else diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs index dffbc3e31da..93fe0f073d5 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs @@ -148,7 +148,7 @@ public override void OnInspectorGUI() if (ProbeVolumeLightingTab.GetLightingSettings().realtimeGI) { - EditorGUILayout.HelpBox("Adaptive Probe Volumes are not supported when using Enlighten.", MessageType.Warning, wide: true); + EditorGUILayout.HelpBox("Adaptive Probe Volumes are not supported when using Realtime Global Illumination(Enlighten).", MessageType.Warning, wide: true); drawInspector = false; } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs index c556fbdce65..b7d5271ddef 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs @@ -102,7 +102,7 @@ static ProbeVolumeBakingSet defaultSet } } - public static ProbeVolumeLightingTab instance; + public static ProbeVolumeLightingTab instance = new(); public static bool singleSceneMode => instance?.m_SingleSceneMode ?? true; @@ -112,18 +112,18 @@ static ProbeVolumeBakingSet defaultSet bool m_TempBakingSet = false; bool m_Initialized = false; - ProbeVolumeBakingSet m_ActiveSet; + ProbeVolumeBakingSetWeakReference m_ActiveSet = new(); ProbeVolumeBakingSet activeSet { - get => m_ActiveSet; + get => m_ActiveSet.Get(); set { - if (ReferenceEquals(m_ActiveSet, value)) return; - if (m_TempBakingSet) Object.DestroyImmediate(m_ActiveSet); - m_ActiveSet = value; + if (ReferenceEquals(m_ActiveSet.Get(), value)) return; + if (m_TempBakingSet) Object.DestroyImmediate(m_ActiveSet.Get()); + m_ActiveSet.Set(value); m_TempBakingSet = false; - if (m_ActiveSet == null) return; - m_SingleSceneMode = m_ActiveSet.singleSceneMode; + if (m_ActiveSet.Get() == null) return; + m_SingleSceneMode = m_ActiveSet.Get().singleSceneMode; InitializeSceneList(); } } @@ -169,14 +169,14 @@ public override void OnEnable() bool FindActiveSet() { - if (m_ActiveSet == null) + if (m_ActiveSet.Get() == null) { activeSet = ProbeVolumeBakingSet.GetBakingSetForScene(SceneManager.GetActiveScene()); for (int i = 0; activeSet == null && i < SceneManager.sceneCount; i++) activeSet = ProbeVolumeBakingSet.GetBakingSetForScene(SceneManager.GetSceneAt(i)); } - return m_ActiveSet != null; + return m_ActiveSet.Get() != null; } void Initialize() @@ -359,7 +359,7 @@ void BakingGUI() { if (newSet != null) { EditorUtility.SetDirty(newSet); newSet.singleSceneMode = false; } activeSet = newSet; - + ProbeReferenceVolume.instance.Clear(); } @@ -959,12 +959,14 @@ static bool BakeAllReflectionProbes() return (bool)k_Lightmapping_BakeAllReflectionProbesSnapshots.Invoke(null, null); } - internal bool PrepareAPVBake() + internal bool PrepareAPVBake(ProbeReferenceVolume prv) { - var prv = ProbeReferenceVolume.instance; if (!prv.isInitialized || !prv.enabledBySRP) return false; + // Always baking with a fresh activeSet + activeSet = null; + // In case UI was never opened we have to setup some stuff FindActiveSet(); @@ -981,9 +983,11 @@ internal bool PrepareAPVBake() { if(!activeSet.DialogNoProbeVolumeInSetShown()) { - if(EditorUtility.DisplayDialog("No Adaptive Probe Volume in Scene", "Adaptive Probe Volumes are enabled for this Project, but none exist in the Scene.\n\n" + - "Do you wish to add an Adaptive Probe Volume to the Active Scene?", "Yes", "No")) - CreateProbeVolume(); + if (!Application.isBatchMode) + if (EditorUtility.DisplayDialog("No Adaptive Probe Volume in Scene", + "Adaptive Probe Volumes are enabled for this Project, but none exist in the Scene.\n\n" + + "Do you wish to add an Adaptive Probe Volume to the Active Scene?", "Yes", "No")) + CreateProbeVolume(); activeSet.SetDialogNoProbeVolumeInSetShown(true); } } @@ -991,7 +995,13 @@ internal bool PrepareAPVBake() { if (GetFirstProbeVolumeInNonActiveScene() != null) { - int res = EditorUtility.DisplayDialogComplex("Create Baking Set?", "You are using the Single Scene Baking Mode and have more than one Scene loaded. It is not possible to generate lighting.\n\n" + + const string warning = "You are using the Single Scene Baking Mode and have more than one Scene loaded. It is not possible to generate lighting."; + if (Application.isBatchMode) + { + Debug.LogWarning(warning + " Consider creating a Baking Set."); + return false; + } + int res = EditorUtility.DisplayDialogComplex("Create Baking Set?", warning + "\n\n" + "Do you want to create a Baking Set instead?", "Yes", "Cancel", "Bake anyway"); if (res == 0) ConvertTempBakingSet(); @@ -1022,7 +1032,7 @@ internal bool PrepareAPVBake() if (AdaptiveProbeVolumes.partialBakeSceneList.Count == activeSet.sceneGUIDs.Count) AdaptiveProbeVolumes.partialBakeSceneList = null; - if (ProbeReferenceVolume.instance.supportLightingScenarios && !activeSet.m_LightingScenarios.Contains(activeSet.lightingScenario) && activeSet.m_LightingScenarios.Count > 0) + if (prv.supportLightingScenarios && !activeSet.m_LightingScenarios.Contains(activeSet.lightingScenario) && activeSet.m_LightingScenarios.Count > 0) activeSet.SetActiveScenario(activeSet.m_LightingScenarios[0], false); // Layout has changed and is incompatible. @@ -1030,14 +1040,26 @@ internal bool PrepareAPVBake() { if (AdaptiveProbeVolumes.partialBakeSceneList != null) { - if (EditorUtility.DisplayDialog("Incompatible Layout", "You are partially baking the set with an incompatible cell layout. Proceeding will invalidate all previously bake data.\n\n" + "Do you wish to continue?", "Yes", "No")) + const string warning = "You are partially baking the set with an incompatible cell layout."; + if (Application.isBatchMode) + { + Debug.LogWarning(warning); + return false; + } + if (EditorUtility.DisplayDialog("Incompatible Layout", warning + " Proceeding will invalidate all previously bake data.\n\n" + "Do you wish to continue?", "Yes", "No")) ClearBakedData(); else return false; } - else if (ProbeReferenceVolume.instance.supportLightingScenarios && activeSet.scenarios.Count != (activeSet.scenarios.ContainsKey(activeSet.lightingScenario) ? 1 : 0)) + else if (prv.supportLightingScenarios && activeSet.scenarios.Count != (activeSet.scenarios.ContainsKey(activeSet.lightingScenario) ? 1 : 0)) { - if (EditorUtility.DisplayDialog("Incompatible Layout", "You are baking scenarios with incompatible cell layouts. Proceeding will invalidate all previously bake data.\n\n" + "Do you wish to continue?", "Yes", "No")) + const string warning = "You are baking scenarios with incompatible cell layouts."; + if (Application.isBatchMode) + { + Debug.LogWarning(warning); + return false; + } + if (EditorUtility.DisplayDialog("Incompatible Layout", warning + " Proceeding will invalidate all previously bake data.\n\n" + "Do you wish to continue?", "Yes", "No")) ClearBakedData(); else return false; diff --git a/Packages/com.unity.render-pipelines.core/Editor/MaterialUpgrader.cs b/Packages/com.unity.render-pipelines.core/Editor/MaterialUpgrader.cs index d5aae4eeb59..de1841763cd 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/MaterialUpgrader.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/MaterialUpgrader.cs @@ -632,6 +632,8 @@ public static void UpgradeSelection(List upgraders, HashSet()); RebuildHeaderUI(); } void OnGraphUnregistered(RenderGraph graph) { + if (!m_RegisteredGraphs.ContainsKey(graph)) + return; + m_RegisteredGraphs.Remove(graph); RebuildHeaderUI(); if (m_RegisteredGraphs.Count == 0) diff --git a/Packages/com.unity.render-pipelines.core/Editor/SampleDependencyImportSystem/SampleDependencyImporter.cs b/Packages/com.unity.render-pipelines.core/Editor/SampleDependencyImportSystem/SampleDependencyImporter.cs index 56d25b9aefb..734e122df1e 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/SampleDependencyImportSystem/SampleDependencyImporter.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/SampleDependencyImportSystem/SampleDependencyImporter.cs @@ -8,7 +8,7 @@ using PackageInfo = UnityEditor.PackageManager.PackageInfo; /// -/// To implement this, the package needs to starts with k_srpPrefixPackage +/// To implement this, the package needs to be in the allowedPackageList /// Then, in the package.json, an array can be added after the path variable of the sample. The path should start from the Packages/ folder, as such: /// "samples": [ /// { @@ -48,7 +48,14 @@ static SampleDependencyImporter() PackageManagerExtensions.RegisterExtension(new SampleDependencyImporter()); } - const string k_unityPrefixPackage = "com.unity."; + string[] allowedPackageList = + { + "com.unity.render-pipelines.high-definition", + "com.unity.render-pipelines.universal", + "com.unity.shadergraph", + "com.unity.visualeffectgraph" + }; + bool importingTextMeshProEssentialResources = false; PackageInfo m_PackageInfo; @@ -65,16 +72,27 @@ public void OnPackageRemoved(PackageInfo packageInfo) {} /// void IPackageManagerExtension.OnPackageSelectionChange(PackageInfo packageInfo) { - var isUnityPackage = packageInfo != null && packageInfo.name.StartsWith(k_unityPrefixPackage); - - if (isUnityPackage) - { + if (packageInfo == null) + return; + + // Triggers the dependencies import only on specific packages + bool packageFound = false; + foreach (string name in allowedPackageList) + if (name == packageInfo.name) + { + packageFound = true; + break; + } - - - m_PackageInfo = packageInfo; - m_Samples = GetSamples(packageInfo); + if (!packageFound) + return; + + m_PackageInfo = packageInfo; + m_Samples = GetSamples(packageInfo); + // Only trigger the import if the package has samples. + if (m_Samples != null && m_Samples.Count > 0) + { if (TryLoadSampleConfiguration(m_PackageInfo, out m_SampleList)) { SamplePostprocessor.AssetImported += LoadAssetDependencies; @@ -110,13 +128,11 @@ static bool TryLoadSampleConfiguration(PackageInfo packageInfo, out SampleList c /// void LoadAssetDependencies(string assetPath) { - - ImportTextMeshProEssentialResources(); - if (m_SampleList != null) { var assetsImported = false; - + bool atLeastOneIsSampleDirectory = false; + for (int i = 0; i < m_Samples.Count; ++i) { string pathPrefix = $"Assets/Samples/{m_PackageInfo.displayName}/{m_PackageInfo.version}/"; @@ -125,18 +141,23 @@ void LoadAssetDependencies(string assetPath) var isSampleDirectory = assetPath.EndsWith(m_Samples[i].displayName) && assetPath.StartsWith(pathPrefix); if (isSampleDirectory) { + atLeastOneIsSampleDirectory = true; + // Retrieving the dependencies of the sample that is currently being imported. SampleInformation currentSampleInformation = GetSampleInformation(m_Samples[i].displayName); if (currentSampleInformation != null) { // Import the common asset dependencies - assetsImported = ImportDependencies(m_PackageInfo, currentSampleInformation.dependencies); + assetsImported = ImportDependencies(m_PackageInfo, currentSampleInformation.dependencies); } } } - - + + // Only import TMPro resources if a sample is currently imported. + // This is done outside the loop to save cost. + if (atLeastOneIsSampleDirectory) + ImportTextMeshProEssentialResources(); if (assetsImported) AssetDatabase.Refresh(); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Settings/PropertyDrawers/DefaultVolumeProfileSettingsPropertyDrawer.cs b/Packages/com.unity.render-pipelines.core/Editor/Settings/PropertyDrawers/DefaultVolumeProfileSettingsPropertyDrawer.cs index b030fc73132..bd307155ce0 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Settings/PropertyDrawers/DefaultVolumeProfileSettingsPropertyDrawer.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Settings/PropertyDrawers/DefaultVolumeProfileSettingsPropertyDrawer.cs @@ -8,7 +8,7 @@ namespace UnityEditor.Rendering /// /// Base implementation for drawing Default Volume Profile UI in Graphics Settings. /// - public abstract class DefaultVolumeProfileSettingsPropertyDrawer : PropertyDrawer + public abstract partial class DefaultVolumeProfileSettingsPropertyDrawer : PropertyDrawer { // UUM-77758: Due to how PropertyDrawers are created and cached, there is no way to retrieve them reliably // later. We know that only one DefaultVolumeProfile exists at any given time, so we can access it through @@ -118,7 +118,7 @@ protected void DestroyDefaultVolumeProfileEditor() /// /// Default Volume Profile Settings type /// Render Pipeline type - public abstract class DefaultVolumeProfileSettingsContextMenu : IRenderPipelineGraphicsSettingsContextMenu + public abstract class DefaultVolumeProfileSettingsContextMenu2 : IRenderPipelineGraphicsSettingsContextMenu2 where TSetting : class, IDefaultVolumeProfileSettings where TRenderPipeline : RenderPipeline { @@ -127,7 +127,7 @@ public abstract class DefaultVolumeProfileSettingsContextMenu protected abstract string defaultVolumeProfilePath { get; } - void IRenderPipelineGraphicsSettingsContextMenu.PopulateContextMenu(TSetting setting, PropertyDrawer _, ref GenericMenu menu) + void IRenderPipelineGraphicsSettingsContextMenu2.PopulateContextMenu(TSetting setting, SerializedProperty _, ref GenericMenu menu) { bool canCreateNewAsset = RenderPipelineManager.currentPipeline is TRenderPipeline; VolumeProfileUtils.AddVolumeProfileContextMenuItems(ref menu, diff --git a/Packages/com.unity.render-pipelines.core/Editor/StyleSheets/RenderGraphViewerLight.uss b/Packages/com.unity.render-pipelines.core/Editor/StyleSheets/RenderGraphViewerLight.uss index cd4c9aa0135..b63d6c3ff0e 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/StyleSheets/RenderGraphViewerLight.uss +++ b/Packages/com.unity.render-pipelines.core/Editor/StyleSheets/RenderGraphViewerLight.uss @@ -10,7 +10,7 @@ --pass-block-color--highlight: white; --pass-block-text-color--highlight: var(--unity-colors-default-text-hover); --pass-block-color--culled: rgb(30, 30, 30); - --grid-line-color: var(--unity-colors-app_toolbar_button-background-hover); + --grid-line-color: #d6d6d6; --grid-line-color--hover: white; --resource-helper-line-color: #b0b0b0; --resource-helper-line-color--hover: white; diff --git a/Packages/com.unity.render-pipelines.core/Editor/UXML/VolumeEditor.uxml b/Packages/com.unity.render-pipelines.core/Editor/UXML/VolumeEditor.uxml index 7d9e4742b95..22d89d92071 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/UXML/VolumeEditor.uxml +++ b/Packages/com.unity.render-pipelines.core/Editor/UXML/VolumeEditor.uxml @@ -1,17 +1,17 @@