Skip to content

Commit f05e5db

Browse files
committed
Improved EditorResourceAsset load and shader warnings
1 parent a69225d commit f05e5db

File tree

3 files changed

+25
-40
lines changed

3 files changed

+25
-40
lines changed

com.unity.render-pipelines.universal/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
168168
- Fixed shader compilation errors when using multiple lights in DX10 level GPU. [case 1222302](https://issuetracker.unity3d.com/issues/urp-no-materials-apart-from-ui-are-rendered-when-using-direct3d11-graphics-api-on-a-dx10-gpu)
169169
- Fixed an issue with shadows not being correctly calculated in some shaders.
170170
- Fixed invalid implementation of one function in LWRP -> URP backward compatibility support.
171+
- Fixed issues with performance when importing fbx files
172+
- Fixed issues with NullReferenceException happening with URP shaders after rebuilding project
171173

172174
## [7.1.1] - 2019-09-05
173175
### Upgrade Guide

com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ public class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerializationC
180180
internal UniversalRenderPipelineEditorResources m_EditorResourcesAsset;
181181

182182
public static readonly string packagePath = "Packages/com.unity.render-pipelines.universal";
183+
public static readonly string editorResourcesGUID = "a3d8d823eedde654bb4c11a1cfaf1abb";
183184

184185
public static UniversalRenderPipelineAsset Create(ScriptableRendererData rendererData = null)
185186
{
@@ -189,8 +190,10 @@ public static UniversalRenderPipelineAsset Create(ScriptableRendererData rendere
189190
instance.m_RendererDataList[0] = rendererData;
190191
else
191192
instance.m_RendererDataList[0] = CreateInstance<ForwardRendererData>();
193+
192194
// Initialize default Renderer
193-
instance.m_EditorResourcesAsset = LoadResourceFile<UniversalRenderPipelineEditorResources>();
195+
instance.m_EditorResourcesAsset = instance.editorResources;
196+
194197
return instance;
195198
}
196199

@@ -247,38 +250,15 @@ static void CreateUniversalPipelineEditorResources()
247250
AssetDatabase.CreateAsset(instance, string.Format("Assets/{0}.asset", typeof(UniversalRenderPipelineEditorResources).Name));
248251
}
249252

250-
static T LoadResourceFile<T>() where T : ScriptableObject
251-
{
252-
T resourceAsset = null;
253-
var guids = AssetDatabase.FindAssets(typeof(T).Name + " t:scriptableobject", new[] { "Assets" });
254-
foreach (string guid in guids)
255-
{
256-
string path = AssetDatabase.GUIDToAssetPath(guid);
257-
resourceAsset = AssetDatabase.LoadAssetAtPath<T>(path);
258-
if (resourceAsset != null)
259-
break;
260-
}
261-
262-
// There's currently an issue that prevents FindAssets from find resources withing the package folder.
263-
if (resourceAsset == null)
264-
{
265-
string path = packagePath + "/Runtime/Data/" + typeof(T).Name + ".asset";
266-
resourceAsset = AssetDatabase.LoadAssetAtPath<T>(path);
267-
}
268-
269-
// Validate the resource file
270-
ResourceReloader.TryReloadAllNullIn(resourceAsset, packagePath);
271-
272-
return resourceAsset;
273-
}
274-
275253
UniversalRenderPipelineEditorResources editorResources
276254
{
277255
get
278256
{
279-
if (m_EditorResourcesAsset == null)
280-
m_EditorResourcesAsset = LoadResourceFile<UniversalRenderPipelineEditorResources>();
257+
if (m_EditorResourcesAsset != null && !m_EditorResourcesAsset.Equals(null))
258+
return m_EditorResourcesAsset;
281259

260+
string resourcePath = AssetDatabase.GUIDToAssetPath(editorResourcesGUID);
261+
m_EditorResourcesAsset = AssetDatabase.LoadAssetAtPath<UniversalRenderPipelineEditorResources>(resourcePath);
282262
return m_EditorResourcesAsset;
283263
}
284264
}
@@ -707,42 +687,42 @@ public override Shader defaultShader
707687
#if UNITY_EDITOR
708688
public override Shader autodeskInteractiveShader
709689
{
710-
get { return editorResources.shaders.autodeskInteractivePS; }
690+
get { return editorResources?.shaders.autodeskInteractivePS; }
711691
}
712692

713693
public override Shader autodeskInteractiveTransparentShader
714694
{
715-
get { return editorResources.shaders.autodeskInteractiveTransparentPS; }
695+
get { return editorResources?.shaders.autodeskInteractiveTransparentPS; }
716696
}
717697

718698
public override Shader autodeskInteractiveMaskedShader
719699
{
720-
get { return editorResources.shaders.autodeskInteractiveMaskedPS; }
700+
get { return editorResources?.shaders.autodeskInteractiveMaskedPS; }
721701
}
722702

723703
public override Shader terrainDetailLitShader
724704
{
725-
get { return editorResources.shaders.terrainDetailLitPS; }
705+
get { return editorResources?.shaders.terrainDetailLitPS; }
726706
}
727707

728708
public override Shader terrainDetailGrassShader
729709
{
730-
get { return editorResources.shaders.terrainDetailGrassPS; }
710+
get { return editorResources?.shaders.terrainDetailGrassPS; }
731711
}
732712

733713
public override Shader terrainDetailGrassBillboardShader
734714
{
735-
get { return editorResources.shaders.terrainDetailGrassBillboardPS; }
715+
get { return editorResources?.shaders.terrainDetailGrassBillboardPS; }
736716
}
737717

738718
public override Shader defaultSpeedTree7Shader
739719
{
740-
get { return editorResources.shaders.defaultSpeedTree7PS; }
720+
get { return editorResources?.shaders.defaultSpeedTree7PS; }
741721
}
742722

743723
public override Shader defaultSpeedTree8Shader
744724
{
745-
get { return editorResources.shaders.defaultSpeedTree8PS; }
725+
get { return editorResources?.shaders.defaultSpeedTree8PS; }
746726
}
747727
#endif
748728

com.unity.render-pipelines.universal/Tests/Editor/EditorTests.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,18 @@ public void CreateForwardRendererAssetWithoutErrors()
5353
}
5454
}
5555

