cesium 0.13.2 → 0.14.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.
- data/app/assets/javascripts/Cesium.js +2 -2
- data/app/assets/javascripts/Core/Clock.js +81 -81
- data/app/assets/javascripts/Core/ClockRange.js +5 -3
- data/app/assets/javascripts/Core/ClockStep.js +7 -1
- data/app/assets/javascripts/Core/Event.js +12 -11
- data/app/assets/javascripts/Core/JulianDate.js +16 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +1 -1
- data/app/assets/javascripts/Renderer/ClearCommand.js +1 -1
- data/app/assets/javascripts/Renderer/Context.js +23 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +1 -1
- data/app/assets/javascripts/Scene/BillboardCollection.js +14 -24
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +8 -31
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +13 -4
- data/app/assets/javascripts/Scene/Tile.js +11 -6
- data/app/assets/javascripts/Scene/ViewportQuad.js +21 -36
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +15 -11
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +47 -27
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +886 -228
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +173 -40
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +17 -14
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +25 -19
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +61 -31
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +5 -4
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +9 -7
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +392 -299
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +12 -8
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +836 -530
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -58
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +7 -6
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +34 -26
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +21 -5
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +19 -11
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +13 -9
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +33 -22
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +24 -17
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +14 -10
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -20
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +11 -6
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +18 -13
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +12 -7
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +9 -6
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +23 -16
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +14 -11
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +10 -8
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +10 -8
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +12 -7
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +21 -12
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +11 -7
- data/app/assets/javascripts/Shaders/Materials/Water.js +46 -45
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +29 -19
- data/app/assets/javascripts/Shaders/Noise.js +408 -173
- data/app/assets/javascripts/Shaders/PolygonFS.js +20 -10
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +3 -3
- data/app/assets/javascripts/Shaders/PolygonVS.js +27 -22
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +23 -19
- data/app/assets/javascripts/Shaders/PolylineFS.js +3 -3
- data/app/assets/javascripts/Shaders/PolylineVS.js +24 -19
- data/app/assets/javascripts/Shaders/Ray.js +496 -315
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +16 -6
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +5 -2
- data/app/assets/javascripts/Shaders/SensorVolume.js +32 -15
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +61 -16
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +106 -53
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +4 -2
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +5 -3
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +14 -10
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +6 -5
- data/app/assets/javascripts/ThirdParty/knockout.js +88 -0
- data/app/assets/javascripts/Widgets/Animation/Animation.css +141 -0
- data/app/assets/javascripts/Widgets/Animation/Animation.js +944 -0
- data/app/assets/javascripts/Widgets/Animation/AnimationViewModel.js +503 -0
- data/app/assets/javascripts/Widgets/Animation/darker.css +69 -0
- data/app/assets/javascripts/Widgets/ClockViewModel.js +167 -0
- data/app/assets/javascripts/Widgets/Command.js +33 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +54 -77
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +6 -27
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +124 -187
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenViewModel.js +88 -0
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.css +16 -0
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.js +50 -0
- data/app/assets/javascripts/Widgets/Fullscreen/darker.css +14 -0
- data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/enterFullscreen.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/exitFullscreen.svg +18 -0
- data/app/assets/javascripts/Widgets/Observable.js +29 -0
- data/app/assets/javascripts/Widgets/{Timeline.css → Timeline/Timeline.css} +18 -21
- data/app/assets/javascripts/Widgets/{Timeline.js → Timeline/Timeline.js} +12 -7
- data/app/assets/javascripts/Widgets/{TimelineHighlightRange.js → Timeline/TimelineHighlightRange.js} +0 -0
- data/app/assets/javascripts/Widgets/{TimelineTrack.js → Timeline/TimelineTrack.js} +1 -1
- data/app/assets/javascripts/Widgets/Timeline/darker.css +20 -0
- data/app/assets/javascripts/Widgets/ToggleButtonViewModel.js +40 -0
- data/app/assets/javascripts/Widgets/createCommand.js +41 -0
- data/lib/cesium/version.rb +1 -1
- data/test/dummy/log/development.log +3300 -0
- data/test/dummy/tmp/cache/assets/C0D/D90/sprockets%2F297417de8571859510683b028659bf97 +0 -0
- data/test/dummy/tmp/cache/assets/C5E/6E0/sprockets%2F990a847694744e4ac598dc125572a243 +0 -0
- data/test/dummy/tmp/cache/assets/C64/470/sprockets%2Fa605a34504c3a61f1e0309374154a4f2 +0 -0
- data/test/dummy/tmp/cache/assets/C6C/D20/sprockets%2F8214271b512224e3f7a73a322e85b15c +0 -0
- data/test/dummy/tmp/cache/assets/C6E/8C0/sprockets%2F13ad4320ee685ee062033b0806b07756 +0 -0
- data/test/dummy/tmp/cache/assets/C71/D40/sprockets%2F191b5a7162930434c9ea09419d2c0c42 +0 -0
- data/test/dummy/tmp/cache/assets/C75/FC0/sprockets%2F7100611b808c367104f4537af8b467ca +0 -0
- data/test/dummy/tmp/cache/assets/C77/C90/sprockets%2F5c6d277228741022bef80d17b5422c55 +0 -0
- data/test/dummy/tmp/cache/assets/C7B/2E0/sprockets%2F049f5400e934154d876d9e7a110d0b72 +0 -0
- data/test/dummy/tmp/cache/assets/C7D/290/sprockets%2F07b270a59082157be139ee653b4435b9 +0 -0
- data/test/dummy/tmp/cache/assets/C82/860/sprockets%2Fbd185743a7cf9fa41b72715364178414 +0 -0
- data/test/dummy/tmp/cache/assets/C83/5B0/sprockets%2F11288f143903cfc5595d8a5771f51f20 +0 -0
- data/test/dummy/tmp/cache/assets/C84/210/sprockets%2F5e7c3418b40688a85916fd18512fc213 +0 -0
- data/test/dummy/tmp/cache/assets/C85/2A0/sprockets%2F409dfb449462105286e47c6a8c32860e +0 -0
- data/test/dummy/tmp/cache/assets/C87/790/sprockets%2F49d9e234d84217773d540a5b4813fc64 +0 -0
- data/test/dummy/tmp/cache/assets/C8C/C50/sprockets%2F87a1327314e4aa2a3ea44a33a4730420 +0 -0
- data/test/dummy/tmp/cache/assets/C9C/B20/sprockets%2Fc3000c708c2d95253d8a414d6c087d10 +0 -0
- data/test/dummy/tmp/cache/assets/C9E/DC0/sprockets%2F2f7b17e380320fe9d0650d3aa4614432 +0 -0
- data/test/dummy/tmp/cache/assets/C9F/9B0/sprockets%2Faeb280e1126521372c0bd6660e22969b +0 -0
- data/test/dummy/tmp/cache/assets/CA0/9A0/sprockets%2Fc1e9542f7960491862764447bf6d7f9e +0 -0
- data/test/dummy/tmp/cache/assets/CA1/C10/sprockets%2F804602800eb2e183aa91825b5f881b0d +0 -0
- data/test/dummy/tmp/cache/assets/CA6/DD0/sprockets%2F8b2532b8158e7333d5392bb505ca512f +0 -0
- data/test/dummy/tmp/cache/assets/CA8/4C0/sprockets%2Fbe667b320658d0297c210cb43c77b760 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/340/sprockets%2Fd3c10509ea49a62e909622f77f4b3220 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/430/sprockets%2F68e71052d60ebac0303e9e883c541265 +0 -0
- data/test/dummy/tmp/cache/assets/CAB/380/sprockets%2Fc2d6119b9334706b0b40e54f93f431f7 +0 -0
- data/test/dummy/tmp/cache/assets/CAC/820/sprockets%2F6b14c16171e49a1128966926eade622b +0 -0
- data/test/dummy/tmp/cache/assets/CB2/A60/sprockets%2F5583541ee042c37a846d149d80c8a36d +0 -0
- data/test/dummy/tmp/cache/assets/CB2/F30/sprockets%2Fcd4160d432937934435655ca7c56c5fa +0 -0
- data/test/dummy/tmp/cache/assets/CB3/280/sprockets%2F7e73589c2b0009c3748f7a068242cc7a +0 -0
- data/test/dummy/tmp/cache/assets/CB4/A90/sprockets%2F8fa8411bd1707443dcf02695b9a80776 +0 -0
- data/test/dummy/tmp/cache/assets/CB4/F10/sprockets%2F06ee620db145798202a9fd4c1849944b +0 -0
- data/test/dummy/tmp/cache/assets/CB8/3B0/sprockets%2Fd03836e3d10fb91125597086f6dcc848 +0 -0
- data/test/dummy/tmp/cache/assets/CB9/280/sprockets%2F0e4025fc9a78a70774353617a9b7e96a +0 -0
- data/test/dummy/tmp/cache/assets/CBB/3F0/sprockets%2F410c0a86475946a391fc849c9c34e5e4 +0 -0
- data/test/dummy/tmp/cache/assets/CBE/B60/sprockets%2F872738245c2698dd11952e55f1d2cd5f +0 -0
- data/test/dummy/tmp/cache/assets/CC2/090/sprockets%2F1f4c818e07baa8b05de5987748339952 +0 -0
- data/test/dummy/tmp/cache/assets/CC3/D90/sprockets%2Fd7e90e060a9924b61d0b2c6d102c0024 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/310/sprockets%2F3d942c768ca693e08155d8a9b2195e99 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/9F0/sprockets%2Fbc7ef55837e5097405e3f5097fe35961 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/A80/sprockets%2F887a36c292044706f9d58ee02f659eb9 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/E20/sprockets%2F27297a29159534cf493ff55576c9faa5 +0 -0
- data/test/dummy/tmp/cache/assets/CCD/040/sprockets%2Faf449bc1503080d6262424c20bb97b6d +0 -0
- data/test/dummy/tmp/cache/assets/CCD/210/sprockets%2F33c821e4b3b2538af0c79006df1318d0 +0 -0
- data/test/dummy/tmp/cache/assets/CCD/8B0/sprockets%2F738651415c65eb022af5ec9230a6b2b1 +0 -0
- data/test/dummy/tmp/cache/assets/CCF/180/sprockets%2F39ad17e27f30e3d0080675315bdae602 +0 -0
- data/test/dummy/tmp/cache/assets/CD0/CB0/sprockets%2F139767c003a27a8b5da08fc3714c072b +0 -0
- data/test/dummy/tmp/cache/assets/CD2/6E0/sprockets%2F161543077a1e9c52a2d577bbc3d41e62 +0 -0
- data/test/dummy/tmp/cache/assets/CD3/5A0/sprockets%2F3b02ea5d52854a16dea8336c339c5090 +0 -0
- data/test/dummy/tmp/cache/assets/CD5/9F0/sprockets%2F72d2b1b535d37251fb45c4754d62e2a6 +0 -0
- data/test/dummy/tmp/cache/assets/CDA/170/sprockets%2Ffae3735873d2d340da1827ee6246500e +0 -0
- data/test/dummy/tmp/cache/assets/CDA/C40/sprockets%2F1d06e02833dd2620777ee9818ec61bb0 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/080/sprockets%2Fb33c033c645ff28315cc958538cd5b13 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/990/sprockets%2F913dd1f104b8b71495b00d798c2922de +0 -0
- data/test/dummy/tmp/cache/assets/CDD/090/sprockets%2F62a239aa6b1847f0cd82f6e5b7187303 +0 -0
- data/test/dummy/tmp/cache/assets/CDF/E30/sprockets%2F27d4b1eb52518a0667aef8525455b57c +0 -0
- data/test/dummy/tmp/cache/assets/CE6/E20/sprockets%2F0c20945489c7228a66bb54fd7cc449f0 +0 -0
- data/test/dummy/tmp/cache/assets/CE8/F00/sprockets%2Fd5833932a705129ff7ce6072ee0fb945 +0 -0
- data/test/dummy/tmp/cache/assets/CE9/C20/sprockets%2F5c49d701727e703847268f9fffdba020 +0 -0
- data/test/dummy/tmp/cache/assets/CED/610/sprockets%2F678ef9639f922616c1ced8f3b1b12931 +0 -0
- data/test/dummy/tmp/cache/assets/CEE/300/sprockets%2Fc27f86c561d6e1e8c08d5f852857b025 +0 -0
- data/test/dummy/tmp/cache/assets/CEF/B50/sprockets%2F877a93d34cbc7b4cf1837a56398f0185 +0 -0
- data/test/dummy/tmp/cache/assets/CF2/6B0/sprockets%2F8c7e5aab44b8703a6379569d887145be +0 -0
- data/test/dummy/tmp/cache/assets/CF3/2A0/sprockets%2Fcf7fca385a816577b9a3a8583117696d +0 -0
- data/test/dummy/tmp/cache/assets/CF5/5E0/sprockets%2Fdaf7891f7f08019202f8576899bb51ce +0 -0
- data/test/dummy/tmp/cache/assets/CF5/F60/sprockets%2Fbf00d9de7199bf7775c55128a295b677 +0 -0
- data/test/dummy/tmp/cache/assets/CF6/F60/sprockets%2Fc8e90a0ee2521916c1aa1a41b6463a63 +0 -0
- data/test/dummy/tmp/cache/assets/CF8/AB0/sprockets%2F7755643d4dc601cdf47e9886b4f379a5 +0 -0
- data/test/dummy/tmp/cache/assets/CF8/FA0/sprockets%2F853bda27091dea80f5121d20a08b53a7 +0 -0
- data/test/dummy/tmp/cache/assets/CFC/970/sprockets%2Fbe27af53c78bc90a6113a41620a448e1 +0 -0
- data/test/dummy/tmp/cache/assets/D01/160/sprockets%2Fa74c8a20e3158be3fb170499a11093db +0 -0
- data/test/dummy/tmp/cache/assets/D01/4A0/sprockets%2F9e53138a5fa453940a6190c1ba3ac36e +0 -0
- data/test/dummy/tmp/cache/assets/D09/360/sprockets%2Fe5d09aa6884c385437dbb18ca301e353 +0 -0
- data/test/dummy/tmp/cache/assets/D0D/990/sprockets%2F9cbe1835abd85d521b876411a56cb672 +0 -0
- data/test/dummy/tmp/cache/assets/D0E/610/sprockets%2F3e14d0cbb1493615f7d23438bf8fd068 +0 -0
- data/test/dummy/tmp/cache/assets/D0F/870/sprockets%2F7597efb306ce615354e507d02edd14d4 +0 -0
- data/test/dummy/tmp/cache/assets/D10/590/sprockets%2F80386d276f6569b0a12ae1be155f9b3e +0 -0
- data/test/dummy/tmp/cache/assets/D11/060/sprockets%2F6d0bee24e84229bd6014301c878ff6d6 +0 -0
- data/test/dummy/tmp/cache/assets/D11/6A0/sprockets%2Ff21a9f2e8f4075086e68cda0059b25e2 +0 -0
- data/test/dummy/tmp/cache/assets/D11/A30/sprockets%2F210c5ab2fecdef47005c7308685e9297 +0 -0
- data/test/dummy/tmp/cache/assets/D12/460/sprockets%2F9c0db7ab725c7c7b15d2450657fe2369 +0 -0
- data/test/dummy/tmp/cache/assets/D12/760/sprockets%2F03c39aaab0669a6e9670a29f048db686 +0 -0
- data/test/dummy/tmp/cache/assets/D12/A90/sprockets%2F5f4bf0f279ca050491c07688df6d7c02 +0 -0
- data/test/dummy/tmp/cache/assets/D14/020/sprockets%2F0c3544de7e7bd74ee6e2040477f04a88 +0 -0
- data/test/dummy/tmp/cache/assets/D15/9B0/sprockets%2F015d78bcd557b68b039a7abd33b47679 +0 -0
- data/test/dummy/tmp/cache/assets/D19/B40/sprockets%2F1f58b7a260a18bcc697883f96e266a1b +0 -0
- data/test/dummy/tmp/cache/assets/D1A/520/sprockets%2Fe32e6a17fb333c5883939fcb234d2f69 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/6B0/sprockets%2F3c7df42c4a83942ffb31d85d827595b4 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/BD0/sprockets%2Ff389718cb2ba6fe3e0e0c420398f9486 +0 -0
- data/test/dummy/tmp/cache/assets/D21/E90/sprockets%2F2fe752c3566ccd57f7ee339086fc3427 +0 -0
- data/test/dummy/tmp/cache/assets/D23/CD0/sprockets%2F20f79a5d5570f3efef4de79621355e49 +0 -0
- data/test/dummy/tmp/cache/assets/D23/D30/sprockets%2F71867caa2cf28987ed0048cf7d3a7569 +0 -0
- data/test/dummy/tmp/cache/assets/D24/EF0/sprockets%2F776d054d84f539061bd8ddffa66906c8 +0 -0
- data/test/dummy/tmp/cache/assets/D25/4D0/sprockets%2Fde6d162f5e2a587d9564e88d90c773a3 +0 -0
- data/test/dummy/tmp/cache/assets/D27/A90/sprockets%2F1a25693899836d58cad4cbfe8c7a7707 +0 -0
- data/test/dummy/tmp/cache/assets/D2D/F30/sprockets%2Fc75a2beb051b582840cf3800d55b26dc +0 -0
- data/test/dummy/tmp/cache/assets/D2D/F80/sprockets%2F0293aae3c8d8a4fda11a0883c48b5222 +0 -0
- data/test/dummy/tmp/cache/assets/D2E/600/sprockets%2Fda9f7539b9df0aa7d763d14999870d94 +0 -0
- data/test/dummy/tmp/cache/assets/D33/040/sprockets%2F6593d8c52e0b617a12ae2c49aa6e3b07 +0 -0
- data/test/dummy/tmp/cache/assets/D34/7A0/sprockets%2F4b4a0c9775248b2e49c1bae8a72a05c3 +0 -0
- data/test/dummy/tmp/cache/assets/D36/770/sprockets%2F2942b9a5caa50e9107de74eca152619c +0 -0
- data/test/dummy/tmp/cache/assets/D37/9C0/sprockets%2Fdfa99409821a9d0d1d6f30b5461b1ae5 +0 -0
- data/test/dummy/tmp/cache/assets/D38/930/sprockets%2F1dd724d3466a12a84bb248dc7e6d06c6 +0 -0
- data/test/dummy/tmp/cache/assets/D39/7E0/sprockets%2F0a236c2722565068da14f7ecf7b7a8da +0 -0
- data/test/dummy/tmp/cache/assets/D3A/420/sprockets%2Fbd47498d7cbba00ab9c8201883915f2a +0 -0
- data/test/dummy/tmp/cache/assets/D3B/BB0/sprockets%2Ff533a1adca88a3594ec94233f71eb812 +0 -0
- data/test/dummy/tmp/cache/assets/D3B/E20/sprockets%2Fd20320e720f8dc2779b4ec627eb15fb6 +0 -0
- data/test/dummy/tmp/cache/assets/D3D/080/sprockets%2F007ac06f3c784668b28baba6902eec76 +0 -0
- data/test/dummy/tmp/cache/assets/D3D/D30/sprockets%2F5fa8cd221b97c829234dc81721eea60e +0 -0
- data/test/dummy/tmp/cache/assets/D3E/1F0/sprockets%2F6e84e3f3e420bd5ad7f336ce41750d36 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/960/sprockets%2F237931317e014eabd96932637ffadddc +0 -0
- data/test/dummy/tmp/cache/assets/D42/460/sprockets%2Fb195b37929fa63c85fbfb573aa05d209 +0 -0
- data/test/dummy/tmp/cache/assets/D42/F90/sprockets%2F632555653af85b04e418abb9dee238cf +0 -0
- data/test/dummy/tmp/cache/assets/D44/400/sprockets%2F3cdc153bbcae4ac07e75193678d61996 +0 -0
- data/test/dummy/tmp/cache/assets/D46/D10/sprockets%2F3399d1c2c5dbc7c9e0f2106296d82fd7 +0 -0
- data/test/dummy/tmp/cache/assets/D47/A70/sprockets%2F526b1eb3f0c2369b0c16c96ddf775f96 +0 -0
- data/test/dummy/tmp/cache/assets/D48/180/sprockets%2Ffce9aa3720b73d2259e644a2e3a99c89 +0 -0
- data/test/dummy/tmp/cache/assets/D48/6F0/sprockets%2F7a67d797a92f48d3104ecf5e42b5bc71 +0 -0
- data/test/dummy/tmp/cache/assets/D4A/7B0/sprockets%2F8cbd4e8cdea7e3e486565d92b2271561 +0 -0
- data/test/dummy/tmp/cache/assets/D4C/2C0/sprockets%2F096baecb9254aaa68d12c0a3c34a2121 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/440/sprockets%2F141dfe7665828ab1d5ee647d0e797e5a +0 -0
- data/test/dummy/tmp/cache/assets/D4F/D90/sprockets%2F1e4fde9a33bb918796edc96eb0805564 +0 -0
- data/test/dummy/tmp/cache/assets/D50/390/sprockets%2F04f3299f7c28fa65842d4bda257df9d5 +0 -0
- data/test/dummy/tmp/cache/assets/D51/330/sprockets%2F0e113bb1dc7050041be6f8d28c4ebb41 +0 -0
- data/test/dummy/tmp/cache/assets/D57/370/sprockets%2F102e7ebfa287ea2e1b58052b052c1ee2 +0 -0
- data/test/dummy/tmp/cache/assets/D57/C50/sprockets%2F28a22bacabfe4b780402b3ca83a54843 +0 -0
- data/test/dummy/tmp/cache/assets/D57/D00/sprockets%2Fbb9c7666fe4175a054557fff4ccf5983 +0 -0
- data/test/dummy/tmp/cache/assets/D59/E30/sprockets%2Fa8a09c836fc128ee889ce97d72e6444c +0 -0
- data/test/dummy/tmp/cache/assets/D5C/800/sprockets%2Fdd1b21cea3433ac792403e3de4f84f11 +0 -0
- data/test/dummy/tmp/cache/assets/D5D/140/sprockets%2Ffca988958f2a37ce8eb6b77337e793c0 +0 -0
- data/test/dummy/tmp/cache/assets/D5F/630/sprockets%2Ff2df01200f9420db5285f15bbdf4e34e +0 -0
- data/test/dummy/tmp/cache/assets/D61/420/sprockets%2F79102ecb63d32f0f43e46f481acab0c7 +0 -0
- data/test/dummy/tmp/cache/assets/D61/B10/sprockets%2F56a7f22ca114fc32e60a2ca8e5c946e1 +0 -0
- data/test/dummy/tmp/cache/assets/D61/C00/sprockets%2F71ad51ea200867d43de03b8b25eb3e6f +0 -0
- data/test/dummy/tmp/cache/assets/D63/400/sprockets%2F30721d1c6698a64ac1cdc7e8d3ad37a0 +0 -0
- data/test/dummy/tmp/cache/assets/D65/3D0/sprockets%2Fc70f23593414be8a0daf25149ecb06fd +0 -0
- data/test/dummy/tmp/cache/assets/D68/020/sprockets%2Fc393ddcb5c7dbaf1665bc90491523d23 +0 -0
- data/test/dummy/tmp/cache/assets/D68/9F0/sprockets%2F0a2eac996cb10aab983963ec21c9d166 +0 -0
- data/test/dummy/tmp/cache/assets/D68/FA0/sprockets%2F315d926695d2ababc102ded8362e7c7b +0 -0
- data/test/dummy/tmp/cache/assets/D69/810/sprockets%2F8a4fedc6fc72ca37c7403924c01b374d +0 -0
- data/test/dummy/tmp/cache/assets/D6A/400/sprockets%2F7797a681a0c8c541bad4febaa526920e +0 -0
- data/test/dummy/tmp/cache/assets/D6A/800/sprockets%2F9e3ba44ae81df1dc8c541a05e0239c79 +0 -0
- data/test/dummy/tmp/cache/assets/D6B/890/sprockets%2Fdacdb6e192b1709870319bbb0feb3669 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/DD0/sprockets%2Ffbfa79e06a10e3016c741fff74c5e652 +0 -0
- data/test/dummy/tmp/cache/assets/D6E/540/sprockets%2F1ec9a9013efe375e03b9ba538af9b515 +0 -0
- data/test/dummy/tmp/cache/assets/D70/D70/sprockets%2Fd7f6a9d69e31ff706e22c0b283b6a1e4 +0 -0
- data/test/dummy/tmp/cache/assets/D70/F70/sprockets%2Ff296c418125b7be0bc89c34eec50e82d +0 -0
- data/test/dummy/tmp/cache/assets/D71/6E0/sprockets%2F8c3e23061d8826cf63999adbe4a0d5ba +0 -0
- data/test/dummy/tmp/cache/assets/D73/3D0/sprockets%2Fbad4cc5e382119c131bd5947dd7c96e7 +0 -0
- data/test/dummy/tmp/cache/assets/D74/9D0/sprockets%2F1893ad2efa07114b729fd1f09ae97f4e +0 -0
- data/test/dummy/tmp/cache/assets/D74/EE0/sprockets%2Fe68a01853f554a88bb865bc94ba1bbd9 +0 -0
- data/test/dummy/tmp/cache/assets/D75/900/sprockets%2F857ad23ff231bc76bec12fd9a966538a +0 -0
- data/test/dummy/tmp/cache/assets/D76/060/sprockets%2Fd80d293a509fdecc872163f94b8fcc13 +0 -0
- data/test/dummy/tmp/cache/assets/D76/350/sprockets%2F66508d9698453a0ffabcf1368ca7a1fc +0 -0
- data/test/dummy/tmp/cache/assets/D79/820/sprockets%2F99bcacecd3fb76124a968b4b8341e729 +0 -0
- data/test/dummy/tmp/cache/assets/D7E/130/sprockets%2F1affef8c994fdc43ba85491b2724627f +0 -0
- data/test/dummy/tmp/cache/assets/D7E/C00/sprockets%2F8ed69e6fd77505a244caf6dde36822e3 +0 -0
- data/test/dummy/tmp/cache/assets/D80/7A0/sprockets%2F68e74ee988b46d128ff3020bc0e9c7fd +0 -0
- data/test/dummy/tmp/cache/assets/D82/800/sprockets%2F9f0d326f40e88f324ff3a367d9b3fc9f +0 -0
- data/test/dummy/tmp/cache/assets/D84/650/sprockets%2Fea05e644410721afbbd8fd1a3a7a1c08 +0 -0
- data/test/dummy/tmp/cache/assets/D89/3A0/sprockets%2F53ef2870ac0bb142a8322eee9adca207 +0 -0
- data/test/dummy/tmp/cache/assets/D8B/240/sprockets%2Faddf06da0d70aa150d16b97b6816d0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D8B/3B0/sprockets%2Fd0c134b0b275ea2f800380fcaebc95f5 +0 -0
- data/test/dummy/tmp/cache/assets/D8D/F70/sprockets%2F70d5fc5c803f7ba21c3a7374003bfcdd +0 -0
- data/test/dummy/tmp/cache/assets/D8F/B90/sprockets%2F5468bccabc20d4cf562bd110508df3d8 +0 -0
- data/test/dummy/tmp/cache/assets/D92/3B0/sprockets%2Fc03a95a4b2eb432d9f5ceda3fb082860 +0 -0
- data/test/dummy/tmp/cache/assets/D93/FE0/sprockets%2Fac1c5a644564a7fd2861539dbaf2a0fb +0 -0
- data/test/dummy/tmp/cache/assets/D95/500/sprockets%2Fa3c0fdf5260f72d128f7cbb2a64fd408 +0 -0
- data/test/dummy/tmp/cache/assets/D97/2E0/sprockets%2F93c35b873a3c8ea35f1628e1ad2deb2b +0 -0
- data/test/dummy/tmp/cache/assets/D97/4A0/sprockets%2F2fae66f8ad04be7ce8109005c735acf1 +0 -0
- data/test/dummy/tmp/cache/assets/D98/E90/sprockets%2F04cdcb52b072efd49452f2cde9721fb4 +0 -0
- data/test/dummy/tmp/cache/assets/D9C/E90/sprockets%2F7d2da4bd8ee5b4ff754581d41806aba2 +0 -0
- data/test/dummy/tmp/cache/assets/DA0/2C0/sprockets%2F61c0dfd9a973f9891cd3d6b322bc33ea +0 -0
- data/test/dummy/tmp/cache/assets/DA0/C70/sprockets%2Ff29a718bce262c8d86f3abe9443b41cb +0 -0
- data/test/dummy/tmp/cache/assets/DA3/A00/sprockets%2F7e7df285dbb4694a5f1583fba12ab84d +0 -0
- data/test/dummy/tmp/cache/assets/DA3/EC0/sprockets%2F159d528ec53e415cbc9d29be3a2b96fb +0 -0
- data/test/dummy/tmp/cache/assets/DA5/170/sprockets%2F6a564a0e1afd718a07d87f069bc48dff +0 -0
- data/test/dummy/tmp/cache/assets/DA6/730/sprockets%2F5758d9d4ad2c22c9ffd113a78f6d36bb +0 -0
- data/test/dummy/tmp/cache/assets/DA7/6F0/sprockets%2F3e39ce593cda9b3bce9c3c8e014829b5 +0 -0
- data/test/dummy/tmp/cache/assets/DA9/0B0/sprockets%2F66e39ce1e6e7adc58cb01550fe58c93d +0 -0
- data/test/dummy/tmp/cache/assets/DAD/9D0/sprockets%2Fc99ec7c84f8f79200eda8424c6bda6e1 +0 -0
- data/test/dummy/tmp/cache/assets/DAE/B70/sprockets%2F278f525bc64f4ead949d9dfa1f1a37c8 +0 -0
- data/test/dummy/tmp/cache/assets/DB3/740/sprockets%2F3fc2be88f7fa50a9992fe961ffc50a83 +0 -0
- data/test/dummy/tmp/cache/assets/DB3/770/sprockets%2F47998ff4ce9a2b5383b95bd54ded3c3d +0 -0
- data/test/dummy/tmp/cache/assets/DB6/6C0/sprockets%2Fe710d8fbf4ca41d29a742b22a21a0fec +0 -0
- data/test/dummy/tmp/cache/assets/DBC/330/sprockets%2Ffc79d797d11878bc435b668cdfbc94cf +0 -0
- data/test/dummy/tmp/cache/assets/DBF/270/sprockets%2F820ebc60d1be685f4044d1cb8cabdd17 +0 -0
- data/test/dummy/tmp/cache/assets/DBF/E80/sprockets%2F41d82531e91fc1ca0c806beacf0cfc84 +0 -0
- data/test/dummy/tmp/cache/assets/DC1/E40/sprockets%2F57aebd4c69abf9331b4770bd3ced100d +0 -0
- data/test/dummy/tmp/cache/assets/DC1/FD0/sprockets%2Ff97fb61e211912bbc1eaed82c4ad740c +0 -0
- data/test/dummy/tmp/cache/assets/DC2/250/sprockets%2Ffddac1268ff054c12ea32cc6619c46ac +0 -0
- data/test/dummy/tmp/cache/assets/DC2/5F0/sprockets%2F68dc2f8cab31bbd8ab65220c685eb15b +0 -0
- data/test/dummy/tmp/cache/assets/DC3/7C0/sprockets%2Fa78b7c0aa57b250e05d5ad1e56ac9ed5 +0 -0
- data/test/dummy/tmp/cache/assets/DC9/330/sprockets%2Fc5fe138ffe1adb009a407c172fcb9b49 +0 -0
- data/test/dummy/tmp/cache/assets/DCC/F10/sprockets%2F4fb860d9bb2c56165fae6ecc193bd1f2 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/0E0/sprockets%2Fc1845aeaffa0d9c887108b5cf1a77dc2 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/920/sprockets%2F5208ac969dfa6f4dd531ef2d2afb454b +0 -0
- data/test/dummy/tmp/cache/assets/DCE/950/sprockets%2F2d0d1caef1b638f88de704d1eb07be88 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/9C0/sprockets%2Fc6b7fd0b623a5b66692ed21dafe5ee18 +0 -0
- data/test/dummy/tmp/cache/assets/DD2/190/sprockets%2F3662cdc2f2f551c51ec9bddb9177deb7 +0 -0
- data/test/dummy/tmp/cache/assets/DD2/C80/sprockets%2Fe94b85ec5d4eeb0616972dd03cadf06f +0 -0
- data/test/dummy/tmp/cache/assets/DD3/B30/sprockets%2Ff1eab781d903ebdf7d9379cca92533ba +0 -0
- data/test/dummy/tmp/cache/assets/DD5/8F0/sprockets%2F4bfcc6fffb235da87a162efc721985e2 +0 -0
- data/test/dummy/tmp/cache/assets/DD6/8B0/sprockets%2F8ab6728b7ab04dbec482fe5fb7ef8604 +0 -0
- data/test/dummy/tmp/cache/assets/DD6/E50/sprockets%2F1ce8c04cfee001955cf5fd9ed7d59a52 +0 -0
- data/test/dummy/tmp/cache/assets/DD9/D30/sprockets%2F9abfa5c86dbf28fd7be89b650c3d5225 +0 -0
- data/test/dummy/tmp/cache/assets/DE7/E30/sprockets%2F18bca0215ecdc63ba01a2ee5cd7c34f8 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/C20/sprockets%2Fc91409dc1b447ba1beaa0be9b33ef14d +0 -0
- data/test/dummy/tmp/cache/assets/DED/270/sprockets%2Fdee70d8becb01a00e2d7420c6a646dff +0 -0
- data/test/dummy/tmp/cache/assets/DF4/2D0/sprockets%2Ffd83bba93ef8ca1a70c63ee4b625a6b0 +0 -0
- data/test/dummy/tmp/cache/assets/DF8/E50/sprockets%2Fbb1bdc05e895b8c08cb6ca4491ed51cf +0 -0
- data/test/dummy/tmp/cache/assets/DFB/EC0/sprockets%2F94ccf06d9a630eaa4a9865d7e74aaaba +0 -0
- data/test/dummy/tmp/cache/assets/DFC/FC0/sprockets%2Fd8badee5b41f9328df1d3fe153eef401 +0 -0
- data/test/dummy/tmp/cache/assets/DFD/F30/sprockets%2Fd60da4793bab6bff313a6bfc25985dfb +0 -0
- data/test/dummy/tmp/cache/assets/DFE/230/sprockets%2Fd260ce7fb8bf41f914b57c0dde9b0af6 +0 -0
- data/test/dummy/tmp/cache/assets/DFE/2E0/sprockets%2F813f277df6cd78babbdb7f5c34f3ab05 +0 -0
- data/test/dummy/tmp/cache/assets/DFE/E50/sprockets%2F59b3e0cbbf99e92737aab0bcfc205f5f +0 -0
- data/test/dummy/tmp/cache/assets/DFF/9F0/sprockets%2Fb4677ae08ff6f9edaf3b2bcbb115a963 +0 -0
- data/test/dummy/tmp/cache/assets/E05/480/sprockets%2F789f3eb9b0ee9d3fb684066acaebd4a1 +0 -0
- data/test/dummy/tmp/cache/assets/E08/8A0/sprockets%2F3cb6916a9933fdfd43d6defe3e4a6d1d +0 -0
- data/test/dummy/tmp/cache/assets/E09/A00/sprockets%2F77913b88dec083cedb3875beae2efd5a +0 -0
- data/test/dummy/tmp/cache/assets/E16/E60/sprockets%2Ffe5e3c5af908e8cc7ff70976fdc14db7 +0 -0
- data/test/dummy/tmp/cache/assets/E28/B70/sprockets%2Fb2fa75ae01dda6654abd60c78c8bf5cf +0 -0
- data/test/dummy/tmp/cache/assets/E30/8A0/sprockets%2F5d3fccefabad47a78655a5c92adb3c76 +0 -0
- data/test/dummy/tmp/cache/assets/E36/9F0/sprockets%2Fb2bdf95afd8ecf06ce9b8407a2f9b1b8 +0 -0
- data/test/dummy/tmp/cache/assets/E3E/C60/sprockets%2F8b3bfb5dbc23d849d4f2fc6dd7fe45d9 +0 -0
- data/test/dummy/tmp/cache/assets/E3F/B10/sprockets%2F7b1af74e67b27fff762f3cdfebe5f4a7 +0 -0
- data/test/dummy/tmp/cache/assets/E50/740/sprockets%2F0578ebbffb5c27d00cc86b1dd7b1eada +0 -0
- data/test/dummy/tmp/cache/assets/E50/9F0/sprockets%2Fddfa62aba6a56ed6ab5e44ae36b175ad +0 -0
- data/test/dummy/tmp/cache/assets/E5D/160/sprockets%2F44a9be8a9b567fceec2bdc4ab074bbb9 +0 -0
- data/test/dummy/tmp/cache/assets/E61/FB0/sprockets%2F97c2b65cafddc7ac59ae4a5e2a18afe8 +0 -0
- data/test/dummy/tmp/cache/assets/E73/680/sprockets%2F1a4d0b08b6fdbacbfe0d1cb7df5db251 +0 -0
- data/test/dummy/tmp/cache/assets/ED1/C10/sprockets%2Fa9a13ad3bb3a6ccbb6faac3fac0b6c8e +0 -0
- data/test/dummy/tmp/cache/assets/EF0/E30/sprockets%2F3ac422b66adec6cffa8edecf9bdea48d +0 -0
- data/test/dummy/tmp/pids/server.pid +1 -1
- metadata +33 -15
- data/app/assets/javascripts/Core/AnimationController.js +0 -148
- data/app/assets/javascripts/Scene/ImageryProviderError.js +0 -149
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +0 -1
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +0 -47
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +0 -24
@@ -5,15 +5,19 @@ define(function() {
|
|
5
5
|
return "uniform vec4 lightColor;\n\
|
6
6
|
uniform vec4 darkColor;\n\
|
7
7
|
uniform float frequency;\n\
|
8
|
+
\n\
|
8
9
|
czm_material czm_getMaterial(czm_materialInput materialInput)\n\
|
9
10
|
{\n\
|
10
|
-
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
12
|
+
\n\
|
13
|
+
vec3 scaled = materialInput.str * frequency;\n\
|
14
|
+
float t = abs(czm_snoise(scaled));\n\
|
15
|
+
\n\
|
16
|
+
vec4 color = mix(lightColor, darkColor, t);\n\
|
17
|
+
material.diffuse = color.rgb;\n\
|
18
|
+
material.alpha = color.a;\n\
|
19
|
+
\n\
|
20
|
+
return material;\n\
|
17
21
|
}\n\
|
18
22
|
";
|
19
23
|
});
|
@@ -2,7 +2,10 @@
|
|
2
2
|
/*global define*/
|
3
3
|
define(function() {
|
4
4
|
"use strict";
|
5
|
-
return "
|
5
|
+
return "// Thanks for the contribution Jonas\n\
|
6
|
+
// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog\n\
|
7
|
+
\n\
|
8
|
+
uniform sampler2D specularMap;\n\
|
6
9
|
uniform sampler2D normalMap;\n\
|
7
10
|
uniform vec4 baseWaterColor;\n\
|
8
11
|
uniform vec4 blendColor;\n\
|
@@ -11,50 +14,48 @@ uniform float animationSpeed;\n\
|
|
11
14
|
uniform float amplitude;\n\
|
12
15
|
uniform float specularIntensity;\n\
|
13
16
|
uniform float fadeFactor;\n\
|
14
|
-
|
15
|
-
float cosAngle = cos(angleInRadians);\n\
|
16
|
-
float sinAngle = sin(angleInRadians);\n\
|
17
|
-
vec2 s0 = vec2(1.0/17.0, 0.0);\n\
|
18
|
-
vec2 s1 = vec2(-1.0/29.0, 0.0);\n\
|
19
|
-
vec2 s2 = vec2(1.0/101.0, 1.0/59.0);\n\
|
20
|
-
vec2 s3 = vec2(-1.0/109.0, -1.0/57.0);\n\
|
21
|
-
s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y));\n\
|
22
|
-
s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y));\n\
|
23
|
-
s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y));\n\
|
24
|
-
s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y));\n\
|
25
|
-
vec2 uv0 = (uv/103.0) + (time * s0);\n\
|
26
|
-
vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23);\n\
|
27
|
-
vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51);\n\
|
28
|
-
vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71);\n\
|
29
|
-
uv0 = fract(uv0);\n\
|
30
|
-
uv1 = fract(uv1);\n\
|
31
|
-
uv2 = fract(uv2);\n\
|
32
|
-
uv3 = fract(uv3);\n\
|
33
|
-
vec4 noise = (texture2D(normalMap, uv0)) +\n\
|
34
|
-
(texture2D(normalMap, uv1)) +\n\
|
35
|
-
(texture2D(normalMap, uv2)) +\n\
|
36
|
-
(texture2D(normalMap, uv3));\n\
|
37
|
-
return ((noise / 4.0) - 0.5) * 2.0;\n\
|
38
|
-
}\n\
|
17
|
+
\n\
|
39
18
|
czm_material czm_getMaterial(czm_materialInput materialInput)\n\
|
40
19
|
{\n\
|
41
|
-
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
42
|
-
|
43
|
-
float
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
20
|
+
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
21
|
+
\n\
|
22
|
+
float time = czm_frameNumber * animationSpeed;\n\
|
23
|
+
\n\
|
24
|
+
// fade is a function of the distance from the fragment and the frequency of the waves\n\
|
25
|
+
float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor);\n\
|
26
|
+
\n\
|
27
|
+
float specularMapValue = texture2D(specularMap, materialInput.st).r;\n\
|
28
|
+
\n\
|
29
|
+
// note: not using directional motion at this time, just set the angle to 0.0;\n\
|
30
|
+
vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0);\n\
|
31
|
+
vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude));\n\
|
32
|
+
\n\
|
33
|
+
// fade out the normal perturbation as we move further from the water surface\n\
|
34
|
+
normalTangentSpace.xy /= fade;\n\
|
35
|
+
\n\
|
36
|
+
// attempt to fade out the normal perturbation as we approach non water areas (low specular map value)\n\
|
37
|
+
normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue);\n\
|
38
|
+
\n\
|
39
|
+
normalTangentSpace = normalize(normalTangentSpace);\n\
|
40
|
+
\n\
|
41
|
+
// get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane\n\
|
42
|
+
float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0);\n\
|
43
|
+
\n\
|
44
|
+
// fade out water effect as specular map value decreases\n\
|
45
|
+
material.alpha = specularMapValue;\n\
|
46
|
+
\n\
|
47
|
+
// base color is a blend of the water and non-water color based on the value from the specular map\n\
|
48
|
+
// may need a uniform blend factor to better control this\n\
|
49
|
+
material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue);\n\
|
50
|
+
\n\
|
51
|
+
// diffuse highlights are based on how perturbed the normal is\n\
|
52
|
+
material.diffuse += (0.1 * tsPerturbationRatio);\n\
|
53
|
+
\n\
|
54
|
+
material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace);\n\
|
55
|
+
\n\
|
56
|
+
material.specular = specularIntensity;\n\
|
57
|
+
material.shininess = 10.0;\n\
|
58
|
+
\n\
|
59
|
+
return material;\n\
|
60
|
+
}";
|
60
61
|
});
|
@@ -7,25 +7,35 @@ uniform vec4 darkWoodColor;\n\
|
|
7
7
|
uniform float ringFrequency;\n\
|
8
8
|
uniform vec2 noiseScale;\n\
|
9
9
|
uniform float grainFrequency;\n\
|
10
|
+
\n\
|
10
11
|
czm_material czm_getMaterial(czm_materialInput materialInput)\n\
|
11
12
|
{\n\
|
12
|
-
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
vec2
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
13
|
+
czm_material material = czm_getDefaultMaterial(materialInput);\n\
|
14
|
+
\n\
|
15
|
+
//Based on wood shader from OpenGL Shading Language (3rd edition) pg. 455\n\
|
16
|
+
vec2 st = materialInput.st;\n\
|
17
|
+
\n\
|
18
|
+
vec2 noisevec;\n\
|
19
|
+
noisevec.x = czm_snoise(st * noiseScale.x);\n\
|
20
|
+
noisevec.y = czm_snoise(st * noiseScale.y);\n\
|
21
|
+
\n\
|
22
|
+
vec2 location = st + noisevec;\n\
|
23
|
+
float dist = sqrt(location.x * location.x + location.y * location.y);\n\
|
24
|
+
dist *= ringFrequency;\n\
|
25
|
+
\n\
|
26
|
+
float r = fract(dist + noisevec[0] + noisevec[1]) * 2.0;\n\
|
27
|
+
if(r > 1.0)\n\
|
28
|
+
r = 2.0 - r;\n\
|
29
|
+
\n\
|
30
|
+
vec4 color = mix(lightWoodColor, darkWoodColor, r);\n\
|
31
|
+
\n\
|
32
|
+
//streaks\n\
|
33
|
+
r = abs(czm_snoise(vec2(st.x * grainFrequency, st.y * grainFrequency * 0.02))) * 0.2;\n\
|
34
|
+
color.rgb += lightWoodColor.rgb * r;\n\
|
35
|
+
\n\
|
36
|
+
material.diffuse = color.rgb;\n\
|
37
|
+
material.alpha = color.a;\n\
|
38
|
+
\n\
|
39
|
+
return material;\n\
|
40
|
+
}";
|
31
41
|
});
|
@@ -22,221 +22,456 @@ define(function() {
|
|
22
22
|
"use strict";
|
23
23
|
return "#ifndef czm_NOISE\n\
|
24
24
|
#define czm_NOISE 1\n\
|
25
|
+
\n\
|
26
|
+
/**\n\
|
27
|
+
* @license\n\
|
28
|
+
* Description : Array and textureless GLSL 2D/3D/4D simplex \n\
|
29
|
+
* noise functions.\n\
|
30
|
+
* Author : Ian McEwan, Ashima Arts.\n\
|
31
|
+
* Maintainer : ijm\n\
|
32
|
+
* Lastmod : 20110822 (ijm)\n\
|
33
|
+
* License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n\
|
34
|
+
* Distributed under the MIT License. See LICENSE file.\n\
|
35
|
+
* https://github.com/ashima/webgl-noise\n\
|
36
|
+
*/ \n\
|
37
|
+
\n\
|
25
38
|
vec4 _czm_mod289(vec4 x)\n\
|
26
39
|
{\n\
|
27
|
-
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
40
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
28
41
|
}\n\
|
42
|
+
\n\
|
29
43
|
vec3 _czm_mod289(vec3 x)\n\
|
30
44
|
{\n\
|
31
|
-
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
45
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
32
46
|
}\n\
|
33
|
-
|
47
|
+
\n\
|
48
|
+
vec2 _czm_mod289(vec2 x) \n\
|
34
49
|
{\n\
|
35
|
-
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
50
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
36
51
|
}\n\
|
52
|
+
\n\
|
37
53
|
float _czm_mod289(float x)\n\
|
38
54
|
{\n\
|
39
|
-
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
55
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;\n\
|
40
56
|
}\n\
|
57
|
+
\n\
|
41
58
|
vec4 _czm_permute(vec4 x)\n\
|
42
59
|
{\n\
|
43
|
-
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
60
|
+
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
44
61
|
}\n\
|
62
|
+
\n\
|
45
63
|
vec3 _czm_permute(vec3 x)\n\
|
46
64
|
{\n\
|
47
|
-
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
65
|
+
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
48
66
|
}\n\
|
49
|
-
|
67
|
+
\n\
|
68
|
+
float _czm_permute(float x) \n\
|
50
69
|
{\n\
|
51
|
-
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
70
|
+
return _czm_mod289(((x*34.0)+1.0)*x);\n\
|
52
71
|
}\n\
|
72
|
+
\n\
|
53
73
|
vec4 _czm_taylorInvSqrt(vec4 r)\n\
|
54
74
|
{\n\
|
55
|
-
return 1.79284291400159 - 0.85373472095314 * r;\n\
|
75
|
+
return 1.79284291400159 - 0.85373472095314 * r;\n\
|
56
76
|
}\n\
|
77
|
+
\n\
|
57
78
|
float _czm_taylorInvSqrt(float r)\n\
|
58
79
|
{\n\
|
59
|
-
return 1.79284291400159 - 0.85373472095314 * r;\n\
|
80
|
+
return 1.79284291400159 - 0.85373472095314 * r;\n\
|
60
81
|
}\n\
|
82
|
+
\n\
|
61
83
|
vec4 _czm_grad4(float j, vec4 ip)\n\
|
62
84
|
{\n\
|
63
|
-
const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n\
|
64
|
-
vec4 p,s;\n\
|
65
|
-
|
66
|
-
p.
|
67
|
-
|
68
|
-
|
69
|
-
|
85
|
+
const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n\
|
86
|
+
vec4 p,s;\n\
|
87
|
+
\n\
|
88
|
+
p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n\
|
89
|
+
p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n\
|
90
|
+
s = vec4(lessThan(p, vec4(0.0)));\n\
|
91
|
+
p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www; \n\
|
92
|
+
\n\
|
93
|
+
return p;\n\
|
70
94
|
}\n\
|
95
|
+
\n\
|
96
|
+
/**\n\
|
97
|
+
* DOC_TBA\n\
|
98
|
+
*\n\
|
99
|
+
* Implemented by Ian McEwan, Ashima Arts, and distributed under the MIT License. {@link https://github.com/ashima/webgl-noise}\n\
|
100
|
+
*\n\
|
101
|
+
* @name czm_snoise\n\
|
102
|
+
* @glslFunction\n\
|
103
|
+
*\n\
|
104
|
+
* @see <a href=\"https://github.com/ashima/webgl-noise\">https://github.com/ashima/webgl-noise</a>\n\
|
105
|
+
* @see Stefan Gustavson's paper <a href=\"http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\">Simplex noise demystified</a>\n\
|
106
|
+
*/ \n\
|
71
107
|
float czm_snoise(vec2 v)\n\
|
72
108
|
{\n\
|
73
|
-
const vec4 C = vec4(0.211324865405187
|
74
|
-
0.366025403784439
|
75
|
-
-0.577350269189626
|
76
|
-
0.024390243902439)
|
77
|
-
|
78
|
-
vec2
|
79
|
-
vec2
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
109
|
+
const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n\
|
110
|
+
0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n\
|
111
|
+
-0.577350269189626, // -1.0 + 2.0 * C.x\n\
|
112
|
+
0.024390243902439); // 1.0 / 41.0\n\
|
113
|
+
// First corner\n\
|
114
|
+
vec2 i = floor(v + dot(v, C.yy) );\n\
|
115
|
+
vec2 x0 = v - i + dot(i, C.xx);\n\
|
116
|
+
\n\
|
117
|
+
// Other corners\n\
|
118
|
+
vec2 i1;\n\
|
119
|
+
//i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0\n\
|
120
|
+
//i1.y = 1.0 - i1.x;\n\
|
121
|
+
i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n\
|
122
|
+
// x0 = x0 - 0.0 + 0.0 * C.xx ;\n\
|
123
|
+
// x1 = x0 - i1 + 1.0 * C.xx ;\n\
|
124
|
+
// x2 = x0 - 1.0 + 2.0 * C.xx ;\n\
|
125
|
+
vec4 x12 = x0.xyxy + C.xxzz;\n\
|
126
|
+
x12.xy -= i1;\n\
|
127
|
+
\n\
|
128
|
+
// Permutations\n\
|
129
|
+
i = _czm_mod289(i); // Avoid truncation effects in permutation\n\
|
130
|
+
vec3 p = _czm_permute( _czm_permute( i.y + vec3(0.0, i1.y, 1.0 )) + i.x + vec3(0.0, i1.x, 1.0 ));\n\
|
131
|
+
\n\
|
132
|
+
vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n\
|
133
|
+
m = m*m ;\n\
|
134
|
+
m = m*m ;\n\
|
135
|
+
\n\
|
136
|
+
// Gradients: 41 points uniformly over a line, mapped onto a diamond.\n\
|
137
|
+
// The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\
|
138
|
+
vec3 x = 2.0 * fract(p * C.www) - 1.0;\n\
|
139
|
+
vec3 h = abs(x) - 0.5;\n\
|
140
|
+
vec3 ox = floor(x + 0.5);\n\
|
141
|
+
vec3 a0 = x - ox;\n\
|
142
|
+
\n\
|
143
|
+
// Normalise gradients implicitly by scaling m\n\
|
144
|
+
// Approximation of: m *= inversesqrt( a0*a0 + h*h );\n\
|
145
|
+
m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\
|
146
|
+
\n\
|
147
|
+
// Compute final noise value at P\n\
|
148
|
+
vec3 g;\n\
|
149
|
+
g.x = a0.x * x0.x + h.x * x0.y;\n\
|
150
|
+
g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n\
|
151
|
+
return 130.0 * dot(m, g);\n\
|
97
152
|
}\n\
|
153
|
+
\n\
|
98
154
|
float czm_snoise(vec3 v)\n\
|
99
|
-
{\n\
|
100
|
-
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n\
|
101
|
-
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\
|
102
|
-
|
103
|
-
|
104
|
-
vec3
|
105
|
-
vec3
|
106
|
-
|
107
|
-
|
108
|
-
vec3
|
109
|
-
vec3
|
110
|
-
vec3
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
vec3
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
vec4
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
vec3
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
vec4
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
vec4
|
141
|
-
|
142
|
-
|
143
|
-
|
155
|
+
{ \n\
|
156
|
+
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n\
|
157
|
+
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\
|
158
|
+
\n\
|
159
|
+
// First corner\n\
|
160
|
+
vec3 i = floor(v + dot(v, C.yyy) );\n\
|
161
|
+
vec3 x0 = v - i + dot(i, C.xxx) ;\n\
|
162
|
+
\n\
|
163
|
+
// Other corners\n\
|
164
|
+
vec3 g = step(x0.yzx, x0.xyz);\n\
|
165
|
+
vec3 l = 1.0 - g;\n\
|
166
|
+
vec3 i1 = min( g.xyz, l.zxy );\n\
|
167
|
+
vec3 i2 = max( g.xyz, l.zxy );\n\
|
168
|
+
\n\
|
169
|
+
// x0 = x0 - 0.0 + 0.0 * C.xxx;\n\
|
170
|
+
// x1 = x0 - i1 + 1.0 * C.xxx;\n\
|
171
|
+
// x2 = x0 - i2 + 2.0 * C.xxx;\n\
|
172
|
+
// x3 = x0 - 1.0 + 3.0 * C.xxx;\n\
|
173
|
+
vec3 x1 = x0 - i1 + C.xxx;\n\
|
174
|
+
vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n\
|
175
|
+
vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\
|
176
|
+
\n\
|
177
|
+
// Permutations\n\
|
178
|
+
i = _czm_mod289(i); \n\
|
179
|
+
vec4 p = _czm_permute( _czm_permute( _czm_permute( \n\
|
180
|
+
i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n\
|
181
|
+
+ i.y + vec4(0.0, i1.y, i2.y, 1.0 )) \n\
|
182
|
+
+ i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\
|
183
|
+
\n\
|
184
|
+
// Gradients: 7x7 points over a square, mapped onto an octahedron.\n\
|
185
|
+
// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n\
|
186
|
+
float n_ = 0.142857142857; // 1.0/7.0\n\
|
187
|
+
vec3 ns = n_ * D.wyz - D.xzx;\n\
|
188
|
+
\n\
|
189
|
+
vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\
|
190
|
+
\n\
|
191
|
+
vec4 x_ = floor(j * ns.z);\n\
|
192
|
+
vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\
|
193
|
+
\n\
|
194
|
+
vec4 x = x_ *ns.x + ns.yyyy;\n\
|
195
|
+
vec4 y = y_ *ns.x + ns.yyyy;\n\
|
196
|
+
vec4 h = 1.0 - abs(x) - abs(y);\n\
|
197
|
+
\n\
|
198
|
+
vec4 b0 = vec4( x.xy, y.xy );\n\
|
199
|
+
vec4 b1 = vec4( x.zw, y.zw );\n\
|
200
|
+
\n\
|
201
|
+
//vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n\
|
202
|
+
//vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n\
|
203
|
+
vec4 s0 = floor(b0)*2.0 + 1.0;\n\
|
204
|
+
vec4 s1 = floor(b1)*2.0 + 1.0;\n\
|
205
|
+
vec4 sh = -step(h, vec4(0.0));\n\
|
206
|
+
\n\
|
207
|
+
vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n\
|
208
|
+
vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\
|
209
|
+
\n\
|
210
|
+
vec3 p0 = vec3(a0.xy,h.x);\n\
|
211
|
+
vec3 p1 = vec3(a0.zw,h.y);\n\
|
212
|
+
vec3 p2 = vec3(a1.xy,h.z);\n\
|
213
|
+
vec3 p3 = vec3(a1.zw,h.w);\n\
|
214
|
+
\n\
|
215
|
+
//Normalise gradients\n\
|
216
|
+
vec4 norm = _czm_taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n\
|
217
|
+
p0 *= norm.x;\n\
|
218
|
+
p1 *= norm.y;\n\
|
219
|
+
p2 *= norm.z;\n\
|
220
|
+
p3 *= norm.w;\n\
|
221
|
+
\n\
|
222
|
+
// Mix final noise value\n\
|
223
|
+
vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n\
|
224
|
+
m = m * m;\n\
|
225
|
+
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), \n\
|
226
|
+
dot(p2,x2), dot(p3,x3) ) );\n\
|
144
227
|
}\n\
|
228
|
+
\n\
|
145
229
|
float czm_snoise(vec4 v)\n\
|
146
230
|
{\n\
|
147
|
-
const vec4 C = vec4( 0.138196601125011
|
148
|
-
0.276393202250021
|
149
|
-
0.414589803375032
|
150
|
-
-0.447213595499958)
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
i0
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
vec4
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
+
|
231
|
+
const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n\
|
232
|
+
0.276393202250021, // 2 * G4\n\
|
233
|
+
0.414589803375032, // 3 * G4\n\
|
234
|
+
-0.447213595499958); // -1 + 4 * G4\n\
|
235
|
+
\n\
|
236
|
+
// (sqrt(5) - 1)/4 = F4, used once below\n\
|
237
|
+
#define F4 0.309016994374947451\n\
|
238
|
+
\n\
|
239
|
+
// First corner\n\
|
240
|
+
vec4 i = floor(v + dot(v, vec4(F4)) );\n\
|
241
|
+
vec4 x0 = v - i + dot(i, C.xxxx);\n\
|
242
|
+
\n\
|
243
|
+
// Other corners\n\
|
244
|
+
\n\
|
245
|
+
// Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n\
|
246
|
+
vec4 i0;\n\
|
247
|
+
vec3 isX = step( x0.yzw, x0.xxx );\n\
|
248
|
+
vec3 isYZ = step( x0.zww, x0.yyz );\n\
|
249
|
+
// i0.x = dot( isX, vec3( 1.0 ) );\n\
|
250
|
+
i0.x = isX.x + isX.y + isX.z;\n\
|
251
|
+
i0.yzw = 1.0 - isX;\n\
|
252
|
+
// i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n\
|
253
|
+
i0.y += isYZ.x + isYZ.y;\n\
|
254
|
+
i0.zw += 1.0 - isYZ.xy;\n\
|
255
|
+
i0.z += isYZ.z;\n\
|
256
|
+
i0.w += 1.0 - isYZ.z;\n\
|
257
|
+
\n\
|
258
|
+
// i0 now contains the unique values 0,1,2,3 in each channel\n\
|
259
|
+
vec4 i3 = clamp( i0, 0.0, 1.0 );\n\
|
260
|
+
vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n\
|
261
|
+
vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\
|
262
|
+
\n\
|
263
|
+
// x0 = x0 - 0.0 + 0.0 * C.xxxx\n\
|
264
|
+
// x1 = x0 - i1 + 1.0 * C.xxxx\n\
|
265
|
+
// x2 = x0 - i2 + 2.0 * C.xxxx\n\
|
266
|
+
// x3 = x0 - i3 + 3.0 * C.xxxx\n\
|
267
|
+
// x4 = x0 - 1.0 + 4.0 * C.xxxx\n\
|
268
|
+
vec4 x1 = x0 - i1 + C.xxxx;\n\
|
269
|
+
vec4 x2 = x0 - i2 + C.yyyy;\n\
|
270
|
+
vec4 x3 = x0 - i3 + C.zzzz;\n\
|
271
|
+
vec4 x4 = x0 + C.wwww;\n\
|
272
|
+
\n\
|
273
|
+
// Permutations\n\
|
274
|
+
i = _czm_mod289(i); \n\
|
275
|
+
float j0 = _czm_permute( _czm_permute( _czm_permute( _czm_permute(i.w) + i.z) + i.y) + i.x);\n\
|
276
|
+
vec4 j1 = _czm_permute( _czm_permute( _czm_permute( _czm_permute (\n\
|
277
|
+
i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n\
|
278
|
+
+ i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n\
|
279
|
+
+ i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n\
|
280
|
+
+ i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\
|
281
|
+
\n\
|
282
|
+
// Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n\
|
283
|
+
// 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n\
|
284
|
+
vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\
|
285
|
+
\n\
|
286
|
+
vec4 p0 = _czm_grad4(j0, ip);\n\
|
287
|
+
vec4 p1 = _czm_grad4(j1.x, ip);\n\
|
288
|
+
vec4 p2 = _czm_grad4(j1.y, ip);\n\
|
289
|
+
vec4 p3 = _czm_grad4(j1.z, ip);\n\
|
290
|
+
vec4 p4 = _czm_grad4(j1.w, ip);\n\
|
291
|
+
\n\
|
292
|
+
// Normalise gradients\n\
|
293
|
+
vec4 norm = _czm_taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n\
|
294
|
+
p0 *= norm.x;\n\
|
295
|
+
p1 *= norm.y;\n\
|
296
|
+
p2 *= norm.z;\n\
|
297
|
+
p3 *= norm.w;\n\
|
298
|
+
p4 *= _czm_taylorInvSqrt(dot(p4,p4));\n\
|
299
|
+
\n\
|
300
|
+
// Mix contributions from the five corners\n\
|
301
|
+
vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n\
|
302
|
+
vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n\
|
303
|
+
m0 = m0 * m0;\n\
|
304
|
+
m1 = m1 * m1;\n\
|
305
|
+
return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n\
|
306
|
+
+ dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\
|
195
307
|
}\n\
|
308
|
+
\n\
|
309
|
+
///////////////////////////////////////////////////////////////////////////////\n\
|
310
|
+
\n\
|
311
|
+
/**\n\
|
312
|
+
* @license\n\
|
313
|
+
* Cellular noise (\"Worley noise\") in 2D in GLSL.\n\
|
314
|
+
* Copyright (c) Stefan Gustavson 2011-04-19. All rights reserved.\n\
|
315
|
+
* This code is released under the conditions of the MIT license.\n\
|
316
|
+
* See LICENSE file for details.\n\
|
317
|
+
*/\n\
|
318
|
+
\n\
|
319
|
+
//#ifdef GL_OES_standard_derivatives\n\
|
320
|
+
// #extension GL_OES_standard_derivatives : enable\n\
|
321
|
+
//#endif \n\
|
322
|
+
//\n\
|
323
|
+
//float aastep (float threshold , float value)\n\
|
324
|
+
//{\n\
|
325
|
+
// float afwidth = 0.7 * length ( vec2 ( dFdx ( value ), dFdy ( value )));\n\
|
326
|
+
// return smoothstep ( threshold - afwidth , threshold + afwidth , value );\n\
|
327
|
+
//}\n\
|
328
|
+
\n\
|
329
|
+
// Permutation polynomial: (34x^2 + x) mod 289\n\
|
196
330
|
vec3 _czm_permute289(vec3 x)\n\
|
197
331
|
{\n\
|
198
|
-
return mod((34.0 * x + 1.0) * x, 289.0);\n\
|
332
|
+
return mod((34.0 * x + 1.0) * x, 289.0);\n\
|
199
333
|
}\n\
|
334
|
+
\n\
|
335
|
+
/**\n\
|
336
|
+
* DOC_TBA\n\
|
337
|
+
*\n\
|
338
|
+
* Implemented by Stefan Gustavson, and distributed under the MIT License. {@link http://openglinsights.git.sourceforge.net/git/gitweb.cgi?p=openglinsights/openglinsights;a=tree;f=proceduraltextures}\n\
|
339
|
+
*\n\
|
340
|
+
* @name czm_cellular\n\
|
341
|
+
* @glslFunction\n\
|
342
|
+
*\n\
|
343
|
+
* @see Stefan Gustavson's chapter, <i>Procedural Textures in GLSL</i>, in <a href=\"http://www.openglinsights.com/\">OpenGL Insights</a>.\n\
|
344
|
+
*/ \n\
|
200
345
|
vec2 czm_cellular(vec2 P)\n\
|
346
|
+
// Cellular noise, returning F1 and F2 in a vec2.\n\
|
347
|
+
// Standard 3x3 search window for good F1 and F2 values\n\
|
348
|
+
{\n\
|
349
|
+
#define K 0.142857142857 // 1/7\n\
|
350
|
+
#define Ko 0.428571428571 // 3/7\n\
|
351
|
+
#define jitter 1.0 // Less gives more regular pattern\n\
|
352
|
+
vec2 Pi = mod(floor(P), 289.0);\n\
|
353
|
+
vec2 Pf = fract(P);\n\
|
354
|
+
vec3 oi = vec3(-1.0, 0.0, 1.0);\n\
|
355
|
+
vec3 of = vec3(-0.5, 0.5, 1.5);\n\
|
356
|
+
vec3 px = _czm_permute289(Pi.x + oi);\n\
|
357
|
+
vec3 p = _czm_permute289(px.x + Pi.y + oi); // p11, p12, p13\n\
|
358
|
+
vec3 ox = fract(p*K) - Ko;\n\
|
359
|
+
vec3 oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
360
|
+
vec3 dx = Pf.x + 0.5 + jitter*ox;\n\
|
361
|
+
vec3 dy = Pf.y - of + jitter*oy;\n\
|
362
|
+
vec3 d1 = dx * dx + dy * dy; // d11, d12 and d13, squared\n\
|
363
|
+
p = _czm_permute289(px.y + Pi.y + oi); // p21, p22, p23\n\
|
364
|
+
ox = fract(p*K) - Ko;\n\
|
365
|
+
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
366
|
+
dx = Pf.x - 0.5 + jitter*ox;\n\
|
367
|
+
dy = Pf.y - of + jitter*oy;\n\
|
368
|
+
vec3 d2 = dx * dx + dy * dy; // d21, d22 and d23, squared\n\
|
369
|
+
p = _czm_permute289(px.z + Pi.y + oi); // p31, p32, p33\n\
|
370
|
+
ox = fract(p*K) - Ko;\n\
|
371
|
+
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
372
|
+
dx = Pf.x - 1.5 + jitter*ox;\n\
|
373
|
+
dy = Pf.y - of + jitter*oy;\n\
|
374
|
+
vec3 d3 = dx * dx + dy * dy; // d31, d32 and d33, squared\n\
|
375
|
+
// Sort out the two smallest distances (F1, F2)\n\
|
376
|
+
vec3 d1a = min(d1, d2);\n\
|
377
|
+
d2 = max(d1, d2); // Swap to keep candidates for F2\n\
|
378
|
+
d2 = min(d2, d3); // neither F1 nor F2 are now in d3\n\
|
379
|
+
d1 = min(d1a, d2); // F1 is now in d1\n\
|
380
|
+
d2 = max(d1a, d2); // Swap to keep candidates for F2\n\
|
381
|
+
d1.xy = (d1.x < d1.y) ? d1.xy : d1.yx; // Swap if smaller\n\
|
382
|
+
d1.xz = (d1.x < d1.z) ? d1.xz : d1.zx; // F1 is in d1.x\n\
|
383
|
+
d1.yz = min(d1.yz, d2.yz); // F2 is now not in d2.yz\n\
|
384
|
+
d1.y = min(d1.y, d1.z); // nor in d1.z\n\
|
385
|
+
d1.y = min(d1.y, d2.x); // F2 is in d1.y, we're done.\n\
|
386
|
+
return sqrt(d1.xy);\n\
|
387
|
+
}\n\
|
388
|
+
\n\
|
389
|
+
/*\n\
|
390
|
+
\n\
|
391
|
+
// Cellular noise, returning F1 and F2 in a vec2 and the\n\
|
392
|
+
// 2D vectors to each of the two closest points in a vec4.\n\
|
393
|
+
// Standard 3x3 search window for good F1 and F2 values.\n\
|
394
|
+
void czm_cellular(in vec2 P, out vec2 F, out vec4 d1d2)\n\
|
201
395
|
{\n\
|
202
|
-
#define K 0.142857142857\n\
|
203
|
-
#define Ko 0.428571428571\n\
|
204
|
-
#define jitter 1.0\n\
|
205
|
-
vec2 Pi = mod(floor(P), 289.0);\n\
|
206
|
-
vec2 Pf = fract(P);\n\
|
207
|
-
vec3 oi = vec3(-1.0, 0.0, 1.0);\n\
|
208
|
-
vec3 of = vec3(-0.5, 0.5, 1.5);\n\
|
209
|
-
vec3 px = _czm_permute289(Pi.x + oi);\n\
|
210
|
-
vec3 p = _czm_permute289(px.x + Pi.y + oi)
|
211
|
-
vec3 ox = fract(p*K) - Ko;\n\
|
212
|
-
vec3 oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
213
|
-
vec3
|
214
|
-
vec3
|
215
|
-
vec3 d1 =
|
216
|
-
p = _czm_permute289(px.y + Pi.y + oi)
|
217
|
-
ox = fract(p*K) - Ko;\n\
|
218
|
-
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
219
|
-
|
220
|
-
|
221
|
-
vec3 d2 =
|
222
|
-
p = _czm_permute289(px.z + Pi.y + oi)
|
223
|
-
ox = fract(p*K) - Ko;\n\
|
224
|
-
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
225
|
-
|
226
|
-
|
227
|
-
vec3 d3 =
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
396
|
+
#define K 0.142857142857 // 1/7\n\
|
397
|
+
#define Ko 0.428571428571 // 3/7\n\
|
398
|
+
#define jitter 1.0 // Less gives more regular pattern\n\
|
399
|
+
vec2 Pi = mod(floor(P), 289.0);\n\
|
400
|
+
vec2 Pf = fract(P);\n\
|
401
|
+
vec3 oi = vec3(-1.0, 0.0, 1.0);\n\
|
402
|
+
vec3 of = vec3(-0.5, 0.5, 1.5);\n\
|
403
|
+
vec3 px = _czm_permute289(Pi.x + oi);\n\
|
404
|
+
vec3 p = _czm_permute289(px.x + Pi.y + oi); // p11, p12, p13\n\
|
405
|
+
vec3 ox = fract(p*K) - Ko;\n\
|
406
|
+
vec3 oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
407
|
+
vec3 d1x = Pf.x + 0.5 + jitter*ox;\n\
|
408
|
+
vec3 d1y = Pf.y - of + jitter*oy;\n\
|
409
|
+
vec3 d1 = d1x * d1x + d1y * d1y; // d11, d12 and d13, squared\n\
|
410
|
+
p = _czm_permute289(px.y + Pi.y + oi); // p21, p22, p23\n\
|
411
|
+
ox = fract(p*K) - Ko;\n\
|
412
|
+
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
413
|
+
vec3 d2x = Pf.x - 0.5 + jitter*ox;\n\
|
414
|
+
vec3 d2y = Pf.y - of + jitter*oy;\n\
|
415
|
+
vec3 d2 = d2x * d2x + d2y * d2y; // d21, d22 and d23, squared\n\
|
416
|
+
p = _czm_permute289(px.z + Pi.y + oi); // p31, p32, p33\n\
|
417
|
+
ox = fract(p*K) - Ko;\n\
|
418
|
+
oy = mod(floor(p*K),7.0)*K - Ko;\n\
|
419
|
+
vec3 d3x = Pf.x - 1.5 + jitter*ox;\n\
|
420
|
+
vec3 d3y = Pf.y - of + jitter*oy;\n\
|
421
|
+
vec3 d3 = d3x * d3x + d3y * d3y; // d31, d32 and d33, squared\n\
|
422
|
+
// Sort out the two smallest distances (F1, F2)\n\
|
423
|
+
// While also swapping dx and dy accordingly\n\
|
424
|
+
vec3 comp3 = step(d2, d1);\n\
|
425
|
+
vec3 d1a = mix(d1, d2, comp3);\n\
|
426
|
+
vec3 d1xa = mix(d1x, d2x, comp3);\n\
|
427
|
+
vec3 d1ya = mix(d1y, d2y, comp3);\n\
|
428
|
+
d2 = mix(d2, d1, comp3); // Swap to keep candidates for F2\n\
|
429
|
+
d2x = mix(d2x, d1x, comp3);\n\
|
430
|
+
d2y = mix(d2y, d1y, comp3);\n\
|
431
|
+
\n\
|
432
|
+
comp3 = step(d3, d2);\n\
|
433
|
+
d2 = mix(d2, d3, comp3); // neither F1 nor F2 are now in d3\n\
|
434
|
+
d2x = mix(d2x, d3x, comp3);\n\
|
435
|
+
d2y = mix(d2y, d3y, comp3);\n\
|
436
|
+
\n\
|
437
|
+
comp3 = step(d2, d1a);\n\
|
438
|
+
d1 = mix(d1a, d2, comp3); // F1 is now in d1\n\
|
439
|
+
d1x = mix(d1xa, d2x, comp3);\n\
|
440
|
+
d1y = mix(d1ya, d2y, comp3);\n\
|
441
|
+
d2 = mix(d2, d1a, comp3); // Swap to keep candidates for F2\n\
|
442
|
+
d2x = mix(d2x, d1xa, comp3);\n\
|
443
|
+
d2y = mix(d2y, d1ya, comp3);\n\
|
444
|
+
\n\
|
445
|
+
float comp1 = step(d1.y, d1.x);\n\
|
446
|
+
d1.xy = mix(d1.xy, d1.yx, comp1); // Swap if smaller\n\
|
447
|
+
d1x.xy = mix(d1x.xy, d1x.yx, comp1);\n\
|
448
|
+
d1y.xy = mix(d1y.xy, d1y.yx, comp1);\n\
|
449
|
+
\n\
|
450
|
+
comp1 = step(d1.z, d1.x);\n\
|
451
|
+
d1.xz = mix(d1.xz, d1.zx, comp1); // F1 is in d1.x\n\
|
452
|
+
d1x.xz = mix(d1x.xz, d1x.zx, comp1);\n\
|
453
|
+
d1y.xz = mix(d1y.xz, d1y.zx, comp1);\n\
|
454
|
+
\n\
|
455
|
+
vec2 comp2 = step(d2.yz, d1.yz);\n\
|
456
|
+
d1.yz = mix(d1.yz, d2.yz, comp2); // F2 is now not in d2.yz\n\
|
457
|
+
d1x.yz = mix(d1x.yz, d2x.yz, comp2);\n\
|
458
|
+
d1y.yz = mix(d1y.yz, d2y.yz, comp2);\n\
|
459
|
+
\n\
|
460
|
+
comp1 = step(d1.z, d1.y);\n\
|
461
|
+
d1.y = mix(d1.y, d1.z, comp1); // nor in d1.z\n\
|
462
|
+
d1x.y = mix(d1x.y, d1x.z, comp1);\n\
|
463
|
+
d1y.y = mix(d1y.y, d1y.z, comp1);\n\
|
464
|
+
\n\
|
465
|
+
comp1 = step(d2.x, d1.y);\n\
|
466
|
+
d1.y = mix(d1.y, d2.x, comp1); // F2 is in d1.y, we're done.\n\
|
467
|
+
d1x.y = mix(d1x.y, d2x.x, comp1);\n\
|
468
|
+
d1y.y = mix(d1y.y, d2y.x, comp1);\n\
|
469
|
+
F = sqrt(d1.xy);\n\
|
470
|
+
d1d2 = vec4(d1x.x, d1y.x, d1x.y, d1y.y);\n\
|
239
471
|
}\n\
|
472
|
+
\n\
|
473
|
+
*/\n\
|
474
|
+
\n\
|
240
475
|
#endif\n\
|
241
476
|
";
|
242
477
|
});
|