ソースを参照

NodeMaterial: Honor `material.premultipliedAlpha` in the shader (#31166)

WestLangley 7 ヶ月 前
コミット
fce5937187
1 ファイル変更23 行追加0 行削除
  1. 23 0
      src/materials/nodes/NodeMaterial.js

+ 23 - 0
src/materials/nodes/NodeMaterial.js

@@ -1077,6 +1077,21 @@ class NodeMaterial extends Material {
 
 	}
 
+	/**
+	 * Setups premultiplied alpha.
+	 *
+	 * @param {NodeBuilder} builder - The current node builder.
+	 * @param {Node<vec4>} outputNode - The existing output node.
+	 * @return {Node<vec4>} The output node.
+	 */
+	setupPremultipliedAlpha( builder, outputNode ) {
+
+		outputNode = vec4( outputNode.rgb.mul( outputNode.a ), outputNode.a );
+
+		return outputNode;
+
+	}
+
 	/**
 	 * Setups the output node.
 	 *
@@ -1094,6 +1109,14 @@ class NodeMaterial extends Material {
 
 		}
 
+		// PREMULTIPLIED ALPHA
+
+		if ( this.premultipliedAlpha === true ) {
+
+			outputNode = this.setupPremultipliedAlpha( builder, outputNode );
+
+		}
+
 		return outputNode;
 
 	}

粤ICP备19079148号