56-
// Validate that resources Guids are valid
56+
// Validate that resource Guids are valid
5757
[Test]
5858
public void ValidateBuiltinResourceFiles()
5959
{
6060
string templatePath = AssetDatabase.GUIDToAssetPath(ResourceGuid.rendererTemplate);
6161
Assert.IsFalse(string.IsNullOrEmpty(templatePath));
62+
63+
string editorResourcesPath = AssetDatabase.GUIDToAssetPath(UniversalRenderPipelineAsset.editorResourcesGUID);
64+
Assert.IsFalse(string.IsNullOrEmpty(editorResourcesPath));
6265
}
6366

64-
// When creating LWRP all required resources should be initialized.
67+
// When creating URP all required resources should be initialized.
6568
[Test]
6669
public void ValidateNewAssetResources()
6770
{
@@ -73,7 +76,7 @@ public void ValidateNewAssetResources()
7376
Assert.AreNotEqual(null, asset.defaultTerrainMaterial);
7477
Assert.AreNotEqual(null, asset.defaultShader);
7578

76-
// LWRP doesn't override the following materials
79+
// URP doesn't override the following materials
7780
Assert.AreEqual(null, asset.defaultUIMaterial);
7881
Assert.AreEqual(null, asset.defaultUIOverdrawMaterial);
7982
Assert.AreEqual(null, asset.defaultUIETC1SupportedMaterial);
@@ -85,7 +88,7 @@ public void ValidateNewAssetResources()
8588
ScriptableObject.DestroyImmediate(data);
8689
}
8790

88-
// When changing LWRP settings, all settings should be valid.
91+
// When changing URP settings, all settings should be valid.
8992
[Test]
9093
public void ValidateAssetSettings()
9194
{

0 commit comments

Comments
 (0)