📄 slang_core.gc
字号:
__asm float_rcp inv.x, u.x; __asm float_rcp inv.y, u.y; __asm vec4_multiply z, v, inv; __asm vec4_to_ivec4 v, z;}//// ivec4 assignment operatorsvoid __operator += (inout ivec4 v, const ivec4 u){ __asm vec4_add v, v, u;}void __operator -= (inout ivec4 v, const ivec4 u){ __asm vec4_subtract v, v, u;}void __operator *= (inout ivec4 v, const ivec4 u){ __asm vec4_multiply v, v, u;}void __operator /= (inout ivec4 v, const ivec4 u){ ivec4 inv, z; __asm float_rcp inv.x, u.x; __asm float_rcp inv.y, u.y; __asm vec4_multiply z, v, inv; __asm vec4_to_ivec4 v, z;}//// float assignment operatorsvoid __operator += (inout float a, const float b){ __asm vec4_add a.x, a.x, b.x;}void __operator -= (inout float a, const float b){ __asm vec4_subtract a.x, a, b;}void __operator *= (inout float a, const float b){ __asm vec4_multiply a.x, a, b;}void __operator /= (inout float a, const float b){ float w; // = 1 / b __asm float_rcp w.x, b; __asm vec4_multiply a.x, a, w;}//// vec2 assignment operatorsvoid __operator += (inout vec2 v, const vec2 u){ __asm vec4_add v.xy, v.xy, u.xy;}void __operator -= (inout vec2 v, const vec2 u){ __asm vec4_subtract v.xy, v.xy, u.xy;}void __operator *= (inout vec2 v, const vec2 u){ __asm vec4_multiply v.xy, v.xy, u.xy;}void __operator /= (inout vec2 v, const vec2 u){ vec2 w; __asm float_rcp w.x, u.x; __asm float_rcp w.y, u.y; __asm vec4_multiply v.xy, v.xy, w.xy;}//// vec3 assignment operatorsvoid __operator += (inout vec3 v, const vec3 u){ __asm vec4_add v.xyz, v, u;}void __operator -= (inout vec3 v, const vec3 u){ __asm vec4_subtract v.xyz, v, u;}void __operator *= (inout vec3 v, const vec3 u){ __asm vec4_multiply v.xyz, v, u;}void __operator /= (inout vec3 v, const vec3 u){ vec3 w; __asm float_rcp w.x, u.x; __asm float_rcp w.y, u.y; __asm float_rcp w.z, u.z; __asm vec4_multiply v.xyz, v.xyz, w.xyz;}//// vec4 assignment operatorsvoid __operator += (inout vec4 v, const vec4 u){ __asm vec4_add v, v, u;}void __operator -= (inout vec4 v, const vec4 u){ __asm vec4_subtract v, v, u;}void __operator *= (inout vec4 v, const vec4 u){ __asm vec4_multiply v, v, u;}void __operator /= (inout vec4 v, const vec4 u){ vec4 w; __asm float_rcp w.x, u.x; __asm float_rcp w.y, u.y; __asm float_rcp w.z, u.z; __asm float_rcp w.w, u.w; __asm vec4_multiply v, v, w;}//// ivec2/int assignment operatorsvoid __operator += (inout ivec2 v, const int a){ __asm vec4_add v.xy, v.xy, a;}void __operator -= (inout ivec2 v, const int a){ __asm vec4_subtract v.xy, v.xy, a;}void __operator *= (inout ivec2 v, const int a){ __asm vec4_multiply v.xy, v.xy, a; v.x *= a; v.y *= a;}void __operator /= (inout ivec2 v, const int a){// XXX rcp v.x /= a; v.y /= a;}//// ivec3/int assignment operatorsvoid __operator += (inout ivec3 v, const int a){ __asm vec4_add v.xyz, v.xyz, a;}void __operator -= (inout ivec3 v, const int a){ __asm vec4_subtract v.xyz, v.xyz, a;}void __operator *= (inout ivec3 v, const int a){ __asm vec4_multiply v.xyz, v.xyz, a;}void __operator /= (inout ivec3 v, const int a){ // XXX rcp v.x /= a; v.y /= a; v.z /= a;}//// ivec4/int assignment operatorsvoid __operator += (inout ivec4 v, const int a){ __asm vec4_add v, v, a;}void __operator -= (inout ivec4 v, const int a){ __asm vec4_subtract v, v, a;}void __operator *= (inout ivec4 v, const int a){ __asm vec4_multiply v, v, a;}void __operator /= (inout ivec4 v, const int a){ v.x /= a; v.y /= a; v.z /= a; v.w /= a;}//// vec2/float assignment operatorsvoid __operator += (inout vec2 v, const float a){ __asm vec4_add v.xy, v, a;}void __operator -= (inout vec2 v, const float a){ __asm vec4_subtract v.xy, v, a;}void __operator *= (inout vec2 v, const float a){ __asm vec4_multiply v.xy, v, a;}void __operator /= (inout vec2 v, const float a){ float invA; __asm float_rcp invA, a; __asm vec4_multiply v.xy, v.xy, invA;}//// vec3/float assignment operatorsvoid __operator += (inout vec3 v, const float a){ __asm vec4_add v.xyz, v, a;}void __operator -= (inout vec3 v, const float a){ __asm vec4_subtract v.xyz, v, a;}void __operator *= (inout vec3 v, const float a){ __asm vec4_multiply v.xyz, v, a;}void __operator /= (inout vec3 v, const float a){ float invA; __asm float_rcp invA, a; __asm vec4_multiply v.xyz, v.xyz, invA;}//// vec4/float assignment operatorsvoid __operator += (inout vec4 v, const float a){ __asm vec4_add v, v, a;}void __operator -= (inout vec4 v, const float a){ __asm vec4_subtract v, v, a;}void __operator *= (inout vec4 v, const float a){ __asm vec4_multiply v, v, a;}void __operator /= (inout vec4 v, const float a){ float invA; __asm float_rcp invA, a; __asm vec4_multiply v, v, invA;}//// Basic mat2 operationsmat2 __operator + (const mat2 m, const mat2 n){ __retVal[0] = m[0] + n[0]; __retVal[1] = m[1] + n[1];}mat2 __operator - (const mat2 m, const mat2 n){ __retVal[0] = m[0] - n[0]; __retVal[1] = m[1] - n[1];}mat2 __operator * (const mat2 m, const mat2 n){ __retVal[0] = m[0] * n[0].xx + m[1] * n[0].yy; __retVal[1] = m[0] * n[1].xx + m[1] * n[1].yy;}mat2 __operator / (const mat2 m, const mat2 n){ __retVal[0] = m[0] / n[0]; __retVal[1] = m[1] / n[1];}//// Basic mat3 operationsmat3 __operator + (const mat3 m, const mat3 n){ __retVal[0] = m[0] + n[0]; __retVal[1] = m[1] + n[1]; __retVal[2] = m[2] + n[2];}mat3 __operator - (const mat3 m, const mat3 n){ __retVal[0] = m[0] - n[0]; __retVal[1] = m[1] - n[1]; __retVal[2] = m[2] - n[2];}mat3 __operator * (const mat3 m, const mat3 n){ __retVal[0] = m[0] * n[0].xxx + m[1] * n[0].yyy + m[2] * n[0].zzz; __retVal[1] = m[0] * n[1].xxx + m[1] * n[1].yyy + m[2] * n[1].zzz; __retVal[2] = m[0] * n[2].xxx + m[1] * n[2].yyy + m[2] * n[2].zzz;}mat3 __operator / (const mat3 m, const mat3 n){ __retVal[0] = m[0] / n[0]; __retVal[1] = m[1] / n[1]; __retVal[2] = m[2] / n[2];}//// Basic mat4 operationsmat4 __operator + (const mat4 m, const mat4 n){ __retVal[0] = m[0] + n[0]; __retVal[1] = m[1] + n[1]; __retVal[2] = m[2] + n[2]; __retVal[3] = m[3] + n[3];}mat4 __operator - (const mat4 m, const mat4 n){ __retVal[0] = m[0] - n[0]; __retVal[1] = m[1] - n[1]; __retVal[2] = m[2] - n[2]; __retVal[3] = m[3] - n[3];}mat4 __operator * (const mat4 m, const mat4 n){ __retVal[0] = m[0] * n[0].xxxx + m[1] * n[0].yyyy + m[2] * n[0].zzzz + m[3] * n[0].wwww; __retVal[1] = m[0] * n[1].xxxx + m[1] * n[1].yyyy + m[2] * n[1].zzzz + m[3] * n[1].wwww; __retVal[2] = m[0] * n[2].xxxx + m[1] * n[2].yyyy + m[2] * n[2].zzzz + m[3] * n[2].wwww; __retVal[3] = m[0] * n[3].xxxx + m[1] * n[3].yyyy + m[2] * n[3].zzzz + m[3] * n[3].wwww;}mat4 __operator / (const mat4 m, const mat4 n){ __retVal[0] = m[0] / n[0]; __retVal[1] = m[1] / n[1]; __retVal[2] = m[2] / n[2]; __retVal[3] = m[3] / n[3];}//// mat2/float operationsmat2 __operator + (const float a, const mat2 n){ __retVal[0] = a + n[0]; __retVal[1] = a + n[1];}mat2 __operator + (const mat2 m, const float b){ __retVal[0] = m[0] + b; __retVal[1] = m[1] + b;}mat2 __operator - (const float a, const mat2 n){ __retVal[0] = a - n[0]; __retVal[1] = a - n[1];}mat2 __operator - (const mat2 m, const float b){ __retVal[0] = m[0] - b; __retVal[1] = m[1] - b;}mat2 __operator * (const float a, const mat2 n){ __retVal[0] = a * n[0]; __retVal[1] = a * n[1];}mat2 __operator * (const mat2 m, const float b){ __retVal[0] = m[0] * b; __retVal[1] = m[1] * b;}mat2 __operator / (const float a, const mat2 n){ __retVal[0] = a / n[0]; __retVal[1] = a / n[1];}mat2 __operator / (const mat2 m, const float b){ __retVal[0] = m[0] / b; __retVal[1] = m[1] / b;}//// mat3/float operationsmat3 __operator + (const float a, const mat3 n){ __retVal[0] = a + n[0]; __retVal[1] = a + n[1]; __retVal[2] = a + n[2];}mat3 __operator + (const mat3 m, const float b){ __retVal[0] = m[0] + b; __retVal[1] = m[1] + b; __retVal[2] = m[2] + b;}mat3 __operator - (const float a, const mat3 n){ __retVal[0] = a - n[0]; __retVal[1] = a - n[1]; __retVal[2] = a - n[2];}mat3 __operator - (const mat3 m, const float b){ __retVal[0] = m[0] - b; __retVal[1] = m[1] - b; __retVal[2] = m[2] - b;}mat3 __operator * (const float a, const mat3 n){ __retVal[0] = a * n[0]; __retVal[1] = a * n[1]; __retVal[2] = a * n[2];}mat3 __operator * (const mat3 m, const float b){ __retVal[0] = m[0] * b; __retVal[1] = m[1] * b; __retVal[2] = m[2] * b;}mat3 __operator / (const float a, const mat3 n){ __retVal[0] = a / n[0]; __retVal[1] = a / n[1]; __retVal[2] = a / n[2];}mat3 __operator / (const mat3 m, const float b){ __retVal[0] = m[0] / b; __retVal[1] = m[1] / b; __retVal[2] = m[2] / b;}//// mat4/float operationsmat4 __operator + (const float a, const mat4 n){ __retVal[0] = a + n[0]; __retVal[1] = a + n[1]; __retVal[2] = a + n[2]; __retVal[3] = a + n[3];}mat4 __operator + (const mat4 m, const float b){ __retVal[0] = m[0] + b; __retVal[1] = m[1] + b; __retVal[2] = m[2] + b; __retVal[3] = m[3] + b;}mat4 __operator - (const float a, const mat4 n){ __retVal[0] = a - n[0]; __retVal[1] = a - n[1]; __retVal[2] = a - n[2]; __retVal[3] = a - n[3];}mat4 __operator - (const mat4 m, const float b){ __retVal[0] = m[0] - b; __retVal[1] = m[1] - b; __retVal[2] = m[2] - b; __retVal[3] = m[3] - b;}mat4 __operator * (const float a, const mat4 n){ __retVal[0] = a * n[0]; __retVal[1] = a * n[1]; __retVal[2] = a * n[2]; __retVal[3] = a * n[3];}mat4 __operator * (const mat4 m, const float b){ __retVal[0] = m[0] * b; __retVal[1] = m[1] * b; __retVal[2] = m[2] * b; __retVal[3] = m[3] * b;}mat4 __operator / (const float a, const mat4 n){ __retVal[0] = a / n[0]; __retVal[1] = a / n[1]; __retVal[2] = a / n[2]; __retVal[3] = a / n[3];}mat4 __operator / (const mat4 m, const float b){ __retVal[0] = m[0] / b; __retVal[1] = m[1] / b; __retVal[2] = m[2] / b; __retVal[3] = m[3] / b;}//// matrix / vector productsvec2 __operator * (const mat2 m, const vec2 v){ __retVal = m[0] * v.xx + m[1] * v.yy;}vec2 __operator * (const vec2 v, const mat2 m){ __retVal.x = dot(v, m[0]); __retVal.y = dot(v, m[1]);}vec3 __operator * (const mat3 m, const vec3 v){ __retVal = m[0] * v.xxx + m[1] * v.yyy + m[2] * v.zzz;}vec3 __operator * (const vec3 v, const mat3 m){ __retVal.x = dot(v, m[0]); __retVal.y = dot(v, m[1]); __retVal.z = dot(v, m[2]);}vec4 __operator * (const mat4 m, const vec4 v){ __retVal = m[0] * v.xxxx + m[1] * v.yyyy + m[2] * v.zzzz + m[3] * v.wwww;}vec4 __operator * (const vec4 v, const mat4 m){ __retVal.x = dot(v, m[0]); __retVal.y = dot(v, m[1]); __retVal.z = dot(v, m[2]); __retVal.w = dot(v, m[3]);}//// mat2 assignment operatorsvoid __operator += (inout mat2 m, const mat2 n){ m[0] += n[0]; m[1] += n[1];}void __operator -= (inout mat2 m, const mat2 n){ m[0] -= n[0]; m[1] -= n[1];}void __operator *= (inout mat2 m, const mat2 n){ m = m * n;}void __operator /= (inout mat2 m, const mat2 n){ m[0] /= n[0]; m[1] /= n[1];}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -