Skip to content

Commit 84ee7e2

Browse files
committed
Updated material generators to take care of the name normalization
1 parent 1b46211 commit 84ee7e2

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

Runtime/GLTFastWrappers/DecentralandMaterialGenerator.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ public DecentralandMaterialGenerator(string shaderName)
3232
/// <param name="gltfMaterial"></param>
3333
/// <param name="gltf"></param>
3434
/// <returns></returns>
35-
public override Material GenerateMaterial(GLTFastMaterial gltfMaterial, IGltfReadable gltf, bool pointsSupport = false)
35+
public override Material GenerateMaterial(int materialIndex, GLTFastMaterial gltfMaterial, IGltfReadable gltf, bool pointsSupport = false)
3636
{
3737
material = new Material(shader);
38-
material.name = gltfMaterial.name;
38+
39+
SetMaterialName(materialIndex, gltfMaterial);
3940

4041
if (gltfMaterial.extensions?.KHR_materials_pbrSpecularGlossiness != null)
4142
{
@@ -76,6 +77,20 @@ public override Material GenerateMaterial(GLTFastMaterial gltfMaterial, IGltfRea
7677
return material;
7778
}
7879

80+
// This step is important if we want to keep the functionality of skin and hair colouring
81+
private void SetMaterialName(int materialIndex, GLTFastMaterial gltfMaterial)
82+
{
83+
material.name = "material";
84+
85+
if (gltfMaterial.name.Contains("skin", StringComparison.InvariantCultureIgnoreCase))
86+
material.name += "_skin";
87+
88+
if (gltfMaterial.name.Contains("hair", StringComparison.InvariantCultureIgnoreCase))
89+
material.name += "_hair";
90+
91+
material.name += $"_{materialIndex}";
92+
}
93+
7994
private void SetEmissiveColor(Color gltfMaterialEmissive)
8095
{
8196
if (gltfMaterialEmissive != Color.black)

Runtime/GLTFastWrappers/DefaultMaterialGenerator.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using GLTFast;
22
using GLTFast.Materials;
3+
using System;
34
using UnityEngine;
45

56
namespace DCL.GLTFast.Wrappers
@@ -12,13 +13,29 @@ internal class DefaultMaterialGenerator : ShaderGraphMaterialGenerator
1213
{
1314
private const float CUSTOM_EMISSIVE_FACTOR = 5f;
1415

15-
public override Material GenerateMaterial(global::GLTFast.Schema.Material gltfMaterial, IGltfReadable gltf, bool pointsSupport = false)
16+
public override Material GenerateMaterial(int materialIndex, global::GLTFast.Schema.Material gltfMaterial, IGltfReadable gltf, bool pointsSupport = false)
1617
{
17-
Material generatedMaterial = base.GenerateMaterial(gltfMaterial, gltf);
18+
Material generatedMaterial = base.GenerateMaterial(materialIndex, gltfMaterial, gltf);
19+
20+
SetMaterialName(generatedMaterial, materialIndex, gltfMaterial);
1821

1922
if (gltfMaterial.Emissive != Color.black) { generatedMaterial.SetColor(EmissiveFactorProperty, gltfMaterial.Emissive * CUSTOM_EMISSIVE_FACTOR); }
2023

2124
return generatedMaterial;
25+
26+
// This step is important if we want to keep the functionality of skin and hair colouring
27+
void SetMaterialName(Material material, int materialIndex, global::GLTFast.Schema.Material gltfMaterial)
28+
{
29+
material.name = "material";
30+
31+
if (gltfMaterial.name.Contains("skin", StringComparison.InvariantCultureIgnoreCase))
32+
material.name += "_skin";
33+
34+
if (gltfMaterial.name.Contains("hair", StringComparison.InvariantCultureIgnoreCase))
35+
material.name += "_hair";
36+
37+
material.name += $"_{materialIndex}";
38+
}
2239
}
2340
}
2441
}

Runtime/Shaders/URP/Lit.shader.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)