blit.vert 863 B

123456789101112131415161718192021222324252627282930313233343536
  1. #version 310 es
  2. // SPDX-License-Identifier: Unlicense OR MIT
  3. #extension GL_GOOGLE_include_directive : enable
  4. precision highp float;
  5. #include "common.h"
  6. layout(push_constant) uniform Block {
  7. vec4 transform;
  8. vec4 uvTransformR1;
  9. vec4 uvTransformR2;
  10. float opacity;
  11. // fbo is set if blitting to a FBO, otherwise the window.
  12. float fbo;
  13. } _block;
  14. layout(location = 0) in vec2 pos;
  15. layout(location = 1) in vec2 uv;
  16. layout(location = 0) out vec2 vUV;
  17. layout(location = 1) out float opacity;
  18. void main() {
  19. vec2 p = pos*_block.transform.xy + _block.transform.zw;
  20. if (_block.fbo != 0.0) {
  21. gl_Position = vec4(transform3x2(fboTransform, vec3(p, 0)), 1);
  22. } else {
  23. gl_Position = vec4(transform3x2(windowTransform, vec3(p, 0)), 1);
  24. }
  25. vUV = transform3x2(m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz), vec3(uv,1)).xy;
  26. opacity = _block.opacity;
  27. }