Skip to content

Commit 9178651

Browse files
author
Karl Henkel
authored
Merge pull request #362 from Unity-Technologies/v4.4/fix-preview-shape-material
SRP: Fix preview shape material
2 parents b590c0c + 42b88f3 commit 9178651

6 files changed

Lines changed: 78 additions & 59 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
1111
- Fixed rect selection not working with Universal Render Pipeline.
1212
- [case: 1281254] Fixed shader warning in URP for UNITY_PASS_FORWARDBASE macro redefinition.
1313
- [case: 1294866] Fix annotation warning on InitializeOnLoad call.
14+
- [case: 1304561] Fix `Shape Preview` not rendering with the blue preview tint.
1415

1516
## [4.4.1] - 2020-11-10
1617

Editor/EditorCore/EditorMaterialUtility.cs

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ static class EditorMaterialUtility
1616

1717
static bool s_Initialized;
1818

19-
static Material s_SrpDefaultMaterial;
19+
static Material s_EditorDefaultMaterial;
20+
static Material s_ShapePreviewMaterial;
21+
22+
internal static readonly Color previewColor = new Color(.5f, .9f, 1f, .56f);
2023

2124
[UserSetting("Mesh Settings", "Material", "The default material to be applied to newly created shapes.")]
2225
static Pref<Material> s_DefaultMaterial = new Pref<Material>("mesh.userMaterial", null);
@@ -27,26 +30,36 @@ static void Init()
2730
return;
2831

2932
s_Initialized = true;
33+
s_EditorDefaultMaterial = null;
3034

31-
s_SrpDefaultMaterial = null;
32-
33-
for (int i = 0, c = k_StandardRenderPipelineDefaultMaterials.Length; i < c && s_SrpDefaultMaterial == null; i++)
35+
for (int i = 0, c = k_StandardRenderPipelineDefaultMaterials.Length; i < c && s_EditorDefaultMaterial == null; i++)
3436
{
3537
string search = k_StandardRenderPipelineDefaultMaterials[i] + " t:Material";
3638
string[] materials = AssetDatabase.FindAssets(search, new[] { "Assets", "Packages" });
3739

3840
foreach (var asset in materials)
3941
{
40-
s_SrpDefaultMaterial = AssetDatabase.LoadAssetAtPath<Material>(AssetDatabase.GUIDToAssetPath(asset));
42+
var mat = AssetDatabase.LoadAssetAtPath<Material>(AssetDatabase.GUIDToAssetPath(asset));
4143

42-
if (s_SrpDefaultMaterial != null
43-
&& s_SrpDefaultMaterial.shader != null
44-
&& s_SrpDefaultMaterial.shader.isSupported)
44+
if (mat != null && mat.shader != null && mat.shader.isSupported)
45+
{
46+
s_EditorDefaultMaterial = mat;
4547
break;
46-
47-
s_SrpDefaultMaterial = null;
48+
}
4849
}
4950
}
51+
52+
if (s_EditorDefaultMaterial == null)
53+
s_EditorDefaultMaterial = BuiltinMaterials.defaultMaterial;
54+
55+
s_ShapePreviewMaterial = new Material(s_EditorDefaultMaterial.shader);
56+
s_ShapePreviewMaterial.hideFlags = HideFlags.HideAndDontSave;
57+
58+
if (s_ShapePreviewMaterial.HasProperty("_MainTex"))
59+
s_ShapePreviewMaterial.mainTexture = (Texture2D)Resources.Load("Textures/GridBox_Default");
60+
61+
if (s_ShapePreviewMaterial.HasProperty("_Color"))
62+
s_ShapePreviewMaterial.SetColor("_Color", previewColor);
5063
}
5164

5265
internal static Texture2D GetPreviewTexture(Material material)
@@ -108,17 +121,19 @@ internal static Material GetUserMaterial()
108121
var mat = (Material)s_DefaultMaterial;
109122
if (mat != null)
110123
return mat;
111-
return GetDefaultMaterial();
124+
return GetSrpDefaultMaterial();
112125
}
113126

114-
internal static Material GetDefaultMaterial()
127+
internal static Material GetSrpDefaultMaterial()
115128
{
116129
Init();
130+
return s_EditorDefaultMaterial;
131+
}
117132

