Skip to content

Commit

Permalink
Simplify OSL node implementations (#1185)
Browse files Browse the repository at this point in the history
This changelist simplifies the OSL implementations of common nodes such as 'if', 'add', and 'subtract', removing duplicate code and harmonizing inline implementations where possible.
  • Loading branch information
jstone-lucasfilm authored Jan 3, 2023
1 parent e610f4e commit f66296b
Show file tree
Hide file tree
Showing 12 changed files with 74 additions and 320 deletions.
86 changes: 17 additions & 69 deletions libraries/stdlib/genosl/include/mx_funcs.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,25 @@
// http://www.materialx.org/

#pragma once

#include "color4.h"
#include "vector2.h"
#include "vector4.h"
#include "matrix33.h"

//
// Support functions for OSL implementations of the MaterialX nodes.
//

float mx_ternary(int expr, float v1, float v2) { if (expr) return v1; else return v2; }
color mx_ternary(int expr, color v1, color v2) { if (expr) return v1; else return v2; }
color4 mx_ternary(int expr, color4 v1, color4 v2) { if (expr) return v1; else return v2; }
vector mx_ternary(int expr, vector v1, vector v2) { if (expr) return v1; else return v2; }
vector2 mx_ternary(int expr, vector2 v1, vector2 v2) { if (expr) return v1; else return v2; }
vector4 mx_ternary(int expr, vector4 v1, vector4 v2) { if (expr) return v1; else return v2; }
matrix mx_ternary(int expr, matrix v1, matrix v2) { if (expr) return v1; else return v2; }
matrix33 mx_ternary(int expr, matrix33 v1, matrix33 v2) { if (expr) return v1; else return v2; }

///////////////////////////////////////////////////////////////////////////
// This file contains lots of functions helpful in the implementation of
// the MaterialX nodes.
///////////////////////////////////////////////////////////////////////////


// Define mx_convert_type
// float -> colvecN
color mx_convert (float a) { return color(a); }
color4 mx_convert (float a) { return color4(a,a); }
vector mx_convert (float a) { return vector(a); }
vector2 mx_convert (float a) { return vector2(a,a); }
vector4 mx_convert (float a) { return vector4(a,a,a,a); }
// colN <-> vecN
vector mx_convert (color a) { return (vector)a; }
vector4 mx_convert (color4 a) { return vector4 (a.rgb[0], a.rgb[1], a.rgb[2], a.a); }
color mx_convert (vector a) { return (color)a; }
color4 mx_convert (vector4 a) { return color4 (color(a.x,a.y,a.z), a.w); }
// col3 <-> col4
color mx_convert (color4 a) { return a.rgb; }
color4 mx_convert (color a) { return color4(a,1.0); }

// Define mx_add() overloaded for all MX types.
float mx_add (float a, float b) { return a+b; }
point mx_add (point a, point b) { return a+b; }
point mx_add (point a, float b) { return a+b; }
vector mx_add (vector a, vector b) { return a+b; }
vector mx_add (vector a, float b) { return a+b; }
vector2 mx_add (vector2 a, vector2 b) { return a+b; }
vector2 mx_add (vector2 a, float b) { return a+b; }
vector4 mx_add (vector4 a, vector4 b) { return a+b; }
vector4 mx_add (vector4 a, float b) { return a+b; }
color mx_add (color a, color b) { return a+b; }
color mx_add (color a, float b) { return a+b; }
color4 mx_add (color4 a, color4 b) { return a+b; }
color4 mx_add (color4 a, float b) { return a+b; }
closure color mx_add (closure color a, closure color b) { return a+b; }

matrix33 mx_add(matrix33 a, matrix33 b)
{
Expand Down Expand Up @@ -86,22 +62,7 @@ matrix mx_add(matrix a, float b)
}


// Define mx_sub() overloaded for all MX types.
float mx_sub (float a, float b) { return a-b; }
point mx_sub (point a, point b) { return a-b; }
point mx_sub (point a, float b) { return a-b; }
vector mx_sub (vector a, vector b) { return a-b; }
vector mx_sub (vector a, float b) { return a-b; }
vector2 mx_sub (vector2 a, vector2 b) { return a-b; }
vector2 mx_sub (vector2 a, float b) { return a-b; }
vector4 mx_sub (vector4 a, vector4 b) { return a-b; }
vector4 mx_sub (vector4 a, float b) { return a-b; }
color mx_sub (color a, color b) { return a-b; }
color mx_sub (color a, float b) { return a-b; }
color4 mx_sub (color4 a, color4 b) { return a-b; }
color4 mx_sub (color4 a, float b) { return a-b; }

matrix33 mx_sub(matrix33 a, matrix33 b)
matrix33 mx_subtract(matrix33 a, matrix33 b)
{
return matrix33(matrix(
a.m[0][0]-b.m[0][0], a.m[0][1]-b.m[0][1], a.m[0][2]-b.m[0][2], 0.0,
Expand All @@ -110,7 +71,7 @@ matrix33 mx_sub(matrix33 a, matrix33 b)
0.0, 0.0, 0.0, 1.0));
}

matrix33 mx_sub(matrix33 a, float b)
matrix33 mx_subtract(matrix33 a, float b)
{
return matrix33(matrix(
a.m[0][0]-b, a.m[0][1]-b, a.m[0][2]-b, 0.0,
Expand All @@ -119,7 +80,7 @@ matrix33 mx_sub(matrix33 a, float b)
0.0, 0.0, 0.0, 1.0));
}

matrix mx_sub(matrix a, matrix b)
matrix mx_subtract(matrix a, matrix b)
{
return matrix(
a[0][0]-b[0][0], a[0][1]-b[0][1], a[0][2]-b[0][2], a[0][3]-b[0][3],
Expand All @@ -128,7 +89,7 @@ matrix mx_sub(matrix a, matrix b)
a[3][0]-b[3][0], a[3][1]-b[3][1], a[3][2]-b[3][2], a[3][3]-b[3][3]);
}

matrix mx_sub(matrix a, float b)
matrix mx_subtract(matrix a, float b)
{
return matrix(
a[0][0]-b, a[0][1]-b, a[0][2]-b, a[0][3]-b,
Expand All @@ -138,7 +99,6 @@ matrix mx_sub(matrix a, float b)
}


// remap `in` from [inLow, inHigh] to [outLow, outHigh], optionally clamping to the new range.
float mx_remap(float in, float inLow, float inHigh, float outLow, float outHigh, int doClamp)
{
float x = (in - inLow)/(inHigh-inLow);
Expand Down Expand Up @@ -210,9 +170,6 @@ vector4 mx_remap(vector4 in, float inLow, float inHigh, float outLow, float outH
}


//
// mx_contrast scales the input around a central `pivot` value.
//
float mx_contrast(float in, float amount, float pivot)
{
float out = in - pivot;
Expand Down Expand Up @@ -317,9 +274,6 @@ vector4 mx_noise(string noisetype, point position)
}


//
// fractional Brownian motion
//
float mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype)
{
float out = 0;
Expand Down Expand Up @@ -574,9 +528,3 @@ vector mx_worley_noise_vector3(vector p, float jitter, int metric)
result = sqrt(result);
return result;
}


color4 mx_combine(float a, float b, float c, float d)
{
return color4(color(a,b,c), d);
}
2 changes: 1 addition & 1 deletion libraries/stdlib/genosl/mx_add.inline
Original file line number Diff line number Diff line change
@@ -1 +1 @@
mx_add({{in1}}, {{in2}})
{{in1}} + {{in2}}
2 changes: 1 addition & 1 deletion libraries/stdlib/genosl/mx_fractal3d_color4.osl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
void mx_fractal3d_color4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector position, output color4 result)
{
color4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
result = f * mx_combine(amplitude.x, amplitude.y, amplitude.z, amplitude.w);
result = f * color4(color(amplitude.x, amplitude.y, amplitude.z), amplitude.w);
}
1 change: 1 addition & 0 deletions libraries/stdlib/genosl/mx_ifequal.inline
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mx_ternary({{value1}} == {{value2}}, {{in1}}, {{in2}})
1 change: 1 addition & 0 deletions libraries/stdlib/genosl/mx_ifgreater.inline
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mx_ternary({{value1}} > {{value2}}, {{in1}}, {{in2}})
1 change: 1 addition & 0 deletions libraries/stdlib/genosl/mx_ifgreatereq.inline
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mx_ternary({{value1}} >= {{value2}}, {{in1}}, {{in2}})
2 changes: 1 addition & 1 deletion libraries/stdlib/genosl/mx_noise3d_color4.osl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
void mx_noise3d_color4(vector4 amplitude, float pivot, vector position, output color4 result)
{
color4 value = mx_noise("snoise", position);
result = value * mx_combine(amplitude.x, amplitude.y, amplitude.z, amplitude.w) + pivot;
result = value * color4(color(amplitude.x, amplitude.y, amplitude.z), amplitude.w) + pivot;
}
2 changes: 1 addition & 1 deletion libraries/stdlib/genosl/mx_subtract.inline
Original file line number Diff line number Diff line change
@@ -1 +1 @@
mx_sub({{in1}}, {{in2}})
{{in1}} - {{in2}}
100 changes: 50 additions & 50 deletions libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,10 @@
<implementation name="IM_add_vector3FA_genosl" nodedef="ND_add_vector3FA" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_vector4_genosl" nodedef="ND_add_vector4" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_vector4FA_genosl" nodedef="ND_add_vector4FA" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_matrix33_genosl" nodedef="ND_add_matrix33" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_matrix33FA_genosl" nodedef="ND_add_matrix33FA" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_matrix44_genosl" nodedef="ND_add_matrix44" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_matrix44FA_genosl" nodedef="ND_add_matrix44FA" file="mx_add.inline" target="genosl" />
<implementation name="IM_add_matrix33_genosl" nodedef="ND_add_matrix33" sourcecode="mx_add({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_add_matrix33FA_genosl" nodedef="ND_add_matrix33FA" sourcecode="mx_add({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_add_matrix44_genosl" nodedef="ND_add_matrix44" sourcecode="mx_add({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_add_matrix44FA_genosl" nodedef="ND_add_matrix44FA" sourcecode="mx_add({{in1}}, {{in2}})" target="genosl" />

<!-- <subtract> -->
<implementation name="IM_subtract_float_genosl" nodedef="ND_subtract_float" file="mx_subtract.inline" target="genosl" />
Expand All @@ -238,10 +238,10 @@
<implementation name="IM_subtract_vector3FA_genosl" nodedef="ND_subtract_vector3FA" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_vector4_genosl" nodedef="ND_subtract_vector4" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_vector4FA_genosl" nodedef="ND_subtract_vector4FA" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_matrix33_genosl" nodedef="ND_subtract_matrix33" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_matrix33FA_genosl" nodedef="ND_subtract_matrix33FA" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_matrix44_genosl" nodedef="ND_subtract_matrix44" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_matrix44FA_genosl" nodedef="ND_subtract_matrix44FA" file="mx_subtract.inline" target="genosl" />
<implementation name="IM_subtract_matrix33_genosl" nodedef="ND_subtract_matrix33" sourcecode="mx_subtract({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_subtract_matrix33FA_genosl" nodedef="ND_subtract_matrix33FA" sourcecode="mx_subtract({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_subtract_matrix44_genosl" nodedef="ND_subtract_matrix44" sourcecode="mx_subtract({{in1}}, {{in2}})" target="genosl" />
<implementation name="IM_subtract_matrix44FA_genosl" nodedef="ND_subtract_matrix44FA" sourcecode="mx_subtract({{in1}}, {{in2}})" target="genosl" />

<!-- <multiply> -->
<implementation name="IM_multiply_float_genosl" nodedef="ND_multiply_float" file="mx_multiply.inline" target="genosl" />
Expand Down Expand Up @@ -615,52 +615,52 @@
<!-- ======================================================================== -->

<!-- <ifgreater> -->
<implementation name="IM_ifgreater_float_genosl" nodedef="ND_ifgreater_float" target="genosl" />
<implementation name="IM_ifgreater_color3_genosl" nodedef="ND_ifgreater_color3" target="genosl" />
<implementation name="IM_ifgreater_color4_genosl" nodedef="ND_ifgreater_color4" target="genosl" />
<implementation name="IM_ifgreater_vector2_genosl" nodedef="ND_ifgreater_vector2" target="genosl" />
<implementation name="IM_ifgreater_vector3_genosl" nodedef="ND_ifgreater_vector3" target="genosl" />
<implementation name="IM_ifgreater_vector4_genosl" nodedef="ND_ifgreater_vector4" target="genosl" />
<implementation name="IM_ifgreater_floatI_genosl" nodedef="ND_ifgreater_floatI" target="genosl" />
<implementation name="IM_ifgreater_color3I_genosl" nodedef="ND_ifgreater_color3I" target="genosl" />
<implementation name="IM_ifgreater_color4I_genosl" nodedef="ND_ifgreater_color4I" target="genosl" />
<implementation name="IM_ifgreater_vector2I_genosl" nodedef="ND_ifgreater_vector2I" target="genosl" />
<implementation name="IM_ifgreater_vector3I_genosl" nodedef="ND_ifgreater_vector3I" target="genosl" />
<implementation name="IM_ifgreater_vector4I_genosl" nodedef="ND_ifgreater_vector4I" target="genosl" />
<implementation name="IM_ifgreater_float_genosl" nodedef="ND_ifgreater_float" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_color3_genosl" nodedef="ND_ifgreater_color3" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_color4_genosl" nodedef="ND_ifgreater_color4" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector2_genosl" nodedef="ND_ifgreater_vector2" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector3_genosl" nodedef="ND_ifgreater_vector3" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector4_genosl" nodedef="ND_ifgreater_vector4" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_floatI_genosl" nodedef="ND_ifgreater_floatI" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_color3I_genosl" nodedef="ND_ifgreater_color3I" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_color4I_genosl" nodedef="ND_ifgreater_color4I" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector2I_genosl" nodedef="ND_ifgreater_vector2I" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector3I_genosl" nodedef="ND_ifgreater_vector3I" file="mx_ifgreater.inline" target="genosl" />
<implementation name="IM_ifgreater_vector4I_genosl" nodedef="ND_ifgreater_vector4I" file="mx_ifgreater.inline" target="genosl" />

<!-- <ifgreatereq> -->
<implementation name="IM_ifgreatereq_float_genosl" nodedef="ND_ifgreatereq_float" target="genosl" />
<implementation name="IM_ifgreatereq_color3_genosl" nodedef="ND_ifgreatereq_color3" target="genosl" />
<implementation name="IM_ifgreatereq_color4_genosl" nodedef="ND_ifgreatereq_color4" target="genosl" />
<implementation name="IM_ifgreatereq_vector2_genosl" nodedef="ND_ifgreatereq_vector2" target="genosl" />
<implementation name="IM_ifgreatereq_vector3_genosl" nodedef="ND_ifgreatereq_vector3" target="genosl" />
<implementation name="IM_ifgreatereq_vector4_genosl" nodedef="ND_ifgreatereq_vector4" target="genosl" />
<implementation name="IM_ifgreatereq_floatI_genosl" nodedef="ND_ifgreatereq_floatI" target="genosl" />
<implementation name="IM_ifgreatereq_color3I_genosl" nodedef="ND_ifgreatereq_color3I" target="genosl" />
<implementation name="IM_ifgreatereq_color4I_genosl" nodedef="ND_ifgreatereq_color4I" target="genosl" />
<implementation name="IM_ifgreatereq_vector2I_genosl" nodedef="ND_ifgreatereq_vector2I" target="genosl" />
<implementation name="IM_ifgreatereq_vector3I_genosl" nodedef="ND_ifgreatereq_vector3I" target="genosl" />
<implementation name="IM_ifgreatereq_vector4I_genosl" nodedef="ND_ifgreatereq_vector4I" target="genosl" />
<implementation name="IM_ifgreatereq_float_genosl" nodedef="ND_ifgreatereq_float" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_color3_genosl" nodedef="ND_ifgreatereq_color3" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_color4_genosl" nodedef="ND_ifgreatereq_color4" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector2_genosl" nodedef="ND_ifgreatereq_vector2" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector3_genosl" nodedef="ND_ifgreatereq_vector3" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector4_genosl" nodedef="ND_ifgreatereq_vector4" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_floatI_genosl" nodedef="ND_ifgreatereq_floatI" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_color3I_genosl" nodedef="ND_ifgreatereq_color3I" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_color4I_genosl" nodedef="ND_ifgreatereq_color4I" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector2I_genosl" nodedef="ND_ifgreatereq_vector2I" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector3I_genosl" nodedef="ND_ifgreatereq_vector3I" file="mx_ifgreatereq.inline" target="genosl" />
<implementation name="IM_ifgreatereq_vector4I_genosl" nodedef="ND_ifgreatereq_vector4I" file="mx_ifgreatereq.inline" target="genosl" />

<!-- <ifequal> -->
<implementation name="IM_ifequal_float_genosl" nodedef="ND_ifequal_float" target="genosl" />
<implementation name="IM_ifequal_color3_genosl" nodedef="ND_ifequal_color3" target="genosl" />
<implementation name="IM_ifequal_color4_genosl" nodedef="ND_ifequal_color4" target="genosl" />
<implementation name="IM_ifequal_vector2_genosl" nodedef="ND_ifequal_vector2" target="genosl" />
<implementation name="IM_ifequal_vector3_genosl" nodedef="ND_ifequal_vector3" target="genosl" />
<implementation name="IM_ifequal_vector4_genosl" nodedef="ND_ifequal_vector4" target="genosl" />
<implementation name="IM_ifequal_floatI_genosl" nodedef="ND_ifequal_floatI" target="genosl" />
<implementation name="IM_ifequal_color3I_genosl" nodedef="ND_ifequal_color3I" target="genosl" />
<implementation name="IM_ifequal_color4I_genosl" nodedef="ND_ifequal_color4I" target="genosl" />
<implementation name="IM_ifequal_vector2I_genosl" nodedef="ND_ifequal_vector2I" target="genosl" />
<implementation name="IM_ifequal_vector3I_genosl" nodedef="ND_ifequal_vector3I" target="genosl" />
<implementation name="IM_ifequal_vector4I_genosl" nodedef="ND_ifequal_vector4I" target="genosl" />
<implementation name="IM_ifequal_floatB_genosl" nodedef="ND_ifequal_floatB" target="genosl" />
<implementation name="IM_ifequal_color3B_genosl" nodedef="ND_ifequal_color3B" target="genosl" />
<implementation name="IM_ifequal_color4B_genosl" nodedef="ND_ifequal_color4B" target="genosl" />
<implementation name="IM_ifequal_vector2B_genosl" nodedef="ND_ifequal_vector2B" target="genosl" />
<implementation name="IM_ifequal_vector3B_genosl" nodedef="ND_ifequal_vector3B" target="genosl" />
<implementation name="IM_ifequal_vector4B_genosl" nodedef="ND_ifequal_vector4B" target="genosl" />
<implementation name="IM_ifequal_float_genosl" nodedef="ND_ifequal_float" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color3_genosl" nodedef="ND_ifequal_color3" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color4_genosl" nodedef="ND_ifequal_color4" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector2_genosl" nodedef="ND_ifequal_vector2" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector3_genosl" nodedef="ND_ifequal_vector3" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector4_genosl" nodedef="ND_ifequal_vector4" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_floatI_genosl" nodedef="ND_ifequal_floatI" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color3I_genosl" nodedef="ND_ifequal_color3I" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color4I_genosl" nodedef="ND_ifequal_color4I" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector2I_genosl" nodedef="ND_ifequal_vector2I" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector3I_genosl" nodedef="ND_ifequal_vector3I" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector4I_genosl" nodedef="ND_ifequal_vector4I" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_floatB_genosl" nodedef="ND_ifequal_floatB" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color3B_genosl" nodedef="ND_ifequal_color3B" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_color4B_genosl" nodedef="ND_ifequal_color4B" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector2B_genosl" nodedef="ND_ifequal_vector2B" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector3B_genosl" nodedef="ND_ifequal_vector3B" file="mx_ifequal.inline" target="genosl" />
<implementation name="IM_ifequal_vector4B_genosl" nodedef="ND_ifequal_vector4B" file="mx_ifequal.inline" target="genosl" />

<!-- <switch> -->
<!-- 'which' type : float -->
Expand Down
Loading

0 comments on commit f66296b

Please sign in to comment.