Blender V5.0
gpu_shader_cxx_vector.hh File Reference
#include <type_traits>

Go to the source code of this file.

Classes

struct  VecBase< T, Sz >
struct  VecOp< T, Sz >
struct  SwizzleBase< T, Sz >
struct  VecBase< T, 1 >
struct  VecBase< T, 2 >
struct  VecBase< T, 3 >
struct  VecBase< T, 4 >
struct  VecBase< bool, 2 >
struct  VecBase< bool, 3 >
struct  VecBase< bool, 4 >

Macros

#define RET
#define STD_OP   template<typename U = T, typename std::enable_if_t<!std::is_same_v<bool, U>> * = nullptr>
#define INT_OP

Vector Types

#define SWIZZLE_XY(T)
#define SWIZZLE_RG(T)
#define SWIZZLE_XYZ(T)
#define SWIZZLE_RGB(T)
#define SWIZZLE_XYZW(T)
#define SWIZZLE_RGBA(T)
using float2 = VecBase<float, 2>
using float3 = VecBase<float, 3>
using float4 = VecBase<float, 4>
using uint2 = VecBase<uint, 2>
using uint3 = VecBase<uint, 3>
using uint4 = VecBase<uint, 4>
using int2 = VecBase<int, 2>
using int3 = VecBase<int, 3>
using int4 = VecBase<int, 4>
using uchar = unsigned int
using uchar2 = VecBase<uchar, 2>
using uchar3 = VecBase<uchar, 3>
using uchar4 = VecBase<uchar, 4>
using char2 = VecBase<char, 2>
using char3 = VecBase<char, 3>
using char4 = VecBase<char, 4>
using ushort2 = VecBase<ushort, 2>
using ushort3 = VecBase<ushort, 3>
using ushort4 = VecBase<ushort, 4>
using short2 = VecBase<short, 2>
using short3 = VecBase<short, 3>
using short4 = VecBase<short, 4>
using half = float
using half2 = VecBase<half, 2>
using half3 = VecBase<half, 3>
using half4 = VecBase<half, 4>
using bool2 = VecBase<bool, 2>
using bool3 = VecBase<bool, 3>
using bool4 = VecBase<bool, 4>
using bool32_t = uint
using packed_float2 = float2
using packed_float3 = float3
using packed_float4 = float4
using packed_int2 = int2
using packed_int3 = int3
using packed_int4 = int4
using packed_uint2 = uint2
using packed_uint3 = uint3
using packed_uint4 = uint4

Macro Definition Documentation

◆ INT_OP

◆ RET

#define RET
Value:
{ \
return {}; \
}

C++ stubs for shading language.

IMPORTANT: Please ask the module team if you need some feature that are not listed in this file.

Definition at line 16 of file gpu_shader_cxx_vector.hh.

