⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slang_core.gc

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 GC
📖 第 1 页 / 共 4 页
字号:
   __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 + -