Skip to content

Commit b68e21e

Browse files
authored
Add integer signature to floor and ceil (AcademySoftwareFoundation#1362)
Adds support to ceil and floor to output integers. There will be other tickets/discussions around improving integer support across MaterialX, but adding integer output to these nodes first would be a big help to some nodegraph contributions we'd like to contribute soon.
1 parent b1c6b6a commit b68e21e

6 files changed

Lines changed: 84 additions & 50 deletions

File tree

libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@
310310
<implementation name="IM_floor_vector2_genglsl" nodedef="ND_floor_vector2" target="genglsl" sourcecode="floor({{in}})" />
311311
<implementation name="IM_floor_vector3_genglsl" nodedef="ND_floor_vector3" target="genglsl" sourcecode="floor({{in}})" />
312312
<implementation name="IM_floor_vector4_genglsl" nodedef="ND_floor_vector4" target="genglsl" sourcecode="floor({{in}})" />
313+
<implementation name="IM_floor_integer_genglsl" nodedef="ND_floor_integer" target="genglsl" sourcecode="int(floor({{in}}))" />
313314

314315
<!-- <ceil> -->
315316
<implementation name="IM_ceil_float_genglsl" nodedef="ND_ceil_float" target="genglsl" sourcecode="ceil({{in}})" />
@@ -318,6 +319,7 @@
318319
<implementation name="IM_ceil_vector2_genglsl" nodedef="ND_ceil_vector2" target="genglsl" sourcecode="ceil({{in}})" />
319320
<implementation name="IM_ceil_vector3_genglsl" nodedef="ND_ceil_vector3" target="genglsl" sourcecode="ceil({{in}})" />
320321
<implementation name="IM_ceil_vector4_genglsl" nodedef="ND_ceil_vector4" target="genglsl" sourcecode="ceil({{in}})" />
322+
<implementation name="IM_ceil_integer_genglsl" nodedef="ND_ceil_integer" target="genglsl" sourcecode="int(ceil({{in}}))" />
321323

322324
<!-- <power> -->
323325
<implementation name="IM_power_float_genglsl" nodedef="ND_power_float" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />

libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@
313313
<implementation name="IM_floor_vector2_genmdl" nodedef="ND_floor_vector2" sourcecode="math::floor({{in}})" target="genmdl" />
314314
<implementation name="IM_floor_vector3_genmdl" nodedef="ND_floor_vector3" sourcecode="math::floor({{in}})" target="genmdl" />
315315
<implementation name="IM_floor_vector4_genmdl" nodedef="ND_floor_vector4" sourcecode="math::floor({{in}})" target="genmdl" />
316+
<implementation name="IM_floor_integer_genmdl" nodedef="ND_floor_integer" sourcecode="int(math::floor({{in}}))" target="genmdl" />
316317

317318
<!-- <ceil> -->
318319
<implementation name="IM_ceil_float_genmdl" nodedef="ND_ceil_float" sourcecode="math::ceil({{in}})" target="genmdl" />
@@ -321,6 +322,7 @@
321322
<implementation name="IM_ceil_vector2_genmdl" nodedef="ND_ceil_vector2" sourcecode="math::ceil({{in}})" target="genmdl" />
322323
<implementation name="IM_ceil_vector3_genmdl" nodedef="ND_ceil_vector3" sourcecode="math::ceil({{in}})" target="genmdl" />
323324
<implementation name="IM_ceil_vector4_genmdl" nodedef="ND_ceil_vector4" sourcecode="math::ceil({{in}})" target="genmdl" />
325+
<implementation name="IM_ceil_integer_genmdl" nodedef="ND_ceil_integer" sourcecode="int(math::ceil({{in}}))" target="genmdl" />
324326

325327
<!-- <power> -->
326328
<implementation name="IM_power_float_genmdl" nodedef="ND_power_float" sourcecode="math::pow({{in1}}, {{in2}})" target="genmdl" />

libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@
311311
<implementation name="IM_floor_vector2_genmsl" nodedef="ND_floor_vector2" target="genmsl" sourcecode="floor({{in}})" />
312312
<implementation name="IM_floor_vector3_genmsl" nodedef="ND_floor_vector3" target="genmsl" sourcecode="floor({{in}})" />
313313
<implementation name="IM_floor_vector4_genmsl" nodedef="ND_floor_vector4" target="genmsl" sourcecode="floor({{in}})" />
314+
<implementation name="IM_floor_integer_genmsl" nodedef="ND_floor_integer" target="genmsl" sourcecode="int(floor({{in}}))" />
314315

315316
<!-- <ceil> -->
316317
<implementation name="IM_ceil_float_genmsl" nodedef="ND_ceil_float" target="genmsl" sourcecode="ceil({{in}})" />
@@ -319,6 +320,7 @@
319320
<implementation name="IM_ceil_vector2_genmsl" nodedef="ND_ceil_vector2" target="genmsl" sourcecode="ceil({{in}})" />
320321
<implementation name="IM_ceil_vector3_genmsl" nodedef="ND_ceil_vector3" target="genmsl" sourcecode="ceil({{in}})" />
321322
<implementation name="IM_ceil_vector4_genmsl" nodedef="ND_ceil_vector4" target="genmsl" sourcecode="ceil({{in}})" />
323+
<implementation name="IM_ceil_integer_genmsl" nodedef="ND_ceil_integer" target="genmsl" sourcecode="int(ceil({{in}}))" />
322324

323325
<!-- <power> -->
324326
<implementation name="IM_power_float_genmsl" nodedef="ND_power_float" target="genmsl" sourcecode="pow({{in1}}, {{in2}})" />

libraries/stdlib/genosl/stdlib_genosl_impl.mtlx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@
313313
<implementation name="IM_floor_vector2_genosl" nodedef="ND_floor_vector2" target="genosl" sourcecode="floor({{in}})" />
314314
<implementation name="IM_floor_vector3_genosl" nodedef="ND_floor_vector3" target="genosl" sourcecode="floor({{in}})" />
315315
<implementation name="IM_floor_vector4_genosl" nodedef="ND_floor_vector4" target="genosl" sourcecode="floor({{in}})" />
316+
<implementation name="IM_floor_integer_genosl" nodedef="ND_floor_integer" target="genosl" sourcecode="int(floor({{in}}))" />
316317

317318
<!-- <ceil> -->
318319
<implementation name="IM_ceil_float_genosl" nodedef="ND_ceil_float" target="genosl" sourcecode="ceil({{in}})" />
@@ -321,6 +322,7 @@
321322
<implementation name="IM_ceil_vector2_genosl" nodedef="ND_ceil_vector2" target="genosl" sourcecode="ceil({{in}})" />
322323
<implementation name="IM_ceil_vector3_genosl" nodedef="ND_ceil_vector3" target="genosl" sourcecode="ceil({{in}})" />
323324
<implementation name="IM_ceil_vector4_genosl" nodedef="ND_ceil_vector4" target="genosl" sourcecode="ceil({{in}})" />
325+
<implementation name="IM_ceil_integer_genosl" nodedef="ND_ceil_integer" target="genosl" sourcecode="int(ceil({{in}}))" />
324326

325327
<!-- <power> -->
326328
<implementation name="IM_power_float_genosl" nodedef="ND_power_float" target="genosl" sourcecode="pow({{in1}}, {{in2}})" />

libraries/stdlib/stdlib_defs.mtlx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1699,6 +1699,10 @@
16991699
<input name="in" type="vector4" value="0.0, 0.0, 0.0, 0.0" />
17001700
<output name="out" type="vector4" defaultinput="in" />
17011701
</nodedef>
1702+
<nodedef name="ND_floor_integer" node="floor" nodegroup="math">
1703+
<input name="in" type="float" value="0.0" />
1704+
<output name="out" type="integer" defaultinput="in" />
1705+
</nodedef>
17021706

17031707
<!--
17041708
Node: <ceil>
@@ -1728,6 +1732,10 @@
17281732
<input name="in" type="vector4" value="0.0, 0.0, 0.0, 0.0" />
17291733
<output name="out" type="vector4" defaultinput="in" />
17301734
</nodedef>
1735+
<nodedef name="ND_ceil_integer" node="ceil" nodegroup="math">
1736+
<input name="in" type="float" value="0.0" />
1737+
<output name="out" type="integer" defaultinput="in" />
1738+
</nodedef>
17311739

17321740
<!--
17331741
Node: <power>

resources/Materials/TestSuite/stdlib/math/math.mtlx

Lines changed: 68 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -108,23 +108,77 @@
108108
</constant>
109109
<output name="out" type="vector4" nodename="sqrt1" />
110110
</nodegraph>
111-
<nodegraph name="ceil_float_nodegraph">
112-
<ceil name="ceil1" type="float">
111+
<nodegraph name="floor_float_nodegraph">
112+
<floor name="floor1" type="float">
113113
<input name="in" type="float" nodename="constant1" />
114-
</ceil>
114+
</floor>
115115
<constant name="constant1" type="float">
116116
<input name="value" type="float" value="0.5000" />
117117
</constant>
118-
<output name="out" type="float" nodename="ceil1" />
118+
<output name="out" type="float" nodename="floor1" />
119119
</nodegraph>
120-
<nodegraph name="floor_float_nodegraph">
121-
<floor name="floor1" type="float">
120+
<nodegraph name="floor_vector2_nodegraph">
121+
<floor name="floor1" type="vector2">
122+
<input name="in" type="vector2" nodename="constant1" />
123+
</floor>
124+
<constant name="constant1" type="vector2">
125+
<input name="value" type="vector2" value="0.5000, 1.5000" />
126+
</constant>
127+
<output name="out" type="vector2" nodename="floor1" />
128+
</nodegraph>
129+
<nodegraph name="floor_vector3_nodegraph">
130+
<floor name="floor1" type="vector3">
131+
<input name="in" type="vector3" nodename="constant1" />
132+
</floor>
133+
<constant name="constant1" type="vector3">
134+
<input name="value" type="vector3" value="0.5000, 1.5000, 0.0" />
135+
</constant>
136+
<output name="out" type="vector3" nodename="floor1" />
137+
</nodegraph>
138+
<nodegraph name="floor_vector4_nodegraph">
139+
<floor name="floor1" type="vector4">
140+
<input name="in" type="vector4" nodename="constant1" />
141+
</floor>
142+
<constant name="constant1" type="vector4">
143+
<input name="value" type="vector4" value="0.5000, 1.5000, 0.0, 1.0" />
144+
</constant>
145+
<output name="out" type="vector4" nodename="floor1" />
146+
</nodegraph>
147+
<nodegraph name="floor_color3_nodegraph">
148+
<constant name="constant1" type="color3">
149+
<input name="value" type="color3" value="0.5000, 1.5000, 0.0" />
150+
</constant>
151+
<floor name="floor1" type="color3">
152+
<input name="in" type="color3" nodename="constant1" />
153+
</floor>
154+
<output name="out" type="color3" nodename="floor1" />
155+
</nodegraph>
156+
<nodegraph name="floor_color4_nodegraph">
157+
<constant name="constant1" type="color4">
158+
<input name="value" type="color4" value="0.5000, 1.5000, 0.0, 1.0" />
159+
</constant>
160+
<floor name="floor1" type="color4">
161+
<input name="in" type="color4" nodename="constant1" />
162+
</floor>
163+
<output name="out" type="color4" nodename="floor1" />
164+
</nodegraph>
165+
<nodegraph name="floor_integer_nodegraph">
166+
<floor name="floor1" type="integer">
122167
<input name="in" type="float" nodename="constant1" />
123168
</floor>
124169
<constant name="constant1" type="float">
125170
<input name="value" type="float" value="0.5000" />
126171
</constant>
127-
<output name="out" type="float" nodename="floor1" />
172+
<output name="out" type="integer" nodename="floor1" />
173+
</nodegraph>
174+
<nodegraph name="ceil_float_nodegraph">
175+
<ceil name="ceil1" type="float">
176+
<input name="in" type="float" nodename="constant1" />
177+
</ceil>
178+
<constant name="constant1" type="float">
179+
<input name="value" type="float" value="0.5000" />
180+
</constant>
181+
<output name="out" type="float" nodename="ceil1" />
128182
</nodegraph>
129183
<nodegraph name="ceil_vector2_nodegraph">
130184
<ceil name="ceil1" type="vector2">
@@ -171,50 +225,14 @@
171225
</ceil>
172226
<output name="out" type="color4" nodename="ceil1" />
173227
</nodegraph>
174-
<nodegraph name="floor_vector2_nodegraph">
175-
<floor name="floor1" type="vector2">
176-
<input name="in" type="vector2" nodename="constant1" />
177-
</floor>
178-
<constant name="constant1" type="vector2">
179-
<input name="value" type="vector2" value="0.5000, 1.5000" />
180-
</constant>
181-
<output name="out" type="vector2" nodename="floor1" />
182-
</nodegraph>
183-
<nodegraph name="floor_vector3_nodegraph">
184-
<floor name="floor1" type="vector3">
185-
<input name="in" type="vector3" nodename="constant1" />
186-
</floor>
187-
<constant name="constant1" type="vector3">
188-
<input name="value" type="vector3" value="0.5000, 1.5000, 0.0" />
189-
</constant>
190-
<output name="out" type="vector3" nodename="floor1" />
191-
</nodegraph>
192-
<nodegraph name="floor_vector4_nodegraph">
193-
<floor name="floor1" type="vector4">
194-
<input name="in" type="vector4" nodename="constant1" />
195-
</floor>
196-
<constant name="constant1" type="vector4">
197-
<input name="value" type="vector4" value="0.5000, 1.5000, 0.0, 1.0" />
198-
</constant>
199-
<output name="out" type="vector4" nodename="floor1" />
200-
</nodegraph>
201-
<nodegraph name="floor_color3_nodegraph">
202-
<constant name="constant1" type="color3">
203-
<input name="value" type="color3" value="0.5000, 1.5000, 0.0" />
204-
</constant>
205-
<floor name="floor1" type="color3">
206-
<input name="in" type="color3" nodename="constant1" />
207-
</floor>
208-
<output name="out" type="color3" nodename="floor1" />
209-
</nodegraph>
210-
<nodegraph name="floor_color4_nodegraph">
211-
<constant name="constant1" type="color4">
212-
<input name="value" type="color4" value="0.5000, 1.5000, 0.0, 1.0" />
228+
<nodegraph name="ceil_integer_nodegraph">
229+
<ceil name="ceil1" type="integer">
230+
<input name="in" type="float" nodename="constant1" />
231+
</ceil>
232+
<constant name="constant1" type="float">
233+
<input name="value" type="float" value="0.5000" />
213234
</constant>
214-
<floor name="floor1" type="color4">
215-
<input name="in" type="color4" nodename="constant1" />
216-
</floor>
217-
<output name="out" type="color4" nodename="floor1" />
235+
<output name="out" type="integer" nodename="ceil1" />
218236
</nodegraph>
219237
<nodegraph name="sign_float">
220238
<constant name="constant1" type="float">

0 commit comments

Comments
 (0)