direct-volume.vert 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. * @author Michael Krone <michael.krone@uni-tuebingen.de>
  6. */
  7. precision highp float;
  8. attribute vec3 aPosition;
  9. attribute mat4 aTransform;
  10. attribute float aInstance;
  11. varying vec3 unitCoord;
  12. varying vec3 origPos;
  13. varying float instance;
  14. uniform vec3 uBboxSize;
  15. uniform vec3 uBboxMin;
  16. uniform vec3 uBboxMax;
  17. uniform vec3 uGridDim;
  18. uniform mat4 uTransform;
  19. uniform mat4 uModelView;
  20. uniform mat4 uProjection;
  21. void main() {
  22. unitCoord = aPosition + vec3(0.5);
  23. vec4 mvPosition = uModelView * uTransform * vec4(unitCoord * uGridDim, 1.0);
  24. origPos = unitCoord * uBboxSize + uBboxMin;
  25. instance = aInstance;
  26. gl_Position = uProjection * mvPosition;
  27. // clamp z position to clip space
  28. if(gl_Position.z > gl_Position.w) {
  29. gl_Position.z = gl_Position.w - 0.0001;
  30. } else if(gl_Position.z < -gl_Position.w) {
  31. gl_Position.z = -gl_Position.w + 0.0001;
  32. }
  33. }