cesium 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,229 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/ComponentDatatype',
5
+ '../Renderer/BufferUsage',
6
+ '../Core/IndexDatatype'
7
+ ], function(
8
+ DeveloperError,
9
+ ComponentDatatype,
10
+ BufferUsage,
11
+ IndexDatatype) {
12
+ "use strict";
13
+
14
+ /**
15
+ * Provides terrain or other geometry for the surface of an ellipsoid. The surface geometry is
16
+ * organized into a pyramid of tiles according to a {@link TilingScheme}. This type describes an
17
+ * interface and is not intended to be instantiated directly.
18
+ *
19
+ * @alias TerrainProvider
20
+ * @constructor
21
+ * @private
22
+ *
23
+ * @see EllipsoidTerrainProvider
24
+ */
25
+ function TerrainProvider() {
26
+ /**
27
+ * The tiling scheme used to tile the surface.
28
+ *
29
+ * @type TilingScheme
30
+ */
31
+ this.tilingScheme = undefined;
32
+
33
+ this.levelZeroMaximumGeometricError = undefined;
34
+
35
+ throw new DeveloperError('This type should not be instantiated directly.');
36
+ }
37
+
38
+ /**
39
+ * Specifies the indices of the attributes of the terrain geometry.
40
+ *
41
+ * @memberof TerrainProvider
42
+ */
43
+ TerrainProvider.attributeIndices = {
44
+ position3D : 0,
45
+ textureCoordinates : 1
46
+ };
47
+
48
+ TerrainProvider.wireframe = false;
49
+
50
+ var regularGridIndexArrays = [];
51
+
52
+ TerrainProvider.getRegularGridIndices = function(width, height) {
53
+ var byWidth = regularGridIndexArrays[width];
54
+ if (typeof byWidth === 'undefined') {
55
+ regularGridIndexArrays[width] = byWidth = [];
56
+ }
57
+
58
+ var indices = byWidth[height];
59
+ if (typeof indices === 'undefined') {
60
+ indices = byWidth[height] = new Uint16Array((width - 1) * (height - 1) * 6);
61
+
62
+ var index = 0;
63
+ var indicesIndex = 0;
64
+ for ( var i = 0; i < height - 1; ++i) {
65
+ for ( var j = 0; j < width - 1; ++j) {
66
+ var upperLeft = index;
67
+ var lowerLeft = upperLeft + width;
68
+ var lowerRight = lowerLeft + 1;
69
+ var upperRight = upperLeft + 1;
70
+
71
+ indices[indicesIndex++] = upperLeft;
72
+ indices[indicesIndex++] = lowerLeft;
73
+ indices[indicesIndex++] = upperRight;
74
+ indices[indicesIndex++] = upperRight;
75
+ indices[indicesIndex++] = lowerLeft;
76
+ indices[indicesIndex++] = lowerRight;
77
+
78
+ ++index;
79
+ }
80
+ ++index;
81
+ }
82
+ }
83
+
84
+ return indices;
85
+ };
86
+
87
+ function addTriangle(lines, linesIndex, i0, i1, i2) {
88
+ lines[linesIndex++] = i0;
89
+ lines[linesIndex++] = i1;
90
+
91
+ lines[linesIndex++] = i1;
92
+ lines[linesIndex++] = i2;
93
+
94
+ lines[linesIndex++] = i2;
95
+ lines[linesIndex++] = i0;
96
+
97
+ return linesIndex;
98
+ }
99
+
100
+ function trianglesToLines(triangles) {
101
+ var count = triangles.length;
102
+ var lines = new Uint16Array(2 * count);
103
+ var linesIndex = 0;
104
+ for ( var i = 0; i < count; i += 3) {
105
+ linesIndex = addTriangle(lines, linesIndex, triangles[i], triangles[i + 1], triangles[i + 2]);
106
+ }
107
+
108
+ return lines;
109
+ }
110
+
111
+ TerrainProvider.createTileEllipsoidGeometryFromBuffers = function(context, tile, buffers) {
112
+ var datatype = ComponentDatatype.FLOAT;
113
+ var typedArray = buffers.vertices;
114
+ var buffer = context.createVertexBuffer(typedArray, BufferUsage.STATIC_DRAW);
115
+ var stride = 5 * datatype.sizeInBytes;
116
+ var attributes = [{
117
+ index : TerrainProvider.attributeIndices.position3D,
118
+ vertexBuffer : buffer,
119
+ componentDatatype : datatype,
120
+ componentsPerAttribute : 3,
121
+ offsetInBytes : 0,
122
+ strideInBytes : stride
123
+ }, {
124
+ index : TerrainProvider.attributeIndices.textureCoordinates,
125
+ vertexBuffer : buffer,
126
+ componentDatatype : datatype,
127
+ componentsPerAttribute : 2,
128
+ offsetInBytes : 3 * datatype.sizeInBytes,
129
+ strideInBytes : stride
130
+ }];
131
+
132
+ var indexBuffers = buffers.indices.indexBuffers || {};
133
+ var indexBuffer = indexBuffers[context.getId()];
134
+ if (typeof indexBuffer === 'undefined' || indexBuffer.isDestroyed()) {
135
+ var indices = buffers.indices;
136
+ if (TerrainProvider.wireframe) {
137
+ indices = trianglesToLines(buffers.indices);
138
+ }
139
+ indexBuffer = context.createIndexBuffer(indices, BufferUsage.STATIC_DRAW, IndexDatatype.UNSIGNED_SHORT);
140
+ indexBuffer.setVertexArrayDestroyable(false);
141
+ indexBuffer.referenceCount = 1;
142
+ indexBuffers[context.getId()] = indexBuffer;
143
+ buffers.indices.indexBuffers = indexBuffers;
144
+ } else {
145
+ ++indexBuffer.referenceCount;
146
+ }
147
+
148
+ tile.vertexArray = context.createVertexArray(attributes, indexBuffer);
149
+ };
150
+
151
+ /**
152
+ * Specifies the quality of terrain created from heightmaps. A value of 1.0 will
153
+ * ensure that adjacent heightmap vertices are separated by no more than
154
+ * {@link CentralBodySurface._maxScreenSpaceError} screen pixels and will probably go very slowly.
155
+ * A value of 0.5 will cut the estimated level zero geometric error in half, allowing twice the
156
+ * screen pixels between adjacent heightmap vertices and thus rendering more quickly.
157
+ */
158
+ TerrainProvider.heightmapTerrainQuality = 0.25;
159
+
160
+ /**
161
+ * Determines an appropriate geometric error estimate when the geometry comes from a heightmap.
162
+ *
163
+ * @param ellipsoid The ellipsoid to which the terrain is attached.
164
+ * @param tileImageWidth The width, in pixels, of the heightmap associated with a single tile.
165
+ * @param numberOfTilesAtLevelZero The number of tiles in the horizontal direction at tile level zero.
166
+ * @returns {Number} An estimated geometric error.
167
+ */
168
+ TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap = function(ellipsoid, tileImageWidth, numberOfTilesAtLevelZero) {
169
+ return ellipsoid.getMaximumRadius() * 2 * Math.PI * TerrainProvider.heightmapTerrainQuality / (tileImageWidth * numberOfTilesAtLevelZero);
170
+ };
171
+
172
+ /**
173
+ * Gets the maximum geometric error allowed in a tile at a given level.
174
+ *
175
+ * @param {Number} level The tile level for which to get the maximum geometric error.
176
+ * @returns {Number} The maximum geometric error.
177
+ */
178
+ TerrainProvider.prototype.getLevelMaximumGeometricError = function(level) {
179
+ return this.levelZeroMaximumGeometricError / (1 << level);
180
+ };
181
+
182
+ // Is there a limit on 'level' of the tile that can be passed in? It seems
183
+ // natural to have a maxLevel, but this would cause problems if we have hi-res imagery
184
+ // and low-res terrain. So I'd say we can continue to refine terrain tiles arbitrarily
185
+ // until both the terrain and all the imagery layers have no more detail to give. In that
186
+ // case, this method is expected to be able to produce geometry for an arbitrarily-deep
187
+ // tile tree.
188
+
189
+ /**
190
+ * Request the tile geometry from the remote server. Once complete, the
191
+ * tile state should be set to RECEIVED. Alternatively, tile state can be set to
192
+ * UNLOADED to indicate that the request should be attempted again next update, if the tile
193
+ * is still needed.
194
+ *
195
+ * @param {Tile} The tile to request geometry for.
196
+ */
197
+ TerrainProvider.prototype.requestTileGeometry = function(tile) {
198
+ throw new DeveloperError('This type should not be instantiated directly.');
199
+ };
200
+
201
+ /**
202
+ * Transform the tile geometry from the format requested from the remote server
203
+ * into a format suitable for resource creation. Once complete, the tile
204
+ * state should be set to TRANSFORMED. Alternatively, tile state can be set to
205
+ * RECEIVED to indicate that the transformation should be attempted again next update, if the tile
206
+ * is still needed.
207
+ *
208
+ * @param {Context} context The context to use to create resources.
209
+ * @param {Tile} tile The tile to transform geometry for.
210
+ */
211
+ TerrainProvider.prototype.transformGeometry = function(context, tile) {
212
+ throw new DeveloperError('This type should not be instantiated directly.');
213
+ };
214
+
215
+ /**
216
+ * Create WebGL resources for the tile using whatever data the transformGeometry step produced.
217
+ * Once complete, the tile state should be set to READY. Alternatively, tile state can be set to
218
+ * TRANSFORMED to indicate that resource creation should be attempted again next update, if the tile
219
+ * is still needed.
220
+ *
221
+ * @param {Context} context The context to use to create resources.
222
+ * @param {Tile} tile The tile to create resources for.
223
+ */
224
+ TerrainProvider.prototype.createResources = function(context, tile) {
225
+ throw new DeveloperError('This type should not be instantiated directly.');
226
+ };
227
+
228
+ return TerrainProvider;
229
+ });
@@ -0,0 +1,154 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/destroyObject',
4
+ '../Core/DeveloperError',
5
+ '../Renderer/PixelDatatype',
6
+ '../Renderer/PixelFormat',
7
+ '../Renderer/Texture'
8
+ ], function(
9
+ destroyObject,
10
+ DeveloperError,
11
+ PixelDatatype,
12
+ PixelFormat,
13
+ Texture) {
14
+ "use strict";
15
+
16
+ var PooledTexture;
17
+ function createPooledTexture(texture, textureTypeKey, pool) {
18
+ if (typeof PooledTexture === 'undefined') {
19
+ // define the class only when needed, so we can use modern
20
+ // language features without breaking legacy browsers at setup time.
21
+ PooledTexture = function(texture, textureTypeKey, pool) {
22
+ this._texture = texture;
23
+ this._textureTypeKey = textureTypeKey;
24
+ this._pool = pool;
25
+ };
26
+
27
+ // pass through all methods to the underlying texture
28
+ Object.keys(Texture.prototype).forEach(function(methodName) {
29
+ PooledTexture.prototype[methodName] = function() {
30
+ var texture = this._texture;
31
+ return texture[methodName].apply(texture, arguments);
32
+ };
33
+ });
34
+
35
+ // except for destroy, which releases back into the pool
36
+ PooledTexture.prototype.destroy = function() {
37
+ var freeList = this._pool._free[this._textureTypeKey];
38
+ if (typeof freeList === 'undefined') {
39
+ freeList = this._pool._free[this._textureTypeKey] = [];
40
+ }
41
+
42
+ if (freeList.length >= 8) {
43
+ this._texture.destroy();
44
+ } else {
45
+ freeList.push(this);
46
+ }
47
+ };
48
+ }
49
+
50
+ return new PooledTexture(texture, textureTypeKey, pool);
51
+ }
52
+
53
+ /**
54
+ * A pool of textures. Textures created from the pool will be released back into the pool
55
+ * when destroy() is called, so future calls to create may re-use a released texture.
56
+ * <br/><br/>
57
+ * Texture pools are useful when textures are being created and destroyed repeatedly.
58
+ *
59
+ * @alias Texture2DPool
60
+ * @constructor
61
+ *
62
+ * @see Texture
63
+ */
64
+ var TexturePool = function() {
65
+ this._free = {};
66
+ };
67
+
68
+ /**
69
+ * Create a texture. This function takes the same arguments as {@link Context#createTexture2D},
70
+ * but may return a pooled texture if there are any available. If a pooled texture is re-used,
71
+ * and no source is provided, the new texture will still retain its old contents.
72
+ *
73
+ * @memberof TexturePool
74
+ *
75
+ * @param {Context} context The context to use to create textures when needed.
76
+ *
77
+ * @exception {DeveloperError} description is required.
78
+ *
79
+ * @see Context#createTexture2D
80
+ */
81
+ TexturePool.prototype.createTexture2D = function(context, description) {
82
+ if (!description) {
83
+ throw new DeveloperError('description is required.');
84
+ }
85
+
86
+ var source = description.source;
87
+ var width = typeof source !== 'undefined' ? source.width : description.width;
88
+ var height = typeof source !== 'undefined' ? source.height : description.height;
89
+ //coerce values to primitive numbers to make textureTypeKey smaller.
90
+ var pixelFormat = +(description.pixelFormat || PixelFormat.RGBA);
91
+ var pixelDatatype = +(description.pixelDatatype || PixelDatatype.UNSIGNED_BYTE);
92
+ var preMultiplyAlpha = +(description.preMultiplyAlpha || pixelFormat === PixelFormat.RGB || pixelFormat === PixelFormat.LUMINANCE);
93
+
94
+ var textureTypeKey = JSON.stringify([width, height, pixelFormat, pixelDatatype, preMultiplyAlpha]);
95
+
96
+ var freeList = this._free[textureTypeKey];
97
+ if (typeof freeList !== 'undefined' && freeList.length > 0) {
98
+ var texture = freeList.pop();
99
+ if (typeof source !== 'undefined') {
100
+ texture.copyFrom(source);
101
+ }
102
+ return texture;
103
+ }
104
+
105
+ return createPooledTexture(context.createTexture2D(description), textureTypeKey, this);
106
+ };
107
+
108
+ /**
109
+ * Returns true if this object was destroyed; otherwise, false.
110
+ * <br /><br />
111
+ * If this object was destroyed, it should not be used; calling any function other than
112
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
113
+ *
114
+ * @memberof TexturePool
115
+ *
116
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
117
+ *
118
+ * @see TexturePool#destroy
119
+ */
120
+ TexturePool.prototype.isDestroyed = function() {
121
+ return false;
122
+ };
123
+
124
+ /**
125
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
126
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
127
+ * <br /><br />
128
+ * Once an object is destroyed, it should not be used; calling any function other than
129
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
130
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
131
+ *
132
+ * @memberof TexturePool
133
+ *
134
+ * @return {undefined}
135
+ *
136
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
137
+ *
138
+ * @see TexturePool#isDestroyed
139
+ *
140
+ * @example
141
+ * pool = pool && pool.destroy();
142
+ */
143
+ TexturePool.prototype.destroy = function() {
144
+ var free = this._free;
145
+ Object.keys(free).forEach(function(textureTypeKey) {
146
+ free[textureTypeKey].forEach(function(texture) {
147
+ texture._texture.destroy();
148
+ });
149
+ });
150
+ return destroyObject(this);
151
+ };
152
+
153
+ return TexturePool;
154
+ });
@@ -0,0 +1,322 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ './TileState'
5
+ ], function(
6
+ DeveloperError,
7
+ TileState) {
8
+ "use strict";
9
+
10
+ /**
11
+ * A node in the quadtree representing the surface of a {@link CentralBody}.
12
+ * A tile holds the surface geometry for its horizontal extent and zero or
13
+ * more imagery textures overlaid on the geometry.
14
+ *
15
+ * @alias Tile
16
+ * @constructor
17
+ * @private
18
+ *
19
+ * @param {TilingScheme} description.tilingScheme The tiling scheme of which the new tile is a part, such as a
20
+ * {@link WebMercatorTilingScheme} or a {@link GeographicTilingScheme}.
21
+ * @param {Number} description.x The tile x coordinate.
22
+ * @param {Number} description.y The tile y coordinate.
23
+ * @param {Number} description.level The tile level-of-detail.
24
+ * @param {Tile} description.parent The parent of this tile in a tile tree system.
25
+ *
26
+ * @exception {DeveloperError} Either description.extent or both description.x and description.y is required.
27
+ * @exception {DeveloperError} description.level is required.
28
+ */
29
+ var Tile = function(description) {
30
+ if (typeof description === 'undefined') {
31
+ throw new DeveloperError('description is required.');
32
+ }
33
+
34
+ if (typeof description.x === 'undefined' || typeof description.y === 'undefined') {
35
+ if (typeof description.extent === 'undefined') {
36
+ throw new DeveloperError('Either description.extent is required or description.x and description.y are required.');
37
+ }
38
+ } else if (description.x < 0 || description.y < 0) {
39
+ throw new DeveloperError('description.x and description.y must be greater than or equal to zero.');
40
+ }
41
+
42
+ if (typeof description.level === 'undefined' || description.zoom < 0) {
43
+ throw new DeveloperError('description.level is required and must be greater than or equal to zero.');
44
+ }
45
+
46
+ if (typeof description.tilingScheme === 'undefined') {
47
+ throw new DeveloperError('description.tilingScheme is required.');
48
+ }
49
+
50
+ /**
51
+ * The tiling scheme used to tile the surface.
52
+ * @type TilingScheme
53
+ */
54
+ this.tilingScheme = description.tilingScheme;
55
+
56
+ /**
57
+ * The x coordinate.
58
+ * @type Number
59
+ */
60
+ this.x = description.x;
61
+
62
+ /**
63
+ * The y coordinate.
64
+ * @type Number
65
+ */
66
+ this.y = description.y;
67
+
68
+ /**
69
+ * The level-of-detail, where zero is the coarsest, least-detailed.
70
+ * @type Number
71
+ */
72
+ this.level = description.level;
73
+
74
+ /**
75
+ * The parent of this tile in a tiling scheme.
76
+ * @type Tile
77
+ */
78
+ this.parent = description.parent;
79
+
80
+ /**
81
+ * The children of this tile in a tiling scheme.
82
+ * @type Array
83
+ */
84
+ this.children = undefined;
85
+
86
+ /**
87
+ * The cartographic extent of the tile, with north, south, east and
88
+ * west properties in radians.
89
+ * @type Extent
90
+ */
91
+ this.extent = this.tilingScheme.tileXYToExtent(this.x, this.y, this.level);
92
+
93
+ /**
94
+ * The {@link VertexArray} defining the geometry of this tile. This property
95
+ * is expected to be set before the tile enter's the {@link TileState.READY}
96
+ * {@link state}.
97
+ * @type VertexArray
98
+ */
99
+ this.vertexArray = undefined;
100
+
101
+ /**
102
+ * The center of this tile. The {@link vertexArray} is rendered
103
+ * relative-to-center (RTC) using this center. Note that the center of the
104
+ * {@link boundingSphere3D} is not necessarily the same as this center.
105
+ * This property is expected to be set before the tile enter's the
106
+ * {@link TileState.READY} {@link state}.
107
+ * @type Cartesian3
108
+ */
109
+ this.center = undefined;
110
+
111
+ /**
112
+ * The maximum height of terrain in this tile, in meters above the ellipsoid.
113
+ * @type Number
114
+ */
115
+ this.maxHeight = undefined;
116
+
117
+ /**
118
+ * A sphere that completely contains this tile on the globe. This property may be
119
+ * undefined until the tile's {@link vertexArray} is loaded.
120
+ * @type BoundingSphere
121
+ */
122
+ this.boundingSphere3D = undefined;
123
+
124
+ /**
125
+ * The current state of the tile in the tile load pipeline.
126
+ * @type TileState
127
+ */
128
+ this.state = TileState.UNLOADED;
129
+
130
+ /**
131
+ * The previous tile in the {@link TileLoadQueue}.
132
+ * @type Tile
133
+ */
134
+ this.loadPrevious = undefined;
135
+
136
+ /**
137
+ * The next tile in the {@link TileLoadQueue}.
138
+ * @type Tile
139
+ */
140
+ this.loadNext = undefined;
141
+
142
+ /**
143
+ * The previous tile in the {@link TileReplacementQueue}.
144
+ * @type Tile
145
+ */
146
+ this.replacementPrevious = undefined;
147
+
148
+ /**
149
+ * The next tile in the {@link TileReplacementQueue}.
150
+ * @type Tile
151
+ */
152
+ this.replacementNext = undefined;
153
+
154
+ /**
155
+ * The {@link TileImagery} attached to this tile.
156
+ * @type Array
157
+ */
158
+ this.imagery = [];
159
+
160
+ /**
161
+ * Transient data stored during the load process. The exact content
162
+ * of this property is a function of the tile's current {@link state} and
163
+ * the {@link TerrainProvider} that is loading the tile.
164
+ * @type Object
165
+ */
166
+ this.transientData = undefined;
167
+
168
+ /**
169
+ * The distance from the camera to this tile, updated when the tile is selected
170
+ * for rendering. We can get rid of this if we have a better way to sort by
171
+ * distance - for example, by using the natural ordering of a quadtree.
172
+ * @type Number
173
+ */
174
+ this.distance = 0.0;
175
+
176
+ /**
177
+ * The world coordinates of the southwest corner of the tile's extent.
178
+ *
179
+ * @type Cartesian3
180
+ */
181
+ this.southwestCornerCartesian = undefined;
182
+
183
+ /**
184
+ * The world coordinates of the northeast corner of the tile's extent.
185
+ *
186
+ * @type Cartesian3
187
+ */
188
+ this.northeastCornerCartesian = undefined;
189
+
190
+ /**
191
+ * A normal that, along with southwestCornerCartesian, defines a plane at the western edge of
192
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
193
+ *
194
+ * @type Cartesian3
195
+ */
196
+ this.westNormal = undefined;
197
+
198
+ /**
199
+ * A normal that, along with southwestCornerCartesian, defines a plane at the southern edge of
200
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
201
+ * Because points of constant latitude do not necessary lie in a plane, positions below this
202
+ * plane are not necessarily inside the tile, but they are close.
203
+ *
204
+ * @type Cartesian3
205
+ */
206
+ this.southNormal = undefined;
207
+
208
+ /**
209
+ * A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
210
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
211
+ *
212
+ * @type Cartesian3
213
+ */
214
+ this.eastNormal = undefined;
215
+
216
+ /**
217
+ * A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
218
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
219
+ * Because points of constant latitude do not necessary lie in a plane, positions below this
220
+ * plane are not necessarily inside the tile, but they are close.
221
+ *
222
+ * @type Cartesian3
223
+ */
224
+ this.northNormal = undefined;
225
+
226
+ /**
227
+ * A proxy point to use for this tile for horizon culling. If this point is below the horizon, the
228
+ * entire tile is below the horizon as well. The point is expressed in the ellipsoid-scaled
229
+ * space. To transform a point from world coordinates centered on the ellipsoid to ellipsoid-scaled
230
+ * coordinates, multiply the world coordinates by {@link Ellipsoid#getOneOverRadii}. See
231
+ * <a href="http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/">http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/</a>
232
+ * for information the proxy point.
233
+ *
234
+ * @type {Cartesian3}
235
+ */
236
+ this.occludeePointInScaledSpace = undefined;
237
+ };
238
+
239
+ /**
240
+ * Returns an array of tiles that would be at the next level of the tile tree.
241
+ *
242
+ * @memberof Tile
243
+ *
244
+ * @return {Array} The list of child tiles.
245
+ */
246
+ Tile.prototype.getChildren = function() {
247
+ if (typeof this.children === 'undefined') {
248
+ var tilingScheme = this.tilingScheme;
249
+ var level = this.level + 1;
250
+ var x = this.x * 2;
251
+ var y = this.y * 2;
252
+ this.children = [new Tile({
253
+ tilingScheme : tilingScheme,
254
+ x : x,
255
+ y : y,
256
+ level : level,
257
+ parent : this
258
+ }), new Tile({
259
+ tilingScheme : tilingScheme,
260
+ x : x + 1,
261
+ y : y,
262
+ level : level,
263
+ parent : this
264
+ }), new Tile({
265
+ tilingScheme : tilingScheme,
266
+ x : x,
267
+ y : y + 1,
268
+ level : level,
269
+ parent : this
270
+ }), new Tile({
271
+ tilingScheme : tilingScheme,
272
+ x : x + 1,
273
+ y : y + 1,
274
+ level : level,
275
+ parent : this
276
+ })];
277
+ }
278
+
279
+ return this.children;
280
+ };
281
+
282
+ Tile.prototype.freeResources = function() {
283
+ this.state = TileState.UNLOADED;
284
+ this.doneLoading = false;
285
+ this.renderable = false;
286
+
287
+ if (typeof this.vertexArray !== 'undefined') {
288
+ var indexBuffer = this.vertexArray.getIndexBuffer();
289
+
290
+ this.vertexArray.destroy();
291
+ this.vertexArray = undefined;
292
+
293
+ if (!indexBuffer.isDestroyed() && typeof indexBuffer.referenceCount !== 'undefined') {
294
+ --indexBuffer.referenceCount;
295
+ if (indexBuffer.referenceCount === 0) {
296
+ indexBuffer.destroy();
297
+ }
298
+ }
299
+ }
300
+
301
+ if (typeof this.transientData !== 'undefined' && typeof this.transientData.destroy !== 'undefined') {
302
+ this.transientData.destroy();
303
+ }
304
+ this.transientData = undefined;
305
+
306
+ var i, len;
307
+
308
+ var imageryList = this.imagery;
309
+ for (i = 0, len = imageryList.length; i < len; ++i) {
310
+ imageryList[i].freeResources();
311
+ }
312
+ this.imagery.length = 0;
313
+
314
+ if (typeof this.children !== 'undefined') {
315
+ for (i = 0, len = this.children.length; i < len; ++i) {
316
+ this.children[i].freeResources();
317
+ }
318
+ }
319
+ };
320
+
321
+ return Tile;
322
+ });