Skip to content

Commit 93a9c8e

Browse files
alex-vazquez-unity3dEvergreen
authored andcommitted
Avoid that the HDRPBuild data is never initialized if the Graphics Settings Provider is opened.
When building, the Graphics Settings provider was being launched as the asset was changed making the HDRPBuild data incorrect. - Checking that the UI is not reloaded when building. - Checking if the instance is already correct do not ensure it. - Storing in the HDRPBuild data needed data for shader stripping.
1 parent ed35cac commit 93a9c8e

File tree

6 files changed

+19
-9
lines changed

6 files changed

+19
-9
lines changed

Packages/com.unity.render-pipelines.core/Editor/BuildProcessors/CorePreprocessBuild.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace UnityEditor.Rendering
66
//Make CoreBuildData constructed and kept till end of build
77
class CorePreprocessBuild : IPreprocessBuildWithReport, IPostprocessBuildWithReport
88
{
9-
int IOrderedCallback.callbackOrder => -1;
9+
int IOrderedCallback.callbackOrder => int.MinValue + 50;
1010

1111
private static CoreBuildData m_BuildData = null;
1212

@@ -22,4 +22,4 @@ void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport report)
2222
m_BuildData = null;
2323
}
2424
}
25-
}
25+
}

Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPBuildData.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ internal class HDRPBuildData : IDisposable
1919
public Dictionary<int, ComputeShader> rayTracingComputeShaderCache { get; private set; } = new();
2020
public Dictionary<int, ComputeShader> computeShaderCache { get; private set; } = new();
2121

22+
public HDRenderPipelineRuntimeShaders runtimeShaders { get; private set; }
23+
public HDRenderPipelineRuntimeMaterials materialResources { get; private set; }
24+
2225
public HDRPBuildData()
2326
{
2427

@@ -41,15 +44,20 @@ public HDRPBuildData(BuildTarget buildTarget, bool isDevelopmentBuild)
4144
}
4245
}
4346

44-
var hdrpGlobalSettingsInstance = HDRenderPipelineGlobalSettings.Ensure();
47+
var hdrpGlobalSettingsInstance = HDRenderPipelineGlobalSettings.instance;
48+
if (hdrpGlobalSettingsInstance == null)
49+
hdrpGlobalSettingsInstance = HDRenderPipelineGlobalSettings.Ensure();
50+
4551
if (hdrpGlobalSettingsInstance != null)
4652
{
4753
GraphicsSettings.GetRenderPipelineSettings<HDRPRayTracingResources>()
4854
.ForEachFieldOfType<ComputeShader>(computeShader => rayTracingComputeShaderCache.Add(computeShader.GetInstanceID(), computeShader));
4955

50-
var runtimeShaders = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeShaders>();
56+
runtimeShaders = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeShaders>();
5157
runtimeShaders?.ForEachFieldOfType<ComputeShader>(computeShader => computeShaderCache.Add(computeShader.GetInstanceID(), computeShader));
5258

59+
materialResources = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeMaterials>();
60+
5361
stripDebugVariants = !isDevelopmentBuild || GraphicsSettings.GetRenderPipelineSettings<ShaderStrippingSetting>().stripRuntimeDebugShaders;
5462
}
5563
}
@@ -65,6 +73,8 @@ public void Dispose()
6573
playerNeedRaytracing = false;
6674
stripDebugVariants = true;
6775
buildingPlayerForHDRenderPipeline = false;
76+
runtimeShaders = null;
77+
materialResources = null;
6878
m_Instance = null;
6979
}
7080
}

Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessBuild.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ enum ShaderFeatures : long
2222

2323
class HDRPPreprocessBuild : IPreprocessBuildWithReport, IPostprocessBuildWithReport
2424
{
25-
public int callbackOrder => 0;
25+
public int callbackOrder => int.MinValue + 100;
2626

2727
private static HDRPBuildData m_BuildData = null;
2828
private static List<ShaderFeatures> s_SupportedFeaturesList = new();

Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class CommonShaderPreprocessor : BaseShaderPreprocessor
1313

1414
public CommonShaderPreprocessor()
1515
{
16-
m_ShaderResources = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeShaders>();
17-
m_MaterialResources = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeMaterials>();
16+
m_ShaderResources = HDRPBuildData.instance.runtimeShaders;
17+
m_MaterialResources = HDRPBuildData.instance.materialResources;
1818
}
1919

2020
protected override bool DoShadersStripper(HDRenderPipelineAsset hdrpAsset, Shader shader, ShaderSnippetData snippet, ShaderCompilerData inputData)

Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/ShaderStrippers/HDRPComputeShaderVariantStripper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class HDRPComputeShaderVariantStripper : IComputeShaderVariantStripper, ICompute
2020

2121
public HDRPComputeShaderVariantStripper()
2222
{
23-
m_Shaders = GraphicsSettings.GetRenderPipelineSettings<HDRenderPipelineRuntimeShaders>();
23+
m_Shaders = HDRPBuildData.instance.runtimeShaders;
2424
}
2525

2626
// Modify this function to add more stripping clauses

Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPPreprocessBuild.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace UnityEditor.Rendering.Universal
1111
{
1212
class URPPreprocessBuild : IPreprocessBuildWithReport
1313
{
14-
public int callbackOrder => -1;
14+
public int callbackOrder => int.MinValue + 100;
1515

1616
private static URPBuildData m_BuildData = null;
1717

0 commit comments

Comments
 (0)