Skip to content

Commit a696150

Browse files
committed
api: Add material merge.
1 parent 5f4a80d commit a696150

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

Runtime/MaterialConverter.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
using VisualPinball.Engine.VPT;
2525
using VisualPinball.Unity;
2626
using Material = UnityEngine.Material;
27-
using Mesh = VisualPinball.Engine.VPT.Mesh;
2827

2928
namespace VisualPinball.Engine.Unity.Hdrp
3029
{
3130
public class MaterialConverter : IMaterialConverter
3231
{
3332
public Material DotMatrixDisplay => UnityEngine.Resources.Load<Material>("Materials/DotMatrixDisplay");
3433
public Material SegmentDisplay => UnityEngine.Resources.Load<Material>("Materials/SegmentDisplay");
34+
3535
public int NormalMapProperty => NormalMap;
3636

3737
#region Shader Properties
@@ -118,12 +118,12 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture
118118
unityMaterial.SetFloat(Smoothness, vpxMaterial.Roughness);
119119

120120
// map
121-
if (vpxMaterial.HasMap) {
121+
if (vpxMaterial.HasMap && textureProvider != null) {
122122
unityMaterial.SetTexture(BaseColorMap,textureProvider.GetTexture(vpxMaterial.Map.Name));
123123
}
124124

125125
// normal map
126-
if (vpxMaterial.HasNormalMap) {
126+
if (vpxMaterial.HasNormalMap && textureProvider != null) {
127127
unityMaterial.EnableKeyword("_NORMALMAP");
128128
unityMaterial.EnableKeyword("_NORMALMAP_TANGENT_SPACE");
129129

@@ -132,5 +132,19 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture
132132

133133
return unityMaterial;
134134
}
135+
136+
public Material MergeMaterials(PbrMaterial vpxMaterial, Material texturedMaterial)
137+
{
138+
var nonTexturedMaterial = CreateMaterial(vpxMaterial, null, null);
139+
var mergedMaterial = new Material(GetShader());
140+
mergedMaterial.CopyPropertiesFromMaterial(texturedMaterial);
141+
142+
mergedMaterial.name = nonTexturedMaterial.name;
143+
mergedMaterial.SetColor(BaseColor, nonTexturedMaterial.GetColor(BaseColor));
144+
mergedMaterial.SetFloat(Metallic, nonTexturedMaterial.GetFloat(Metallic));
145+
mergedMaterial.SetFloat(Smoothness, nonTexturedMaterial.GetFloat(Smoothness));
146+
147+
return mergedMaterial;
148+
}
135149
}
136150
}

0 commit comments

Comments
 (0)