Referenced by VecBase< T, 1 >::operator T(), SwizzleBase< T, Sz >::operator VecT(), VecOp< T, Sz >::operator%, VecOp< T, Sz >::operator%, VecOp< T, Sz >::operator%, VecOp< T, Sz >::operator%=, VecOp< T, Sz >::operator%=, VecOp< T, Sz >::operator&, VecOp< T, Sz >::operator&, VecOp< T, Sz >::operator&, VecOp< T, Sz >::operator&=, VecOp< T, Sz >::operator&=, VecOp< T, Sz >::operator*, VecOp< T, Sz >::operator*, VecOp< T, Sz >::operator*, VecOp< T, Sz >::operator*=, VecOp< T, Sz >::operator*=, VecOp< T, Sz >::operator+(), VecOp< T, Sz >::operator+, VecOp< T, Sz >::operator+, VecOp< T, Sz >::operator+, VecOp< T, Sz >::operator+=, VecOp< T, Sz >::operator+=, VecOp< T, Sz >::operator-(), VecOp< T, Sz >::operator-, VecOp< T, Sz >::operator-, VecOp< T, Sz >::operator-, VecOp< T, Sz >::operator-=, VecOp< T, Sz >::operator-=, VecOp< T, Sz >::operator/, VecOp< T, Sz >::operator/, VecOp< T, Sz >::operator/, VecOp< T, Sz >::operator/=, VecOp< T, Sz >::operator/=, VecOp< T, Sz >::operator<<, VecOp< T, Sz >::operator<<, VecOp< T, Sz >::operator<<, VecOp< T, Sz >::operator<<=, VecOp< T, Sz >::operator<<=, VecOp< T, Sz >::operator<<=, SwizzleBase< T, Sz >::operator=(), VecOp< T, Sz >::operator>>, VecOp< T, Sz >::operator>>, VecOp< T, Sz >::operator>>, VecOp< T, Sz >::operator>>=, VecOp< T, Sz >::operator>>=, VecOp< T, Sz >::operator>>=, VecOp< T, Sz >::operator^, VecOp< T, Sz >::operator^, VecOp< T, Sz >::operator^, VecOp< T, Sz >::operator^=, VecOp< T, Sz >::operator^=, VecOp< T, Sz >::operator|, VecOp< T, Sz >::operator|, VecOp< T, Sz >::operator|, VecOp< T, Sz >::operator|=, VecOp< T, Sz >::operator|=, and VecOp< T, Sz >::operator~.

◆ STD_OP

◆ SWIZZLE_RG

#define SWIZZLE_RG ( T)
Value:
SwizzleBase<T, 2> rr, rg, gr, gg; \
SwizzleBase<T, 3> rrr, rrg, rgr, rgg, grr, grg, ggr, ggg; \
SwizzleBase<T, 4> rrrr, rrrg, rrgr, rrgg, rgrr, rgrg, rggr, rggg, grrr, grrg, grgr, grgg, ggrr, \
ggrg, gggr, gggg;

Definition at line 136 of file gpu_shader_cxx_vector.hh.

◆ SWIZZLE_RGB

#define SWIZZLE_RGB ( T)
Value:
SwizzleBase<T, 2> rb, gb, br, bg, bb; \
SwizzleBase<T, 3> rrb, rgb, rbr, rbg, rbb, grb, ggb, gbr, gbg, gbb, brr, brg, brb, bgr, bgg, \
bgb, bbr, bbg, bbb; \
SwizzleBase<T, 4> rrrb, rrgb, rrbr, rrbg, rrbb, rgrb, rggb, rgbr, rgbg, rgbb, rbrr, rbrg, rbrb, \
rbgr, rbgg, rbgb, rbbr, rbbg, rbbb, grrb, grgb, grbr, grbg, grbb, ggrb, gggb, ggbr, ggbg, \
ggbb, gbrr, gbrg, gbrb, gbgr, gbgg, gbgb, gbbr, gbbg, gbbb, brrr, brrg, brrb, brgr, brgg, \
brgb, brbr, brbg, brbb, bgrr, bgrg, bgrb, bggr, bggg, bggb, bgbr, bgbg, bgbb, bbrr, bbrg, \
bbrb, bbgr, bbgg, bbgb, bbbr, bbbg, bbbb;
#define SWIZZLE_RG(T)

Definition at line 153 of file gpu_shader_cxx_vector.hh.

◆ SWIZZLE_RGBA

