Browse Source

Fix decal PBR

ShiroSmith 4 years ago
parent
commit
9162fd4ca5
1 changed files with 12 additions and 3 deletions
  1. 12 3
      hrt/prefab/l3d/Decal.hx

+ 12 - 3
hrt/prefab/l3d/Decal.hx

@@ -82,10 +82,8 @@ class Decal extends Object3D {
 				if( shader != null ){
 					shader.albedoTexture = albedoMap != null ? ctx.loadTexture(albedoMap) : null;
 					shader.normalTexture = normalMap != null ? ctx.loadTexture(normalMap) : null;
-					shader.pbrTexture = pbrMap != null ? ctx.loadTexture(pbrMap) : null;
 					if(shader.albedoTexture != null) shader.albedoTexture.wrap = Repeat;
 					if(shader.normalTexture != null) shader.normalTexture.wrap = Repeat;
-					if(shader.pbrTexture != null) shader.pbrTexture.wrap = Repeat;
 					shader.albedoStrength = albedoStrength;
 					shader.normalStrength = normalStrength;
 					shader.pbrStrength = pbrStrength;
@@ -96,6 +94,17 @@ class Decal extends Object3D {
 					shader.fadeStart = fadeStart;
 					shader.fadeEnd = fadeEnd;
 				}
+				var pbrTexture = pbrMap != null ? ctx.loadTexture(pbrMap) : null;
+				if( pbrTexture != null ) {
+					var propsTexture = mesh.material.mainPass.getShader(h3d.shader.pbr.PropsTexture);
+					if( propsTexture == null ) 
+						propsTexture = mesh.material.mainPass.addShader(new h3d.shader.pbr.PropsTexture());
+					propsTexture.texture = pbrTexture;
+					propsTexture.texture.wrap = Repeat;
+				}
+				else {
+					mesh.material.mainPass.removeShader(mesh.material.mainPass.getShader( h3d.shader.pbr.PropsTexture));
+				}
 			case BeforeTonemapping, AfterTonemapping:
 				var shader = mesh.material.mainPass.getShader(h3d.shader.pbr.VolumeDecal.DecalOverlay);
 				if( shader != null ){
@@ -182,7 +191,7 @@ class Decal extends Object3D {
 						+ params +
 						'<dt>Render Mode</dt>
 						<dd><select field="renderMode">
-							<option value="Decal">Default</option>
+							<option value="Default">Default</option>
 							<option value="BeforeTonemapping">Before Tonemapping</option>
 							<option value="AfterTonemapping">After Tonemapping</option>
 							<option value="Terrain">Terrain</option>