Skip to content

Commit 2febdcd

Browse files
authored
Support alpha in Standard Surface to glTF PBR translation (AcademySoftwareFoundation#2591)
closes AcademySoftwareFoundation#2579 This converts opacity to alpha as implemented in standard_surface.mtlx, i.e with the limitation of monochromatic opacity.
1 parent 6eb2873 commit 2febdcd

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

libraries/bxdf/translation/standard_surface_to_gltf_pbr.mtlx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<input name="emission_color" type="color3" value="1, 1, 1" />
2323
<input name="normal" type="vector3" defaultgeomprop="Nworld" />
2424
<input name="tangent" type="vector3" defaultgeomprop="Tworld" />
25+
<input name="opacity" type="color3" value="1, 1, 1" />
2526

2627
<output name="base_color_out" type="color3" />
2728
<output name="metallic_out" type="float" />
@@ -40,6 +41,8 @@
4041
<output name="emissive_strength_out" type="float" />
4142
<output name="normal_out" type="vector3" />
4243
<output name="tangent_out" type="vector3" />
44+
<output name="alpha_out" type="float" />
45+
<output name="alpha_mode_out" type="integer" />
4346
</nodedef>
4447

4548
<nodegraph name="NG_standard_surface_to_gltf_pbr" nodedef="ND_standard_surface_to_gltf_pbr">
@@ -213,6 +216,23 @@
213216
<input name="in" type="vector3" interfacename="tangent" />
214217
</dot>
215218

219+
<!-- Opacity -->
220+
<luminance name="opacity_luminance" type="color3">
221+
<input name="in" type="color3" interfacename="opacity" />
222+
</luminance>
223+
224+
<extract name="opacity_luminance_float" type="float">
225+
<input name="in" type="color3" nodename="opacity_luminance" />
226+
<input name="index" type="integer" value="0" />
227+
</extract>
228+
229+
<ifequal name="alpha_mode_from_opacity_luminance" type="integer">
230+
<input name="value1" type="float" nodename="opacity_luminance_float" />
231+
<input name="value2" type="float" value="1.0" />
232+
<input name="in1" type="integer" value="0" />
233+
<input name="in2" type="integer" value="2" />
234+
</ifequal>
235+
216236
<output name="base_color_out" type="color3" nodename="base_color" />
217237
<output name="metallic_out" type="float" nodename="metallic" />
218238
<output name="roughness_out" type="float" nodename="roughness" />
@@ -230,6 +250,8 @@
230250
<output name="emissive_strength_out" type="float" nodename="emissive_strength" />
231251
<output name="normal_out" type="vector3" nodename="normal" />
232252
<output name="tangent_out" type="vector3" nodename="tangent" />
253+
<output name="alpha_out" type="float" nodename="opacity_luminance_float" />
254+
<output name="alpha_mode_out" type="integer" nodename="alpha_mode_from_opacity_luminance" />
233255

234256
</nodegraph>
235257
</materialx>

0 commit comments

Comments
 (0)