Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. export default `
  2. attribute vec4 aPosition;
  3. attribute vec4 aColor;
  4. #ifdef TexCoord
  5. attribute vec4 aTexCoord0;
  6. uniform float uTexture0Width;
  7. varying vec4 vTexCoord;
  8. varying vec4 vTexMatrix;
  9. varying vec4 vTexCoordTransform;
  10. #endif
  11. #ifdef VertexColor
  12. varying vec4 vColor;
  13. #endif
  14. const float SHIFT_LEFT8 = 256.0;
  15. const float SHIFT_RIGHT8 = 1.0 / 256.0;
  16. const float SHIFT_RIGHT4 = 1.0 / 16.0;
  17. const float SHIFT_LEFT4 = 16.0;
  18. void getTextureMatrixFromZValue(in float nZ, inout float XTran, inout float YTran, inout float scale)
  19. {
  20. if(nZ <= 0.0)
  21. {
  22. return;
  23. }
  24. float nDel8 = floor(nZ * SHIFT_RIGHT8);
  25. float nDel16 = floor(nDel8 * SHIFT_RIGHT8);
  26. float nDel20 = floor(nDel16 * SHIFT_RIGHT4);
  27. YTran = nZ - nDel8 * SHIFT_LEFT8;
  28. XTran = nDel8 - nDel16 * SHIFT_LEFT8;
  29. float nLevel = nDel16 - nDel20 * SHIFT_LEFT4;
  30. scale = 1.0 / pow(2.0, nLevel);
  31. }
  32. void main()
  33. {
  34. #ifdef TexCoord
  35. vTexCoord.xy = aTexCoord0.xy;
  36. vTexMatrix = vec4(0.0,0.0,1.0,0.0);
  37. vTexCoordTransform.x = aTexCoord0.z;
  38. if(vTexCoordTransform.x < -90000.0)
  39. {
  40. vTexMatrix.z = -1.0;
  41. }
  42. getTextureMatrixFromZValue(floor(vTexCoordTransform.x), vTexMatrix.x, vTexMatrix.y, vTexMatrix.z);
  43. vTexMatrix.w = log2(uTexture0Width * vTexMatrix.z);
  44. #endif
  45. vec4 vertexPos = aPosition;
  46. #ifdef VertexColor
  47. vColor = aColor;
  48. #endif
  49. gl_Position = czm_modelViewProjection * vec4(vertexPos.xyz, 1.0);
  50. }
  51. `;