소스 검색

Fix emissive

ShiroSmith 6 년 전
부모
커밋
7ee65976ea
2개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 3
      h3d/mat/PbrMaterial.hx
  2. 1 1
      h3d/shader/Emissive.hx

+ 3 - 3
h3d/mat/PbrMaterial.hx

@@ -166,6 +166,7 @@ class PbrMaterial extends Material {
 		mainPass.removeShader(mainPass.getShader(h3d.shader.pbr.StrengthValues));
 		mainPass.removeShader(mainPass.getShader(h3d.shader.pbr.AlphaMultiply));
 		mainPass.removeShader(mainPass.getShader(h3d.shader.Parallax));
+		mainPass.removeShader(mainPass.getShader(h3d.shader.Emissive));
 		// Backward compatibility
 		if( !Reflect.hasField(props, "depthTest") ) Reflect.setField(props, "depthTest", Less);
 		if( !Reflect.hasField(props, "colorMask") ) Reflect.setField(props, "colorMask", 1 << 0 | 1 << 1 | 1 << 2 | 1 << 3);
@@ -194,9 +195,8 @@ class PbrMaterial extends Material {
 			mainPass.setPassName("default");
 		case BeforeTonemapping:
 			mainPass.setPassName("beforeTonemapping");
-			var e = mainPass.getShader(h3d.shader.Emissive);
-			if( e == null ) e = mainPass.addShader(new h3d.shader.Emissive(props.emissive));
-			e.emissive = props.emissive;
+			if( props.emissive > 0 ) 
+				mainPass.addShader(new h3d.shader.Emissive(props.emissive));
 		case Distortion:
 			mainPass.setPassName("distortion");
 			mainPass.depthWrite = false;

+ 1 - 1
h3d/shader/Emissive.hx

@@ -7,7 +7,7 @@ class Emissive extends hxsl.Shader {
 		@param var emissive : Float;
 
 		function fragment() {
-			pixelColor.rgb = max(pixelColor.rgb, pixelColor.rgb + pixelColor.rgb * emissive * pixelColor.a);
+			pixelColor.rgb += pixelColor.rgb * emissive;
 		}
 
 	};