Ajout du projet Depths sur Git
This commit is contained in:
Vendored
+91
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
Color transform functions.
|
||||
|
||||
These funcions are modified versions of the color operators found in Open Shading Language:
|
||||
github.com/imageworks/OpenShadingLanguage/blob/master/src/liboslexec/opcolor.cpp
|
||||
|
||||
It contains the subset of color operators needed to implement the MaterialX
|
||||
standard library. The modifications are for conversions from C++ to GLSL.
|
||||
|
||||
Original copyright notice:
|
||||
------------------------------------------------------------------------
|
||||
Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al.
|
||||
All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of Sony Pictures Imageworks nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
vec3 mx_hsvtorgb(vec3 hsv)
|
||||
{
|
||||
// Reference for this technique: Foley & van Dam
|
||||
float h = hsv.x; float s = hsv.y; float v = hsv.z;
|
||||
if (s < 0.0001f) {
|
||||
return vec3 (v, v, v);
|
||||
} else {
|
||||
h = 6.0f * (h - floor(h)); // expand to [0..6)
|
||||
int hi = int(trunc(h));
|
||||
float f = h - float(hi);
|
||||
float p = v * (1.0f-s);
|
||||
float q = v * (1.0f-s*f);
|
||||
float t = v * (1.0f-s*(1.0f-f));
|
||||
if (hi == 0)
|
||||
return vec3 (v, t, p);
|
||||
else if (hi == 1)
|
||||
return vec3 (q, v, p);
|
||||
else if (hi == 2)
|
||||
return vec3 (p, v, t);
|
||||
else if (hi == 3)
|
||||
return vec3 (p, q, v);
|
||||
else if (hi == 4)
|
||||
return vec3 (t, p, v);
|
||||
return vec3 (v, p, q);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
vec3 mx_rgbtohsv(vec3 c)
|
||||
{
|
||||
// See Foley & van Dam
|
||||
float r = c.x; float g = c.y; float b = c.z;
|
||||
float mincomp = min (r, min(g, b));
|
||||
float maxcomp = max (r, max(g, b));
|
||||
float delta = maxcomp - mincomp; // chroma
|
||||
float h, s, v;
|
||||
v = maxcomp;
|
||||
if (maxcomp > 0.0f)
|
||||
s = delta / maxcomp;
|
||||
else s = 0.0f;
|
||||
if (s <= 0.0f)
|
||||
h = 0.0f;
|
||||
else {
|
||||
if (r >= maxcomp) h = (g-b) / delta;
|
||||
else if (g >= maxcomp) h = 2.0f + (b-r) / delta;
|
||||
else h = 4.0f + (r-g) / delta;
|
||||
h *= (1.0f/6.0f);
|
||||
if (h < 0.0f)
|
||||
h += 1.0f;
|
||||
}
|
||||
return vec3(h, s, v);
|
||||
}
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
#define M_FLOAT_EPS 1e-8
|
||||
|
||||
float mx_square(float x)
|
||||
{
|
||||
return x*x;
|
||||
}
|
||||
|
||||
vec2 mx_square(vec2 x)
|
||||
{
|
||||
return x*x;
|
||||
}
|
||||
|
||||
vec3 mx_square(vec3 x)
|
||||
{
|
||||
return x*x;
|
||||
}
|
||||
Vendored
+636
@@ -0,0 +1,636 @@
|
||||
/*
|
||||
Noise Library.
|
||||
|
||||
This library is a modified version of the noise library found in
|
||||
Open Shading Language:
|
||||
github.com/imageworks/OpenShadingLanguage/blob/master/src/include/OSL/oslnoise.h
|
||||
|
||||
It contains the subset of noise types needed to implement the MaterialX
|
||||
standard library. The modifications are mainly conversions from C++ to GLSL.
|
||||
Produced results should be identical to the OSL noise functions.
|
||||
|
||||
Original copyright notice:
|
||||
------------------------------------------------------------------------
|
||||
Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al.
|
||||
All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of Sony Pictures Imageworks nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
float mx_select(bool b, float t, float f)
|
||||
{
|
||||
return b ? t : f;
|
||||
}
|
||||
|
||||
float mx_negate_if(float val, bool b)
|
||||
{
|
||||
return b ? -val : val;
|
||||
}
|
||||
|
||||
int mx_floor(float x)
|
||||
{
|
||||
return int(floor(x));
|
||||
}
|
||||
|
||||
// return mx_floor as well as the fractional remainder
|
||||
float mx_floorfrac(float x, out int i)
|
||||
{
|
||||
i = mx_floor(x);
|
||||
return x - float(i);
|
||||
}
|
||||
|
||||
float mx_bilerp(float v0, float v1, float v2, float v3, float s, float t)
|
||||
{
|
||||
float s1 = 1.0 - s;
|
||||
return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s);
|
||||
}
|
||||
vec3 mx_bilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, float s, float t)
|
||||
{
|
||||
float s1 = 1.0 - s;
|
||||
return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s);
|
||||
}
|
||||
float mx_trilerp(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float s, float t, float r)
|
||||
{
|
||||
float s1 = 1.0 - s;
|
||||
float t1 = 1.0 - t;
|
||||
float r1 = 1.0 - r;
|
||||
return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) +
|
||||
r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s)));
|
||||
}
|
||||
vec3 mx_trilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, vec3 v4, vec3 v5, vec3 v6, vec3 v7, float s, float t, float r)
|
||||
{
|
||||
float s1 = 1.0 - s;
|
||||
float t1 = 1.0 - t;
|
||||
float r1 = 1.0 - r;
|
||||
return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) +
|
||||
r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s)));
|
||||
}
|
||||
|
||||
// 2 and 3 dimensional gradient functions - perform a dot product against a
|
||||
// randomly chosen vector. Note that the gradient vector is not normalized, but
|
||||
// this only affects the overal "scale" of the result, so we simply account for
|
||||
// the scale by multiplying in the corresponding "perlin" function.
|
||||
float mx_gradient_float(uint hash, float x, float y)
|
||||
{
|
||||
// 8 possible directions (+-1,+-2) and (+-2,+-1)
|
||||
uint h = hash & 7u;
|
||||
float u = mx_select(h<4u, x, y);
|
||||
float v = 2.0 * mx_select(h<4u, y, x);
|
||||
// compute the dot product with (x,y).
|
||||
return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u));
|
||||
}
|
||||
float mx_gradient_float(uint hash, float x, float y, float z)
|
||||
{
|
||||
// use vectors pointing to the edges of the cube
|
||||
uint h = hash & 15u;
|
||||
float u = mx_select(h<8u, x, y);
|
||||
float v = mx_select(h<4u, y, mx_select((h==12u)||(h==14u), x, z));
|
||||
return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u));
|
||||
}
|
||||
vec3 mx_gradient_vec3(uvec3 hash, float x, float y)
|
||||
{
|
||||
return vec3(mx_gradient_float(hash.x, x, y), mx_gradient_float(hash.y, x, y), mx_gradient_float(hash.z, x, y));
|
||||
}
|
||||
vec3 mx_gradient_vec3(uvec3 hash, float x, float y, float z)
|
||||
{
|
||||
return vec3(mx_gradient_float(hash.x, x, y, z), mx_gradient_float(hash.y, x, y, z), mx_gradient_float(hash.z, x, y, z));
|
||||
}
|
||||
// Scaling factors to normalize the result of gradients above.
|
||||
// These factors were experimentally calculated to be:
|
||||
// 2D: 0.6616
|
||||
// 3D: 0.9820
|
||||
float mx_gradient_scale2d(float v) { return 0.6616 * v; }
|
||||
float mx_gradient_scale3d(float v) { return 0.9820 * v; }
|
||||
vec3 mx_gradient_scale2d(vec3 v) { return 0.6616 * v; }
|
||||
vec3 mx_gradient_scale3d(vec3 v) { return 0.9820 * v; }
|
||||
|
||||
/// Bitwise circular rotation left by k bits (for 32 bit unsigned integers)
|
||||
uint mx_rotl32(uint x, int k)
|
||||
{
|
||||
return (x<<k) | (x>>(32-k));
|
||||
}
|
||||
|
||||
void mx_bjmix(inout uint a, inout uint b, inout uint c)
|
||||
{
|
||||
a -= c; a ^= mx_rotl32(c, 4); c += b;
|
||||
b -= a; b ^= mx_rotl32(a, 6); a += c;
|
||||
c -= b; c ^= mx_rotl32(b, 8); b += a;
|
||||
a -= c; a ^= mx_rotl32(c,16); c += b;
|
||||
b -= a; b ^= mx_rotl32(a,19); a += c;
|
||||
c -= b; c ^= mx_rotl32(b, 4); b += a;
|
||||
}
|
||||
|
||||
// Mix up and combine the bits of a, b, and c (doesn't change them, but
|
||||
// returns a hash of those three original values).
|
||||
uint mx_bjfinal(uint a, uint b, uint c)
|
||||
{
|
||||
c ^= b; c -= mx_rotl32(b,14);
|
||||
a ^= c; a -= mx_rotl32(c,11);
|
||||
b ^= a; b -= mx_rotl32(a,25);
|
||||
c ^= b; c -= mx_rotl32(b,16);
|
||||
a ^= c; a -= mx_rotl32(c,4);
|
||||
b ^= a; b -= mx_rotl32(a,14);
|
||||
c ^= b; c -= mx_rotl32(b,24);
|
||||
return c;
|
||||
}
|
||||
|
||||
// Convert a 32 bit integer into a floating point number in [0,1]
|
||||
float mx_bits_to_01(uint bits)
|
||||
{
|
||||
return float(bits) / float(uint(0xffffffff));
|
||||
}
|
||||
|
||||
float mx_fade(float t)
|
||||
{
|
||||
return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);
|
||||
}
|
||||
|
||||
uint mx_hash_int(int x)
|
||||
{
|
||||
uint len = 1u;
|
||||
uint seed = uint(0xdeadbeef) + (len << 2u) + 13u;
|
||||
return mx_bjfinal(seed+uint(x), seed, seed);
|
||||
}
|
||||
|
||||
uint mx_hash_int(int x, int y)
|
||||
{
|
||||
uint len = 2u;
|
||||
uint a, b, c;
|
||||
a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u;
|
||||
a += uint(x);
|
||||
b += uint(y);
|
||||
return mx_bjfinal(a, b, c);
|
||||
}
|
||||
|
||||
uint mx_hash_int(int x, int y, int z)
|
||||
{
|
||||
uint len = 3u;
|
||||
uint a, b, c;
|
||||
a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u;
|
||||
a += uint(x);
|
||||
b += uint(y);
|
||||
c += uint(z);
|
||||
return mx_bjfinal(a, b, c);
|
||||
}
|
||||
|
||||
uint mx_hash_int(int x, int y, int z, int xx)
|
||||
{
|
||||
uint len = 4u;
|
||||
uint a, b, c;
|
||||
a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u;
|
||||
a += uint(x);
|
||||
b += uint(y);
|
||||
c += uint(z);
|
||||
mx_bjmix(a, b, c);
|
||||
a += uint(xx);
|
||||
return mx_bjfinal(a, b, c);
|
||||
}
|
||||
|
||||
uint mx_hash_int(int x, int y, int z, int xx, int yy)
|
||||
{
|
||||
uint len = 5u;
|
||||
uint a, b, c;
|
||||
a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u;
|
||||
a += uint(x);
|
||||
b += uint(y);
|
||||
c += uint(z);
|
||||
mx_bjmix(a, b, c);
|
||||
a += uint(xx);
|
||||
b += uint(yy);
|
||||
return mx_bjfinal(a, b, c);
|
||||
}
|
||||
|
||||
uvec3 mx_hash_vec3(int x, int y)
|
||||
{
|
||||
uint h = mx_hash_int(x, y);
|
||||
// we only need the low-order bits to be random, so split out
|
||||
// the 32 bit result into 3 parts for each channel
|
||||
uvec3 result;
|
||||
result.x = (h ) & 0xFFu;
|
||||
result.y = (h >> 8 ) & 0xFFu;
|
||||
result.z = (h >> 16) & 0xFFu;
|
||||
return result;
|
||||
}
|
||||
|
||||
uvec3 mx_hash_vec3(int x, int y, int z)
|
||||
{
|
||||
uint h = mx_hash_int(x, y, z);
|
||||
// we only need the low-order bits to be random, so split out
|
||||
// the 32 bit result into 3 parts for each channel
|
||||
uvec3 result;
|
||||
result.x = (h ) & 0xFFu;
|
||||
result.y = (h >> 8 ) & 0xFFu;
|
||||
result.z = (h >> 16) & 0xFFu;
|
||||
return result;
|
||||
}
|
||||
|
||||
float mx_perlin_noise_float(vec2 p)
|
||||
{
|
||||
int X, Y;
|
||||
float fx = mx_floorfrac(p.x, X);
|
||||
float fy = mx_floorfrac(p.y, Y);
|
||||
float u = mx_fade(fx);
|
||||
float v = mx_fade(fy);
|
||||
float result = mx_bilerp(
|
||||
mx_gradient_float(mx_hash_int(X , Y ), fx , fy ),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y ), fx-1.0, fy ),
|
||||
mx_gradient_float(mx_hash_int(X , Y+1), fx , fy-1.0),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y+1), fx-1.0, fy-1.0),
|
||||
u, v);
|
||||
return mx_gradient_scale2d(result);
|
||||
}
|
||||
|
||||
float mx_perlin_noise_float(vec3 p)
|
||||
{
|
||||
int X, Y, Z;
|
||||
float fx = mx_floorfrac(p.x, X);
|
||||
float fy = mx_floorfrac(p.y, Y);
|
||||
float fz = mx_floorfrac(p.z, Z);
|
||||
float u = mx_fade(fx);
|
||||
float v = mx_fade(fy);
|
||||
float w = mx_fade(fz);
|
||||
float result = mx_trilerp(
|
||||
mx_gradient_float(mx_hash_int(X , Y , Z ), fx , fy , fz ),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y , Z ), fx-1.0, fy , fz ),
|
||||
mx_gradient_float(mx_hash_int(X , Y+1, Z ), fx , fy-1.0, fz ),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ),
|
||||
mx_gradient_float(mx_hash_int(X , Y , Z+1), fx , fy , fz-1.0),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y , Z+1), fx-1.0, fy , fz-1.0),
|
||||
mx_gradient_float(mx_hash_int(X , Y+1, Z+1), fx , fy-1.0, fz-1.0),
|
||||
mx_gradient_float(mx_hash_int(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0),
|
||||
u, v, w);
|
||||
return mx_gradient_scale3d(result);
|
||||
}
|
||||
|
||||
vec3 mx_perlin_noise_vec3(vec2 p)
|
||||
{
|
||||
int X, Y;
|
||||
float fx = mx_floorfrac(p.x, X);
|
||||
float fy = mx_floorfrac(p.y, Y);
|
||||
float u = mx_fade(fx);
|
||||
float v = mx_fade(fy);
|
||||
vec3 result = mx_bilerp(
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y ), fx , fy ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y ), fx-1.0, fy ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y+1), fx , fy-1.0),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y+1), fx-1.0, fy-1.0),
|
||||
u, v);
|
||||
return mx_gradient_scale2d(result);
|
||||
}
|
||||
|
||||
vec3 mx_perlin_noise_vec3(vec3 p)
|
||||
{
|
||||
int X, Y, Z;
|
||||
float fx = mx_floorfrac(p.x, X);
|
||||
float fy = mx_floorfrac(p.y, Y);
|
||||
float fz = mx_floorfrac(p.z, Z);
|
||||
float u = mx_fade(fx);
|
||||
float v = mx_fade(fy);
|
||||
float w = mx_fade(fz);
|
||||
vec3 result = mx_trilerp(
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y , Z ), fx , fy , fz ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z ), fx-1.0, fy , fz ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z ), fx , fy-1.0, fz ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ),
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y , Z+1), fx , fy , fz-1.0),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z+1), fx-1.0, fy , fz-1.0),
|
||||
mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z+1), fx , fy-1.0, fz-1.0),
|
||||
mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0),
|
||||
u, v, w);
|
||||
return mx_gradient_scale3d(result);
|
||||
}
|
||||
|
||||
float mx_cell_noise_float(float p)
|
||||
{
|
||||
int ix = mx_floor(p);
|
||||
return mx_bits_to_01(mx_hash_int(ix));
|
||||
}
|
||||
|
||||
float mx_cell_noise_float(vec2 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
return mx_bits_to_01(mx_hash_int(ix, iy));
|
||||
}
|
||||
|
||||
float mx_cell_noise_float(vec3 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
int iz = mx_floor(p.z);
|
||||
return mx_bits_to_01(mx_hash_int(ix, iy, iz));
|
||||
}
|
||||
|
||||
float mx_cell_noise_float(vec4 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
int iz = mx_floor(p.z);
|
||||
int iw = mx_floor(p.w);
|
||||
return mx_bits_to_01(mx_hash_int(ix, iy, iz, iw));
|
||||
}
|
||||
|
||||
vec3 mx_cell_noise_vec3(float p)
|
||||
{
|
||||
int ix = mx_floor(p);
|
||||
return vec3(
|
||||
mx_bits_to_01(mx_hash_int(ix, 0)),
|
||||
mx_bits_to_01(mx_hash_int(ix, 1)),
|
||||
mx_bits_to_01(mx_hash_int(ix, 2))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 mx_cell_noise_vec3(vec2 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
return vec3(
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, 0)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, 1)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, 2))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 mx_cell_noise_vec3(vec3 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
int iz = mx_floor(p.z);
|
||||
return vec3(
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, 0)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, 1)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, 2))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 mx_cell_noise_vec3(vec4 p)
|
||||
{
|
||||
int ix = mx_floor(p.x);
|
||||
int iy = mx_floor(p.y);
|
||||
int iz = mx_floor(p.z);
|
||||
int iw = mx_floor(p.w);
|
||||
return vec3(
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 0)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 1)),
|
||||
mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 2))
|
||||
);
|
||||
}
|
||||
|
||||
float mx_fractal_noise_float(vec3 p, int octaves, float lacunarity, float diminish)
|
||||
{
|
||||
float result = 0.0;
|
||||
float amplitude = 1.0;
|
||||
for (int i = 0; i < octaves; ++i)
|
||||
{
|
||||
result += amplitude * mx_perlin_noise_float(p);
|
||||
amplitude *= diminish;
|
||||
p *= lacunarity;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
vec3 mx_fractal_noise_vec3(vec3 p, int octaves, float lacunarity, float diminish)
|
||||
{
|
||||
vec3 result = vec3(0.0);
|
||||
float amplitude = 1.0;
|
||||
for (int i = 0; i < octaves; ++i)
|
||||
{
|
||||
result += amplitude * mx_perlin_noise_vec3(p);
|
||||
amplitude *= diminish;
|
||||
p *= lacunarity;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
vec2 mx_fractal_noise_vec2(vec3 p, int octaves, float lacunarity, float diminish)
|
||||
{
|
||||
return vec2(mx_fractal_noise_float(p, octaves, lacunarity, diminish),
|
||||
mx_fractal_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish));
|
||||
}
|
||||
|
||||
vec4 mx_fractal_noise_vec4(vec3 p, int octaves, float lacunarity, float diminish)
|
||||
{
|
||||
vec3 c = mx_fractal_noise_vec3(p, octaves, lacunarity, diminish);
|
||||
float f = mx_fractal_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish);
|
||||
return vec4(c, f);
|
||||
}
|
||||
|
||||
float mx_worley_distance(vec2 p, int x, int y, int xoff, int yoff, float jitter, int metric)
|
||||
{
|
||||
vec3 tmp = mx_cell_noise_vec3(vec2(x+xoff, y+yoff));
|
||||
vec2 off = vec2(tmp.x, tmp.y);
|
||||
|
||||
off -= 0.5f;
|
||||
off *= jitter;
|
||||
off += 0.5f;
|
||||
|
||||
vec2 cellpos = vec2(float(x), float(y)) + off;
|
||||
vec2 diff = cellpos - p;
|
||||
if (metric == 2)
|
||||
return abs(diff.x) + abs(diff.y); // Manhattan distance
|
||||
if (metric == 3)
|
||||
return max(abs(diff.x), abs(diff.y)); // Chebyshev distance
|
||||
// Either Euclidian or Distance^2
|
||||
return dot(diff, diff);
|
||||
}
|
||||
|
||||
float mx_worley_distance(vec3 p, int x, int y, int z, int xoff, int yoff, int zoff, float jitter, int metric)
|
||||
{
|
||||
vec3 off = mx_cell_noise_vec3(vec3(x+xoff, y+yoff, z+zoff));
|
||||
|
||||
off -= 0.5f;
|
||||
off *= jitter;
|
||||
off += 0.5f;
|
||||
|
||||
vec3 cellpos = vec3(float(x), float(y), float(z)) + off;
|
||||
vec3 diff = cellpos - p;
|
||||
if (metric == 2)
|
||||
return abs(diff.x) + abs(diff.y) + abs(diff.z); // Manhattan distance
|
||||
if (metric == 3)
|
||||
return max(max(abs(diff.x), abs(diff.y)), abs(diff.z)); // Chebyshev distance
|
||||
// Either Euclidian or Distance^2
|
||||
return dot(diff, diff);
|
||||
}
|
||||
|
||||
float mx_worley_noise_float(vec2 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y;
|
||||
vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y));
|
||||
float sqdist = 1e6f; // Some big number for jitter > 1 (not all GPUs may be IEEE)
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric);
|
||||
sqdist = min(sqdist, dist);
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
|
||||
vec2 mx_worley_noise_vec2(vec2 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y;
|
||||
vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y));
|
||||
vec2 sqdist = vec2(1e6f, 1e6f);
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric);
|
||||
if (dist < sqdist.x)
|
||||
{
|
||||
sqdist.y = sqdist.x;
|
||||
sqdist.x = dist;
|
||||
}
|
||||
else if (dist < sqdist.y)
|
||||
{
|
||||
sqdist.y = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
|
||||
vec3 mx_worley_noise_vec3(vec2 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y;
|
||||
vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y));
|
||||
vec3 sqdist = vec3(1e6f, 1e6f, 1e6f);
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric);
|
||||
if (dist < sqdist.x)
|
||||
{
|
||||
sqdist.z = sqdist.y;
|
||||
sqdist.y = sqdist.x;
|
||||
sqdist.x = dist;
|
||||
}
|
||||
else if (dist < sqdist.y)
|
||||
{
|
||||
sqdist.z = sqdist.y;
|
||||
sqdist.y = dist;
|
||||
}
|
||||
else if (dist < sqdist.z)
|
||||
{
|
||||
sqdist.z = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
|
||||
float mx_worley_noise_float(vec3 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y, Z;
|
||||
vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z));
|
||||
float sqdist = 1e6f;
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
for (int z = -1; z <= 1; ++z)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric);
|
||||
sqdist = min(sqdist, dist);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
|
||||
vec2 mx_worley_noise_vec2(vec3 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y, Z;
|
||||
vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z));
|
||||
vec2 sqdist = vec2(1e6f, 1e6f);
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
for (int z = -1; z <= 1; ++z)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric);
|
||||
if (dist < sqdist.x)
|
||||
{
|
||||
sqdist.y = sqdist.x;
|
||||
sqdist.x = dist;
|
||||
}
|
||||
else if (dist < sqdist.y)
|
||||
{
|
||||
sqdist.y = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
|
||||
vec3 mx_worley_noise_vec3(vec3 p, float jitter, int metric)
|
||||
{
|
||||
int X, Y, Z;
|
||||
vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z));
|
||||
vec3 sqdist = vec3(1e6f, 1e6f, 1e6f);
|
||||
for (int x = -1; x <= 1; ++x)
|
||||
{
|
||||
for (int y = -1; y <= 1; ++y)
|
||||
{
|
||||
for (int z = -1; z <= 1; ++z)
|
||||
{
|
||||
float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric);
|
||||
if (dist < sqdist.x)
|
||||
{
|
||||
sqdist.z = sqdist.y;
|
||||
sqdist.y = sqdist.x;
|
||||
sqdist.x = dist;
|
||||
}
|
||||
else if (dist < sqdist.y)
|
||||
{
|
||||
sqdist.z = sqdist.y;
|
||||
sqdist.y = dist;
|
||||
}
|
||||
else if (dist < sqdist.z)
|
||||
{
|
||||
sqdist.z = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (metric == 0)
|
||||
sqdist = sqrt(sqdist);
|
||||
return sqdist;
|
||||
}
|
||||
Vendored
+91
@@ -0,0 +1,91 @@
|
||||
// Restrict to 7x7 kernel size for performance reasons
|
||||
#define MX_MAX_SAMPLE_COUNT 49
|
||||
// Size of all weights for all levels (including level 1)
|
||||
#define MX_WEIGHT_ARRAY_SIZE 84
|
||||
|
||||
//
|
||||
// Function to compute the sample size relative to a texture coordinate
|
||||
//
|
||||
vec2 mx_compute_sample_size_uv(vec2 uv, float filterSize, float filterOffset)
|
||||
{
|
||||
vec2 derivUVx = dFdx(uv) * 0.5f;
|
||||
vec2 derivUVy = dFdy(uv) * 0.5f;
|
||||
float derivX = abs(derivUVx.x) + abs(derivUVy.x);
|
||||
float derivY = abs(derivUVx.y) + abs(derivUVy.y);
|
||||
float sampleSizeU = 2.0f * filterSize * derivX + filterOffset;
|
||||
if (sampleSizeU < 1.0E-05f)
|
||||
sampleSizeU = 1.0E-05f;
|
||||
float sampleSizeV = 2.0f * filterSize * derivY + filterOffset;
|
||||
if (sampleSizeV < 1.0E-05f)
|
||||
sampleSizeV = 1.0E-05f;
|
||||
return vec2(sampleSizeU, sampleSizeV);
|
||||
}
|
||||
|
||||
//
|
||||
// Compute a normal mapped to 0..1 space based on a set of input
|
||||
// samples using a Sobel filter.
|
||||
//
|
||||
vec3 mx_normal_from_samples_sobel(float S[9], float _scale)
|
||||
{
|
||||
float nx = S[0] - S[2] + (2.0*S[3]) - (2.0*S[5]) + S[6] - S[8];
|
||||
float ny = S[0] + (2.0*S[1]) + S[2] - S[6] - (2.0*S[7]) - S[8];
|
||||
float nz = max(_scale, M_FLOAT_EPS) * sqrt(max(1.0 - nx * nx - ny * ny, M_FLOAT_EPS));
|
||||
vec3 norm = normalize(vec3(nx, ny, nz));
|
||||
return (norm + 1.0) * 0.5;
|
||||
}
|
||||
|
||||
//
|
||||
// Apply filter for float samples S, using weights W.
|
||||
// sampleCount should be a square of a odd number in the range { 1, 3, 5, 7 }
|
||||
//
|
||||
float mx_convolution_float(float S[MX_MAX_SAMPLE_COUNT], float W[MX_WEIGHT_ARRAY_SIZE], int offset, int sampleCount)
|
||||
{
|
||||
float result = 0.0;
|
||||
for (int i = 0; i < sampleCount; i++)
|
||||
{
|
||||
result += S[i]*W[i+offset];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Apply filter for vec2 samples S, using weights W.
|
||||
// sampleCount should be a square of a odd number in the range { 1, 3, 5, 7 }
|
||||
//
|
||||
vec2 mx_convolution_vec2(vec2 S[MX_MAX_SAMPLE_COUNT], float W[MX_WEIGHT_ARRAY_SIZE], int offset, int sampleCount)
|
||||
{
|
||||
vec2 result = vec2(0.0);
|
||||
for (int i=0; i<sampleCount; i++)
|
||||
{
|
||||
result += S[i]*W[i+offset];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Apply filter for vec3 samples S, using weights W.
|
||||
// sampleCount should be a square of a odd number in the range { 1, 3, 5, 7 }
|
||||
//
|
||||
vec3 mx_convolution_vec3(vec3 S[MX_MAX_SAMPLE_COUNT], float W[MX_WEIGHT_ARRAY_SIZE], int offset, int sampleCount)
|
||||
{
|
||||
vec3 result = vec3(0.0);
|
||||
for (int i=0; i<sampleCount; i++)
|
||||
{
|
||||
result += S[i]*W[i+offset];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Apply filter for vec4 samples S, using weights W.
|
||||
// sampleCount should be a square of a odd number { 1, 3, 5, 7 }
|
||||
//
|
||||
vec4 mx_convolution_vec4(vec4 S[MX_MAX_SAMPLE_COUNT], float W[MX_WEIGHT_ARRAY_SIZE], int offset, int sampleCount)
|
||||
{
|
||||
vec4 result = vec4(0.0);
|
||||
for (int i=0; i<sampleCount; i++)
|
||||
{
|
||||
result += S[i]*W[i+offset];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset)
|
||||
{
|
||||
uv = uv * uv_scale + uv_offset;
|
||||
return uv;
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset)
|
||||
{
|
||||
uv = uv * uv_scale + uv_offset;
|
||||
return vec2(uv.x, 1.0 - uv.y);
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
float mx_aastep(float threshold, float value)
|
||||
{
|
||||
float afwidth = length(vec2(dFdx(value), dFdy(value))) * 0.70710678118654757;
|
||||
return smoothstep(threshold-afwidth, threshold+afwidth, value);
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
#include "mx_burn_float.glsl"
|
||||
|
||||
void mx_burn_color3(vec3 fg, vec3 bg, float mixval, out vec3 result)
|
||||
{
|
||||
mx_burn_float(fg.x, bg.x, mixval, result.x);
|
||||
mx_burn_float(fg.y, bg.y, mixval, result.y);
|
||||
mx_burn_float(fg.z, bg.z, mixval, result.z);
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
#include "mx_burn_float.glsl"
|
||||
|
||||
void mx_burn_color4(vec4 fg, vec4 bg, float mixval, out vec4 result)
|
||||
{
|
||||
mx_burn_float(fg.x, bg.x, mixval, result.x);
|
||||
mx_burn_float(fg.y, bg.y, mixval, result.y);
|
||||
mx_burn_float(fg.z, bg.z, mixval, result.z);
|
||||
mx_burn_float(fg.w, bg.w, mixval, result.w);
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
void mx_burn_float(float fg, float bg, float mixval, out float result)
|
||||
{
|
||||
if (abs(fg) < M_FLOAT_EPS)
|
||||
{
|
||||
result = 0.0;
|
||||
return;
|
||||
}
|
||||
result = mixval*(1.0 - ((1.0 - bg) / fg)) + ((1.0-mixval)*bg);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_cellnoise2d_float(vec2 texcoord, out float result)
|
||||
{
|
||||
result = mx_cell_noise_float(texcoord);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_cellnoise3d_float(vec3 position, out float result)
|
||||
{
|
||||
result = mx_cell_noise_float(position);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
void mx_creatematrix_vector3_matrix33(vec3 in1, vec3 in2, vec3 in3, out mat3 result)
|
||||
{
|
||||
result = mat3(in1.x, in1.y, in1.z,
|
||||
in2.x, in2.y, in2.z,
|
||||
in3.x, in3.y, in3.z);
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
void mx_creatematrix_vector3_matrix44(vec3 in1, vec3 in2, vec3 in3, vec3 in4, out mat4 result)
|
||||
{
|
||||
result = mat4(in1.x, in1.y, in1.z, 0.0,
|
||||
in2.x, in2.y, in2.z, 0.0,
|
||||
in3.x, in3.y, in3.z, 0.0,
|
||||
in4.x, in4.y, in4.z, 1.0);
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
void mx_creatematrix_vector4_matrix44(vec4 in1, vec4 in2, vec4 in3, vec4 in4, out mat4 result)
|
||||
{
|
||||
result = mat4(in1.x, in1.y, in1.z, in1.w,
|
||||
in2.x, in2.y, in2.z, in2.w,
|
||||
in3.x, in3.y, in3.z, in3.w,
|
||||
in4.x, in4.y, in4.z, in4.w);
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
void mx_disjointover_color4(vec4 fg, vec4 bg, float mixval, out vec4 result)
|
||||
{
|
||||
float summedAlpha = fg.w + bg.w;
|
||||
|
||||
if (summedAlpha <= 1.0)
|
||||
{
|
||||
result.xyz = fg.xyz + bg.xyz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (abs(bg.w) < M_FLOAT_EPS)
|
||||
{
|
||||
result.xyz = vec3(0.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
float x = (1.0 - fg.w) / bg.w;
|
||||
result.xyz = fg.xyz + bg.xyz * x;
|
||||
}
|
||||
}
|
||||
result.w = min(summedAlpha, 1.0);
|
||||
|
||||
result.xyz = result.xyz * mixval + (1.0 - mixval) * bg.xyz;
|
||||
result.w = result.w * mixval + (1.0 - mixval) * bg.w;
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
#include "mx_dodge_float.glsl"
|
||||
|
||||
void mx_dodge_color3(vec3 fg, vec3 bg, float mixval, out vec3 result)
|
||||
{
|
||||
mx_dodge_float(fg.x, bg.x, mixval, result.x);
|
||||
mx_dodge_float(fg.y, bg.y, mixval, result.y);
|
||||
mx_dodge_float(fg.z, bg.z, mixval, result.z);
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
#include "mx_dodge_float.glsl"
|
||||
|
||||
void mx_dodge_color4(vec4 fg , vec4 bg , float mixval, out vec4 result)
|
||||
{
|
||||
mx_dodge_float(fg.x, bg.x, mixval, result.x);
|
||||
mx_dodge_float(fg.y, bg.y, mixval, result.y);
|
||||
mx_dodge_float(fg.z, bg.z, mixval, result.z);
|
||||
mx_dodge_float(fg.w, bg.w, mixval, result.w);
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
void mx_dodge_float(float fg, float bg, float mixval, out float result)
|
||||
{
|
||||
if (abs(1.0 - fg) < M_FLOAT_EPS)
|
||||
{
|
||||
result = 0.0;
|
||||
return;
|
||||
}
|
||||
result = mixval*(bg / (1.0 - fg)) + ((1.0-mixval)*bg);
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_fractal3d_float(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out float result)
|
||||
{
|
||||
float value = mx_fractal_noise_float(position, octaves, lacunarity, diminish);
|
||||
result = value * amplitude;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_fractal3d_vector2(vec2 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec2 result)
|
||||
{
|
||||
vec2 value = mx_fractal_noise_vec2(position, octaves, lacunarity, diminish);
|
||||
result = value * amplitude;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_fractal3d_vector3(vec3 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec3 result)
|
||||
{
|
||||
vec3 value = mx_fractal_noise_vec3(position, octaves, lacunarity, diminish);
|
||||
result = value * amplitude;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_fractal3d_vector4(vec4 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec4 result)
|
||||
{
|
||||
vec4 value = mx_fractal_noise_vec4(position, octaves, lacunarity, diminish);
|
||||
result = value * amplitude;
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_hsv.glsl"
|
||||
|
||||
void mx_hsvtorgb_color3(vec3 _in, out vec3 result)
|
||||
{
|
||||
result = mx_hsvtorgb(_in);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_hsv.glsl"
|
||||
|
||||
void mx_hsvtorgb_color4(vec4 _in, out vec4 result)
|
||||
{
|
||||
result = vec4(mx_hsvtorgb(_in.rgb), 1.0);
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_color3(sampler2D tex_sampler, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv).rgb;
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_color4(sampler2D tex_sampler, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv);
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_float(sampler2D tex_sampler, int layer, float defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out float result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv).r;
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_image_vector2.glsl
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_vector2(sampler2D tex_sampler, int layer, vec2 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec2 result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv).rg;
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_image_vector3.glsl
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_vector3(sampler2D tex_sampler, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv).rgb;
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_image_vector4.glsl
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/$fileTransformUv"
|
||||
|
||||
void mx_image_vector4(sampler2D tex_sampler, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result)
|
||||
{
|
||||
vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset);
|
||||
result = texture(tex_sampler, uv);
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_luminance_color3(vec3 _in, vec3 lumacoeffs, out vec3 result)
|
||||
{
|
||||
result = vec3(dot(_in, lumacoeffs));
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_luminance_color4(vec4 _in, vec3 lumacoeffs, out vec4 result)
|
||||
{
|
||||
result = vec4(vec3(dot(_in.rgb, lumacoeffs)), _in.a);
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
void mx_mix_surfaceshader(surfaceshader fg, surfaceshader bg, float w, out surfaceshader returnshader)
|
||||
{
|
||||
returnshader.color = mix(bg.color, fg.color, w);
|
||||
returnshader.transparency = mix(bg.transparency, fg.transparency, w);
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_noise2d_float.glsl
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise2d_float(float amplitude, float pivot, vec2 texcoord, out float result)
|
||||
{
|
||||
float value = mx_perlin_noise_float(texcoord);
|
||||
result = value * amplitude + pivot;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise2d_vector2(vec2 amplitude, float pivot, vec2 texcoord, out vec2 result)
|
||||
{
|
||||
vec3 value = mx_perlin_noise_vec3(texcoord);
|
||||
result = value.xy * amplitude + pivot;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise2d_vector3(vec3 amplitude, float pivot, vec2 texcoord, out vec3 result)
|
||||
{
|
||||
vec3 value = mx_perlin_noise_vec3(texcoord);
|
||||
result = value * amplitude + pivot;
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise2d_vector4(vec4 amplitude, float pivot, vec2 texcoord, out vec4 result)
|
||||
{
|
||||
vec3 xyz = mx_perlin_noise_vec3(texcoord);
|
||||
float w = mx_perlin_noise_float(texcoord + vec2(19, 73));
|
||||
result = vec4(xyz, w) * amplitude + pivot;
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_noise3d_float.glsl
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise3d_float(float amplitude, float pivot, vec3 position, out float result)
|
||||
{
|
||||
float value = mx_perlin_noise_float(position);
|
||||
result = value * amplitude + pivot;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise3d_vector2(vec2 amplitude, float pivot, vec3 position, out vec2 result)
|
||||
{
|
||||
vec3 value = mx_perlin_noise_vec3(position);
|
||||
result = value.xy * amplitude + pivot;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise3d_vector3(vec3 amplitude, float pivot, vec3 position, out vec3 result)
|
||||
{
|
||||
vec3 value = mx_perlin_noise_vec3(position);
|
||||
result = value * amplitude + pivot;
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_noise3d_vector4(vec4 amplitude, float pivot, vec3 position, out vec4 result)
|
||||
{
|
||||
vec3 xyz = mx_perlin_noise_vec3(position);
|
||||
float w = mx_perlin_noise_float(position + vec3(19, 73, 29));
|
||||
result = vec4(xyz, w) * amplitude + pivot;
|
||||
}
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
void mx_normalmap_vector2(vec3 value, int map_space, vec2 normal_scale, vec3 N, vec3 T, out vec3 result)
|
||||
{
|
||||
// Decode the normal map.
|
||||
value = (value == vec3(0.0f)) ? vec3(0.0, 0.0, 1.0) : value * 2.0 - 1.0;
|
||||
|
||||
// Transform from tangent space if needed.
|
||||
if (map_space == 0)
|
||||
{
|
||||
vec3 B = normalize(cross(N, T));
|
||||
value.xy *= normal_scale;
|
||||
value = T * value.x + B * value.y + N * value.z;
|
||||
}
|
||||
|
||||
// Normalize the result.
|
||||
result = normalize(value);
|
||||
}
|
||||
|
||||
void mx_normalmap_float(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T, out vec3 result)
|
||||
{
|
||||
mx_normalmap_vector2(value, map_space, vec2(normal_scale), N, T, result);
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_premult_color4(vec4 _in, out vec4 result)
|
||||
{
|
||||
result = vec4(_in.rgb * _in.a, _in.a);
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramplr_float(float valuel, float valuer, vec2 texcoord, out float result)
|
||||
{
|
||||
result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramplr_vector2(vec2 valuel, vec2 valuer, vec2 texcoord, out vec2 result)
|
||||
{
|
||||
result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramplr_vector3(vec3 valuel, vec3 valuer, vec2 texcoord, out vec3 result)
|
||||
{
|
||||
result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramplr_vector4(vec4 valuel, vec4 valuer, vec2 texcoord, out vec4 result)
|
||||
{
|
||||
result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) );
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramptb_float(float valuet, float valueb, vec2 texcoord, out float result)
|
||||
{
|
||||
result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramptb_vector2(vec2 valuet, vec2 valueb, vec2 texcoord, out vec2 result)
|
||||
{
|
||||
result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramptb_vector3(vec3 valuet, vec3 valueb, vec2 texcoord, out vec3 result)
|
||||
{
|
||||
result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) );
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_ramptb_vector4(vec4 valuet, vec4 valueb, vec2 texcoord, out vec4 result)
|
||||
{
|
||||
result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) );
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_hsv.glsl"
|
||||
|
||||
void mx_rgbtohsv_color3(vec3 _in, out vec3 result)
|
||||
{
|
||||
result = mx_rgbtohsv(_in);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_hsv.glsl"
|
||||
|
||||
void mx_rgbtohsv_color4(vec4 _in, out vec4 result)
|
||||
{
|
||||
result = vec4(mx_rgbtohsv(_in.rgb), 1.0);
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
void mx_rotate_vector2(vec2 _in, float amount, out vec2 result)
|
||||
{
|
||||
float rotationRadians = radians(amount);
|
||||
float sa = sin(rotationRadians);
|
||||
float ca = cos(rotationRadians);
|
||||
result = vec2(ca*_in.x + sa*_in.y, -sa*_in.x + ca*_in.y);
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
mat4 mx_rotationMatrix(vec3 axis, float angle)
|
||||
{
|
||||
axis = normalize(axis);
|
||||
float s = sin(angle);
|
||||
float c = cos(angle);
|
||||
float oc = 1.0 - c;
|
||||
|
||||
return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,
|
||||
oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,
|
||||
oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,
|
||||
0.0, 0.0, 0.0, 1.0);
|
||||
}
|
||||
|
||||
void mx_rotate_vector3(vec3 _in, float amount, vec3 axis, out vec3 result)
|
||||
{
|
||||
float rotationRadians = radians(amount);
|
||||
mat4 m = mx_rotationMatrix(axis, rotationRadians);
|
||||
result = (m * vec4(_in, 1.0)).xyz;
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
void mx_smoothstep_float(float val, float low, float high, out float result)
|
||||
{
|
||||
if (val <= low)
|
||||
result = 0.0;
|
||||
else if (val >= high)
|
||||
result = 1.0;
|
||||
else
|
||||
result = smoothstep(low, high, val);
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#include "mx_smoothstep_float.glsl"
|
||||
|
||||
void mx_smoothstep_vector2(vec2 val, vec2 low, vec2 high, out vec2 result)
|
||||
{
|
||||
mx_smoothstep_float(val.x, low.x, high.x, result.x);
|
||||
mx_smoothstep_float(val.y, low.y, high.y, result.y);
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#include "mx_smoothstep_float.glsl"
|
||||
|
||||
void mx_smoothstep_vector3(vec3 val, vec3 low, vec3 high, out vec3 result)
|
||||
{
|
||||
mx_smoothstep_float(val.x, low.x, high.x, result.x);
|
||||
mx_smoothstep_float(val.y, low.y, high.y, result.y);
|
||||
mx_smoothstep_float(val.z, low.z, high.z, result.z);
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
#include "mx_smoothstep_float.glsl"
|
||||
|
||||
void mx_smoothstep_vector4(vec4 val, vec4 low, vec4 high, out vec4 result)
|
||||
{
|
||||
mx_smoothstep_float(val.x, low.x, high.x, result.x);
|
||||
mx_smoothstep_float(val.y, low.y, high.y, result.y);
|
||||
mx_smoothstep_float(val.z, low.z, high.z, result.z);
|
||||
mx_smoothstep_float(val.w, low.w, high.w, result.w);
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_splitlr_float.glsl
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splitlr_float(float valuel, float valuer, float center, vec2 texcoord, out float result)
|
||||
{
|
||||
result = mix(valuel, valuer, mx_aastep(center, texcoord.x));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splitlr_vector2(vec2 valuel, vec2 valuer, float center, vec2 texcoord, out vec2 result)
|
||||
{
|
||||
result = mix(valuel, valuer, mx_aastep(center, texcoord.x));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splitlr_vector3(vec3 valuel, vec3 valuer, float center, vec2 texcoord, out vec3 result)
|
||||
{
|
||||
result = mix(valuel, valuer, mx_aastep(center, texcoord.x));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splitlr_vector4(vec4 valuel, vec4 valuer, float center, vec2 texcoord, out vec4 result)
|
||||
{
|
||||
result = mix(valuel, valuer, mx_aastep(center, texcoord.x));
|
||||
}
|
||||
Packaged/Windows/Engine/Binaries/ThirdParty/MaterialX/libraries/stdlib/genglsl/mx_splittb_float.glsl
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splittb_float(float valuet, float valueb, float center, vec2 texcoord, out float result)
|
||||
{
|
||||
result = mix(valuet, valueb, mx_aastep(center, texcoord.y));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splittb_vector2(vec2 valuet, vec2 valueb, float center, vec2 texcoord, out vec2 result)
|
||||
{
|
||||
result = mix(valuet, valueb, mx_aastep(center, texcoord.y));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splittb_vector3(vec3 valuet, vec3 valueb, float center, vec2 texcoord, out vec3 result)
|
||||
{
|
||||
result = mix(valuet, valueb, mx_aastep(center, texcoord.y));
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "mx_aastep.glsl"
|
||||
|
||||
void mx_splittb_vector4(vec4 valuet, vec4 valueb, float center, vec2 texcoord, out vec4 result)
|
||||
{
|
||||
result = mix(valuet, valueb, mx_aastep(center, texcoord.y));
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
void mx_transformmatrix_vector2M3(vec2 val, mat3 transform, out vec2 result)
|
||||
{
|
||||
vec3 res = transform * vec3(val, 1.0);
|
||||
result = res.xy;
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
void mx_transformmatrix_vector3M4(vec3 val, mat4 transform, out vec3 result)
|
||||
{
|
||||
vec4 res = transform * vec4(val, 1.0);
|
||||
result = res.xyz;
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
void mx_unpremult_color4(vec4 _in, out vec4 result)
|
||||
{
|
||||
result = vec4(_in.rgb / _in.a, _in.a);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise2d_float(vec2 texcoord, float jitter, out float result)
|
||||
{
|
||||
result = mx_worley_noise_float(texcoord, jitter, 0);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise2d_vector2(vec2 texcoord, float jitter, out vec2 result)
|
||||
{
|
||||
result = mx_worley_noise_vec2(texcoord, jitter, 0);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise2d_vector3(vec2 texcoord, float jitter, out vec3 result)
|
||||
{
|
||||
result = mx_worley_noise_vec3(texcoord, jitter, 0);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise3d_float(vec3 position, float jitter, out float result)
|
||||
{
|
||||
result = mx_worley_noise_float(position, jitter, 0);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise3d_vector2(vec3 position, float jitter, out vec2 result)
|
||||
{
|
||||
result = mx_worley_noise_vec2(position, jitter, 0);
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
#include "lib/mx_noise.glsl"
|
||||
|
||||
void mx_worleynoise3d_vector3(vec3 position, float jitter, out vec3 result)
|
||||
{
|
||||
result = mx_worley_noise_vec3(position, jitter, 0);
|
||||
}
|
||||
+775
@@ -0,0 +1,775 @@
|
||||
<?xml version="1.0"?>
|
||||
<materialx version="1.38">
|
||||
<!--
|
||||
Copyright Contributors to the MaterialX Project
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
Declarations for glsl implementations of standard nodes included in the MaterialX specification.
|
||||
-->
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Shader nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <surfacematerial> -->
|
||||
<implementation name="IM_surfacematerial_genglsl" nodedef="ND_surfacematerial" target="genglsl" />
|
||||
|
||||
<!-- <surface_unlit> -->
|
||||
<implementation name="IM_surface_unlit_genglsl" nodedef="ND_surface_unlit" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Texture nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <image> -->
|
||||
<implementation name="IM_image_float_genglsl" nodedef="ND_image_float" file="mx_image_float.glsl" function="mx_image_float" target="genglsl">
|
||||
<input name="default" type="float" implname="default_value" />
|
||||
</implementation>
|
||||
<implementation name="IM_image_color3_genglsl" nodedef="ND_image_color3" file="mx_image_color3.glsl" function="mx_image_color3" target="genglsl">
|
||||
<input name="default" type="color3" implname="default_value" />
|
||||
</implementation>
|
||||
<implementation name="IM_image_color4_genglsl" nodedef="ND_image_color4" file="mx_image_color4.glsl" function="mx_image_color4" target="genglsl">
|
||||
<input name="default" type="color4" implname="default_value" />
|
||||
</implementation>
|
||||
<implementation name="IM_image_vector2_genglsl" nodedef="ND_image_vector2" file="mx_image_vector2.glsl" function="mx_image_vector2" target="genglsl">
|
||||
<input name="default" type="vector2" implname="default_value" />
|
||||
</implementation>
|
||||
<implementation name="IM_image_vector3_genglsl" nodedef="ND_image_vector3" file="mx_image_vector3.glsl" function="mx_image_vector3" target="genglsl">
|
||||
<input name="default" type="vector3" implname="default_value" />
|
||||
</implementation>
|
||||
<implementation name="IM_image_vector4_genglsl" nodedef="ND_image_vector4" file="mx_image_vector4.glsl" function="mx_image_vector4" target="genglsl">
|
||||
<input name="default" type="vector4" implname="default_value" />
|
||||
</implementation>
|
||||
|
||||
<!-- <normalmap> -->
|
||||
<implementation name="IM_normalmap_float_genglsl" nodedef="ND_normalmap" file="mx_normalmap.glsl" function="mx_normalmap_float" target="genglsl" />
|
||||
<implementation name="IM_normalmap_vector2_genglsl" nodedef="ND_normalmap_vector2" file="mx_normalmap.glsl" function="mx_normalmap_vector2" target="genglsl" />
|
||||
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Procedural nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <constant> -->
|
||||
<implementation name="IM_constant_float_genglsl" nodedef="ND_constant_float" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_color3_genglsl" nodedef="ND_constant_color3" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_color4_genglsl" nodedef="ND_constant_color4" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_vector2_genglsl" nodedef="ND_constant_vector2" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_vector3_genglsl" nodedef="ND_constant_vector3" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_vector4_genglsl" nodedef="ND_constant_vector4" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_boolean_genglsl" nodedef="ND_constant_boolean" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_integer_genglsl" nodedef="ND_constant_integer" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_matrix33_genglsl" nodedef="ND_constant_matrix33" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_matrix44_genglsl" nodedef="ND_constant_matrix44" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_string_genglsl" nodedef="ND_constant_string" target="genglsl" sourcecode="{{value}}" />
|
||||
<implementation name="IM_constant_filename_genglsl" nodedef="ND_constant_filename" target="genglsl" sourcecode="{{value}}" />
|
||||
|
||||
<!-- <ramplr> -->
|
||||
<implementation name="IM_ramplr_float_genglsl" nodedef="ND_ramplr_float" file="mx_ramplr_float.glsl" function="mx_ramplr_float" target="genglsl" />
|
||||
<implementation name="IM_ramplr_color3_genglsl" nodedef="ND_ramplr_color3" file="mx_ramplr_vector3.glsl" function="mx_ramplr_vector3" target="genglsl" />
|
||||
<implementation name="IM_ramplr_color4_genglsl" nodedef="ND_ramplr_color4" file="mx_ramplr_vector4.glsl" function="mx_ramplr_vector4" target="genglsl" />
|
||||
<implementation name="IM_ramplr_vector2_genglsl" nodedef="ND_ramplr_vector2" file="mx_ramplr_vector2.glsl" function="mx_ramplr_vector2" target="genglsl" />
|
||||
<implementation name="IM_ramplr_vector3_genglsl" nodedef="ND_ramplr_vector3" file="mx_ramplr_vector3.glsl" function="mx_ramplr_vector3" target="genglsl" />
|
||||
<implementation name="IM_ramplr_vector4_genglsl" nodedef="ND_ramplr_vector4" file="mx_ramplr_vector4.glsl" function="mx_ramplr_vector4" target="genglsl" />
|
||||
|
||||
<!-- <ramptb> -->
|
||||
<implementation name="IM_ramptb_float_genglsl" nodedef="ND_ramptb_float" file="mx_ramptb_float.glsl" function="mx_ramptb_float" target="genglsl" />
|
||||
<implementation name="IM_ramptb_color3_genglsl" nodedef="ND_ramptb_color3" file="mx_ramptb_vector3.glsl" function="mx_ramptb_vector3" target="genglsl" />
|
||||
<implementation name="IM_ramptb_color4_genglsl" nodedef="ND_ramptb_color4" file="mx_ramptb_vector4.glsl" function="mx_ramptb_vector4" target="genglsl" />
|
||||
<implementation name="IM_ramptb_vector2_genglsl" nodedef="ND_ramptb_vector2" file="mx_ramptb_vector2.glsl" function="mx_ramptb_vector2" target="genglsl" />
|
||||
<implementation name="IM_ramptb_vector3_genglsl" nodedef="ND_ramptb_vector3" file="mx_ramptb_vector3.glsl" function="mx_ramptb_vector3" target="genglsl" />
|
||||
<implementation name="IM_ramptb_vector4_genglsl" nodedef="ND_ramptb_vector4" file="mx_ramptb_vector4.glsl" function="mx_ramptb_vector4" target="genglsl" />
|
||||
|
||||
<!-- <splitlr> -->
|
||||
<implementation name="IM_splitlr_float_genglsl" nodedef="ND_splitlr_float" file="mx_splitlr_float.glsl" function="mx_splitlr_float" target="genglsl" />
|
||||
<implementation name="IM_splitlr_color3_genglsl" nodedef="ND_splitlr_color3" file="mx_splitlr_vector3.glsl" function="mx_splitlr_vector3" target="genglsl" />
|
||||
<implementation name="IM_splitlr_color4_genglsl" nodedef="ND_splitlr_color4" file="mx_splitlr_vector4.glsl" function="mx_splitlr_vector4" target="genglsl" />
|
||||
<implementation name="IM_splitlr_vector2_genglsl" nodedef="ND_splitlr_vector2" file="mx_splitlr_vector2.glsl" function="mx_splitlr_vector2" target="genglsl" />
|
||||
<implementation name="IM_splitlr_vector3_genglsl" nodedef="ND_splitlr_vector3" file="mx_splitlr_vector3.glsl" function="mx_splitlr_vector3" target="genglsl" />
|
||||
<implementation name="IM_splitlr_vector4_genglsl" nodedef="ND_splitlr_vector4" file="mx_splitlr_vector4.glsl" function="mx_splitlr_vector4" target="genglsl" />
|
||||
|
||||
<!-- <splittb> -->
|
||||
<implementation name="IM_splittb_float_genglsl" nodedef="ND_splittb_float" file="mx_splittb_float.glsl" function="mx_splittb_float" target="genglsl" />
|
||||
<implementation name="IM_splittb_color3_genglsl" nodedef="ND_splittb_color3" file="mx_splittb_vector3.glsl" function="mx_splittb_vector3" target="genglsl" />
|
||||
<implementation name="IM_splittb_color4_genglsl" nodedef="ND_splittb_color4" file="mx_splittb_vector4.glsl" function="mx_splittb_vector4" target="genglsl" />
|
||||
<implementation name="IM_splittb_vector2_genglsl" nodedef="ND_splittb_vector2" file="mx_splittb_vector2.glsl" function="mx_splittb_vector2" target="genglsl" />
|
||||
<implementation name="IM_splittb_vector3_genglsl" nodedef="ND_splittb_vector3" file="mx_splittb_vector3.glsl" function="mx_splittb_vector3" target="genglsl" />
|
||||
<implementation name="IM_splittb_vector4_genglsl" nodedef="ND_splittb_vector4" file="mx_splittb_vector4.glsl" function="mx_splittb_vector4" target="genglsl" />
|
||||
|
||||
<!-- <noise2d> -->
|
||||
<implementation name="IM_noise2d_float_genglsl" nodedef="ND_noise2d_float" file="mx_noise2d_float.glsl" function="mx_noise2d_float" target="genglsl" />
|
||||
<implementation name="IM_noise2d_vector2_genglsl" nodedef="ND_noise2d_vector2" file="mx_noise2d_vector2.glsl" function="mx_noise2d_vector2" target="genglsl" />
|
||||
<implementation name="IM_noise2d_vector3_genglsl" nodedef="ND_noise2d_vector3" file="mx_noise2d_vector3.glsl" function="mx_noise2d_vector3" target="genglsl" />
|
||||
<implementation name="IM_noise2d_vector4_genglsl" nodedef="ND_noise2d_vector4" file="mx_noise2d_vector4.glsl" function="mx_noise2d_vector4" target="genglsl" />
|
||||
|
||||
<!-- <noise3d> -->
|
||||
<implementation name="IM_noise3d_float_genglsl" nodedef="ND_noise3d_float" file="mx_noise3d_float.glsl" function="mx_noise3d_float" target="genglsl" />
|
||||
<implementation name="IM_noise3d_vector2_genglsl" nodedef="ND_noise3d_vector2" file="mx_noise3d_vector2.glsl" function="mx_noise3d_vector2" target="genglsl" />
|
||||
<implementation name="IM_noise3d_vector3_genglsl" nodedef="ND_noise3d_vector3" file="mx_noise3d_vector3.glsl" function="mx_noise3d_vector3" target="genglsl" />
|
||||
<implementation name="IM_noise3d_vector4_genglsl" nodedef="ND_noise3d_vector4" file="mx_noise3d_vector4.glsl" function="mx_noise3d_vector4" target="genglsl" />
|
||||
|
||||
<!-- <fractal3d> -->
|
||||
<implementation name="IM_fractal3d_float_genglsl" nodedef="ND_fractal3d_float" file="mx_fractal3d_float.glsl" function="mx_fractal3d_float" target="genglsl" />
|
||||
<implementation name="IM_fractal3d_vector2_genglsl" nodedef="ND_fractal3d_vector2" file="mx_fractal3d_vector2.glsl" function="mx_fractal3d_vector2" target="genglsl" />
|
||||
<implementation name="IM_fractal3d_vector3_genglsl" nodedef="ND_fractal3d_vector3" file="mx_fractal3d_vector3.glsl" function="mx_fractal3d_vector3" target="genglsl" />
|
||||
<implementation name="IM_fractal3d_vector4_genglsl" nodedef="ND_fractal3d_vector4" file="mx_fractal3d_vector4.glsl" function="mx_fractal3d_vector4" target="genglsl" />
|
||||
|
||||
<!-- <cellnoise2d> -->
|
||||
<implementation name="IM_cellnoise2d_float_genglsl" nodedef="ND_cellnoise2d_float" file="mx_cellnoise2d_float.glsl" function="mx_cellnoise2d_float" target="genglsl" />
|
||||
|
||||
<!-- <cellnoise3d> -->
|
||||
<implementation name="IM_cellnoise3d_float_genglsl" nodedef="ND_cellnoise3d_float" file="mx_cellnoise3d_float.glsl" function="mx_cellnoise3d_float" target="genglsl" />
|
||||
|
||||
<!-- <worleynoise2d> -->
|
||||
<implementation name="IM_worleynoise2d_float_genglsl" nodedef="ND_worleynoise2d_float" file="mx_worleynoise2d_float.glsl" function="mx_worleynoise2d_float" target="genglsl" />
|
||||
<implementation name="IM_worleynoise2d_vector2_genglsl" nodedef="ND_worleynoise2d_vector2" file="mx_worleynoise2d_vector2.glsl" function="mx_worleynoise2d_vector2" target="genglsl" />
|
||||
<implementation name="IM_worleynoise2d_vector3_genglsl" nodedef="ND_worleynoise2d_vector3" file="mx_worleynoise2d_vector3.glsl" function="mx_worleynoise2d_vector3" target="genglsl" />
|
||||
|
||||
<!-- <worleynoise3d> -->
|
||||
<implementation name="IM_worleynoise3d_float_genglsl" nodedef="ND_worleynoise3d_float" file="mx_worleynoise3d_float.glsl" function="mx_worleynoise3d_float" target="genglsl" />
|
||||
<implementation name="IM_worleynoise3d_vector2_genglsl" nodedef="ND_worleynoise3d_vector2" file="mx_worleynoise3d_vector2.glsl" function="mx_worleynoise3d_vector2" target="genglsl" />
|
||||
<implementation name="IM_worleynoise3d_vector3_genglsl" nodedef="ND_worleynoise3d_vector3" file="mx_worleynoise3d_vector3.glsl" function="mx_worleynoise3d_vector3" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Global nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <ambientocclusion> -->
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Geometric nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <position> -->
|
||||
<implementation name="IM_position_vector3_genglsl" nodedef="ND_position_vector3" target="genglsl" />
|
||||
|
||||
<!-- <normal> -->
|
||||
<implementation name="IM_normal_vector3_genglsl" nodedef="ND_normal_vector3" target="genglsl" />
|
||||
|
||||
<!-- <tangent> -->
|
||||
<implementation name="IM_tangent_vector3_genglsl" nodedef="ND_tangent_vector3" target="genglsl" />
|
||||
|
||||
<!-- <bitangent> -->
|
||||
<implementation name="IM_bitangent_vector3_genglsl" nodedef="ND_bitangent_vector3" target="genglsl" />
|
||||
|
||||
<!-- <texcoord> -->
|
||||
<implementation name="IM_texcoord_vector2_genglsl" nodedef="ND_texcoord_vector2" target="genglsl" />
|
||||
<implementation name="IM_texcoord_vector3_genglsl" nodedef="ND_texcoord_vector3" target="genglsl" />
|
||||
|
||||
<!-- <geomcolor> -->
|
||||
<implementation name="IM_geomcolor_float_genglsl" nodedef="ND_geomcolor_float" target="genglsl" />
|
||||
<implementation name="IM_geomcolor_color3_genglsl" nodedef="ND_geomcolor_color3" target="genglsl" />
|
||||
<implementation name="IM_geomcolor_color4_genglsl" nodedef="ND_geomcolor_color4" target="genglsl" />
|
||||
|
||||
<!-- <geompropvalue> -->
|
||||
<implementation name="IM_geompropvalue_integer_genglsl" nodedef="ND_geompropvalue_integer" function="mx_geompropvalue_int" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_boolean_genglsl" nodedef="ND_geompropvalue_boolean" function="mx_geompropvalue_bool" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_string_genglsl" nodedef="ND_geompropvalue_string" function="mx_geompropvalue_string" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_float_genglsl" nodedef="ND_geompropvalue_float" function="mx_geompropvalue_float" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_color3_genglsl" nodedef="ND_geompropvalue_color3" function="mx_geompropvalue_color" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_color4_genglsl" nodedef="ND_geompropvalue_color4" function="mx_geompropvalue_color4" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_vector2_genglsl" nodedef="ND_geompropvalue_vector2" function="mx_geompropvalue_vector2" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_vector3_genglsl" nodedef="ND_geompropvalue_vector3" function="mx_geompropvalue_vector" target="genglsl" />
|
||||
<implementation name="IM_geompropvalue_vector4_genglsl" nodedef="ND_geompropvalue_vector4" function="mx_geompropvalue_vector4" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Application nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <frame> -->
|
||||
<implementation name="IM_frame_float_genglsl" nodedef="ND_frame_float" function="mx_frame_float" target="genglsl" />
|
||||
|
||||
<!-- <time> -->
|
||||
<implementation name="IM_time_float_genglsl" nodedef="ND_time_float" function="mx_time_float" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Math nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <add> -->
|
||||
<implementation name="IM_add_float_genglsl" nodedef="ND_add_float" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_color3_genglsl" nodedef="ND_add_color3" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_color3FA_genglsl" nodedef="ND_add_color3FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_color4_genglsl" nodedef="ND_add_color4" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_color4FA_genglsl" nodedef="ND_add_color4FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector2_genglsl" nodedef="ND_add_vector2" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector2FA_genglsl" nodedef="ND_add_vector2FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector3_genglsl" nodedef="ND_add_vector3" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector3FA_genglsl" nodedef="ND_add_vector3FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector4_genglsl" nodedef="ND_add_vector4" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_vector4FA_genglsl" nodedef="ND_add_vector4FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_matrix33_genglsl" nodedef="ND_add_matrix33" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_matrix33FA_genglsl" nodedef="ND_add_matrix33FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_matrix44_genglsl" nodedef="ND_add_matrix44" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
<implementation name="IM_add_matrix44FA_genglsl" nodedef="ND_add_matrix44FA" target="genglsl" sourcecode="{{in1}} + {{in2}}" />
|
||||
|
||||
<!-- <subtract> -->
|
||||
<implementation name="IM_subtract_float_genglsl" nodedef="ND_subtract_float" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_color3_genglsl" nodedef="ND_subtract_color3" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_color3FA_genglsl" nodedef="ND_subtract_color3FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_color4_genglsl" nodedef="ND_subtract_color4" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_color4FA_genglsl" nodedef="ND_subtract_color4FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector2_genglsl" nodedef="ND_subtract_vector2" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector2FA_genglsl" nodedef="ND_subtract_vector2FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector3_genglsl" nodedef="ND_subtract_vector3" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector3FA_genglsl" nodedef="ND_subtract_vector3FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector4_genglsl" nodedef="ND_subtract_vector4" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_vector4FA_genglsl" nodedef="ND_subtract_vector4FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_matrix33_genglsl" nodedef="ND_subtract_matrix33" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_matrix33FA_genglsl" nodedef="ND_subtract_matrix33FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_matrix44_genglsl" nodedef="ND_subtract_matrix44" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
<implementation name="IM_subtract_matrix44FA_genglsl" nodedef="ND_subtract_matrix44FA" target="genglsl" sourcecode="{{in1}} - {{in2}}" />
|
||||
|
||||
<!-- <multiply> -->
|
||||
<implementation name="IM_multiply_float_genglsl" nodedef="ND_multiply_float" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_color3_genglsl" nodedef="ND_multiply_color3" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_color3FA_genglsl" nodedef="ND_multiply_color3FA" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_color4_genglsl" nodedef="ND_multiply_color4" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_color4FA_genglsl" nodedef="ND_multiply_color4FA" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector2_genglsl" nodedef="ND_multiply_vector2" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector2FA_genglsl" nodedef="ND_multiply_vector2FA" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector3_genglsl" nodedef="ND_multiply_vector3" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector3FA_genglsl" nodedef="ND_multiply_vector3FA" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector4_genglsl" nodedef="ND_multiply_vector4" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_vector4FA_genglsl" nodedef="ND_multiply_vector4FA" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_matrix33_genglsl" nodedef="ND_multiply_matrix33" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
<implementation name="IM_multiply_matrix44_genglsl" nodedef="ND_multiply_matrix44" target="genglsl" sourcecode="{{in1}} * {{in2}}" />
|
||||
|
||||
<!-- <divide> -->
|
||||
<implementation name="IM_divide_float_genglsl" nodedef="ND_divide_float" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_color3_genglsl" nodedef="ND_divide_color3" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_color3FA_genglsl" nodedef="ND_divide_color3FA" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_color4_genglsl" nodedef="ND_divide_color4" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_color4FA_genglsl" nodedef="ND_divide_color4FA" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector2_genglsl" nodedef="ND_divide_vector2" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector2FA_genglsl" nodedef="ND_divide_vector2FA" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector3_genglsl" nodedef="ND_divide_vector3" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector3FA_genglsl" nodedef="ND_divide_vector3FA" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector4_genglsl" nodedef="ND_divide_vector4" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_vector4FA_genglsl" nodedef="ND_divide_vector4FA" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_matrix33_genglsl" nodedef="ND_divide_matrix33" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
<implementation name="IM_divide_matrix44_genglsl" nodedef="ND_divide_matrix44" target="genglsl" sourcecode="{{in1}} / {{in2}}" />
|
||||
|
||||
<!-- <modulo> -->
|
||||
<implementation name="IM_modulo_float_genglsl" nodedef="ND_modulo_float" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_color3_genglsl" nodedef="ND_modulo_color3" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_color3FA_genglsl" nodedef="ND_modulo_color3FA" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_color4_genglsl" nodedef="ND_modulo_color4" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_color4FA_genglsl" nodedef="ND_modulo_color4FA" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector2_genglsl" nodedef="ND_modulo_vector2" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector2FA_genglsl" nodedef="ND_modulo_vector2FA" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector3_genglsl" nodedef="ND_modulo_vector3" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector3FA_genglsl" nodedef="ND_modulo_vector3FA" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector4_genglsl" nodedef="ND_modulo_vector4" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_modulo_vector4FA_genglsl" nodedef="ND_modulo_vector4FA" target="genglsl" sourcecode="mod({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <invert> -->
|
||||
<implementation name="IM_invert_float_genglsl" nodedef="ND_invert_float" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_color3_genglsl" nodedef="ND_invert_color3" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_color3FA_genglsl" nodedef="ND_invert_color3FA" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_color4_genglsl" nodedef="ND_invert_color4" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_color4FA_genglsl" nodedef="ND_invert_color4FA" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector2_genglsl" nodedef="ND_invert_vector2" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector2FA_genglsl" nodedef="ND_invert_vector2FA" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector3_genglsl" nodedef="ND_invert_vector3" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector3FA_genglsl" nodedef="ND_invert_vector3FA" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector4_genglsl" nodedef="ND_invert_vector4" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
<implementation name="IM_invert_vector4FA_genglsl" nodedef="ND_invert_vector4FA" target="genglsl" sourcecode="{{amount}} - {{in}}" />
|
||||
|
||||
<!-- <absval> -->
|
||||
<implementation name="IM_absval_float_genglsl" nodedef="ND_absval_float" target="genglsl" sourcecode="abs({{in}})" />
|
||||
<implementation name="IM_absval_color3_genglsl" nodedef="ND_absval_color3" target="genglsl" sourcecode="abs({{in}})" />
|
||||
<implementation name="IM_absval_color4_genglsl" nodedef="ND_absval_color4" target="genglsl" sourcecode="abs({{in}})" />
|
||||
<implementation name="IM_absval_vector2_genglsl" nodedef="ND_absval_vector2" target="genglsl" sourcecode="abs({{in}})" />
|
||||
<implementation name="IM_absval_vector3_genglsl" nodedef="ND_absval_vector3" target="genglsl" sourcecode="abs({{in}})" />
|
||||
<implementation name="IM_absval_vector4_genglsl" nodedef="ND_absval_vector4" target="genglsl" sourcecode="abs({{in}})" />
|
||||
|
||||
<!-- <floor> -->
|
||||
<implementation name="IM_floor_float_genglsl" nodedef="ND_floor_float" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_color3_genglsl" nodedef="ND_floor_color3" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_color4_genglsl" nodedef="ND_floor_color4" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_vector2_genglsl" nodedef="ND_floor_vector2" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_vector3_genglsl" nodedef="ND_floor_vector3" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_vector4_genglsl" nodedef="ND_floor_vector4" target="genglsl" sourcecode="floor({{in}})" />
|
||||
<implementation name="IM_floor_integer_genglsl" nodedef="ND_floor_integer" target="genglsl" sourcecode="int(floor({{in}}))" />
|
||||
|
||||
<!-- <ceil> -->
|
||||
<implementation name="IM_ceil_float_genglsl" nodedef="ND_ceil_float" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_color3_genglsl" nodedef="ND_ceil_color3" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_color4_genglsl" nodedef="ND_ceil_color4" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_vector2_genglsl" nodedef="ND_ceil_vector2" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_vector3_genglsl" nodedef="ND_ceil_vector3" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_vector4_genglsl" nodedef="ND_ceil_vector4" target="genglsl" sourcecode="ceil({{in}})" />
|
||||
<implementation name="IM_ceil_integer_genglsl" nodedef="ND_ceil_integer" target="genglsl" sourcecode="int(ceil({{in}}))" />
|
||||
|
||||
<!-- <round> -->
|
||||
<implementation name="IM_round_float_genglsl" nodedef="ND_round_float" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_color3_genglsl" nodedef="ND_round_color3" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_color4_genglsl" nodedef="ND_round_color4" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_vector2_genglsl" nodedef="ND_round_vector2" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_vector3_genglsl" nodedef="ND_round_vector3" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_vector4_genglsl" nodedef="ND_round_vector4" target="genglsl" sourcecode="round({{in}})" />
|
||||
<implementation name="IM_round_integer_genglsl" nodedef="ND_round_integer" target="genglsl" sourcecode="int(round({{in}}))" />
|
||||
|
||||
<!-- <power> -->
|
||||
<implementation name="IM_power_float_genglsl" nodedef="ND_power_float" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_color3_genglsl" nodedef="ND_power_color3" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_color3FA_genglsl" nodedef="ND_power_color3FA" target="genglsl" sourcecode="pow({{in1}}, vec3({{in2}}))" />
|
||||
<implementation name="IM_power_color4_genglsl" nodedef="ND_power_color4" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_color4FA_genglsl" nodedef="ND_power_color4FA" target="genglsl" sourcecode="pow({{in1}}, vec4({{in2}}))" />
|
||||
<implementation name="IM_power_vector2_genglsl" nodedef="ND_power_vector2" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_vector2FA_genglsl" nodedef="ND_power_vector2FA" target="genglsl" sourcecode="pow({{in1}}, vec2({{in2}}))" />
|
||||
<implementation name="IM_power_vector3_genglsl" nodedef="ND_power_vector3" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_vector3FA_genglsl" nodedef="ND_power_vector3FA" target="genglsl" sourcecode="pow({{in1}}, vec3({{in2}}))" />
|
||||
<implementation name="IM_power_vector4_genglsl" nodedef="ND_power_vector4" target="genglsl" sourcecode="pow({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_power_vector4FA_genglsl" nodedef="ND_power_vector4FA" target="genglsl" sourcecode="pow({{in1}}, vec4({{in2}}))" />
|
||||
|
||||
<!-- <sin>, <cos>, <tan>, <asin>, <acos>, <atan2> -->
|
||||
<implementation name="IM_sin_float_genglsl" nodedef="ND_sin_float" target="genglsl" sourcecode="sin({{in}})" />
|
||||
<implementation name="IM_cos_float_genglsl" nodedef="ND_cos_float" target="genglsl" sourcecode="cos({{in}})" />
|
||||
<implementation name="IM_tan_float_genglsl" nodedef="ND_tan_float" target="genglsl" sourcecode="tan({{in}})" />
|
||||
<implementation name="IM_asin_float_genglsl" nodedef="ND_asin_float" target="genglsl" sourcecode="asin({{in}})" />
|
||||
<implementation name="IM_acos_float_genglsl" nodedef="ND_acos_float" target="genglsl" sourcecode="acos({{in}})" />
|
||||
<implementation name="IM_atan2_float_genglsl" nodedef="ND_atan2_float" target="genglsl" sourcecode="atan({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_sin_vector2_genglsl" nodedef="ND_sin_vector2" target="genglsl" sourcecode="sin({{in}})" />
|
||||
<implementation name="IM_cos_vector2_genglsl" nodedef="ND_cos_vector2" target="genglsl" sourcecode="cos({{in}})" />
|
||||
<implementation name="IM_tan_vector2_genglsl" nodedef="ND_tan_vector2" target="genglsl" sourcecode="tan({{in}})" />
|
||||
<implementation name="IM_asin_vector2_genglsl" nodedef="ND_asin_vector2" target="genglsl" sourcecode="asin({{in}})" />
|
||||
<implementation name="IM_acos_vector2_genglsl" nodedef="ND_acos_vector2" target="genglsl" sourcecode="acos({{in}})" />
|
||||
<implementation name="IM_atan2_vector2_genglsl" nodedef="ND_atan2_vector2" target="genglsl" sourcecode="atan({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_sin_vector3_genglsl" nodedef="ND_sin_vector3" target="genglsl" sourcecode="sin({{in}})" />
|
||||
<implementation name="IM_cos_vector3_genglsl" nodedef="ND_cos_vector3" target="genglsl" sourcecode="cos({{in}})" />
|
||||
<implementation name="IM_tan_vector3_genglsl" nodedef="ND_tan_vector3" target="genglsl" sourcecode="tan({{in}})" />
|
||||
<implementation name="IM_asin_vector3_genglsl" nodedef="ND_asin_vector3" target="genglsl" sourcecode="asin({{in}})" />
|
||||
<implementation name="IM_acos_vector3_genglsl" nodedef="ND_acos_vector3" target="genglsl" sourcecode="acos({{in}})" />
|
||||
<implementation name="IM_atan2_vector3_genglsl" nodedef="ND_atan2_vector3" target="genglsl" sourcecode="atan({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_sin_vector4_genglsl" nodedef="ND_sin_vector4" target="genglsl" sourcecode="sin({{in}})" />
|
||||
<implementation name="IM_cos_vector4_genglsl" nodedef="ND_cos_vector4" target="genglsl" sourcecode="cos({{in}})" />
|
||||
<implementation name="IM_tan_vector4_genglsl" nodedef="ND_tan_vector4" target="genglsl" sourcecode="tan({{in}})" />
|
||||
<implementation name="IM_asin_vector4_genglsl" nodedef="ND_asin_vector4" target="genglsl" sourcecode="asin({{in}})" />
|
||||
<implementation name="IM_acos_vector4_genglsl" nodedef="ND_acos_vector4" target="genglsl" sourcecode="acos({{in}})" />
|
||||
<implementation name="IM_atan2_vector4_genglsl" nodedef="ND_atan2_vector4" target="genglsl" sourcecode="atan({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <sqrt> -->
|
||||
<implementation name="IM_sqrt_float_genglsl" nodedef="ND_sqrt_float" target="genglsl" sourcecode="sqrt({{in}})" />
|
||||
<implementation name="IM_sqrt_vector2_genglsl" nodedef="ND_sqrt_vector2" target="genglsl" sourcecode="sqrt({{in}})" />
|
||||
<implementation name="IM_sqrt_vector3_genglsl" nodedef="ND_sqrt_vector3" target="genglsl" sourcecode="sqrt({{in}})" />
|
||||
<implementation name="IM_sqrt_vector4_genglsl" nodedef="ND_sqrt_vector4" target="genglsl" sourcecode="sqrt({{in}})" />
|
||||
|
||||
<!-- <ln> -->
|
||||
<implementation name="IM_ln_float_genglsl" nodedef="ND_ln_float" target="genglsl" sourcecode="log({{in}})" />
|
||||
<implementation name="IM_ln_vector2_genglsl" nodedef="ND_ln_vector2" target="genglsl" sourcecode="log({{in}})" />
|
||||
<implementation name="IM_ln_vector3_genglsl" nodedef="ND_ln_vector3" target="genglsl" sourcecode="log({{in}})" />
|
||||
<implementation name="IM_ln_vector4_genglsl" nodedef="ND_ln_vector4" target="genglsl" sourcecode="log({{in}})" />
|
||||
|
||||
<!-- <exp> -->
|
||||
<implementation name="IM_exp_float_genglsl" nodedef="ND_exp_float" target="genglsl" sourcecode="exp({{in}})" />
|
||||
<implementation name="IM_exp_vector2_genglsl" nodedef="ND_exp_vector2" target="genglsl" sourcecode="exp({{in}})" />
|
||||
<implementation name="IM_exp_vector3_genglsl" nodedef="ND_exp_vector3" target="genglsl" sourcecode="exp({{in}})" />
|
||||
<implementation name="IM_exp_vector4_genglsl" nodedef="ND_exp_vector4" target="genglsl" sourcecode="exp({{in}})" />
|
||||
|
||||
<!-- sign -->
|
||||
<implementation name="IM_sign_float_genglsl" nodedef="ND_sign_float" target="genglsl" sourcecode="sign({{in}})" />
|
||||
<implementation name="IM_sign_color3_genglsl" nodedef="ND_sign_color3" target="genglsl" sourcecode="sign({{in}})" />
|
||||
<implementation name="IM_sign_color4_genglsl" nodedef="ND_sign_color4" target="genglsl" sourcecode="sign({{in}})" />
|
||||
<implementation name="IM_sign_vector2_genglsl" nodedef="ND_sign_vector2" target="genglsl" sourcecode="sign({{in}})" />
|
||||
<implementation name="IM_sign_vector3_genglsl" nodedef="ND_sign_vector3" target="genglsl" sourcecode="sign({{in}})" />
|
||||
<implementation name="IM_sign_vector4_genglsl" nodedef="ND_sign_vector4" target="genglsl" sourcecode="sign({{in}})" />
|
||||
|
||||
<!-- <clamp> -->
|
||||
<implementation name="IM_clamp_float_genglsl" nodedef="ND_clamp_float" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_color3_genglsl" nodedef="ND_clamp_color3" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_color3FA_genglsl" nodedef="ND_clamp_color3FA" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_color4_genglsl" nodedef="ND_clamp_color4" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_color4FA_genglsl" nodedef="ND_clamp_color4FA" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector2_genglsl" nodedef="ND_clamp_vector2" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector2FA_genglsl" nodedef="ND_clamp_vector2FA" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector3_genglsl" nodedef="ND_clamp_vector3" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector3FA_genglsl" nodedef="ND_clamp_vector3FA" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector4_genglsl" nodedef="ND_clamp_vector4" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
<implementation name="IM_clamp_vector4FA_genglsl" nodedef="ND_clamp_vector4FA" target="genglsl" sourcecode="clamp({{in}}, {{low}}, {{high}})" />
|
||||
|
||||
<!-- <min> -->
|
||||
<implementation name="IM_min_float_genglsl" nodedef="ND_min_float" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_color3_genglsl" nodedef="ND_min_color3" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_color3FA_genglsl" nodedef="ND_min_color3FA" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_color4_genglsl" nodedef="ND_min_color4" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_color4FA_genglsl" nodedef="ND_min_color4FA" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector2_genglsl" nodedef="ND_min_vector2" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector2FA_genglsl" nodedef="ND_min_vector2FA" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector3_genglsl" nodedef="ND_min_vector3" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector3FA_genglsl" nodedef="ND_min_vector3FA" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector4_genglsl" nodedef="ND_min_vector4" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_min_vector4FA_genglsl" nodedef="ND_min_vector4FA" target="genglsl" sourcecode="min({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <max> -->
|
||||
<implementation name="IM_max_float_genglsl" nodedef="ND_max_float" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_color3_genglsl" nodedef="ND_max_color3" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_color3FA_genglsl" nodedef="ND_max_color3FA" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_color4_genglsl" nodedef="ND_max_color4" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_color4FA_genglsl" nodedef="ND_max_color4FA" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector2_genglsl" nodedef="ND_max_vector2" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector2FA_genglsl" nodedef="ND_max_vector2FA" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector3_genglsl" nodedef="ND_max_vector3" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector3FA_genglsl" nodedef="ND_max_vector3FA" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector4_genglsl" nodedef="ND_max_vector4" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_max_vector4FA_genglsl" nodedef="ND_max_vector4FA" target="genglsl" sourcecode="max({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <normalize> -->
|
||||
<implementation name="IM_normalize_vector2_genglsl" nodedef="ND_normalize_vector2" target="genglsl" sourcecode="normalize({{in}})" />
|
||||
<implementation name="IM_normalize_vector3_genglsl" nodedef="ND_normalize_vector3" target="genglsl" sourcecode="normalize({{in}})" />
|
||||
<implementation name="IM_normalize_vector4_genglsl" nodedef="ND_normalize_vector4" target="genglsl" sourcecode="normalize({{in}})" />
|
||||
|
||||
<!-- <magnitude> -->
|
||||
<implementation name="IM_magnitude_vector2_genglsl" nodedef="ND_magnitude_vector2" target="genglsl" sourcecode="length({{in}})" />
|
||||
<implementation name="IM_magnitude_vector3_genglsl" nodedef="ND_magnitude_vector3" target="genglsl" sourcecode="length({{in}})" />
|
||||
<implementation name="IM_magnitude_vector4_genglsl" nodedef="ND_magnitude_vector4" target="genglsl" sourcecode="length({{in}})" />
|
||||
|
||||
<!-- <dotproduct> -->
|
||||
<implementation name="IM_dotproduct_vector2_genglsl" nodedef="ND_dotproduct_vector2" target="genglsl" sourcecode="dot({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_dotproduct_vector3_genglsl" nodedef="ND_dotproduct_vector3" target="genglsl" sourcecode="dot({{in1}}, {{in2}})" />
|
||||
<implementation name="IM_dotproduct_vector4_genglsl" nodedef="ND_dotproduct_vector4" target="genglsl" sourcecode="dot({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <crossproduct> -->
|
||||
<implementation name="IM_crossproduct_vector3_genglsl" nodedef="ND_crossproduct_vector3" target="genglsl" sourcecode="cross({{in1}}, {{in2}})" />
|
||||
|
||||
<!-- <transformpoint> -->
|
||||
<implementation name="IM_transformpoint_vector3_genglsl" nodedef="ND_transformpoint_vector3" target="genglsl" />
|
||||
|
||||
<!-- <transformvector> -->
|
||||
<implementation name="IM_transformvector_vector3_genglsl" nodedef="ND_transformvector_vector3" target="genglsl" />
|
||||
|
||||
<!-- <transformnormal> -->
|
||||
<implementation name="IM_transformnormal_vector3_genglsl" nodedef="ND_transformnormal_vector3" target="genglsl" />
|
||||
|
||||
<!-- <transformmatrix> -->
|
||||
<implementation name="IM_transformmatrix_vector2M3_genglsl" nodedef="ND_transformmatrix_vector2M3" function="mx_transformmatrix_vector2M3" file="mx_transformmatrix_vector2M3.glsl" target="genglsl" />
|
||||
<implementation name="IM_transformmatrix_vector3_genglsl" nodedef="ND_transformmatrix_vector3" target="genglsl" sourcecode="{{mat}} * {{in}}" />
|
||||
<implementation name="IM_transformmatrix_vector3M4_genglsl" nodedef="ND_transformmatrix_vector3M4" function="mx_transformmatrix_vector3M4" file="mx_transformmatrix_vector3M4.glsl" target="genglsl" />
|
||||
<implementation name="IM_transformmatrix_vector4_genglsl" nodedef="ND_transformmatrix_vector4" target="genglsl" sourcecode="{{mat}} * {{in}}" />
|
||||
|
||||
<!-- <transpose> -->
|
||||
<implementation name="IM_transpose_matrix33_genglsl" nodedef="ND_transpose_matrix33" target="genglsl" sourcecode="transpose({{in}})" />
|
||||
<implementation name="IM_transpose_matrix44_genglsl" nodedef="ND_transpose_matrix44" target="genglsl" sourcecode="transpose({{in}})" />
|
||||
|
||||
<!-- <determinant> -->
|
||||
<implementation name="IM_determinant_matrix33_genglsl" nodedef="ND_determinant_matrix33" target="genglsl" sourcecode="determinant({{in}})" />
|
||||
<implementation name="IM_determinant_matrix44_genglsl" nodedef="ND_determinant_matrix44" target="genglsl" sourcecode="determinant({{in}})" />
|
||||
|
||||
<!-- <invertmatrix> -->
|
||||
<implementation name="IM_invertmatrix_matrix33_genglsl" nodedef="ND_invertmatrix_matrix33" target="genglsl" sourcecode="inverse({{in}})" />
|
||||
<implementation name="IM_invertmatrix_matrix44_genglsl" nodedef="ND_invertmatrix_matrix44" target="genglsl" sourcecode="inverse({{in}})" />
|
||||
|
||||
<!-- <rotate2d> -->
|
||||
<implementation name="IM_rotate2d_vector2_genglsl" nodedef="ND_rotate2d_vector2" file="mx_rotate_vector2.glsl" function="mx_rotate_vector2" target="genglsl" />
|
||||
|
||||
<!-- <rotate3d> -->
|
||||
<implementation name="IM_rotate3d_vector3_genglsl" nodedef="ND_rotate3d_vector3" file="mx_rotate_vector3.glsl" function="mx_rotate_vector3" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Adjustment nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <contrast> -->
|
||||
|
||||
<!-- <remap> -->
|
||||
<implementation name="IM_remap_float_genglsl" nodedef="ND_remap_float" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_color3_genglsl" nodedef="ND_remap_color3" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_color3FA_genglsl" nodedef="ND_remap_color3FA" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_color4_genglsl" nodedef="ND_remap_color4" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_color4FA_genglsl" nodedef="ND_remap_color4FA" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector2_genglsl" nodedef="ND_remap_vector2" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector2FA_genglsl" nodedef="ND_remap_vector2FA" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector3_genglsl" nodedef="ND_remap_vector3" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector3FA_genglsl" nodedef="ND_remap_vector3FA" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector4_genglsl" nodedef="ND_remap_vector4" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
<implementation name="IM_remap_vector4FA_genglsl" nodedef="ND_remap_vector4FA" target="genglsl" sourcecode="{{outlow}} + ({{in}} - {{inlow}}) * ({{outhigh}} - {{outlow}}) / ({{inhigh}} - {{inlow}})" />
|
||||
|
||||
<!-- <smoothstep> -->
|
||||
<implementation name="IM_smoothstep_float_genglsl" nodedef="ND_smoothstep_float" file="mx_smoothstep_float.glsl" function="mx_smoothstep_float" target="genglsl" />
|
||||
<implementation name="IM_smoothstep_vector2_genglsl" nodedef="ND_smoothstep_vector2" file="mx_smoothstep_vector2.glsl" function="mx_smoothstep_vector2" target="genglsl" />
|
||||
<implementation name="IM_smoothstep_vector3_genglsl" nodedef="ND_smoothstep_vector3" file="mx_smoothstep_vector3.glsl" function="mx_smoothstep_vector3" target="genglsl" />
|
||||
<implementation name="IM_smoothstep_vector4_genglsl" nodedef="ND_smoothstep_vector4" file="mx_smoothstep_vector4.glsl" function="mx_smoothstep_vector4" target="genglsl" />
|
||||
|
||||
<!-- <luminance> -->
|
||||
<implementation name="IM_luminance_color3_genglsl" nodedef="ND_luminance_color3" file="mx_luminance_color3.glsl" function="mx_luminance_color3" target="genglsl" />
|
||||
<implementation name="IM_luminance_color4_genglsl" nodedef="ND_luminance_color4" file="mx_luminance_color4.glsl" function="mx_luminance_color4" target="genglsl" />
|
||||
|
||||
<!-- <rgbtohsv> -->
|
||||
<implementation name="IM_rgbtohsv_color3_genglsl" nodedef="ND_rgbtohsv_color3" file="mx_rgbtohsv_color3.glsl" function="mx_rgbtohsv_color3" target="genglsl" />
|
||||
<implementation name="IM_rgbtohsv_color4_genglsl" nodedef="ND_rgbtohsv_color4" file="mx_rgbtohsv_color4.glsl" function="mx_rgbtohsv_color4" target="genglsl" />
|
||||
|
||||
<!-- <hsvtorgb> -->
|
||||
<implementation name="IM_hsvtorgb_color3_genglsl" nodedef="ND_hsvtorgb_color3" file="mx_hsvtorgb_color3.glsl" function="mx_hsvtorgb_color3" target="genglsl" />
|
||||
<implementation name="IM_hsvtorgb_color4_genglsl" nodedef="ND_hsvtorgb_color4" file="mx_hsvtorgb_color4.glsl" function="mx_hsvtorgb_color4" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Compositing nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <premult> -->
|
||||
<implementation name="IM_premult_color4_genglsl" nodedef="ND_premult_color4" file="mx_premult_color4.glsl" function="mx_premult_color4" target="genglsl" />
|
||||
|
||||
<!-- <unpremult> -->
|
||||
<implementation name="IM_unpremult_color4_genglsl" nodedef="ND_unpremult_color4" file="mx_unpremult_color4.glsl" function="mx_unpremult_color4" target="genglsl" />
|
||||
|
||||
<!-- <plus> -->
|
||||
<implementation name="IM_plus_float_genglsl" nodedef="ND_plus_float" target="genglsl" sourcecode="({{mix}}*({{bg}} + {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_plus_color3_genglsl" nodedef="ND_plus_color3" target="genglsl" sourcecode="({{mix}}*({{bg}} + {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_plus_color4_genglsl" nodedef="ND_plus_color4" target="genglsl" sourcecode="({{mix}}*({{bg}} + {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
|
||||
<!-- <minus> -->
|
||||
<implementation name="IM_minus_float_genglsl" nodedef="ND_minus_float" target="genglsl" sourcecode="({{mix}}*({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_minus_color3_genglsl" nodedef="ND_minus_color3" target="genglsl" sourcecode="({{mix}}*({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_minus_color4_genglsl" nodedef="ND_minus_color4" target="genglsl" sourcecode="({{mix}}*({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
|
||||
<!-- <difference> -->
|
||||
<implementation name="IM_difference_float_genglsl" nodedef="ND_difference_float" target="genglsl" sourcecode="({{mix}}*abs({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_difference_color3_genglsl" nodedef="ND_difference_color3" target="genglsl" sourcecode="({{mix}}*abs({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_difference_color4_genglsl" nodedef="ND_difference_color4" target="genglsl" sourcecode="({{mix}}*abs({{bg}} - {{fg}})) + ((1.0-{{mix}})*{{bg}})" />
|
||||
|
||||
<!-- <burn> -->
|
||||
<implementation name="IM_burn_float_genglsl" nodedef="ND_burn_float" file="mx_burn_float.glsl" function="mx_burn_float" target="genglsl" />
|
||||
<implementation name="IM_burn_color3_genglsl" nodedef="ND_burn_color3" file="mx_burn_color3.glsl" function="mx_burn_color3" target="genglsl" />
|
||||
<implementation name="IM_burn_color4_genglsl" nodedef="ND_burn_color4" file="mx_burn_color4.glsl" function="mx_burn_color4" target="genglsl" />
|
||||
|
||||
<!-- <dodge> -->
|
||||
<implementation name="IM_dodge_float_genglsl" nodedef="ND_dodge_float" file="mx_dodge_float.glsl" function="mx_dodge_float" target="genglsl" />
|
||||
<implementation name="IM_dodge_color3_genglsl" nodedef="ND_dodge_color3" file="mx_dodge_color3.glsl" function="mx_dodge_color3" target="genglsl" />
|
||||
<implementation name="IM_dodge_color4_genglsl" nodedef="ND_dodge_color4" file="mx_dodge_color4.glsl" function="mx_dodge_color4" target="genglsl" />
|
||||
|
||||
<!-- <screen> -->
|
||||
<implementation name="IM_screen_float_genglsl" nodedef="ND_screen_float" target="genglsl" sourcecode="({{mix}}*((1.0 - (1.0 - {{fg}}) * (1.0 - {{bg}})))) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_screen_color3_genglsl" nodedef="ND_screen_color3" target="genglsl" sourcecode="({{mix}}*((1.0 - (1.0 - {{fg}}) * (1.0 - {{bg}})))) + ((1.0-{{mix}})*{{bg}})" />
|
||||
<implementation name="IM_screen_color4_genglsl" nodedef="ND_screen_color4" target="genglsl" sourcecode="({{mix}}*((1.0 - (1.0 - {{fg}}) * (1.0 - {{bg}})))) + ((1.0-{{mix}})*{{bg}})" />
|
||||
|
||||
<!-- <disjointover> -->
|
||||
<implementation name="IM_disjointover_color4_genglsl" nodedef="ND_disjointover_color4" file="mx_disjointover_color4.glsl" function="mx_disjointover_color4" target="genglsl" />
|
||||
|
||||
<!-- <in> -->
|
||||
<implementation name="IM_in_color4_genglsl" nodedef="ND_in_color4" target="genglsl" sourcecode="({{fg}}*{{bg}}.a * {{mix}}) + ({{bg}} * (1.0-{{mix}}));" />
|
||||
|
||||
<!-- <mask> -->
|
||||
<implementation name="IM_mask_color4_genglsl" nodedef="ND_mask_color4" target="genglsl" sourcecode="({{bg}}*{{fg}}.a * {{mix}}) + ({{bg}} * (1.0-{{mix}}));" />
|
||||
|
||||
<!-- <matte> -->
|
||||
<implementation name="IM_matte_color4_genglsl" nodedef="ND_matte_color4" target="genglsl" sourcecode="vec4( {{fg}}.xyz*{{fg}}.w + {{bg}}.xyz*(1.0-{{fg}}.w), {{fg}}.w + ({{bg}}.w*(1.0-{{fg}}.w)) ) * {{mix}} + ({{bg}} * (1.0-{{mix}}));" />
|
||||
|
||||
<!-- <out> -->
|
||||
<implementation name="IM_out_color4_genglsl" nodedef="ND_out_color4" target="genglsl" sourcecode="({{fg}}*(1.0-{{bg}}.a) * {{mix}}) + ({{bg}} * (1.0-{{mix}}));" />
|
||||
|
||||
<!-- <over> -->
|
||||
<implementation name="IM_over_color4_genglsl" nodedef="ND_over_color4" target="genglsl" sourcecode="({{fg}} + ({{bg}}*(1.0-{{fg}}[3]))) * {{mix}} + {{bg}} * (1.0-{{mix}})" />
|
||||
|
||||
<!-- <inside> -->
|
||||
<implementation name="IM_inside_float_genglsl" nodedef="ND_inside_float" target="genglsl" sourcecode="{{in}} * {{mask}}" />
|
||||
<implementation name="IM_inside_color3_genglsl" nodedef="ND_inside_color3" target="genglsl" sourcecode="{{in}} * {{mask}}" />
|
||||
<implementation name="IM_inside_color4_genglsl" nodedef="ND_inside_color4" target="genglsl" sourcecode="{{in}} * {{mask}}" />
|
||||
|
||||
<!-- <outside> -->
|
||||
<implementation name="IM_outside_float_genglsl" nodedef="ND_outside_float" target="genglsl" sourcecode="{{in}} * (1.0 - {{mask}})" />
|
||||
<implementation name="IM_outside_color3_genglsl" nodedef="ND_outside_color3" target="genglsl" sourcecode="{{in}} * (1.0 - {{mask}})" />
|
||||
<implementation name="IM_outside_color4_genglsl" nodedef="ND_outside_color4" target="genglsl" sourcecode="{{in}} * (1.0 - {{mask}})" />
|
||||
|
||||
<!-- <mix> -->
|
||||
<implementation name="IM_mix_float_genglsl" nodedef="ND_mix_float" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_color3_genglsl" nodedef="ND_mix_color3" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_color3_color3_genglsl" nodedef="ND_mix_color3_color3" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_color4_genglsl" nodedef="ND_mix_color4" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_color4_color4_genglsl" nodedef="ND_mix_color4_color4" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector2_genglsl" nodedef="ND_mix_vector2" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector2_vector2_genglsl" nodedef="ND_mix_vector2_vector2" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector3_genglsl" nodedef="ND_mix_vector3" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector3_vector3_genglsl" nodedef="ND_mix_vector3_vector3" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector4_genglsl" nodedef="ND_mix_vector4" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_vector4_vector4_genglsl" nodedef="ND_mix_vector4_vector4" target="genglsl" sourcecode="mix({{bg}}, {{fg}}, {{mix}})" />
|
||||
<implementation name="IM_mix_surfaceshader_genglsl" nodedef="ND_mix_surfaceshader" function="mx_mix_surfaceshader" file="mx_mix_surfaceshader.glsl" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Conditional nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <ifgreater -->
|
||||
<implementation name="IM_ifgreater_float_genglsl" nodedef="ND_ifgreater_float" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_color3_genglsl" nodedef="ND_ifgreater_color3" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_color4_genglsl" nodedef="ND_ifgreater_color4" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector2_genglsl" nodedef="ND_ifgreater_vector2" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector3_genglsl" nodedef="ND_ifgreater_vector3" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector4_genglsl" nodedef="ND_ifgreater_vector4" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_floatI_genglsl" nodedef="ND_ifgreater_floatI" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_color3I_genglsl" nodedef="ND_ifgreater_color3I" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_color4I_genglsl" nodedef="ND_ifgreater_color4I" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector2I_genglsl" nodedef="ND_ifgreater_vector2I" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector3I_genglsl" nodedef="ND_ifgreater_vector3I" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreater_vector4I_genglsl" nodedef="ND_ifgreater_vector4I" target="genglsl" sourcecode="({{value1}} > {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
|
||||
<!-- <ifgreatereq -->
|
||||
<implementation name="IM_ifgreatereq_float_genglsl" nodedef="ND_ifgreatereq_float" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_color3_genglsl" nodedef="ND_ifgreatereq_color3" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_color4_genglsl" nodedef="ND_ifgreatereq_color4" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector2_genglsl" nodedef="ND_ifgreatereq_vector2" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector3_genglsl" nodedef="ND_ifgreatereq_vector3" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector4_genglsl" nodedef="ND_ifgreatereq_vector4" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_floatI_genglsl" nodedef="ND_ifgreatereq_floatI" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_color3I_genglsl" nodedef="ND_ifgreatereq_color3I" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_color4I_genglsl" nodedef="ND_ifgreatereq_color4I" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector2I_genglsl" nodedef="ND_ifgreatereq_vector2I" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector3I_genglsl" nodedef="ND_ifgreatereq_vector3I" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifgreatereq_vector4I_genglsl" nodedef="ND_ifgreatereq_vector4I" target="genglsl" sourcecode="({{value1}} >= {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
|
||||
<!-- <ifequal -->
|
||||
<implementation name="IM_ifequal_float_genglsl" nodedef="ND_ifequal_float" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color3_genglsl" nodedef="ND_ifequal_color3" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color4_genglsl" nodedef="ND_ifequal_color4" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector2_genglsl" nodedef="ND_ifequal_vector2" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector3_genglsl" nodedef="ND_ifequal_vector3" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector4_genglsl" nodedef="ND_ifequal_vector4" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_floatI_genglsl" nodedef="ND_ifequal_floatI" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color3I_genglsl" nodedef="ND_ifequal_color3I" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color4I_genglsl" nodedef="ND_ifequal_color4I" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector2I_genglsl" nodedef="ND_ifequal_vector2I" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector3I_genglsl" nodedef="ND_ifequal_vector3I" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector4I_genglsl" nodedef="ND_ifequal_vector4I" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_floatB_genglsl" nodedef="ND_ifequal_floatB" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color3B_genglsl" nodedef="ND_ifequal_color3B" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_color4B_genglsl" nodedef="ND_ifequal_color4B" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector2B_genglsl" nodedef="ND_ifequal_vector2B" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector3B_genglsl" nodedef="ND_ifequal_vector3B" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
<implementation name="IM_ifequal_vector4B_genglsl" nodedef="ND_ifequal_vector4B" target="genglsl" sourcecode="({{value1}} == {{value2}}) ? {{in1}} : {{in2}}" />
|
||||
|
||||
<!-- <switch> -->
|
||||
|
||||
<!-- 'which' type : float -->
|
||||
<implementation name="IM_switch_float_genglsl" nodedef="ND_switch_float" target="genglsl" />
|
||||
<implementation name="IM_switch_color3_genglsl" nodedef="ND_switch_color3" target="genglsl" />
|
||||
<implementation name="IM_switch_color4_genglsl" nodedef="ND_switch_color4" target="genglsl" />
|
||||
<implementation name="IM_switch_vector2_genglsl" nodedef="ND_switch_vector2" target="genglsl" />
|
||||
<implementation name="IM_switch_vector3_genglsl" nodedef="ND_switch_vector3" target="genglsl" />
|
||||
<implementation name="IM_switch_vector4_genglsl" nodedef="ND_switch_vector4" target="genglsl" />
|
||||
|
||||
<!-- 'which' type : integer -->
|
||||
<implementation name="IM_switch_floatI_genglsl" nodedef="ND_switch_floatI" target="genglsl" />
|
||||
<implementation name="IM_switch_color3I_genglsl" nodedef="ND_switch_color3I" target="genglsl" />
|
||||
<implementation name="IM_switch_color4I_genglsl" nodedef="ND_switch_color4I" target="genglsl" />
|
||||
<implementation name="IM_switch_vector2I_genglsl" nodedef="ND_switch_vector2I" target="genglsl" />
|
||||
<implementation name="IM_switch_vector3I_genglsl" nodedef="ND_switch_vector3I" target="genglsl" />
|
||||
<implementation name="IM_switch_vector4I_genglsl" nodedef="ND_switch_vector4I" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Channel nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <convert> -->
|
||||
<implementation name="IM_convert_float_color3_genglsl" nodedef="ND_convert_float_color3" target="genglsl" />
|
||||
<implementation name="IM_convert_float_color4_genglsl" nodedef="ND_convert_float_color4" target="genglsl" />
|
||||
<implementation name="IM_convert_float_vector2_genglsl" nodedef="ND_convert_float_vector2" target="genglsl" />
|
||||
<implementation name="IM_convert_float_vector3_genglsl" nodedef="ND_convert_float_vector3" target="genglsl" />
|
||||
<implementation name="IM_convert_float_vector4_genglsl" nodedef="ND_convert_float_vector4" target="genglsl" />
|
||||
<implementation name="IM_convert_vector2_vector3_genglsl" nodedef="ND_convert_vector2_vector3" target="genglsl" />
|
||||
<implementation name="IM_convert_vector3_vector2_genglsl" nodedef="ND_convert_vector3_vector2" target="genglsl" />
|
||||
<implementation name="IM_convert_vector3_color3_genglsl" nodedef="ND_convert_vector3_color3" target="genglsl" />
|
||||
<implementation name="IM_convert_vector3_vector4_genglsl" nodedef="ND_convert_vector3_vector4" target="genglsl" />
|
||||
<implementation name="IM_convert_vector4_vector3_genglsl" nodedef="ND_convert_vector4_vector3" target="genglsl" />
|
||||
<implementation name="IM_convert_vector4_color4_genglsl" nodedef="ND_convert_vector4_color4" target="genglsl" />
|
||||
<implementation name="IM_convert_color3_vector3_genglsl" nodedef="ND_convert_color3_vector3" target="genglsl" />
|
||||
<implementation name="IM_convert_color4_vector4_genglsl" nodedef="ND_convert_color4_vector4" target="genglsl" />
|
||||
<implementation name="IM_convert_color3_color4_genglsl" nodedef="ND_convert_color3_color4" target="genglsl" />
|
||||
<implementation name="IM_convert_color4_color3_genglsl" nodedef="ND_convert_color4_color3" target="genglsl" />
|
||||
<implementation name="IM_convert_boolean_float_genglsl" nodedef="ND_convert_boolean_float" target="genglsl" />
|
||||
<implementation name="IM_convert_integer_float_genglsl" nodedef="ND_convert_integer_float" target="genglsl" />
|
||||
|
||||
<!-- <swizzle> -->
|
||||
<!-- from type: float -->
|
||||
<implementation name="IM_swizzle_float_color3_genglsl" nodedef="ND_swizzle_float_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_float_color4_genglsl" nodedef="ND_swizzle_float_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_float_vector2_genglsl" nodedef="ND_swizzle_float_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_float_vector3_genglsl" nodedef="ND_swizzle_float_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_float_vector4_genglsl" nodedef="ND_swizzle_float_vector4" target="genglsl" />
|
||||
<!-- from type: color3 -->
|
||||
<implementation name="IM_swizzle_color3_float_genglsl" nodedef="ND_swizzle_color3_float" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color3_color3_genglsl" nodedef="ND_swizzle_color3_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color3_color4_genglsl" nodedef="ND_swizzle_color3_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color3_vector2_genglsl" nodedef="ND_swizzle_color3_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color3_vector3_genglsl" nodedef="ND_swizzle_color3_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color3_vector4_genglsl" nodedef="ND_swizzle_color3_vector4" target="genglsl" />
|
||||
<!-- from type: color4 -->
|
||||
<implementation name="IM_swizzle_color4_float_genglsl" nodedef="ND_swizzle_color4_float" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color4_color3_genglsl" nodedef="ND_swizzle_color4_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color4_color4_genglsl" nodedef="ND_swizzle_color4_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color4_vector2_genglsl" nodedef="ND_swizzle_color4_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color4_vector3_genglsl" nodedef="ND_swizzle_color4_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_color4_vector4_genglsl" nodedef="ND_swizzle_color4_vector4" target="genglsl" />
|
||||
<!-- from type: vector2 -->
|
||||
<implementation name="IM_swizzle_vector2_float_genglsl" nodedef="ND_swizzle_vector2_float" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector2_color3_genglsl" nodedef="ND_swizzle_vector2_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector2_color4_genglsl" nodedef="ND_swizzle_vector2_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector2_vector2_genglsl" nodedef="ND_swizzle_vector2_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector2_vector3_genglsl" nodedef="ND_swizzle_vector2_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector2_vector4_genglsl" nodedef="ND_swizzle_vector2_vector4" target="genglsl" />
|
||||
<!-- from type: vector3 -->
|
||||
<implementation name="IM_swizzle_vector3_float_genglsl" nodedef="ND_swizzle_vector3_float" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector3_color3_genglsl" nodedef="ND_swizzle_vector3_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector3_color4_genglsl" nodedef="ND_swizzle_vector3_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector3_vector2_genglsl" nodedef="ND_swizzle_vector3_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector3_vector3_genglsl" nodedef="ND_swizzle_vector3_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector3_vector4_genglsl" nodedef="ND_swizzle_vector3_vector4" target="genglsl" />
|
||||
<!-- from type: vector4 -->
|
||||
<implementation name="IM_swizzle_vector4_float_genglsl" nodedef="ND_swizzle_vector4_float" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector4_color3_genglsl" nodedef="ND_swizzle_vector4_color3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector4_color4_genglsl" nodedef="ND_swizzle_vector4_color4" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector4_vector2_genglsl" nodedef="ND_swizzle_vector4_vector2" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector4_vector3_genglsl" nodedef="ND_swizzle_vector4_vector3" target="genglsl" />
|
||||
<implementation name="IM_swizzle_vector4_vector4_genglsl" nodedef="ND_swizzle_vector4_vector4" target="genglsl" />
|
||||
|
||||
<!-- <combine> -->
|
||||
<implementation name="IM_combine2_vector2_genglsl" nodedef="ND_combine2_vector2" target="genglsl" />
|
||||
<implementation name="IM_combine2_color4CF_genglsl" nodedef="ND_combine2_color4CF" target="genglsl" />
|
||||
<implementation name="IM_combine2_vector4VF_genglsl" nodedef="ND_combine2_vector4VF" target="genglsl" />
|
||||
<implementation name="IM_combine2_vector4VV_genglsl" nodedef="ND_combine2_vector4VV" target="genglsl" />
|
||||
<implementation name="IM_combine3_color3_genglsl" nodedef="ND_combine3_color3" target="genglsl" />
|
||||
<implementation name="IM_combine3_vector3_genglsl" nodedef="ND_combine3_vector3" target="genglsl" />
|
||||
<implementation name="IM_combine4_color4_genglsl" nodedef="ND_combine4_color4" target="genglsl" />
|
||||
<implementation name="IM_combine4_vector4_genglsl" nodedef="ND_combine4_vector4" target="genglsl" />
|
||||
|
||||
<!-- <creatematrix> -->
|
||||
<implementation name="IM_creatematrix_vector3_matrix33_genglsl" nodedef="ND_creatematrix_vector3_matrix33" file="mx_creatematrix_vector3_matrix33.glsl" function="mx_creatematrix_vector3_matrix33" target="genglsl" />
|
||||
<implementation name="IM_creatematrix_vector3_matrix44_genglsl" nodedef="ND_creatematrix_vector3_matrix44" file="mx_creatematrix_vector3_matrix44.glsl" function="mx_creatematrix_vector3_matrix44" target="genglsl" />
|
||||
<implementation name="IM_creatematrix_vector4_matrix44_genglsl" nodedef="ND_creatematrix_vector4_matrix44" file="mx_creatematrix_vector4_matrix44.glsl" function="mx_creatematrix_vector4_matrix44" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Convolution nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <blur> -->
|
||||
<implementation name="IM_blur_float_genglsl" nodedef="ND_blur_float" target="genglsl" />
|
||||
<implementation name="IM_blur_color3_genglsl" nodedef="ND_blur_color3" target="genglsl" />
|
||||
<implementation name="IM_blur_color4_genglsl" nodedef="ND_blur_color4" target="genglsl" />
|
||||
<implementation name="IM_blur_vector2_genglsl" nodedef="ND_blur_vector2" target="genglsl" />
|
||||
<implementation name="IM_blur_vector3_genglsl" nodedef="ND_blur_vector3" target="genglsl" />
|
||||
<implementation name="IM_blur_vector4_genglsl" nodedef="ND_blur_vector4" target="genglsl" />
|
||||
|
||||
<!-- <heighttonormal> -->
|
||||
<implementation name="IM_heighttonormal_vector3_genglsl" nodedef="ND_heighttonormal_vector3" target="genglsl" />
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
<!-- Organization nodes -->
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<!-- <dot> -->
|
||||
<implementation name="IM_dot_float_genglsl" nodedef="ND_dot_float" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_color3_genglsl" nodedef="ND_dot_color3" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_color4_genglsl" nodedef="ND_dot_color4" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_vector2_genglsl" nodedef="ND_dot_vector2" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_vector3_genglsl" nodedef="ND_dot_vector3" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_vector4_genglsl" nodedef="ND_dot_vector4" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_integer_genglsl" nodedef="ND_dot_integer" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_boolean_genglsl" nodedef="ND_dot_boolean" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_matrix33_genglsl" nodedef="ND_dot_matrix33" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_matrix44_genglsl" nodedef="ND_dot_matrix44" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_string_genglsl" nodedef="ND_dot_string" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_filename_genglsl" nodedef="ND_dot_filename" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_surfaceshader_genglsl" nodedef="ND_dot_surfaceshader" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_displacementshader_genglsl" nodedef="ND_dot_displacementshader" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_volumeshader_genglsl" nodedef="ND_dot_volumeshader" target="genglsl" sourcecode="{{in}}" />
|
||||
<implementation name="IM_dot_lightshader_genglsl" nodedef="ND_dot_lightshader" target="genglsl" sourcecode="{{in}}" />
|
||||
</materialx>
|
||||
Reference in New Issue
Block a user