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,126 @@
1
+ #ifdef GL_OES_standard_derivatives
2
+ #extension GL_OES_standard_derivatives : enable
3
+ #endif
4
+
5
+ uniform bool u_showIntersection;
6
+ uniform bool u_showThroughEllipsoid;
7
+
8
+ uniform float u_sensorRadius;
9
+ uniform vec4 u_pickColor;
10
+
11
+ varying vec3 v_positionWC;
12
+ varying vec3 v_positionEC;
13
+ varying vec3 v_normalEC;
14
+
15
+ #ifndef RENDER_FOR_PICK
16
+
17
+ vec4 getColor(float sensorRadius, vec3 pointEC)
18
+ {
19
+ czm_materialInput materialInput;
20
+
21
+ vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz;
22
+ materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC);
23
+ materialInput.str = pointMC / sensorRadius;
24
+ materialInput.positionMC = pointMC;
25
+
26
+ vec3 positionToEyeEC = -v_positionEC;
27
+ materialInput.positionToEyeEC = positionToEyeEC;
28
+
29
+ vec3 normalEC = normalize(v_normalEC);
30
+ normalEC = mix(normalEC, -normalEC, step(normalEC.z, 0.0)); // Normal facing viewer
31
+ materialInput.normalEC = normalEC;
32
+
33
+ czm_material material = czm_getMaterial(materialInput);
34
+ return czm_phong(normalize(positionToEyeEC), material);
35
+ }
36
+
37
+ #endif
38
+
39
+ bool ellipsoidSensorIntersection(czm_raySegment ellipsoidInterval)
40
+ {
41
+ if (czm_isEmpty(ellipsoidInterval))
42
+ {
43
+ return false;
44
+ }
45
+
46
+ float t = ellipsoidInterval.start;
47
+
48
+ #ifdef GL_OES_standard_derivatives
49
+ // TODO: This seems to be too aggressive in some areas, and too conservative in others
50
+ float epsilon = max(abs(dFdx(t)), abs(dFdy(t)));
51
+
52
+ if (epsilon >= ellipsoidInterval.start)
53
+ {
54
+ // If the fragment is on the silhouette of the ellipsoid, the adjacent fragment
55
+ // will not hit the ellipsoid (its ellipsoidInterval.start will be zero),
56
+ // so the derivative will be large, and we would get false positives.
57
+ return false;
58
+ }
59
+ #else
60
+ // TODO: Don't hardcode this.
61
+ float epsilon = t / 500.0;
62
+ #endif
63
+
64
+ float width = 2.0; // TODO: Expose as a uniform
65
+ epsilon *= width;
66
+
67
+ return czm_equalsEpsilon(t, length(v_positionEC), epsilon);
68
+ }
69
+
70
+ vec4 shade(czm_raySegment ellipsoidInterval)
71
+ {
72
+ #ifdef RENDER_FOR_PICK
73
+ return u_pickColor;
74
+ #else
75
+ if (u_showIntersection && ellipsoidSensorIntersection(ellipsoidInterval))
76
+ {
77
+ return getIntersectionColor(u_sensorRadius, v_positionEC);
78
+ }
79
+ return getColor(u_sensorRadius, v_positionEC);
80
+ #endif
81
+ }
82
+
83
+ bool czm_pointInEllipsoid(czm_ellipsoid ellipsoid, vec3 point)
84
+ {
85
+ // TODO: Take into account ellipsoid's center; optimize with radii-squared; and move elsewhere
86
+ return (((point.x * point.x) / (ellipsoid.radii.x * ellipsoid.radii.x)) +
87
+ ((point.y * point.y) / (ellipsoid.radii.y * ellipsoid.radii.y)) +
88
+ ((point.z * point.z) / (ellipsoid.radii.z * ellipsoid.radii.z)) < 1.0);
89
+ }
90
+
91
+ void main()
92
+ {
93
+ vec3 sensorVertexWC = czm_model[3].xyz; // (0.0, 0.0, 0.0) in model coordinates
94
+ vec3 sensorVertexEC = czm_modelView[3].xyz; // (0.0, 0.0, 0.0) in model coordinates
95
+
96
+ czm_ellipsoid ellipsoid = czm_getWgs84EllipsoidEC();
97
+
98
+ // Occluded by the ellipsoid?
99
+ if (!u_showThroughEllipsoid)
100
+ {
101
+ // Discard if in the ellipsoid
102
+ // PERFORMANCE_IDEA: A coarse check for ellipsoid intersection could be done on the CPU first.
103
+ if (czm_pointInEllipsoid(ellipsoid, v_positionWC))
104
+ {
105
+ discard;
106
+ }
107
+
108
+ // Discard if in the sensor's shadow
109
+ if (inSensorShadow(sensorVertexWC, ellipsoid, v_positionEC))
110
+ {
111
+ discard;
112
+ }
113
+ }
114
+
115
+ // Discard if not in the sensor's sphere
116
+ // PERFORMANCE_IDEA: We can omit this check if the radius is Number.POSITIVE_INFINITY.
117
+ if (distance(v_positionEC, sensorVertexEC) > u_sensorRadius)
118
+ {
119
+ discard;
120
+ }
121
+
122
+ czm_ray ray = czm_ray(vec3(0.0), normalize(v_positionEC)); // Ray from eye to fragment in eye coordinates
123
+ czm_raySegment ellipsoidInterval = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);
124
+
125
+ gl_FragColor = shade(ellipsoidInterval);
126
+ }
@@ -0,0 +1,95 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "#ifdef GL_OES_standard_derivatives\n\
6
+ #extension GL_OES_standard_derivatives : enable\n\
7
+ #endif\n\
8
+ uniform bool u_showIntersection;\n\
9
+ uniform bool u_showThroughEllipsoid;\n\
10
+ uniform float u_sensorRadius;\n\
11
+ uniform vec4 u_pickColor;\n\
12
+ varying vec3 v_positionWC;\n\
13
+ varying vec3 v_positionEC;\n\
14
+ varying vec3 v_normalEC;\n\
15
+ #ifndef RENDER_FOR_PICK\n\
16
+ vec4 getColor(float sensorRadius, vec3 pointEC)\n\
17
+ {\n\
18
+ czm_materialInput materialInput;\n\
19
+ vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz;\n\
20
+ materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC);\n\
21
+ materialInput.str = pointMC / sensorRadius;\n\
22
+ materialInput.positionMC = pointMC;\n\
23
+ vec3 positionToEyeEC = -v_positionEC;\n\
24
+ materialInput.positionToEyeEC = positionToEyeEC;\n\
25
+ vec3 normalEC = normalize(v_normalEC);\n\
26
+ normalEC = mix(normalEC, -normalEC, step(normalEC.z, 0.0));\n\
27
+ materialInput.normalEC = normalEC;\n\
28
+ czm_material material = czm_getMaterial(materialInput);\n\
29
+ return czm_phong(normalize(positionToEyeEC), material);\n\
30
+ }\n\
31
+ #endif\n\
32
+ bool ellipsoidSensorIntersection(czm_raySegment ellipsoidInterval)\n\
33
+ {\n\
34
+ if (czm_isEmpty(ellipsoidInterval))\n\
35
+ {\n\
36
+ return false;\n\
37
+ }\n\
38
+ float t = ellipsoidInterval.start;\n\
39
+ #ifdef GL_OES_standard_derivatives\n\
40
+ float epsilon = max(abs(dFdx(t)), abs(dFdy(t)));\n\
41
+ if (epsilon >= ellipsoidInterval.start)\n\
42
+ {\n\
43
+ return false;\n\
44
+ }\n\
45
+ #else\n\
46
+ float epsilon = t / 500.0;\n\
47
+ #endif\n\
48
+ float width = 2.0;\n\
49
+ epsilon *= width;\n\
50
+ return czm_equalsEpsilon(t, length(v_positionEC), epsilon);\n\
51
+ }\n\
52
+ vec4 shade(czm_raySegment ellipsoidInterval)\n\
53
+ {\n\
54
+ #ifdef RENDER_FOR_PICK\n\
55
+ return u_pickColor;\n\
56
+ #else\n\
57
+ if (u_showIntersection && ellipsoidSensorIntersection(ellipsoidInterval))\n\
58
+ {\n\
59
+ return getIntersectionColor(u_sensorRadius, v_positionEC);\n\
60
+ }\n\
61
+ return getColor(u_sensorRadius, v_positionEC);\n\
62
+ #endif\n\
63
+ }\n\
64
+ bool czm_pointInEllipsoid(czm_ellipsoid ellipsoid, vec3 point)\n\
65
+ {\n\
66
+ return (((point.x * point.x) / (ellipsoid.radii.x * ellipsoid.radii.x)) +\n\
67
+ ((point.y * point.y) / (ellipsoid.radii.y * ellipsoid.radii.y)) +\n\
68
+ ((point.z * point.z) / (ellipsoid.radii.z * ellipsoid.radii.z)) < 1.0);\n\
69
+ }\n\
70
+ void main()\n\
71
+ {\n\
72
+ vec3 sensorVertexWC = czm_model[3].xyz;\n\
73
+ vec3 sensorVertexEC = czm_modelView[3].xyz;\n\
74
+ czm_ellipsoid ellipsoid = czm_getWgs84EllipsoidEC();\n\
75
+ if (!u_showThroughEllipsoid)\n\
76
+ {\n\
77
+ if (czm_pointInEllipsoid(ellipsoid, v_positionWC))\n\
78
+ {\n\
79
+ discard;\n\
80
+ }\n\
81
+ if (inSensorShadow(sensorVertexWC, ellipsoid, v_positionEC))\n\
82
+ {\n\
83
+ discard;\n\
84
+ }\n\
85
+ }\n\
86
+ if (distance(v_positionEC, sensorVertexEC) > u_sensorRadius)\n\
87
+ {\n\
88
+ discard;\n\
89
+ }\n\
90
+ czm_ray ray = czm_ray(vec3(0.0), normalize(v_positionEC));\n\
91
+ czm_raySegment ellipsoidInterval = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\n\
92
+ gl_FragColor = shade(ellipsoidInterval);\n\
93
+ }\n\
94
+ ";
95
+ });
@@ -0,0 +1,14 @@
1
+ attribute vec4 position;
2
+ attribute vec3 normal;
3
+
4
+ varying vec3 v_positionWC;
5
+ varying vec3 v_positionEC;
6
+ varying vec3 v_normalEC;
7
+
8
+ void main()
9
+ {
10
+ gl_Position = czm_modelViewProjection * position;
11
+ v_positionWC = (czm_model * position).xyz;
12
+ v_positionEC = (czm_modelView * position).xyz;
13
+ v_normalEC = czm_normal * normal;
14
+ }
@@ -0,0 +1,18 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "attribute vec4 position;\n\
6
+ attribute vec3 normal;\n\
7
+ varying vec3 v_positionWC;\n\
8
+ varying vec3 v_positionEC;\n\
9
+ varying vec3 v_normalEC;\n\
10
+ void main()\n\
11
+ {\n\
12
+ gl_Position = czm_modelViewProjection * position;\n\
13
+ v_positionWC = (czm_model * position).xyz;\n\
14
+ v_positionEC = (czm_modelView * position).xyz;\n\
15
+ v_normalEC = czm_normal * normal;\n\
16
+ }\n\
17
+ ";
18
+ });
@@ -0,0 +1,40 @@
1
+ uniform vec3 u_radii;
2
+ uniform vec3 u_oneOverEllipsoidRadiiSquared;
3
+
4
+ varying vec3 v_positionEC;
5
+
6
+ void main()
7
+ {
8
+ czm_ellipsoid ellipsoid = czm_ellipsoidNew(czm_modelView[3].xyz, u_radii);
9
+ vec3 direction = normalize(v_positionEC);
10
+ czm_ray ray = czm_ray(vec3(0.0), direction);
11
+ czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);
12
+
13
+ if (czm_isEmpty(intersection))
14
+ {
15
+ discard;
16
+ }
17
+
18
+ // Pick the intersection point based on if the viewer is outside or inside the ellipsoid
19
+ bool hitFrontFace = (intersection.start != 0.0);
20
+ vec3 positionEC = czm_pointAlongRay(ray, hitFrontFace ? intersection.start : intersection.stop);
21
+ vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz;
22
+ vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared));
23
+ vec3 normalMC = hitFrontFace ? geodeticNormal : -geodeticNormal; // normalized surface normal (always facing the viewer) in model coordinates
24
+ vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordiantes
25
+
26
+ vec2 st = czm_ellipsoidWgs84TextureCoordinates(geodeticNormal);
27
+ vec3 positionToEyeEC = -positionEC;
28
+
29
+ czm_materialInput materialInput;
30
+ materialInput.s = st.s;
31
+ materialInput.st = st;
32
+ materialInput.str = (positionMC + u_radii) / u_radii;
33
+ materialInput.normalEC = normalEC;
34
+ materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);
35
+ materialInput.positionToEyeEC = positionToEyeEC;
36
+ materialInput.positionMC = positionMC;
37
+ czm_material material = czm_getMaterial(materialInput);
38
+
39
+ gl_FragColor = czm_phong(normalize(positionToEyeEC), material);
40
+ }
@@ -0,0 +1,38 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "uniform vec3 u_radii;\n\
6
+ uniform vec3 u_oneOverEllipsoidRadiiSquared;\n\
7
+ varying vec3 v_positionEC;\n\
8
+ void main()\n\
9
+ {\n\
10
+ czm_ellipsoid ellipsoid = czm_ellipsoidNew(czm_modelView[3].xyz, u_radii);\n\
11
+ vec3 direction = normalize(v_positionEC);\n\
12
+ czm_ray ray = czm_ray(vec3(0.0), direction);\n\
13
+ czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\n\
14
+ if (czm_isEmpty(intersection))\n\
15
+ {\n\
16
+ discard;\n\
17
+ }\n\
18
+ bool hitFrontFace = (intersection.start != 0.0);\n\
19
+ vec3 positionEC = czm_pointAlongRay(ray, hitFrontFace ? intersection.start : intersection.stop);\n\
20
+ vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz;\n\
21
+ vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared));\n\
22
+ vec3 normalMC = hitFrontFace ? geodeticNormal : -geodeticNormal;\n\
23
+ vec3 normalEC = normalize(czm_normal * normalMC);\n\
24
+ vec2 st = czm_ellipsoidWgs84TextureCoordinates(geodeticNormal);\n\
25
+ vec3 positionToEyeEC = -positionEC;\n\
26
+ czm_materialInput materialInput;\n\
27
+ materialInput.s = st.s;\n\
28
+ materialInput.st = st;\n\
29
+ materialInput.str = (positionMC + u_radii) / u_radii;\n\
30
+ materialInput.normalEC = normalEC;\n\
31
+ materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);\n\
32
+ materialInput.positionToEyeEC = positionToEyeEC;\n\
33
+ materialInput.positionMC = positionMC;\n\
34
+ czm_material material = czm_getMaterial(materialInput);\n\
35
+ gl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n\
36
+ }\n\
37
+ ";
38
+ });
@@ -0,0 +1,26 @@
1
+ attribute vec3 position;
2
+
3
+ uniform vec3 u_radii;
4
+
5
+ varying vec3 v_positionEC;
6
+
7
+ void main()
8
+ {
9
+ // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates.
10
+ // Scale to consider the radii. We could also do this once on the CPU when using the BoxTessellator,
11
+ // but doing it here allows us to change the radii without rewriting the vertex data, and
12
+ // allows all ellipsoids to reuse the same vertex data.
13
+ vec4 p = vec4(u_radii * position, 1.0);
14
+
15
+ v_positionEC = (czm_modelView * p).xyz; // position in eye coordinates
16
+ gl_Position = czm_modelViewProjection * p; // position in clip coordinates
17
+
18
+ // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums
19
+ // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the
20
+ // ellipsoid (does not write depth) that was rendered in the farther frustum.
21
+ //
22
+ // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates
23
+ // artifacts since some fragments can be alpha blended twice. This is solved by only rendering
24
+ // the ellipsoid in the closest frustum to the viewer.
25
+ gl_Position.z = clamp(gl_Position.z, gl_DepthRange.near, gl_DepthRange.far);
26
+ }
@@ -0,0 +1,16 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "attribute vec3 position;\n\
6
+ uniform vec3 u_radii;\n\
7
+ varying vec3 v_positionEC;\n\
8
+ void main()\n\
9
+ {\n\
10
+ vec4 p = vec4(u_radii * position, 1.0);\n\
11
+ v_positionEC = (czm_modelView * p).xyz;\n\
12
+ gl_Position = czm_modelViewProjection * p;\n\
13
+ gl_Position.z = clamp(gl_Position.z, gl_DepthRange.near, gl_DepthRange.far);\n\
14
+ }\n\
15
+ ";
16
+ });
@@ -0,0 +1,25 @@
1
+ uniform vec4 asphaltColor;
2
+ uniform float bumpSize;
3
+ uniform float roughness;
4
+
5
+ czm_material czm_getMaterial(czm_materialInput materialInput)
6
+ {
7
+ czm_material material = czm_getDefaultMaterial(materialInput);
8
+
9
+ // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
10
+ //Main cellular pattern
11
+ vec4 color = asphaltColor;
12
+ vec2 st = materialInput.st;
13
+ vec2 F = czm_cellular(st / bumpSize);
14
+ color.rgb -= (F.x / F.y) * 0.1;
15
+
16
+ //Extra bumps for roughness
17
+ float noise = czm_snoise(st / bumpSize);
18
+ noise = pow(noise, 5.0) * roughness;
19
+ color.rgb += noise;
20
+
21
+ material.diffuse = color.rgb;
22
+ material.alpha = color.a;
23
+
24
+ return material;
25
+ }
@@ -0,0 +1,23 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "uniform vec4 asphaltColor;\n\
6
+ uniform float bumpSize;\n\
7
+ uniform float roughness;\n\
8
+ czm_material czm_getMaterial(czm_materialInput materialInput)\n\
9
+ {\n\
10
+ czm_material material = czm_getDefaultMaterial(materialInput);\n\
11
+ vec4 color = asphaltColor;\n\
12
+ vec2 st = materialInput.st;\n\
13
+ vec2 F = czm_cellular(st / bumpSize);\n\
14
+ color.rgb -= (F.x / F.y) * 0.1;\n\
15
+ float noise = czm_snoise(st / bumpSize);\n\
16
+ noise = pow(noise, 5.0) * roughness;\n\
17
+ color.rgb += noise;\n\
18
+ material.diffuse = color.rgb;\n\
19
+ material.alpha = color.a;\n\
20
+ return material;\n\
21
+ }\n\
22
+ ";
23
+ });
@@ -0,0 +1,18 @@
1
+ uniform vec4 lightColor;
2
+ uniform vec4 darkColor;
3
+ uniform float frequency;
4
+
5
+ czm_material czm_getMaterial(czm_materialInput materialInput)
6
+ {
7
+ czm_material material = czm_getDefaultMaterial(materialInput);
8
+
9
+ // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
10
+ vec2 F = czm_cellular(materialInput.st * frequency);
11
+ float t = 1.0 - F.x * F.x;
12
+
13
+ vec4 color = mix(lightColor, darkColor, t);
14
+ material.diffuse = color.rgb;
15
+ material.alpha = color.a;
16
+
17
+ return material;
18
+ }