text.vert 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. precision highp float;
  7. precision highp int;
  8. #include common
  9. #include read_from_texture
  10. #include common_vert_params
  11. #include color_vert_params
  12. #include size_vert_params
  13. uniform mat4 uModelView;
  14. attribute vec3 aPosition;
  15. attribute vec2 aMapping;
  16. attribute float aDepth;
  17. attribute vec2 aTexCoord;
  18. attribute mat4 aTransform;
  19. attribute float aInstance;
  20. attribute float aGroup;
  21. uniform float uOffsetX;
  22. uniform float uOffsetY;
  23. uniform float uOffsetZ;
  24. // uniform bool ortho;
  25. uniform float uPixelRatio;
  26. uniform float uViewportHeight;
  27. varying vec2 vTexCoord;
  28. #include matrix_scale
  29. void main(void){
  30. #include assign_group
  31. #include assign_color_varying
  32. #include assign_marker_varying
  33. #include assign_size
  34. vTexCoord = aTexCoord;
  35. float scale = matrixScale(uModelView);
  36. float offsetX = uOffsetX * scale;
  37. float offsetY = uOffsetY * scale;
  38. float offsetZ = (uOffsetZ + aDepth * 0.95) * scale;
  39. vec4 mvPosition = uModelView * aTransform * vec4(aPosition, 1.0);
  40. // TODO
  41. // #ifdef FIXED_SIZE
  42. // if (ortho) {
  43. // scale /= pixelRatio * ((uViewportHeight / 2.0) / -uCameraPosition.z) * 0.1;
  44. // } else {
  45. // scale /= pixelRatio * ((uViewportHeight / 2.0) / -mvPosition.z) * 0.1;
  46. // }
  47. // #endif
  48. vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
  49. if (vTexCoord.x == 10.0) { // indicates background plane
  50. // move a bit to the back, tkaing ditsnace to camera into account to avoid z-fighting
  51. offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCorner).xyz);
  52. }
  53. mvCorner.xy += aMapping * size * scale;
  54. mvCorner.x += offsetX;
  55. mvCorner.y += offsetY;
  56. // TODO
  57. // if(ortho){
  58. // mvCorner.xyz += normalize(-uCameraPosition) * offsetZ;
  59. // } else {
  60. // mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ;
  61. // }
  62. mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ;
  63. gl_Position = uProjection * mvCorner;
  64. vViewPosition = -mvCorner.xyz;
  65. }