Răsfoiți Sursa

fixed set_specularTexture

ncannasse 7 ani în urmă
părinte
comite
64b5492940
1 a modificat fișierele cu 23 adăugiri și 4 ștergeri
  1. 23 4
      h3d/mat/PbrMaterial.hx

+ 23 - 4
h3d/mat/PbrMaterial.hx

@@ -114,13 +114,33 @@ class PbrMaterial extends Material {
 		var emit = props.emissive == null ? 0 : props.emissive;
 		var spec = mainPass.getShader(h3d.shader.pbr.PropsTexture);
 		var def = mainPass.getShader(h3d.shader.pbr.PropsValues);
-		if( specularTexture != null ) {
+		if( spec == null && def == null ) {
+			def = new h3d.shader.pbr.PropsValues();
+			mainPass.addShader(def);
+		}
+		if( spec != null ) spec.emissive = emit;
+		if( def != null ) def.emissive = emit;
+	}
+
+	override function get_specularTexture() {
+		var spec = mainPass.getShader(h3d.shader.pbr.PropsTexture);
+		return spec == null ? null : spec.texture;
+	}
+
+	override function set_specularTexture(t) {
+		if( specularTexture == t )
+			return t;
+		var props : PbrProps = props;
+		var emit = props == null || props.emissive == null ? 0 : props.emissive;
+		var spec = mainPass.getShader(h3d.shader.pbr.PropsTexture);
+		var def = mainPass.getShader(h3d.shader.pbr.PropsValues);
+		if( t != null ) {
 			if( spec == null ) {
 				spec = new h3d.shader.pbr.PropsTexture();
 				mainPass.addShader(spec);
 			}
 			spec.emissive = emit;
-			spec.texture = specularTexture;
+			spec.texture = t;
 			if( def != null )
 				mainPass.removeShader(def);
 		} else {
@@ -132,8 +152,7 @@ class PbrMaterial extends Material {
 			}
 			def.emissive = emit;
 		}
-
-
+		return t;
 	}
 
 	override function clone( ?m : BaseMaterial ) : BaseMaterial {