PolylineVS.glsl 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. attribute vec3 position3DHigh;
  2. attribute vec3 position3DLow;
  3. attribute vec3 position2DHigh;
  4. attribute vec3 position2DLow;
  5. attribute vec3 prevPosition3DHigh;
  6. attribute vec3 prevPosition3DLow;
  7. attribute vec3 prevPosition2DHigh;
  8. attribute vec3 prevPosition2DLow;
  9. attribute vec3 nextPosition3DHigh;
  10. attribute vec3 nextPosition3DLow;
  11. attribute vec3 nextPosition2DHigh;
  12. attribute vec3 nextPosition2DLow;
  13. attribute vec4 texCoordExpandWidthAndShow;
  14. attribute vec4 pickColor;
  15. varying vec2 v_st;
  16. varying float v_width;
  17. varying vec4 czm_pickColor;
  18. void main()
  19. {
  20. float texCoord = texCoordExpandWidthAndShow.x;
  21. float expandDir = texCoordExpandWidthAndShow.y;
  22. float width = abs(texCoordExpandWidthAndShow.z) + 0.5;
  23. bool usePrev = texCoordExpandWidthAndShow.z < 0.0;
  24. float show = texCoordExpandWidthAndShow.w;
  25. vec4 p, prev, next;
  26. if (czm_morphTime == 1.0)
  27. {
  28. p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz);
  29. prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz);
  30. next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz);
  31. }
  32. else if (czm_morphTime == 0.0)
  33. {
  34. p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy);
  35. prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy);
  36. next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy);
  37. }
  38. else
  39. {
  40. p = czm_columbusViewMorph(
  41. czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),
  42. czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz),
  43. czm_morphTime);
  44. prev = czm_columbusViewMorph(
  45. czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy),
  46. czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz),
  47. czm_morphTime);
  48. next = czm_columbusViewMorph(
  49. czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy),
  50. czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz),
  51. czm_morphTime);
  52. }
  53. vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev);
  54. gl_Position = czm_viewportOrthographic * positionWC * show;
  55. v_st = vec2(texCoord, clamp(expandDir, 0.0, 1.0));
  56. v_width = width;
  57. czm_pickColor = pickColor;
  58. }