Skip to content

Commit

Permalink
fix(USDZExporter): alpha issues in diffuse map (pmndrs#364)
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick-van-Halm-360Fabriek authored May 29, 2024
1 parent 5bf7324 commit 880e2eb
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/exporters/USDZExporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,19 @@ ${array.join('')}
`${pad}color3f inputs:diffuseColor.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:rgb>`,
)

// Include alpha input
if (material.transparent || material.alphaTest > 0.0) {
inputs.push(`${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:a>`);
}

// Check if alpha test is bigger than minimum of 0.01, if not and it is transparent still apply a 0.01 alpha clip in order to remove white blur in transparent place.
if (material.alphaTest > 0.01) {
inputs.push(`${pad}float inputs:opacityThreshold = ${material.alphaTest}`);
}
else if(material.transparent || material.alphaTest > 0.0) {
inputs.push(`${pad}float inputs:opacityThreshold = 0.01`);
}

samplers.push(this.buildTexture(material, material.map, 'diffuse', material.color))
} else {
inputs.push(`${pad}color3f inputs:diffuseColor = ${this.buildColor(material.color)}`)
Expand Down Expand Up @@ -412,6 +425,7 @@ ${samplers.join('\n')}

this.textures[id] = texture

// Add the alpha output for when transparency is set or the alpha test is above 0
return `
def Shader "Transform2d_${mapType}" (
sdrMetadata = {
Expand All @@ -436,6 +450,7 @@ ${samplers.join('\n')}
float outputs:g
float outputs:b
float3 outputs:rgb
${material.transparent || material.alphaTest > 0.0 ? 'float outputs:a' : ''}
}`
}

Expand Down

0 comments on commit 880e2eb

Please sign in to comment.