spv.bufferhandle12.frag 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #version 450
  2. #extension GL_EXT_shader_16bit_storage : enable
  3. #extension GL_EXT_shader_8bit_storage : enable
  4. #extension GL_EXT_buffer_reference : enable
  5. layout(std140, binding = 0) buffer AcBlock { highp uint ac_numPassed; };
  6. layout(std430, column_major, buffer_reference) buffer BlockB
  7. {
  8. float16_t a;
  9. highp ivec2 b;
  10. };
  11. layout(std430, buffer_reference) buffer BlockC
  12. {
  13. mediump mat2x3 c;
  14. };
  15. layout(std430, row_major, buffer_reference) buffer BlockD
  16. {
  17. lowp uvec3 d;
  18. };
  19. layout (push_constant, std430) uniform PC {
  20. BlockB blockB;
  21. BlockC blockC;
  22. BlockD blockD;
  23. };
  24. bool compare_float (highp float a, highp float b) { return abs(a - b) < 0.05; }
  25. bool compare_vec3 (highp vec3 a, highp vec3 b) { return compare_float(a.x, b.x)&&compare_float(a.y, b.y)&&compare_float(a.z, b.z); }
  26. bool compare_mat2x3 (highp mat2x3 a, highp mat2x3 b){ return compare_vec3(a[0], b[0])&&compare_vec3(a[1], b[1]); }
  27. bool compare_ivec2 (highp ivec2 a, highp ivec2 b) { return a == b; }
  28. bool compare_uvec3 (highp uvec3 a, highp uvec3 b) { return a == b; }
  29. bool compare_float16_t(highp float a, highp float b) { return abs(a - b) < 0.05; }
  30. void main (void)
  31. {
  32. bool allOk = true;
  33. allOk = allOk && compare_mat2x3(blockC.c, mat2x3(-5.0, 1.0, -7.0, 1.0, 2.0, 8.0));
  34. if (allOk)
  35. ac_numPassed++;
  36. blockD.d = (uvec3(8u, 1u, 5u));
  37. }