Sfoglia il codice sorgente

USDZExporter: Support opacity materials (#23588)

Yuta.H 3 anni fa
parent
commit
5d81b2724c

+ 13 - 0
examples/js/exporters/USDZExporter.js

@@ -375,6 +375,7 @@ ${array.join( '' )}
             float outputs:g
             float outputs:b
             float3 outputs:rgb
+            ${material.transparent || material.alphaTest > 0.0 ? 'float outputs:a' : ''}
         }`;
 
 		}
@@ -382,6 +383,18 @@ ${array.join( '' )}
 		if ( material.map !== null ) {
 
 			inputs.push( `${pad}color3f inputs:diffuseColor.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:rgb>` );
+
+			if ( material.transparent ) {
+
+				inputs.push( `${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:a>` );
+
+			} else if ( material.alphaTest > 0.0 ) {
+
+				inputs.push( `${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:a>` );
+				inputs.push( `${pad}float inputs:opacityThreshold = ${material.alphaTest}` );
+
+			}
+
 			samplers.push( buildTexture( material.map, 'diffuse', material.color ) );
 
 		} else {

+ 12 - 0
examples/jsm/exporters/USDZExporter.js

@@ -402,6 +402,7 @@ function buildMaterial( material, textures ) {
             float outputs:g
             float outputs:b
             float3 outputs:rgb
+            ${ material.transparent || material.alphaTest > 0.0 ? 'float outputs:a' : '' }
         }`;
 
 	}
@@ -410,6 +411,17 @@ function buildMaterial( material, textures ) {
 
 		inputs.push( `${ pad }color3f inputs:diffuseColor.connect = </Materials/Material_${ material.id }/Texture_${ material.map.id }_diffuse.outputs:rgb>` );
 
+		if ( material.transparent ) {
+
+			inputs.push( `${ pad }float inputs:opacity.connect = </Materials/Material_${ material.id }/Texture_${ material.map.id }_diffuse.outputs:a>` );
+
+		} else if ( material.alphaTest > 0.0 ) {
+
+			inputs.push( `${ pad }float inputs:opacity.connect = </Materials/Material_${ material.id }/Texture_${ material.map.id }_diffuse.outputs:a>` );
+			inputs.push( `${ pad }float inputs:opacityThreshold = ${material.alphaTest}` );
+
+		}
+
 		samplers.push( buildTexture( material.map, 'diffuse', material.color ) );
 
 	} else {