#define SWIZZLE_RGBA ( T)
Value:
SwizzleBase<T, 2> ra, ga, ba, ar, ag, ab, aa; \
SwizzleBase<T, 3> rra, rga, rba, rar, rag, rab, raa, gra, gga, gba, gar, gag, gab, gaa, bra, \
bga, bba, bar, bag, bab, baa, arr, arg, arb, ara, agr, agg, agb, aga, abr, abg, abb, aba, \
aar, aag, aab, aaa; \
SwizzleBase<T, 4> rrra, rrga, rrba, rrar, rrag, rrab, rraa, rgra, rgga, rgba, rgar, rgag, rgab, \
rgaa, rbra, rbga, rbba, rbar, rbag, rbab, rbaa, rarr, rarg, rarb, rara, ragr, ragg, ragb, \
raga, rabr, rabg, rabb, raba, raar, raag, raab, raaa, grra, grga, grba, grar, grag, grab, \
graa, ggra, ggga, ggba, ggar, ggag, ggab, ggaa, gbra, gbga, gbba, gbar, gbag, gbab, gbaa, \
garr, garg, garb, gara, gagr, gagg, gagb, gaga, gabr, gabg, gabb, gaba, gaar, gaag, gaab, \
gaaa, brra, brga, brba, brar, brag, brab, braa, bgra, bgga, bgba, bgar, bgag, bgab, bgaa, \
bbra, bbga, bbba, bbar, bbag, bbab, bbaa, barr, barg, barb, bara, bagr, bagg, bagb, baga, \
babr, babg, babb, baba, baar, baag, baab, baaa, arrr, arrg, arrb, arra, argr, argg, argb, \
arga, arbr, arbg, arbb, arba, arar, arag, arab, araa, agrr, agrg, agrb, agra, aggr, aggg, \
aggb, agga, agbr, agbg, agbb, agba, agar, agag, agab, agaa, abrr, abrg, abrb, abra, abgr, \
abgg, abgb, abga, abbr, abbg, abbb, abba, abar, abag, abab, abaa, aarr, aarg, aarb, aara, \
aagr, aagg, aagb, aaga, aabr, aabg, aabb, aaba, aaar, aaag, aaab, aaaa;
#define SWIZZLE_RGB(T)

Definition at line 183 of file gpu_shader_cxx_vector.hh.

◆ SWIZZLE_XY

#define SWIZZLE_XY ( T)
Value:
SwizzleBase<T, 2> xx, xy, yx, yy; \
SwizzleBase<T, 3> xxx, xxy, xyx, xyy, yxx, yxy, yyx, yyy; \
SwizzleBase<T, 4> xxxx, xxxy, xxyx, xxyy, xyxx, xyxy, xyyx, xyyy, yxxx, yxxy, yxyx, yxyy, yyxx, \
yyxy, yyyx, yyyy;
int xy[2]
Definition wm_draw.cc:178

Definition at line 130 of file gpu_shader_cxx_vector.hh.

◆ SWIZZLE_XYZ

#define SWIZZLE_XYZ ( T)
Value:
SwizzleBase<T, 2> xz, yz, zx, zy, zz; \
SwizzleBase<T, 3> xxz, xyz, xzx, xzy, xzz, yxz, yyz, yzx, yzy, yzz, zxx, zxy, zxz, zyx, zyy, \
zyz, zzx, zzy, zzz; \
SwizzleBase<T, 4> xxxz, xxyz, xxzx, xxzy, xxzz, xyxz, xyyz, xyzx, xyzy, xyzz, xzxx, xzxy, xzxz, \
xzyx, xzyy, xzyz, xzzx, xzzy, xzzz, yxxz, yxyz, yxzx, yxzy, yxzz, yyxz, yyyz, yyzx, yyzy, \
yyzz, yzxx, yzxy, yzxz, yzyx, yzyy, yzyz, yzzx, yzzy, yzzz, zxxx, zxxy, zxxz, zxyx, zxyy, \
zxyz, zxzx, zxzy, zxzz, zyxx, zyxy, zyxz, zyyx, zyyy, zyyz, zyzx, zyzy, zyzz, zzxx, zzxy, \
zzxz, zzyx, zzyy, zzyz, zzzx, zzzy, zzzz;
#define SWIZZLE_XY(T)

Definition at line 142 of file gpu_shader_cxx_vector.hh.

◆ SWIZZLE_XYZW

