Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add extra Convert nodes #1905

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions documents/Specification/MaterialX.Specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -1806,8 +1806,8 @@ Channel nodes are used to perform channel manipulations and data type conversion

<a id="node-convert"> </a>

* **`convert`**: convert a stream from one data type to another. Only certain unambiguous and commonly-needed conversions are supported; see list below.
* `in` (boolean or integer or float or color<em>N</em> or vector<em>N</em> or string): the input value or nodename
* **`convert`**: convert a stream from one data type to another. Only certain unambiguous conversions are supported; see list below.
* `in` (boolean or integer or float or color<em>N</em> or vector<em>N</em>): the input value or nodename

<a id="node-combine2"> </a>
<a id="node-combine3"> </a>
Expand Down Expand Up @@ -1853,18 +1853,17 @@ Channel nodes are used to perform channel manipulations and data type conversion

The following input/output data type conversions are supported by **`convert`**:

* float to color<em>N</em>/vector<em>N</em>: copy the input value to all channels of the output
* color<em>N</em> to vector<em>N</em> / vector<em>N</em> to color<em>N</em>, where _N_ is the same for in and out: straight copy of channel values
* color3 to color4: copy RGB, set output alpha to 1.0
* color4 to color3: drop alpha channel
* boolean or integer to float: output is 0.0 or 1.0
* vector2 to vector3, or vector3 to vector4: copy incoming channels and append an additional channel with value 1.0
* vector3 to vector2, or vector4 to vector3: drop the last channel
* string to filename: no change in value
* boolean to integer: output is 0 or 1
* integer to boolean: true for any non-zero input value
* float/integer/boolean to color<em>N</em>/vector<em>N</em>: copy the input value to all channels of the output
* color<em>N</em> / vector<em>N</em> to color<em>M</em> / vector<em>M</em>
* if _N_ is the same as _M_, then channels are directly copied.
* if _N_ is larger than _M_, then channels the first _N_ channels are used.
* if _N_ is smaller than _M_, then channels are directly copied and additional channels are populated with 0, aside from the fourth channel which is populated with 1

Table of allowable input/output types for **`combine2`**, **`combine3`**, **`combine4`**:


| Operator | `type` | `in1` | `in2` | `in3` | `in4` | Output |
| --- | --- | --- | --- | --- | --- | --- |
| `combine2` | `vector2` | `float` "x" | `float` "y" | n/a | n/a | "xy" |
Expand Down
15 changes: 0 additions & 15 deletions libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
Original file line number Diff line number Diff line change
Expand Up @@ -671,21 +671,6 @@
<!-- ======================================================================== -->

<!-- <convert> -->
<implementation name="IM_convert_float_color3_genglsl" nodedef="ND_convert_float_color3" target="genglsl" sourcecode="vec3({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_color4_genglsl" nodedef="ND_convert_float_color4" target="genglsl" sourcecode="vec4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector2_genglsl" nodedef="ND_convert_float_vector2" target="genglsl" sourcecode="vec2({{in}},{{in}})" />
<implementation name="IM_convert_float_vector3_genglsl" nodedef="ND_convert_float_vector3" target="genglsl" sourcecode="vec3({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector4_genglsl" nodedef="ND_convert_float_vector4" target="genglsl" sourcecode="vec4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_vector2_vector3_genglsl" nodedef="ND_convert_vector2_vector3" target="genglsl" sourcecode="vec3({{in}}[0],{{in}}[1],0)" />
<implementation name="IM_convert_vector3_vector2_genglsl" nodedef="ND_convert_vector3_vector2" target="genglsl" sourcecode="vec2({{in}}[0],{{in}}[1])" />
<implementation name="IM_convert_vector3_color3_genglsl" nodedef="ND_convert_vector3_color3" target="genglsl" sourcecode="{{in}}" />
<implementation name="IM_convert_vector3_vector4_genglsl" nodedef="ND_convert_vector3_vector4" target="genglsl" sourcecode="vec4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_vector4_vector3_genglsl" nodedef="ND_convert_vector4_vector3" target="genglsl" sourcecode="vec3({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_vector4_color4_genglsl" nodedef="ND_convert_vector4_color4" target="genglsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color3_vector3_genglsl" nodedef="ND_convert_color3_vector3" target="genglsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color4_vector4_genglsl" nodedef="ND_convert_color4_vector4" target="genglsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color3_color4_genglsl" nodedef="ND_convert_color3_color4" target="genglsl" sourcecode="vec4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_color4_color3_genglsl" nodedef="ND_convert_color4_color3" target="genglsl" sourcecode="vec3({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_boolean_float_genglsl" nodedef="ND_convert_boolean_float" target="genglsl" sourcecode="float({{in}})" />
<implementation name="IM_convert_integer_float_genglsl" nodedef="ND_convert_integer_float" target="genglsl" sourcecode="float({{in}})" />

Expand Down
15 changes: 0 additions & 15 deletions libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
Original file line number Diff line number Diff line change
Expand Up @@ -681,21 +681,6 @@
<!-- ======================================================================== -->

<!-- <convert> -->
<implementation name="IM_convert_float_color3_genmdl" nodedef="ND_convert_float_color3" target="genmdl" sourcecode="color({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_color4_genmdl" nodedef="ND_convert_float_color4" target="genmdl" sourcecode="color4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector2_genmdl" nodedef="ND_convert_float_vector2" target="genmdl" sourcecode="float2({{in}},{{in}})" />
<implementation name="IM_convert_float_vector3_genmdl" nodedef="ND_convert_float_vector3" target="genmdl" sourcecode="float3({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector4_genmdl" nodedef="ND_convert_float_vector4" target="genmdl" sourcecode="float4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_vector2_vector3_genmdl" nodedef="ND_convert_vector2_vector3" target="genmdl" sourcecode="float3({{in}}[0],{{in}}[1],0)" />
<implementation name="IM_convert_vector3_color3_genmdl" nodedef="ND_convert_vector3_color3" target="genmdl" sourcecode="color({{in}})" />
<implementation name="IM_convert_vector3_vector2_genmdl" nodedef="ND_convert_vector3_vector2" target="genmdl" sourcecode="float2({{in}}[0],{{in}}[1])" />
<implementation name="IM_convert_vector3_vector4_genmdl" nodedef="ND_convert_vector3_vector4" target="genmdl" sourcecode="float4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_vector4_color4_genmdl" nodedef="ND_convert_vector4_color4" target="genmdl" sourcecode="color4({{in}}[0],{{in}}[1],{{in}}[2],{{in}}[3])" />
<implementation name="IM_convert_vector4_vector3_genmdl" nodedef="ND_convert_vector4_vector3" target="genmdl" sourcecode="float3({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_color3_vector3_genmdl" nodedef="ND_convert_color3_vector3" target="genmdl" sourcecode="float3({{in}})" />
<implementation name="IM_convert_color4_vector4_genmdl" nodedef="ND_convert_color4_vector4" target="genmdl" sourcecode="float4({{in}})" />
<implementation name="IM_convert_color3_color4_genmdl" nodedef="ND_convert_color3_color4" target="genmdl" sourcecode="color4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_color4_color3_genmdl" nodedef="ND_convert_color4_color3" target="genmdl" sourcecode="color({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_boolean_float_genmdl" nodedef="ND_convert_boolean_float" target="genmdl" sourcecode="float({{in}})" />
<implementation name="IM_convert_integer_float_genmdl" nodedef="ND_convert_integer_float" target="genmdl" sourcecode="float({{in}})" />

Expand Down
15 changes: 0 additions & 15 deletions libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
Original file line number Diff line number Diff line change
Expand Up @@ -671,21 +671,6 @@
<!-- ======================================================================== -->

<!-- <convert> -->
<implementation name="IM_convert_float_color3_genmsl" nodedef="ND_convert_float_color3" target="genmsl" sourcecode="vec3({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_color4_genmsl" nodedef="ND_convert_float_color4" target="genmsl" sourcecode="vec4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector2_genmsl" nodedef="ND_convert_float_vector2" target="genmsl" sourcecode="vec2({{in}},{{in}})" />
<implementation name="IM_convert_float_vector3_genmsl" nodedef="ND_convert_float_vector3" target="genmsl" sourcecode="vec3({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector4_genmsl" nodedef="ND_convert_float_vector4" target="genmsl" sourcecode="vec4({{in}},{{in}},{{in}},{{in}})" />
<implementation name="IM_convert_vector2_vector3_genmsl" nodedef="ND_convert_vector2_vector3" target="genmsl" sourcecode="vec3({{in}}[0],{{in}}[1],0)" />
<implementation name="IM_convert_vector3_vector2_genmsl" nodedef="ND_convert_vector3_vector2" target="genmsl" sourcecode="vec2({{in}}[0],{{in}}[1])" />
<implementation name="IM_convert_vector3_color3_genmsl" nodedef="ND_convert_vector3_color3" target="genmsl" sourcecode="{{in}}" />
<implementation name="IM_convert_vector3_vector4_genmsl" nodedef="ND_convert_vector3_vector4" target="genmsl" sourcecode="vec4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_vector4_vector3_genmsl" nodedef="ND_convert_vector4_vector3" target="genmsl" sourcecode="vec3({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_vector4_color4_genmsl" nodedef="ND_convert_vector4_color4" target="genmsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color3_vector3_genmsl" nodedef="ND_convert_color3_vector3" target="genmsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color4_vector4_genmsl" nodedef="ND_convert_color4_vector4" target="genmsl" sourcecode="{{in}}" />
<implementation name="IM_convert_color3_color4_genmsl" nodedef="ND_convert_color3_color4" target="genmsl" sourcecode="vec4({{in}}[0],{{in}}[1],{{in}}[2],1)" />
<implementation name="IM_convert_color4_color3_genmsl" nodedef="ND_convert_color4_color3" target="genmsl" sourcecode="vec3({{in}}[0],{{in}}[1],{{in}}[2])" />
<implementation name="IM_convert_boolean_float_genmsl" nodedef="ND_convert_boolean_float" target="genmsl" sourcecode="float({{in}})" />
<implementation name="IM_convert_integer_float_genmsl" nodedef="ND_convert_integer_float" target="genmsl" sourcecode="float({{in}})" />

