31#define assert(assertion)
44template<
typename T,
int Sz>
struct VecBase {};
46template<
typename T,
int Sz>
struct VecOp {
51 return *
reinterpret_cast<const T *
>(
this);
55 return *
reinterpret_cast<T *
>(
this);
59 template<typename U = T, typename std::enable_if_t<!std::is_same_v<bool, U>> * = nullptr>
90 template<typename U = T, \
91 typename std::enable_if_t<std::is_integral_v<U>> * = nullptr, \
92 typename std::enable_if_t<!std::is_same_v<bool, U>> * = nullptr>
149#define SWIZZLE_XY(T) \
150 SwizzleBase<T, 2> xx, xy, yx, yy; \
151 SwizzleBase<T, 3> xxx, xxy, xyx, xyy, yxx, yxy, yyx, yyy; \
152 SwizzleBase<T, 4> xxxx, xxxy, xxyx, xxyy, xyxx, xyxy, xyyx, xyyy, yxxx, yxxy, yxyx, yxyy, yyxx, \
155#define SWIZZLE_RG(T) \
156 SwizzleBase<T, 2> rr, rg, gr, gg; \
157 SwizzleBase<T, 3> rrr, rrg, rgr, rgg, grr, grg, ggr, ggg; \
158 SwizzleBase<T, 4> rrrr, rrrg, rrgr, rrgg, rgrr, rgrg, rggr, rggg, grrr, grrg, grgr, grgg, ggrr, \
161#define SWIZZLE_XYZ(T) \
163 SwizzleBase<T, 2> xz, yz, zx, zy, zz; \
164 SwizzleBase<T, 3> xxz, xyz, xzx, xzy, xzz, yxz, yyz, yzx, yzy, yzz, zxx, zxy, zxz, zyx, zyy, \
165 zyz, zzx, zzy, zzz; \
166 SwizzleBase<T, 4> xxxz, xxyz, xxzx, xxzy, xxzz, xyxz, xyyz, xyzx, xyzy, xyzz, xzxx, xzxy, xzxz, \
167 xzyx, xzyy, xzyz, xzzx, xzzy, xzzz, yxxz, yxyz, yxzx, yxzy, yxzz, yyxz, yyyz, yyzx, yyzy, \
168 yyzz, yzxx, yzxy, yzxz, yzyx, yzyy, yzyz, yzzx, yzzy, yzzz, zxxx, zxxy, zxxz, zxyx, zxyy, \
169 zxyz, zxzx, zxzy, zxzz, zyxx, zyxy, zyxz, zyyx, zyyy, zyyz, zyzx, zyzy, zyzz, zzxx, zzxy, \
170 zzxz, zzyx, zzyy, zzyz, zzzx, zzzy, zzzz;
172#define SWIZZLE_RGB(T) \
174 SwizzleBase<T, 2> rb, gb, br, bg, bb; \
175 SwizzleBase<T, 3> rrb, rgb, rbr, rbg, rbb, grb, ggb, gbr, gbg, gbb, brr, brg, brb, bgr, bgg, \
176 bgb, bbr, bbg, bbb; \
177 SwizzleBase<T, 4> rrrb, rrgb, rrbr, rrbg, rrbb, rgrb, rggb, rgbr, rgbg, rgbb, rbrr, rbrg, rbrb, \
178 rbgr, rbgg, rbgb, rbbr, rbbg, rbbb, grrb, grgb, grbr, grbg, grbb, ggrb, gggb, ggbr, ggbg, \
179 ggbb, gbrr, gbrg, gbrb, gbgr, gbgg, gbgb, gbbr, gbbg, gbbb, brrr, brrg, brrb, brgr, brgg, \
180 brgb, brbr, brbg, brbb, bgrr, bgrg, bgrb, bggr, bggg, bggb, bgbr, bgbg, bgbb, bbrr, bbrg, \
181 bbrb, bbgr, bbgg, bbgb, bbbr, bbbg, bbbb;
183#define SWIZZLE_XYZW(T) \
185 SwizzleBase<T, 2> xw, yw, zw, wx, wy, wz, ww; \
186 SwizzleBase<T, 3> xxw, xyw, xzw, xwx, xwy, xwz, xww, yxw, yyw, yzw, ywx, ywy, ywz, yww, zxw, \
187 zyw, zzw, zwx, zwy, zwz, zww, wxx, wxy, wxz, wxw, wyx, wyy, wyz, wyw, wzx, wzy, wzz, wzw, \
188 wwx, wwy, wwz, www; \
189 SwizzleBase<T, 4> xxxw, xxyw, xxzw, xxwx, xxwy, xxwz, xxww, xyxw, xyyw, xyzw, xywx, xywy, xywz, \
190 xyww, xzxw, xzyw, xzzw, xzwx, xzwy, xzwz, xzww, xwxx, xwxy, xwxz, xwxw, xwyx, xwyy, xwyz, \
191 xwyw, xwzx, xwzy, xwzz, xwzw, xwwx, xwwy, xwwz, xwww, yxxw, yxyw, yxzw, yxwx, yxwy, yxwz, \
192 yxww, yyxw, yyyw, yyzw, yywx, yywy, yywz, yyww, yzxw, yzyw, yzzw, yzwx, yzwy, yzwz, yzww, \
193 ywxx, ywxy, ywxz, ywxw, ywyx, ywyy, ywyz, ywyw, ywzx, ywzy, ywzz, ywzw, ywwx, ywwy, ywwz, \
194 ywww, zxxw, zxyw, zxzw, zxwx, zxwy, zxwz, zxww, zyxw, zyyw, zyzw, zywx, zywy, zywz, zyww, \
195 zzxw, zzyw, zzzw, zzwx, zzwy, zzwz, zzww, zwxx, zwxy, zwxz, zwxw, zwyx, zwyy, zwyz, zwyw, \
196 zwzx, zwzy, zwzz, zwzw, zwwx, zwwy, zwwz, zwww, wxxx, wxxy, wxxz, wxxw, wxyx, wxyy, wxyz, \
197 wxyw, wxzx, wxzy, wxzz, wxzw, wxwx, wxwy, wxwz, wxww, wyxx, wyxy, wyxz, wyxw, wyyx, wyyy, \
198 wyyz, wyyw, wyzx, wyzy, wyzz, wyzw, wywx, wywy, wywz, wyww, wzxx, wzxy, wzxz, wzxw, wzyx, \
199 wzyy, wzyz, wzyw, wzzx, wzzy, wzzz, wzzw, wzwx, wzwy, wzwz, wzww, wwxx, wwxy, wwxz, wwxw, \
200 wwyx, wwyy, wwyz, wwyw, wwzx, wwzy, wwzz, wwzw, wwwx, wwwy, wwwz, wwww;
202#define SWIZZLE_RGBA(T) \
204 SwizzleBase<T, 2> ra, ga, ba, ar, ag, ab, aa; \
205 SwizzleBase<T, 3> rra, rga, rba, rar, rag, rab, raa, gra, gga, gba, gar, gag, gab, gaa, bra, \
206 bga, bba, bar, bag, bab, baa, arr, arg, arb, ara, agr, agg, agb, aga, abr, abg, abb, aba, \
207 aar, aag, aab, aaa; \
208 SwizzleBase<T, 4> rrra, rrga, rrba, rrar, rrag, rrab, rraa, rgra, rgga, rgba, rgar, rgag, rgab, \
209 rgaa, rbra, rbga, rbba, rbar, rbag, rbab, rbaa, rarr, rarg, rarb, rara, ragr, ragg, ragb, \
210 raga, rabr, rabg, rabb, raba, raar, raag, raab, raaa, grra, grga, grba, grar, grag, grab, \
211 graa, ggra, ggga, ggba, ggar, ggag, ggab, ggaa, gbra, gbga, gbba, gbar, gbag, gbab, gbaa, \
212 garr, garg, garb, gara, gagr, gagg, gagb, gaga, gabr, gabg, gabb, gaba, gaar, gaag, gaab, \
213 gaaa, brra, brga, brba, brar, brag, brab, braa, bgra, bgga, bgba, bgar, bgag, bgab, bgaa, \
214 bbra, bbga, bbba, bbar, bbag, bbab, bbaa, barr, barg, barb, bara, bagr, bagg, bagb, baga, \
215 babr, babg, babb, baba, baar, baag, baab, baaa, arrr, arrg, arrb, arra, argr, argg, argb, \
216 arga, arbr, arbg, arbb, arba, arar, arag, arab, araa, agrr, agrg, agrb, agra, aggr, aggg, \
217 aggb, agga, agbr, agbg, agbb, agba, agar, agag, agab, agaa, abrr, abrg, abrb, abra, abgr, \
218 abgg, abgb, abga, abbr, abbg, abbb, abba, abar, abag, abab, abaa, aarr, aarg, aarb, aara, \
219 aagr, aagg, aagb, aaga, aabr, aabg, aabb, aaba, aaar, aaag, aaab, aaaa;
232 static constexpr T V =
T(0.123f);
256 static constexpr T V =
T(0.123f);
282 static constexpr T V =
T(0.123f);
360using uint =
unsigned int;
384using ushort =
unsigned short;
423template<
int C,
int R>
struct MatOp {
430 return *
reinterpret_cast<const ColT *
>(
this);
434 return *
reinterpret_cast<ColT *
>(
this);
477 explicit MatBase(
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T,
T) {}
493#define RESHAPE(mat_to, mat_from, ...) \
494 mat_to to_##mat_to(mat_from m) \
496 return mat_to(__VA_ARGS__); \
503RESHAPE(
float3x3,
float2x2, m[0].
x, m[0].
y, 0, m[1].
x, m[1].
y, 0, 0, 0, 1)
504RESHAPE(
float4x4,
float2x2, m[0].
x, m[0].
y, 0, 0, m[1].
x, m[1].
y, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
505RESHAPE(
float4x4,
float3x3, m[0].
x, m[0].
y, m[0].
z, 0, m[1].
x, m[1].
y, m[1].
z, 0, m[2].
x, m[2].
y, m[2].
z, 0, 0, 0, 0, 1)
535#define TEX_TEMPLATE \
536 template<typename T, \
537 typename IntCoord = typename T::int_coord_type, \
538 typename FltCoord = typename T::flt_coord_type, \
539 typename DerivVec = typename T::derivative_type, \
540 typename DataVec = typename T::data_vec_type, \
541 typename SizeVec = typename T::size_vec_type>
608template<
typename T,
int Dimensions,
bool Array = false,
bool Atomic = false>
struct ImageBase {
616#define IMG_TEMPLATE \
617 template<typename T, \
618 typename IntCoord = typename T::int_coord_type, \
619 typename DataVec = typename T::data_vec_type, \
620 typename SizeVec = typename T::size_vec_type>
630#define imageLoadFast imageLoad
631#define imageStoreFast imageStore
744template<
typename T,
typename U>
constexpr T pow(
T,
U)
RET;
766#define ceil glsl::ceil
768#define exp2 glsl::exp2
769#define floor glsl::floor
771#define frexp glsl::frexp
772#define isinf glsl::isinf
773#define isnan glsl::isnan
775#define log2 glsl::log2
776#define modf glsl::modf
778#define round glsl::round
779#define sqrt glsl::sqrt
780#define trunc glsl::trunc
781#define ldexp glsl::ldexp
782#define acos glsl::acos
783#define acosh glsl::acosh
784#define asin glsl::asin
785#define asinh glsl::asinh
786#define atan glsl::atan
787#define atanh glsl::atanh
789#define cosh glsl::cosh
791#define sinh glsl::sinh
793#define tanh glsl::tanh
795template<
typename T>
constexpr T max(
T,
T)
RET;
796template<
typename T>
constexpr T min(
T,
T)
RET;
800template<
typename T,
typename U>
constexpr T max(
T,
U)
RET;
801template<
typename T,
typename U>
constexpr T min(
T,
U)
RET;
819float mix(
float,
float,
float)
RET;
824#define select(A, B, C) mix(A, B, C)
971#define float_array(...) { __VA_ARGS__ }
972#define float2_array(...) { __VA_ARGS__ }
973#define float3_array(...) { __VA_ARGS__ }
974#define float4_array(...) { __VA_ARGS__ }
975#define int_array(...) { __VA_ARGS__ }
976#define int2_array(...) { __VA_ARGS__ }
977#define int3_array(...) { __VA_ARGS__ }
978#define int4_array(...) { __VA_ARGS__ }
979#define uint_array(...) { __VA_ARGS__ }
980#define uint2_array(...) { __VA_ARGS__ }
981#define uint3_array(...) { __VA_ARGS__ }
982#define uint4_array(...) { __VA_ARGS__ }
983#define bool_array(...) { __VA_ARGS__ }
984#define bool2_array(...) { __VA_ARGS__ }
985#define bool3_array(...) { __VA_ARGS__ }
986#define bool4_array(...) { __VA_ARGS__ }
989#define METAL_CONSTRUCTOR_1(class_name, t1, m1) \
990 class_name() = default; \
991 class_name(t1 m1##_) : m1(m1##_){};
993#define METAL_CONSTRUCTOR_2(class_name, t1, m1, t2, m2) \
994 class_name() = default; \
995 class_name(t1 m1##_, t2 m2##_) : m1(m1##_), m2(m2##_){};
997#define METAL_CONSTRUCTOR_3(class_name, t1, m1, t2, m2, t3, m3) \
998 class_name() = default; \
999 class_name(t1 m1##_, t2 m2##_, t3 m3##_) : m1(m1##_), m2(m2##_), m3(m3##_){};
1001#define METAL_CONSTRUCTOR_4(class_name, t1, m1, t2, m2, t3, m3, t4, m4) \
1002 class_name() = default; \
1003 class_name(t1 m1##_, t2 m2##_, t3 m3##_, t4 m4##_) \
1004 : m1(m1##_), m2(m2##_), m3(m3##_), m4(m4##_){};
1009#ifndef ATTR_FALLTHROUGH
1011# define ATTR_FALLTHROUGH __attribute__((fallthrough))
1013# define ATTR_FALLTHROUGH ((void)0)
1031#define GLSL_CPP_STUBS
1034#define common common_is_reserved_glsl_keyword_do_not_use
1035#define partition partition_is_reserved_glsl_keyword_do_not_use
1036#define active active_is_reserved_glsl_keyword_do_not_use
1037#define class class_is_reserved_glsl_keyword_do_not_use
1038#define union union_is_reserved_glsl_keyword_do_not_use
1040#define typedef typedef_is_reserved_glsl_keyword_do_not_use
1042#define this this_is_reserved_glsl_keyword_do_not_use
1043#define packed packed_is_reserved_glsl_keyword_do_not_use
1044#define resource resource_is_reserved_glsl_keyword_do_not_use
1045#define goto goto_is_reserved_glsl_keyword_do_not_use
1047#define noinline noinline_is_reserved_glsl_keyword_do_not_use
1048#define public public_is_reserved_glsl_keyword_do_not_use
1051#define external external_is_reserved_glsl_keyword_do_not_use
1052#define interface interface_is_reserved_glsl_keyword_do_not_use
1053#define long long_is_reserved_glsl_keyword_do_not_use
1056#define fixed fixed_is_reserved_glsl_keyword_do_not_use
1057#define unsigned unsigned_is_reserved_glsl_keyword_do_not_use
1058#define superp superp_is_reserved_glsl_keyword_do_not_use
1059#define input input_is_reserved_glsl_keyword_do_not_use
1060#define output output_is_reserved_glsl_keyword_do_not_use
1061#define hvec2 hvec2_is_reserved_glsl_keyword_do_not_use
1062#define hvec3 hvec3_is_reserved_glsl_keyword_do_not_use
1063#define hvec4 hvec4_is_reserved_glsl_keyword_do_not_use
1064#define fvec2 fvec2_is_reserved_glsl_keyword_do_not_use
1065#define fvec3 fvec3_is_reserved_glsl_keyword_do_not_use
1066#define fvec4 fvec4_is_reserved_glsl_keyword_do_not_use
1067#define sampler3DRect sampler3DRect_is_reserved_glsl_keyword_do_not_use
1068#define filter filter_is_reserved_glsl_keyword_do_not_use
1069#define sizeof sizeof_is_reserved_glsl_keyword_do_not_use
1070#define cast cast_is_reserved_glsl_keyword_do_not_use
1073#define row_major row_major_is_reserved_glsl_keyword_do_not_use
1080# pragma GCC diagnostic ignored "-Wunknown-attributes"
1082# pragma GCC diagnostic ignored "-Wattributes"
btScalar determinant() const
Return the determinant of the matrix.
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
static T Cube(const T &x)
SIMD_FORCE_INLINE btScalar length() const
Return the length of the vector.
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
VecBase< int, D > findMSB(VecOp< int, D >) RET
SamplerBase< uint, 2, true, true > usamplerCubeArray
SamplerBase< float, 2, false, true, false, true > sampler2DArrayDepth
int atomicMin(int &, int) RET
ImageBase< uint, 2, true, true > uimage2DArrayAtomic
ImageBase< int, 3, false, true > iimage3DAtomic
SamplerBase< uint, 1 > usamplerBuffer
ImageBase< int, 2 > iimage2D
VecBase< bool, D > notEqual(VecOp< T, D >, VecOp< T, D >) RET
SamplerBase< float, 1, false, true > sampler1DArray
float4 unpackSnorm4x8(uint) RET
ImageBase< uint, 2 > uimage2D
VecBase< int, D > bitfieldExtract(VecOp< int, D >, int, int) RET
ImageBase< int, 2, true, true > iimage2DArrayAtomic
SamplerBase< uint, 2, false, true > usampler2DArray
ImageBase< int, 1, true > iimage1DArray
void gpu_discard_fragment()
IMG_TEMPLATE uint imageAtomicXor(T &, IntCoord, uint) RET
#define RESHAPE(mat_to, mat_from,...)
VecBase< bool, D > greaterThanEqual(VecOp< T, D >, VecOp< T, D >) RET
float2 unpackUnorm2x16(uint) RET
SamplerBase< int, 2, true, true > isamplerCubeArray
TEX_TEMPLATE DataVec texture(T, FltCoord, float=0.0f) RET
VecBase< int, D > floatBitsToInt(VecOp< float, D >) RET
VecBase< bool, D > lessThanEqual(VecOp< T, D >, VecOp< T, D >) RET
TEX_TEMPLATE DataVec texelFetch(T, IntCoord, int) RET
SamplerBase< uint, 2, false, false, true > usampler2DAtomic
IMG_TEMPLATE DataVec imageLoad(const T &, IntCoord) RET
IMG_TEMPLATE uint imageAtomicMax(T &, IntCoord, uint) RET
ImageBase< uint, 2, false, true > uimage2DAtomic
IMG_TEMPLATE uint imageAtomicAdd(T &, IntCoord, uint) RET
VecBase< ushort, 2 > ushort2
SamplerBase< float, 1 > sampler1D
SamplerBase< int, 3 > isampler3D
SamplerBase< int, 1, false, true > isampler1DArray
ImageBase< float, 1, true > image1DArray
bool any(VecOp< bool, D >) RET
ImageBase< uint, 3, false, true > uimage3DAtomic
SamplerBase< int, 2, false, true > isampler2DArray
VecBase< short, 4 > short4
int atomicMax(int &, int) RET
SamplerBase< uint, 1, false, false, true > usampler1DAtomic
VecBase< short, 2 > short2
VecBase< float, D > intBitsToFloat(VecOp< int, D >) RET
int atomicExchange(int &, int) RET
MatBase< C, R > inverse(MatBase< C, R >) RET
SamplerBase< float, 1 > samplerBuffer
uint packUnorm2x16(float2) RET
VecBase< T, D > refract(VecOp< T, D >, VecOp< T, D >, float) RET
IMG_TEMPLATE uint imageAtomicAnd(T &, IntCoord, uint) RET
ImageBase< uint, 2, true > uimage2DArray
ImageBase< float, 2, true > image2DArray
int atomicCompSwap(int &, int, int) RET
VecBase< T, D > reflect(VecOp< T, D >, VecOp< T, D >) RET
ImageBase< int, 1 > iimage1D
VecBase< bool, D > greaterThan(VecOp< T, D >, VecOp< T, D >) RET
TEX_TEMPLATE DataVec textureLod(T, FltCoord, float) RET
SamplerBase< float, 2, true, false, false, true > samplerCubeDepth
SamplerBase< float, 2, true, true > samplerCubeArray
SamplerBase< int, 2 > isampler2D
VecBase< int, D > bitfieldReverse(VecOp< int, D >) RET
VecBase< float, D > normalize(VecOp< float, D >) RET
float4 unpackUnorm4x8(uint) RET
ImageBase< float, 2 > image2D
SamplerBase< float, 3 > sampler3D
uint packSnorm4x8(float4) RET
VecBase< ushort, 3 > ushort3
ImageBase< int, 2, true > iimage2DArray
SamplerBase< int, 2, false, false, true > isampler2DAtomic
VecBase< T, D > faceforward(VecOp< T, D >, VecOp< T, D >, VecOp< T, D >) RET
IMG_TEMPLATE void imageFence(T &)
constexpr T inversesqrt(T) RET
int atomicAnd(int &, int) RET
SamplerBase< uint, 2, false, true, true > usampler2DArrayAtomic
TEX_TEMPLATE DataVec textureGrad(T, FltCoord, DerivVec, DerivVec) RET
SamplerBase< uint, 2, true > usamplerCube
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
ImageBase< float, 3 > image3D
SamplerBase< float, 2, false, true > sampler2DArray
ImageBase< float, 1 > image1D
SamplerBase< int, 1 > isamplerBuffer
VecBase< float, D > constexpr mod(VecOp< float, D >, VecOp< float, D >) RET
uint packUnorm4x8(float4) RET
int atomicXor(int &, int) RET
IMG_TEMPLATE SizeVec imageSize(const T &) RET
VecBase< uint, D > floatBitsToUint(VecOp< float, D >) RET
IMG_TEMPLATE uint imageAtomicCompSwap(T &, IntCoord, uint, uint) RET
TEX_TEMPLATE DataVec textureLodOffset(T, FltCoord, float, IntCoord) RET
VecBase< int, D > bitfieldInsert(VecOp< int, D >, VecOp< int, D >, int, int) RET
IMG_TEMPLATE uint imageAtomicMin(T &, IntCoord, uint) RET
int atomicAdd(int &, int) RET
ImageBase< uint, 3 > uimage3D
bool all(VecOp< bool, D >) RET
ImageBase< int, 3 > iimage3D
SamplerBase< int, 2, false, true, true > isampler2DArrayAtomic
IMG_TEMPLATE uint imageAtomicExchange(T &, IntCoord, uint) RET
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
SamplerBase< int, 1 > isampler1D
MatBase< R, C > transpose(MatBase< C, R >) RET
SamplerBase< int, 1, false, false, true > isampler1DAtomic
SamplerBase< uint, 1 > usampler1D
ImageBase< int, 2, false, true > iimage2DAtomic
VecBase< int, D > bitCount(VecOp< int, D >) RET
VecBase< float, D > uintBitsToFloat(VecOp< uint, D >) RET
SamplerBase< float, 2 > sampler2D
VecBase< short, 3 > short3
SamplerBase< uint, 3 > usampler3D
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
VecBase< bool, D > lessThan(VecOp< T, D >, VecOp< T, D >) RET
float2 unpackHalf2x16(uint) RET
constexpr T radians(T) RET
IMG_TEMPLATE uint imageAtomicOr(T &, IntCoord, uint) RET
uint packHalf2x16(float2) RET
SamplerBase< int, 2, true > isamplerCube
ImageBase< uint, 1, true > uimage1DArray
VecBase< bool, D > equal(VecOp< T, D >, VecOp< T, D >) RET
ImageBase< uint, 1 > uimage1D
float2 unpackSnorm2x16(uint) RET
TEX_TEMPLATE SizeVec textureSize(T, int) RET
TEX_TEMPLATE DataVec texelFetchOffset(T, IntCoord, int, IntCoord) RET
SamplerBase< float, 2, true > samplerCube
SamplerBase< uint, 3, false, false, true > usampler3DAtomic
constexpr T clamp(T, U, U) RET
VecBase< int, D > findLSB(VecOp< int, D >) RET
SamplerBase< uint, 1, false, true > usampler1DArray
SamplerBase< uint, 2 > usampler2D
SamplerBase< float, 2, true, true, false, true > samplerCubeArrayDepth
uint packSnorm2x16(float2) RET
SamplerBase< int, 3, false, false, true > isampler3DAtomic
float distance(VecOp< float, D >, VecOp< float, D >) RET
int atomicOr(int &, int) RET
constexpr T degrees(T) RET
TEX_TEMPLATE DataVec textureGather(T, FltCoord) RET
VecBase< bool, D > operator!(VecOp< bool, D >) RET
IMG_TEMPLATE void imageStore(T &, IntCoord, DataVec)
MINLINE float smoothstep(float edge0, float edge1, float x)
MatBase< float, 2, 2 > float2x2
VecBase< uint32_t, 3 > uint3
MatBase< float, 4, 4 > float4x4
MatBase< float, 2, 4 > float2x4
MatBase< float, 3, 4 > float3x4
VecBase< float, 4 > float4
VecBase< float, 2 > float2
MatBase< float, 4, 2 > float4x2
const uint3 gl_GlobalInvocationID
const uint gl_LocalInvocationIndex
constexpr uint3 gl_WorkGroupSize
const uint3 gl_NumWorkGroups
const uint3 gl_WorkGroupID
const uint3 gl_LocalInvocationID
void groupMemoryBarrier()
void memoryBarrierBuffer()
void memoryBarrierShared()
void memoryBarrierImage()
const float4 gl_FragCoord
const int gpu_ViewportIndex
const float gl_ClipDistance[6]
const float2 gl_PointCoord
const bool gl_FrontFacing
const int gpu_BaseInstance
const int gpu_InstanceIndex
VecBase< int, coord_dim > int_coord_type
VecBase< T, 4 > data_vec_type
VecBase< int, coord_dim > size_vec_type
static constexpr int coord_dim
MatBase(const MatBase< OtherC, OtherR > &)
MatBase(T, T, T, T, T, T, T, T, T)
MatBase(ColT, ColT, ColT)
MatBase(const MatBase< OtherC, OtherR > &)
MatBase(ColT, ColT, ColT, ColT)
MatBase(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T)
MatBase(const MatBase< OtherC, OtherR > &)
const ColT & operator[](int) const
VecBase< float, coord_dim > flt_coord_type
static constexpr int coord_dim
VecBase< int, extent_dim > size_vec_type
static constexpr int deriv_dim
VecBase< int, coord_dim > int_coord_type
VecBase< float, deriv_dim > derivative_type
static constexpr int extent_dim
VecBase< T, 4 > data_vec_type
constexpr VecT operator=(const VecT &) RET
constexpr VecBase(T x_, T y_)
constexpr VecBase(T, VecOp< T, 2 >)
constexpr VecBase(T x_, T y_, T z_)
constexpr VecBase(VecOp< T, 2 >, T)
constexpr VecBase(VecOp< T, 3 >, T)
constexpr VecBase(T x_, T y_, T z_, T w_)
constexpr VecBase(VecOp< T, 2 >, T, T)
constexpr VecBase(T, T, VecOp< T, 2 >)
constexpr VecBase(T, VecOp< T, 2 >, T)
constexpr VecBase(T, VecOp< T, 3 >)
constexpr VecBase(VecOp< T, 2 >, VecOp< T, 2 >)
VecBase(VecOp< float, 2 >)
VecBase(VecOp< bool, 2 >, bool)
VecBase(bool, bool, bool)
VecBase(bool, VecOp< bool, 2 >)
VecBase(bool, bool, VecOp< bool, 2 >)
VecBase(bool, VecOp< bool, 2 >, bool)
VecBase(VecOp< bool, 2 >, VecOp< bool, 2 >)
VecBase(bool, VecOp< bool, 3 >)
VecBase(VecOp< bool, 3 >, bool)
VecBase(bool, bool, bool, bool)
VecBase(VecOp< bool, 2 >, bool, bool)
INT_OP friend VecT operator>>(VecT, VecT) RET
INT_OP friend VecT operator<<(VecT, VecT) RET
INT_OP friend VecT operator^(VecT, VecT) RET
INT_OP friend VecT operator&(VecT, T) RET
INT_OP friend VecT operator&=(VecT, T) RET
INT_OP friend VecT operator<<=(VecT, VecT) RET
INT_OP friend VecT operator|=(VecT, T) RET
INT_OP friend VecT operator&(VecT, VecT) RET
INT_OP friend VecT operator%=(VecT, VecT) RET
INT_OP friend VecT operator>>=(VecT, VecT) RET
INT_OP friend VecT operator>>=(T, VecT) RET
INT_OP friend VecT operator<<=(VecT, T) RET
INT_OP friend VecT operator^=(VecT, VecT) RET
INT_OP friend VecT operator<<(T, VecT) RET
INT_OP friend VecT operator^(T, VecT) RET
INT_OP friend VecT operator%(VecT, VecT) RET
INT_OP friend VecT operator>>(T, VecT) RET
INT_OP friend VecT operator<<(VecT, T) RET
INT_OP friend VecT operator|(T, VecT) RET
INT_OP friend VecT operator^(VecT, T) RET
STD_OP VecT operator+() const RET
INT_OP friend VecT operator&(T, VecT) RET
INT_OP friend VecT operator|(VecT, T) RET
INT_OP friend VecT operator|(VecT, VecT) RET
INT_OP friend VecT operator|=(VecT, VecT) RET
const T & operator[](int) const
INT_OP friend VecT operator^=(VecT, T) RET
INT_OP friend VecT operator>>(VecT, T) RET
INT_OP friend VecT operator%(VecT, T) RET
INT_OP friend VecT operator%(T, VecT) RET
INT_OP friend VecT operator&=(VecT, VecT) RET
INT_OP friend VecT operator~(VecT) RET
INT_OP friend VecT operator>>=(VecT, T) RET
INT_OP friend VecT operator<<=(T, VecT) RET
INT_OP friend VecT operator%=(VecT, T) RET