118-
if (s_SrpDefaultMaterial != null)
119-
return s_SrpDefaultMaterial;
120-
121-
return BuiltinMaterials.defaultMaterial;
133+
internal static Material GetShapePreviewMaterial()
134+
{
135+
Init();
136+
return s_ShapePreviewMaterial;
122137
}
123138
}
124139
}

Editor/EditorCore/MaterialPalette.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void SetDefaultValues()
5454
{
5555
array = new Material[10]
5656
{
57-
BuiltinMaterials.defaultMaterial,
57+
EditorMaterialUtility.GetUserMaterial(),
5858
null,
5959
null,
6060
null,

Editor/EditorCore/ShapeEditor.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,6 @@ public void ResetParameters()
3939
{
4040
if(fi.GetValue(this) is IUserSetting setting)
4141
setting.Reset();
42-
// if(fi.FieldType.BaseType?.GetGenericTypeDefinition() == typeof(UserSetting<>))
43-
// {
44-
// var setting = fi.GetValue(this) as IUserSetting;
45-
// Debug.Log($"Name: {fi.Name}\nType: {fi.FieldType}\nValue {fi.GetValue(this)}");
46-
// }
4742
}
4843
}
4944
}
@@ -294,7 +289,7 @@ void SetPreviewMesh(ProBuilderMesh mesh)
294289
m_PreviewObject.name += "-preview";
295290
}
296291

297-
m_PreviewObject.GetComponent<MeshRenderer>().sharedMaterial = BuiltinMaterials.ShapePreviewMaterial;
292+
m_PreviewObject.GetComponent<MeshRenderer>().sharedMaterial = EditorMaterialUtility.GetShapePreviewMaterial();
298293
EditorUtility.MoveToActiveScene(m_PreviewObject.gameObject);
299294
}
300295

Runtime/Core/BuiltinMaterials.cs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ public static class BuiltinMaterials
5454
/// <seealso cref="pointShader"/>
5555
public const string dotShader = "Hidden/ProBuilder/VertexShader";
5656

57-
internal static readonly Color previewColor = new Color(.5f, .9f, 1f, .56f);
58-
5957
static Shader s_SelectionPickerShader;
6058

6159
static bool s_GeometryShadersSupported;
@@ -66,8 +64,6 @@ public static class BuiltinMaterials
6664
static Material s_EdgePickerMaterial;
6765
static Material s_UnityDefaultDiffuse;
6866
static Material s_UnlitVertexColorMaterial;
69-
static Material s_ShapePreviewMaterial;
70-
7167

7268
#if HDRP_7_1_0_OR_NEWER
7369
static string k_EdgePickerMaterial = "Materials/EdgePickerHDRP";
@@ -112,7 +108,7 @@ static void Init()
112108
{
113109
Log.Error("VertexPicker material not loaded... please re-install ProBuilder to fix this error.");
114110
s_VertexPickerMaterial = new Material(Shader.Find(k_VertexPickerShader));
115-
}
111+
}
116112

117113
if ((s_EdgePickerMaterial = Resources.Load<Material>(k_EdgePickerMaterial)) == null)
118114
{
@@ -121,15 +117,6 @@ static void Init()
121117
}
122118

123119
s_UnlitVertexColorMaterial = (Material)Resources.Load("Materials/UnlitVertexColor", typeof(Material));
124-
125-
s_ShapePreviewMaterial = new Material(s_DefaultMaterial.shader);
126-
s_ShapePreviewMaterial.hideFlags = HideFlags.HideAndDontSave;
127-
128-
if (s_ShapePreviewMaterial.HasProperty("_MainTex"))
129-
s_ShapePreviewMaterial.mainTexture = (Texture2D)Resources.Load("Textures/GridBox_Default");
130-
131-
if (s_ShapePreviewMaterial.HasProperty("_Color"))
132-
s_ShapePreviewMaterial.SetColor("_Color", previewColor);
133120
}
134121

135122
/// <summary>
@@ -305,14 +292,5 @@ internal static Material unlitVertexColor
305292
return s_UnlitVertexColorMaterial;
306293
}
307294
}
308-
309-
internal static Material ShapePreviewMaterial
310-
{
311-
get
312-
{
313-
Init();
314-
return s_ShapePreviewMaterial;
315-
}
316-
}
317295
}
318296
}

0 commit comments

Comments
 (0)