spv.intOps.vert 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #version 310 es
  2. in uint u1;
  3. in uvec2 u2;
  4. in uvec3 u3;
  5. in uvec4 u4;
  6. in float v1;
  7. in vec2 v2;
  8. in vec3 v3;
  9. in vec4 v4;
  10. in int i1;
  11. in ivec2 i2;
  12. in ivec3 i3;
  13. in ivec4 i4;
  14. out uvec4 uout;
  15. out ivec4 iout;
  16. out vec4 fout;
  17. void main()
  18. {
  19. iout = ivec4(0);
  20. uout = uvec4(0);
  21. fout = vec4(0.0);
  22. uvec2 u2out;
  23. uout.xy += uaddCarry(u2, u2, u2out);
  24. uout.xy += u2out;
  25. uint u1out;
  26. uout.x += usubBorrow(u1, u1, u1out);
  27. uout.x += u1out;
  28. uvec4 u4outHi, u4outLow;
  29. umulExtended(u4, u4, u4outHi, u4outLow);
  30. uout += u4outHi + u4outLow;
  31. ivec4 i4outHi, i4outLow;
  32. imulExtended(i4, i4, i4outHi, i4outLow);
  33. iout += i4outLow + i4outHi;
  34. ivec3 i3out;
  35. fout.xyz += frexp(v3, i3out);
  36. iout.xyz += i3out;
  37. int i1out;
  38. fout.x += frexp(v1, i1out);
  39. iout.x += i1out;
  40. fout.xy += ldexp(v2, i2);
  41. fout.x += ldexp(v1, i1);
  42. iout.x += bitfieldExtract(i1, 4, 5);
  43. uout.xyz += bitfieldExtract(u3, 4, 5);
  44. iout.xyz += bitfieldInsert(i3, i3, 4, 5);
  45. uout.x += bitfieldInsert(u1, u1, 4, 5);
  46. iout.xy += bitfieldReverse(i2);
  47. uout += bitfieldReverse(u4);
  48. iout.x += bitCount(i1);
  49. iout.xyz += bitCount(u3);
  50. iout.xy += findLSB(i2);
  51. iout += findLSB(u4);
  52. iout.x += findMSB(i1);
  53. iout.xy += findMSB(u2);
  54. uout.x += packUnorm4x8(v4);
  55. uout.x += packSnorm4x8(v4);
  56. fout += unpackUnorm4x8(u1);
  57. fout += unpackSnorm4x8(u1);
  58. }