#define SWIZZLE_XYZW ( T)
Value:
SwizzleBase<T, 2> xw, yw, zw, wx, wy, wz, ww; \
SwizzleBase<T, 3> xxw, xyw, xzw, xwx, xwy, xwz, xww, yxw, yyw, yzw, ywx, ywy, ywz, yww, zxw, \
zyw, zzw, zwx, zwy, zwz, zww, wxx, wxy, wxz, wxw, wyx, wyy, wyz, wyw, wzx, wzy, wzz, wzw, \
wwx, wwy, wwz, www; \
SwizzleBase<T, 4> xxxw, xxyw, xxzw, xxwx, xxwy, xxwz, xxww, xyxw, xyyw, xyzw, xywx, xywy, xywz, \
xyww, xzxw, xzyw, xzzw, xzwx, xzwy, xzwz, xzww, xwxx, xwxy, xwxz, xwxw, xwyx, xwyy, xwyz, \
xwyw, xwzx, xwzy, xwzz, xwzw, xwwx, xwwy, xwwz, xwww, yxxw, yxyw, yxzw, yxwx, yxwy, yxwz, \
yxww, yyxw, yyyw, yyzw, yywx, yywy, yywz, yyww, yzxw, yzyw, yzzw, yzwx, yzwy, yzwz, yzww, \
ywxx, ywxy, ywxz, ywxw, ywyx, ywyy, ywyz, ywyw, ywzx, ywzy, ywzz, ywzw, ywwx, ywwy, ywwz, \
ywww, zxxw, zxyw, zxzw, zxwx, zxwy, zxwz, zxww, zyxw, zyyw, zyzw, zywx, zywy, zywz, zyww, \
zzxw, zzyw, zzzw, zzwx, zzwy, zzwz, zzww, zwxx, zwxy, zwxz, zwxw, zwyx, zwyy, zwyz, zwyw, \
zwzx, zwzy, zwzz, zwzw, zwwx, zwwy, zwwz, zwww, wxxx, wxxy, wxxz, wxxw, wxyx, wxyy, wxyz, \
wxyw, wxzx, wxzy, wxzz, wxzw, wxwx, wxwy, wxwz, wxww, wyxx, wyxy, wyxz, wyxw, wyyx, wyyy, \
wyyz, wyyw, wyzx, wyzy, wyzz, wyzw, wywx, wywy, wywz, wyww, wzxx, wzxy, wzxz, wzxw, wzyx, \
wzyy, wzyz, wzyw, wzzx, wzzy, wzzz, wzzw, wzwx, wzwy, wzwz, wzww, wwxx, wwxy, wwxz, wwxw, \
wwyx, wwyy, wwyz, wwyw, wwzx, wwzy, wwzz, wwzw, wwwx, wwwy, wwwz, wwww;
#define SWIZZLE_XYZ(T)

Definition at line 164 of file gpu_shader_cxx_vector.hh.

Typedef Documentation

◆ bool2

using bool2 = VecBase<bool, 2>

Definition at line 379 of file gpu_shader_cxx_vector.hh.

◆ bool3

using bool3 = VecBase<bool, 3>

Definition at line 380 of file gpu_shader_cxx_vector.hh.

◆ bool32_t

using bool32_t = uint

Definition at line 383 of file gpu_shader_cxx_vector.hh.

◆ bool4

using bool4 = VecBase<bool, 4>

Definition at line 381 of file gpu_shader_cxx_vector.hh.

◆ char2

using char2 = VecBase<char, 2>

Definition at line 361 of file gpu_shader_cxx_vector.hh.

◆ char3

using char3 = VecBase<char, 3>

Definition at line 362 of file gpu_shader_cxx_vector.hh.

◆ char4

using char4 = VecBase<char, 4>

Definition at line 363 of file gpu_shader_cxx_vector.hh.

◆ float2

using float2 = VecBase<float, 2>

Definition at line 344 of file gpu_shader_cxx_vector.hh.

◆ float3

using float3 = VecBase<float, 3>

Definition at line 345 of file gpu_shader_cxx_vector.hh.

◆ float4

using float4 = VecBase<float, 4>

Definition at line 346 of file gpu_shader_cxx_vector.hh.

◆ half

using half = float

Definition at line 374 of file gpu_shader_cxx_vector.hh.

◆ half2

using half2 = VecBase<half, 2>

Definition at line 375 of file gpu_shader_cxx_vector.hh.

◆ half3

using half3 = VecBase<half, 3>

Definition at line 376 of file gpu_shader_cxx_vector.hh.

◆ half4

using half4 = VecBase<half, 4>

Definition at line 377 of file gpu_shader_cxx_vector.hh.

◆ int2

using int2 = VecBase<int, 2>

Definition at line 352 of file gpu_shader_cxx_vector.hh.

◆ int3

using int3 = VecBase<int, 3>

Definition at line 353 of file gpu_shader_cxx_vector.hh.

◆ int4

using int4 = VecBase<int, 4>

Definition at line 354 of file gpu_shader_cxx_vector.hh.

◆ packed_float2

Packed types are needed for MSL which have different alignment rules for float3.

Definition at line 386 of file gpu_shader_cxx_vector.hh.

◆ packed_float3

using packed_float3 = float3

Definition at line 387 of file gpu_shader_cxx_vector.hh.

◆ packed_float4

Definition at line 388 of file gpu_shader_cxx_vector.hh.

◆ packed_int2

using packed_int2 = int2

Definition at line 389 of file gpu_shader_cxx_vector.hh.

◆ packed_int3

using packed_int3 = int3

Definition at line 390 of file gpu_shader_cxx_vector.hh.

◆ packed_int4

using packed_int4 = int4

Definition at line 391 of file gpu_shader_cxx_vector.hh.

◆ packed_uint2

Definition at line 392 of file gpu_shader_cxx_vector.hh.

◆ packed_uint3

using packed_uint3 = uint3

Definition at line 393 of file gpu_shader_cxx_vector.hh.

◆ packed_uint4

Definition at line 394 of file gpu_shader_cxx_vector.hh.

◆ short2

using short2 = VecBase<short, 2>

Definition at line 370 of file gpu_shader_cxx_vector.hh.

◆ short3

using short3 = VecBase<short, 3>

Definition at line 371 of file gpu_shader_cxx_vector.hh.

◆ short4

using short4 = VecBase<short, 4>

Definition at line 372 of file gpu_shader_cxx_vector.hh.

◆ uchar

using uchar = unsigned int

Definition at line 356 of file gpu_shader_cxx_vector.hh.

◆ uchar2

using uchar2 = VecBase<uchar, 2>

Definition at line 357 of file gpu_shader_cxx_vector.hh.

◆ uchar3

using uchar3 = VecBase<uchar, 3>

Definition at line 358 of file gpu_shader_cxx_vector.hh.

◆ uchar4

using uchar4 = VecBase<uchar, 4>

Definition at line 359 of file gpu_shader_cxx_vector.hh.

◆ uint2

using uint2 = VecBase<uint, 2>

Definition at line 348 of file gpu_shader_cxx_vector.hh.

◆ uint3

using uint3 = VecBase<uint, 3>

Definition at line 349 of file gpu_shader_cxx_vector.hh.

◆ uint4

using uint4 = VecBase<uint, 4>

Definition at line 350 of file gpu_shader_cxx_vector.hh.

◆ ushort2

using ushort2 = VecBase<ushort, 2>

Definition at line 366 of file gpu_shader_cxx_vector.hh.

◆ ushort3

using ushort3 = VecBase<ushort, 3>

Definition at line 367 of file gpu_shader_cxx_vector.hh.

◆ ushort4

using ushort4 = VecBase<ushort, 4>

Definition at line 368 of file gpu_shader_cxx_vector.hh.