Expand Down
15 changes: 0 additions & 15 deletions libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
Original file line number Diff line number Diff line change
Expand Up @@ -672,21 +672,6 @@
<!-- ======================================================================== -->

<!-- <convert> -->
<implementation name="IM_convert_float_color3_genosl" nodedef="ND_convert_float_color3" target="genosl" sourcecode="color({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_color4_genosl" nodedef="ND_convert_float_color4" target="genosl" sourcecode="{ color({{in}},{{in}},{{in}}),{{in}}}" />
<implementation name="IM_convert_float_vector2_genosl" nodedef="ND_convert_float_vector2" target="genosl" sourcecode="{ {{in}},{{in}} }" />
<implementation name="IM_convert_float_vector3_genosl" nodedef="ND_convert_float_vector3" target="genosl" sourcecode="vector({{in}},{{in}},{{in}})" />
<implementation name="IM_convert_float_vector4_genosl" nodedef="ND_convert_float_vector4" target="genosl" sourcecode="{ {{in}},{{in}},{{in}},{{in}} }" />
<implementation name="IM_convert_vector2_vector3_genosl" nodedef="ND_convert_vector2_vector3" target="genosl" sourcecode="vector({{in}}.x,{{in}}.y,0)" />
<implementation name="IM_convert_vector3_vector2_genosl" nodedef="ND_convert_vector3_vector2" target="genosl" sourcecode="{ {{in}}[0],{{in}}[1] }" />
<implementation name="IM_convert_vector3_color3_genosl" nodedef="ND_convert_vector3_color3" target="genosl" sourcecode="color({{in}})" />
<implementation name="IM_convert_vector3_vector4_genosl" nodedef="ND_convert_vector3_vector4" target="genosl" sourcecode="{ {{in}}[0],{{in}}[1],{{in}}[2],1 }" />
<implementation name="IM_convert_vector4_vector3_genosl" nodedef="ND_convert_vector4_vector3" target="genosl" sourcecode="vector({{in}}.x,{{in}}.y,{{in}}.z)" />
<implementation name="IM_convert_vector4_color4_genosl" nodedef="ND_convert_vector4_color4" target="genosl" sourcecode="{ color({{in}}.x,{{in}}.y,{{in}}.z), {{in}}.w }" />
<implementation name="IM_convert_color3_vector3_genosl" nodedef="ND_convert_color3_vector3" target="genosl" sourcecode="vector({{in}})" />
<implementation name="IM_convert_color4_vector4_genosl" nodedef="ND_convert_color4_vector4" target="genosl" sourcecode="{ {{in}}.rgb[0],{{in}}.rgb[1],{{in}}.rgb[2],{{in}}.a }" />
<implementation name="IM_convert_color3_color4_genosl" nodedef="ND_convert_color3_color4" target="genosl" sourcecode="{ color({{in}}[0],{{in}}[1],{{in}}[2]),1 }" />
<implementation name="IM_convert_color4_color3_genosl" nodedef="ND_convert_color4_color3" target="genosl" sourcecode="color({{in}}.rgb[0],{{in}}.rgb[1],{{in}}.rgb[2])" />
<implementation name="IM_convert_boolean_float_genosl" nodedef="ND_convert_boolean_float" target="genosl" sourcecode="float({{in}})" />
<implementation name="IM_convert_integer_float_genosl" nodedef="ND_convert_integer_float" target="genosl" sourcecode="float({{in}})" />

Expand Down
Loading