24
24
using VisualPinball . Engine . VPT ;
25
25
using VisualPinball . Unity ;
26
26
using Material = UnityEngine . Material ;
27
- using Mesh = VisualPinball . Engine . VPT . Mesh ;
28
27
29
28
namespace VisualPinball . Engine . Unity . Hdrp
30
29
{
31
30
public class MaterialConverter : IMaterialConverter
32
31
{
33
32
public Material DotMatrixDisplay => UnityEngine . Resources . Load < Material > ( "Materials/DotMatrixDisplay" ) ;
34
33
public Material SegmentDisplay => UnityEngine . Resources . Load < Material > ( "Materials/SegmentDisplay" ) ;
34
+
35
35
public int NormalMapProperty => NormalMap ;
36
36
37
37
#region Shader Properties
@@ -118,12 +118,12 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture
118
118
unityMaterial . SetFloat ( Smoothness , vpxMaterial . Roughness ) ;
119
119
120
120
// map
121
- if ( vpxMaterial . HasMap ) {
121
+ if ( vpxMaterial . HasMap && textureProvider != null ) {
122
122
unityMaterial . SetTexture ( BaseColorMap , textureProvider . GetTexture ( vpxMaterial . Map . Name ) ) ;
123
123
}
124
124
125
125
// normal map
126
- if ( vpxMaterial . HasNormalMap ) {
126
+ if ( vpxMaterial . HasNormalMap && textureProvider != null ) {
127
127
unityMaterial . EnableKeyword ( "_NORMALMAP" ) ;
128
128
unityMaterial . EnableKeyword ( "_NORMALMAP_TANGENT_SPACE" ) ;
129
129
@@ -132,5 +132,19 @@ public Material CreateMaterial(PbrMaterial vpxMaterial, ITextureProvider texture
132
132
133
133
return unityMaterial ;
134
134
}
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
+ }
135
149
}
136
150
}
0 commit comments