deeptwins-engine-3d 0.1.76 → 0.2.1
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.
- package/dist/assets/Build/DeepTwins/Image/noise.png +0 -0
- package/dist/assets/Build/DeepTwins/Workers/CustomRasterClip.worker.js +1 -2
- package/dist/assets/Build/DeepTwins/Workers/MvtVector.worker.js +1 -1
- package/dist/assets/Build/Map3d/ThirdParty/Workers/zip-web-worker.js +640 -0
- package/dist/assets/Build/Map3d/ThirdParty/wasm_splats_bg.wasm +0 -0
- package/dist/assets/Build/Map3d/ThirdParty/zip-module.wasm +0 -0
- package/dist/assets/Build/Map3d/Workers/chunk-27NG6PQR.js +456 -0
- package/dist/assets/Build/Map3d/Workers/chunk-2JVMMMWT.js +353 -0
- package/dist/assets/Build/Map3d/Workers/chunk-2Y2XYQCS.js +1481 -0
- package/dist/assets/Build/Map3d/Workers/chunk-34RF3V5G.js +220 -0
- package/dist/assets/Build/Map3d/Workers/chunk-35H7BYLJ.js +1800 -0
- package/dist/assets/Build/Map3d/Workers/chunk-57OGEF5V.js +435 -0
- package/dist/assets/Build/Map3d/Workers/chunk-5PX3DYJA.js +196 -0
- package/dist/assets/Build/Map3d/Workers/chunk-7B5XGQRN.js +171 -0
- package/dist/assets/Build/Map3d/Workers/chunk-ATLWOZFF.js +39 -0
- package/dist/assets/Build/Map3d/Workers/chunk-BMSUECTA.js +1055 -0
- package/dist/assets/Build/Map3d/Workers/chunk-C6IA4TKW.js +476 -0
- package/dist/assets/Build/Map3d/Workers/chunk-CZ44I32U.js +157 -0
- package/dist/assets/Build/Map3d/Workers/chunk-DE6UV44R.js +122 -0
- package/dist/assets/Build/Map3d/Workers/chunk-DUCCKVOG.js +834 -0
- package/dist/assets/Build/Map3d/Workers/chunk-EBJBPIYX.js +239 -0
- package/dist/assets/Build/Map3d/Workers/chunk-EYSYQ2R6.js +138 -0
- package/dist/assets/Build/Map3d/Workers/chunk-FMCAAUQI.js +368 -0
- package/dist/assets/Build/Map3d/Workers/chunk-GMYZNRRQ.js +2717 -0
- package/dist/assets/Build/Map3d/Workers/chunk-GWPNZZV4.js +781 -0
- package/dist/assets/Build/Map3d/Workers/chunk-HLP2U4KW.js +758 -0
- package/dist/assets/Build/Map3d/Workers/chunk-HSJSUPQV.js +500 -0
- package/dist/assets/Build/Map3d/Workers/chunk-I73Q3AG7.js +58 -0
- package/dist/assets/Build/Map3d/Workers/chunk-IMZ4YIMV.js +511 -0
- package/dist/assets/Build/Map3d/Workers/chunk-IZSK4DVF.js +421 -0
- package/dist/assets/Build/Map3d/Workers/chunk-JKLMRPKK.js +75 -0
- package/dist/assets/Build/Map3d/Workers/chunk-KGM345JM.js +691 -0
- package/dist/assets/Build/Map3d/Workers/chunk-L4IR5U4G.js +102 -0
- package/dist/assets/Build/Map3d/Workers/chunk-MG4EVQH2.js +44 -0
- package/dist/assets/Build/Map3d/Workers/chunk-NXWEFAZJ.js +300 -0
- package/dist/assets/Build/Map3d/Workers/chunk-PDFAJISJ.js +59 -0
- package/dist/assets/Build/Map3d/Workers/chunk-PHWZFJR5.js +100 -0
- package/dist/assets/Build/Map3d/Workers/chunk-PLE7CHBE.js +101 -0
- package/dist/assets/Build/Map3d/Workers/chunk-PN3GIZ5Q.js +163 -0
- package/dist/assets/Build/Map3d/Workers/chunk-PXL5XLHV.js +1073 -0
- package/dist/assets/Build/Map3d/Workers/chunk-QYXOF5JC.js +959 -0
- package/dist/assets/Build/Map3d/Workers/chunk-R2LIFXV3.js +115 -0
- package/dist/assets/Build/Map3d/Workers/chunk-R4W6IRJZ.js +10357 -0
- package/dist/assets/Build/Map3d/Workers/chunk-R5PZXG56.js +1258 -0
- package/dist/assets/Build/Map3d/Workers/chunk-RZQLZIUI.js +629 -0
- package/dist/assets/Build/Map3d/Workers/chunk-SIBDD6Y4.js +390 -0
- package/dist/assets/Build/Map3d/Workers/chunk-U5NN6JTQ.js +398 -0
- package/dist/assets/Build/Map3d/Workers/chunk-UA5RPPP3.js +73 -0
- package/dist/assets/Build/Map3d/Workers/chunk-UXLKFS3C.js +305 -0
- package/dist/assets/Build/Map3d/Workers/chunk-VUX4BQIM.js +37 -0
- package/dist/assets/Build/Map3d/Workers/chunk-WJDUUUJS.js +684 -0
- package/dist/assets/Build/Map3d/Workers/chunk-XBJOJHWX.js +139 -0
- package/dist/assets/Build/Map3d/Workers/chunk-XJDMTNKD.js +634 -0
- package/dist/assets/Build/Map3d/Workers/chunk-XUCXZZE5.js +963 -0
- package/dist/assets/Build/Map3d/Workers/chunk-YIKGVMJ5.js +287 -0
- package/dist/assets/Build/Map3d/Workers/chunk-YTNCIBPQ.js +262 -0
- package/dist/assets/Build/Map3d/Workers/chunk-ZMDUYETO.js +55 -0
- package/dist/assets/Build/Map3d/Workers/chunk-ZW52HXFN.js +2857 -0
- package/dist/esm/analyze/LineOfSightAnalysis.js +1 -326
- package/dist/esm/analyze/SubmergenceAnalysis.js +1 -137
- package/dist/esm/analyze/SunLightAnalysis.js +1 -91
- package/dist/esm/analyze/TerrainExcavationAnalysis.js +1 -612
- package/dist/esm/analyze/ViewshedAnalysis.js +1 -292
- package/dist/esm/cameraControl/ModelRoamHistory.js +1 -639
- package/dist/esm/cameraControl/ModelRoamRealTime.js +1 -874
- package/dist/esm/cameraControl/Roam.js +1 -418
- package/dist/esm/cameraControl/Rotate.js +1 -134
- package/dist/esm/cameraControl/RotateInPlace.js +1 -99
- package/dist/esm/constant.d.ts +90 -0
- package/dist/esm/constant.js +1 -1287
- package/dist/esm/deepTwins/index.js +1 -121
- package/dist/esm/drawCommand/index.js +1 -3
- package/dist/esm/drawCommand/viewShed/Event.js +1 -142
- package/dist/esm/drawCommand/viewShed/RectangularSensorPrimitive.js +1 -1306
- package/dist/esm/drawCommand/viewShed/ViewShadowPrimitive.js +1 -66
- package/dist/esm/drawCommand/viewShed/ViewShedAnalyserLayer.js +1 -466
- package/dist/esm/drawCommand/viewShed/ViewShedMap.js +1 -1238
- package/dist/esm/drawCommand/viewShed/config.js +1 -21
- package/dist/esm/drawCommand/volumeCloud/GeometryPrimitive.js +1 -89
- package/dist/esm/drawCommand/volumeCloud/ImprovedNoise.js +1 -112
- package/dist/esm/drawCommand/volumeCloud/VolumeClouds.js +1 -91
- package/dist/esm/drawer/algorithm.js +1 -314
- package/dist/esm/drawer/common.js +1 -965
- package/dist/esm/drawer/coordinate.js +1 -184
- package/dist/esm/drawer/index.js +1 -688
- package/dist/esm/drawer/plotUtil.js +1 -266
- package/dist/esm/drawer/shape/Assemble.js +1 -415
- package/dist/esm/drawer/shape/AttackArrow.js +1 -442
- package/dist/esm/drawer/shape/BaseShape.js +1 -383
- package/dist/esm/drawer/shape/Bow.js +1 -375
- package/dist/esm/drawer/shape/Circle.js +1 -461
- package/dist/esm/drawer/shape/Curve.js +1 -386
- package/dist/esm/drawer/shape/DragPoint.js +1 -211
- package/dist/esm/drawer/shape/Elliptic.js +1 -491
- package/dist/esm/drawer/shape/Formation.js +1 -395
- package/dist/esm/drawer/shape/PincerArrow.js +1 -445
- package/dist/esm/drawer/shape/Point.js +1 -131
- package/dist/esm/drawer/shape/Polygon.js +1 -368
- package/dist/esm/drawer/shape/Polyline.js +1 -325
- package/dist/esm/drawer/shape/RegularPolygon.js +1 -468
- package/dist/esm/drawer/shape/RightAngleArrow.js +1 -423
- package/dist/esm/drawer/shape/Sector.js +1 -568
- package/dist/esm/drawer/shape/StraightArrow.js +1 -422
- package/dist/esm/drawer/shape/SwallowtailArrow.js +1 -438
- package/dist/esm/drawer/types.js +1 -11
- package/dist/esm/drawer/utils.js +1 -381
- package/dist/esm/global.css +22 -1
- package/dist/esm/graphicLayer/BaseEntity.js +1 -51
- package/dist/esm/graphicLayer/BaseLayer.js +1 -730
- package/dist/esm/graphicLayer/BasePointPrimitive.js +1 -45
- package/dist/esm/graphicLayer/BasePrimitive.js +1 -36
- package/dist/esm/graphicLayer/BasePrimitiveInstance.js +1 -37
- package/dist/esm/graphicLayer/BaseSource.d.ts +1 -1
- package/dist/esm/graphicLayer/BaseSource.js +1 -630
- package/dist/esm/graphicLayer/BillboardEntity.js +1 -106
- package/dist/esm/graphicLayer/BillboardPrimitive.js +1 -119
- package/dist/esm/graphicLayer/BoxEntity.js +1 -99
- package/dist/esm/graphicLayer/BoxPrimitive.js +1 -48
- package/dist/esm/graphicLayer/BoxPrimitiveInstance.js +1 -91
- package/dist/esm/graphicLayer/EllipseEntity.js +1 -110
- package/dist/esm/graphicLayer/EllipsePrimitive.js +1 -47
- package/dist/esm/graphicLayer/EllipsePrimitiveInstance.js +1 -98
- package/dist/esm/graphicLayer/EllipsoidEntity.js +1 -118
- package/dist/esm/graphicLayer/EllipsoidPrimitive.js +1 -48
- package/dist/esm/graphicLayer/EllipsoidPrimitiveInstance.js +1 -113
- package/dist/esm/graphicLayer/GraphicLayerCollection.js +1 -491
- package/dist/esm/graphicLayer/HtmlEntity.d.ts +4 -0
- package/dist/esm/graphicLayer/HtmlEntity.js +1 -189
- package/dist/esm/graphicLayer/LabelEntity.js +1 -110
- package/dist/esm/graphicLayer/LabelPrimitive.js +1 -127
- package/dist/esm/graphicLayer/ModelEntity.js +1 -122
- package/dist/esm/graphicLayer/ModelPrimitive.js +1 -59
- package/dist/esm/graphicLayer/ModelPrimitiveInstance.js +1 -86
- package/dist/esm/graphicLayer/PointEntity.js +1 -94
- package/dist/esm/graphicLayer/PointPrimitive.js +1 -107
- package/dist/esm/graphicLayer/PolygonEntity.js +1 -103
- package/dist/esm/graphicLayer/PolygonGroundPrimitive.js +1 -49
- package/dist/esm/graphicLayer/PolygonGroundPrimitiveImageMaterialInstance.js +1 -87
- package/dist/esm/graphicLayer/PolygonPrimitive.js +1 -60
- package/dist/esm/graphicLayer/PolygonPrimitiveImageMaterialInstance.js +1 -84
- package/dist/esm/graphicLayer/PolygonPrimitiveInstance.js +1 -101
- package/dist/esm/graphicLayer/PolylineEntity.js +1 -96
- package/dist/esm/graphicLayer/PolylineGroundPrimitive.js +1 -55
- package/dist/esm/graphicLayer/PolylineGroundPrimitiveInstance.js +1 -85
- package/dist/esm/graphicLayer/PolylinePrimitive.js +1 -53
- package/dist/esm/graphicLayer/PolylinePrimitiveInstance.js +1 -85
- package/dist/esm/graphicLayer/PolylineVolumeEntity.js +1 -105
- package/dist/esm/graphicLayer/PolylineVolumePrimitive.js +1 -47
- package/dist/esm/graphicLayer/PolylineVolumePrimitiveInstance.js +1 -94
- package/dist/esm/graphicLayer/WallEntity.js +1 -96
- package/dist/esm/graphicLayer/WallPrimitive.js +1 -47
- package/dist/esm/graphicLayer/WallPrimitiveInstance.js +1 -88
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +1 -175
- package/dist/esm/lowAltitude/BarrierLayer.js +1 -172
- package/dist/esm/lowAltitude/BaseGridMvtLayer.js +1 -122
- package/dist/esm/lowAltitude/FactorLayer.js +1 -199
- package/dist/esm/lowAltitude/FlightPlanning.js +1 -411
- package/dist/esm/lowAltitude/FlightRiskEvaluation.js +1 -543
- package/dist/esm/lowAltitude/GridDraw.js +1 -137
- package/dist/esm/lowAltitude/PoiLayer.js +1 -74
- package/dist/esm/lowAltitude/RoutePlanning.js +1 -318
- package/dist/esm/lowAltitude/VisitLayer.js +1 -180
- package/dist/esm/map/Event.js +1 -377
- package/dist/esm/map/GroundSkyBox.js +1 -166
- package/dist/esm/map/Map.js +1 -881
- package/dist/esm/map/Property.js +1 -35
- package/dist/esm/material/AtmosphericDispersion.js +1 -569
- package/dist/esm/material/GlobalVolumetricCloud.js +1 -377
- package/dist/esm/material/VolumeCloud.js +1 -115
- package/dist/esm/material/WeatherEffects.js +1 -351
- package/dist/esm/material/entity/BaseMaterialProperty.js +1 -51
- package/dist/esm/material/entity/CircleWaveMaterialProperty.js +1 -101
- package/dist/esm/material/entity/DynamicWallMaterialProperty.js +1 -101
- package/dist/esm/material/entity/ImageGlowingMaterialProperty.js +1 -89
- package/dist/esm/material/entity/ImageMaterialProperty.js +1 -34
- package/dist/esm/material/entity/PolylineTrailLinkMaterialProperty.js +1 -132
- package/dist/esm/material/primitive/BaseMaterialAppearance.js +1 -28
- package/dist/esm/material/primitive/ImageGlowingMaterialAppearance.js +1 -77
- package/dist/esm/material/primitive/ImageMaterialAppearance.js +1 -77
- package/dist/esm/measure/Area.js +1 -220
- package/dist/esm/measure/BaseDraw.js +1 -105
- package/dist/esm/measure/Distance.js +1 -223
- package/dist/esm/measure/index.js +1 -266
- package/dist/esm/measure/types.js +1 -17
- package/dist/esm/measure/utils.js +1 -319
- package/dist/esm/particle/BaseParticle.js +1 -196
- package/dist/esm/particle/FireParticle.js +1 -65
- package/dist/esm/particle/FountainParticle.js +1 -80
- package/dist/esm/particle/SmokeParticle.js +1 -65
- package/dist/esm/particle/common.js +1 -23
- package/dist/esm/particle/index.js +1 -5
- package/dist/esm/property/PositionProperty.js +1 -56
- package/dist/esm/tileLayer/ArcGisLayer.js +1 -41
- package/dist/esm/tileLayer/CustomRasterClipWorkerClient.js +1 -147
- package/dist/esm/tileLayer/CustomRasterLayer.js +1 -1136
- package/dist/esm/tileLayer/ImageryLayer.js +1 -44
- package/dist/esm/tileLayer/MvtVectorLoad.js +1 -1549
- package/dist/esm/tileLayer/MvtVectorWorkerClient.js +1 -126
- package/dist/esm/tileLayer/RasterLayer.js +1 -23
- package/dist/esm/tileLayer/WmsLayer.js +1 -26
- package/dist/esm/tileLayer/WmtsLayer.js +1 -23
- package/dist/esm/tool/BuildClampedPolygonGrid.js +1 -278
- package/dist/esm/tool/Compass.js +1 -282
- package/dist/esm/tool/PrimitiveCluster.js +1 -706
- package/dist/esm/tool/TimerInterval.js +1 -58
- package/dist/esm/tool/common.js +1 -405
- package/dist/esm/tool/fetch.js +1 -222
- package/dist/esm/tool/heatmap.js +1 -631
- package/dist/esm/tool/utils.d.ts +1 -0
- package/dist/esm/tool/utils.js +1 -501
- package/dist/esm/toolTip/index.js +1 -79
- package/dist/esm/videoFusion/BaseVideo.d.ts +7 -0
- package/dist/esm/videoFusion/BaseVideo.js +1 -330
- package/dist/esm/videoFusion/VideoProject.js +1 -230
- package/dist/esm/videoFusion/VideoTexture.js +1 -163
- package/dist/esm/visualization/BaseHeatmap.js +1 -271
- package/dist/esm/visualization/BoundaryHighlight.d.ts +135 -0
- package/dist/esm/visualization/BoundaryHighlight.js +1 -0
- package/dist/esm/visualization/DynamicWater.js +1 -289
- package/dist/esm/visualization/Frustum.js +1 -248
- package/dist/esm/visualization/Heatmap2d.js +1 -97
- package/dist/esm/visualization/Heatmap3d.js +1 -281
- package/dist/esm/visualization/MigrationEffect.js +1 -397
- package/dist/esm/visualization/PointCluster.js +1 -220
- package/dist/esm/visualization/RadarScan.js +1 -333
- package/dist/esm/visualization/SampledTerrainRiver.d.ts +180 -0
- package/dist/esm/visualization/SampledTerrainRiver.js +1 -0
- package/dist/esm/visualization/SampledTerrainWater.d.ts +170 -0
- package/dist/esm/visualization/SampledTerrainWater.js +1 -0
- package/dist/esm/visualization/WindField.d.ts +72 -0
- package/dist/esm/visualization/WindField.js +1 -0
- package/dist/esm/visualization/windCore.d.ts +161 -0
- package/dist/esm/visualization/windCore.js +8 -0
- package/dist/umd/deeptwins-engine-3d.min.css +1 -1
- package/dist/umd/deeptwins-engine-3d.min.js +1 -1
- package/package.json +6 -4
|
@@ -1,21 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 公共着色器
|
|
3
|
-
* @returns {ShaderSource}
|
|
4
|
-
*/
|
|
5
|
-
export var sensorComm = "\nuniform vec4 u_intersectionColor;\nuniform float u_intersectionWidth;\nuniform vec4 u_lineColor;\n\nbool inSensorShadow(vec3 coneVertexWC, vec3 pointWC)\n{ \n // Diagonal matrix from the unscaled ellipsoid space to the scaled space.\n vec3 D = czm_ellipsoidInverseRadii; \n // Sensor vertex in the scaled ellipsoid space \n vec3 q = D * coneVertexWC; \n float qMagnitudeSquared = dot(q, q); \n float test = qMagnitudeSquared - 1.0; \n // Sensor vertex to fragment vector in the ellipsoid's scaled space \n vec3 temp = D * pointWC - q; \n float d = dot(temp, q); \n // Behind silhouette plane and inside silhouette cone \n return (d < -test) && (d / length(temp) < -sqrt(test));\n}\n\nvec4 getLineColor()\n{ \n return u_lineColor;\n}\n\nvec4 getIntersectionColor()\n{ \n return u_intersectionColor;\n}\n\nfloat getIntersectionWidth()\n{ \n return u_intersectionWidth;\n}\n\nvec2 sensor2dTextureCoordinates(float sensorRadius, vec3 pointMC)\n{ \n // (s, t) both in the range [0, 1] \n float t = pointMC.z / sensorRadius; \n float s = 1.0 + (atan(pointMC.y, pointMC.x) / czm_twoPi); \n s = s - floor(s); \n return vec2(s, t);\n}\n\n";
|
|
6
|
-
/**
|
|
7
|
-
* VS着色器
|
|
8
|
-
* @returns {ShaderSource}
|
|
9
|
-
*/
|
|
10
|
-
export var sensorVS = "\nin vec4 position;\nin vec3 normal;\nout vec3 v_position;\nout vec3 v_positionWC;\nout vec3 v_positionEC;\nout vec3 v_normalEC;\nvoid main()\n{ \n gl_Position = czm_modelViewProjection * position; \n v_position = vec3(position); \n v_positionWC = (czm_model * position).xyz; \n v_positionEC = (czm_modelView * position).xyz; \n v_normalEC = czm_normal * normal;\n}";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* FS着色器
|
|
14
|
-
* @returns {ShaderSource}
|
|
15
|
-
*/
|
|
16
|
-
export var sensorFS = "\nuniform bool u_showIntersection;\nuniform bool u_showThroughEllipsoid;\nuniform float u_radius;\nuniform float u_xHalfAngle;\nuniform float u_yHalfAngle;\nuniform float u_normalDirection;\nuniform float u_type;\nin vec3 v_position;\nin vec3 v_positionWC;\nin vec3 v_positionEC;\nin vec3 v_normalEC;\nvec4 getColor(float sensorRadius, vec3 pointEC)\n{ \n czm_materialInput materialInput; \n vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz; \n materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC); \n materialInput.str = pointMC / sensorRadius; \n\n vec3 positionToEyeEC = -v_positionEC; \n materialInput.positionToEyeEC = positionToEyeEC; \n\n vec3 normalEC = normalize(v_normalEC); \n materialInput.normalEC = u_normalDirection * normalEC; \n\n czm_material material = czm_getMaterial(materialInput); \n\n return mix(czm_phong(normalize(positionToEyeEC), material,czm_lightDirectionEC),vec4(material.diffuse, material.alpha), 0.4);\n}\n\nbool isOnBoundary(float value, float epsilon)\n{ \n float width = getIntersectionWidth(); \n float tolerance = width * epsilon;\n #ifdef GL_OES_standard_derivatives \n float delta = max(abs(dFdx(value)), abs(dFdy(value))); \n float pixels = width * delta; \n float temp = abs(value); \n // There are a couple things going on here. \n // First we test the value at the current fragment to see if it is within the tolerance. \n // We also want to check if the value of an adjacent pixel is within the tolerance, \n // but we don't want to admit points that are obviously not on the surface. \n // For example, if we are looking for \"value\" to be close to 0, but value is 1 and the adjacent value is 2, \n // then the delta would be 1 and \"temp - delta\" would be \"1 - 1\" which is zero even though neither of \n // the points is close to zero. \n return temp < tolerance && temp < pixels || (delta < 10.0 * tolerance && temp - delta < tolerance && temp < pixels);\n #else \n return abs(value) < tolerance;\n #endif\n}\n\n\nvec4 shade(bool isOnBoundary)\n{ \n\n if (u_showIntersection && isOnBoundary) \n { \n return getIntersectionColor(); \n } \n if(u_type == 1.0)\n { \n return getLineColor(); \n } \n\n return getColor(u_radius, v_positionEC);\n\n}\n \nfloat ellipsoidSurfaceFunction(vec3 point)\n{ \n vec3 scaled = czm_ellipsoidInverseRadii * point; \n return dot(scaled, scaled) - 1.0;\n}\n\nvoid main()\n{ \n vec3 sensorVertexWC = czm_model[3].xyz; // (0.0, 0.0, 0.0) in model coordinates \n vec3 sensorVertexEC = czm_modelView[3].xyz; // (0.0, 0.0, 0.0) in model coordinates \n bool isFullSphere = u_xHalfAngle >= czm_pi - 0.0001 && u_yHalfAngle >= czm_pi - 0.0001;\n //vec3 pixDir = normalize(v_position); \n if (!isFullSphere)\n {\n float positionX = v_position.x; \n float positionY = v_position.y; \n float positionZ = v_position.z; \n vec3 zDir = vec3(0.0, 0.0, 1.0); \n vec3 lineX = vec3(positionX, 0 ,positionZ); \n vec3 lineY = vec3(0, positionY, positionZ); \n float resX = dot(normalize(lineX), zDir); \n if(resX < cos(u_xHalfAngle)-0.00001)\n { \n discard; \n } \n float resY = dot(normalize(lineY), zDir); \n if(resY < cos(u_yHalfAngle)-0.00001)\n { \n discard; \n } \n }\n float ellipsoidValue = ellipsoidSurfaceFunction(v_positionWC);\n // Occluded by the ellipsoid?\n if (!u_showThroughEllipsoid && !isFullSphere)\n { \n // Discard if in the ellipsoid \n // PERFORMANCE_IDEA: A coarse check for ellipsoid intersection could be done on the CPU first. \n if (ellipsoidValue < 0.0) \n { \n discard; \n } \n // Discard if in the sensor's shadow \n if (inSensorShadow(sensorVertexWC, v_positionWC)) \n { \n discard; \n } \n } \n // Notes: Each surface functions should have an associated tolerance based on the floating point error. \n bool isOnEllipsoid = isOnBoundary(ellipsoidValue, czm_epsilon3); \n //isOnEllipsoid = false; \n // if((resX >= 0.8 && resX <= 0.81)||(resY >= 0.8 && resY <= 0.81))\n // { \n // out_FragColor = shade(false);\n // }\n out_FragColor = shade(isOnEllipsoid);\n}\n";
|
|
17
|
-
/**
|
|
18
|
-
* 扫描面FS着色器
|
|
19
|
-
* @returns {ShaderSource}
|
|
20
|
-
*/
|
|
21
|
-
export var scanPlaneFS = "\nuniform bool u_showIntersection;\nuniform bool u_showThroughEllipsoid;\nuniform float u_radius;\nuniform float u_xHalfAngle;\nuniform float u_yHalfAngle;\nuniform float u_normalDirection;\nuniform vec4 u_color;\nin vec3 v_position;\nin vec3 v_positionWC;\nin vec3 v_positionEC;\nin vec3 v_normalEC;\nvec4 getColor(float sensorRadius, vec3 pointEC)\n{ \n czm_materialInput materialInput; \n vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz; \n materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC);\n materialInput.str = pointMC / sensorRadius; \n vec3 positionToEyeEC = -v_positionEC; \n materialInput.positionToEyeEC = positionToEyeEC; \n vec3 normalEC = normalize(v_normalEC); \n materialInput.normalEC = u_normalDirection * normalEC; \n czm_material material = czm_getMaterial(materialInput); \n material.diffuse = u_color.rgb; \n material.alpha = u_color.a; \n return mix(czm_phong(normalize(positionToEyeEC), material,czm_lightDirectionEC), vec4(material.diffuse, material.alpha), 0.4);\n}\n\nbool isOnBoundary(float value, float epsilon)\n{ \n float width = getIntersectionWidth(); \n float tolerance = width * epsilon;\n #ifdef GL_OES_standard_derivatives \n float delta = max(abs(dFdx(value)), abs(dFdy(value))); \n float pixels = width * delta; \n float temp = abs(value); \n // There are a couple things going on here. \n // First we test the value at the current fragment to see if it is within the tolerance. \n // We also want to check if the value of an adjacent pixel is within the tolerance, \n // but we don't want to admit points that are obviously not on the surface. \n // For example, if we are looking for value to be close to 0, but value is 1 and the adjacent value is 2, \n // then the delta would be 1 and temp - delta would be 1 - 1 which is zero even though neither of \n // the points is close to zero. \n return temp < tolerance && temp < pixels || (delta < 10.0 * tolerance && temp - delta < tolerance && temp < pixels);\n #else \n return abs(value) < tolerance;\n #endif\n}\n\n\nvec4 shade(bool isOnBoundary)\n { \n if (u_showIntersection && isOnBoundary) \n { \n return getIntersectionColor(); \n } \n return getColor(u_radius, v_positionEC);\n}\n\n\nfloat ellipsoidSurfaceFunction(vec3 point)\n{ \n vec3 scaled = czm_ellipsoidInverseRadii * point; \n return dot(scaled, scaled) - 1.0;\n}\n\n\nvoid main()\n{ \n vec3 sensorVertexWC = czm_model[3].xyz; // (0.0, 0.0, 0.0) in model coordinates \n vec3 sensorVertexEC = czm_modelView[3].xyz; // (0.0, 0.0, 0.0) in model coordinates \n bool isFullSphere = u_xHalfAngle >= czm_pi - 0.0001 && u_yHalfAngle >= czm_pi - 0.0001;\n //vec3 pixDir = normalize(v_position); \n if (!isFullSphere)\n {\n float positionX = v_position.x; \n float positionY = v_position.y; \n float positionZ = v_position.z; \n vec3 zDir = vec3(0.0, 0.0, 1.0); \n vec3 lineX = vec3(positionX, 0 ,positionZ); \n vec3 lineY = vec3(0, positionY, positionZ); \n float resX = dot(normalize(lineX), zDir); \n if(resX < cos(u_xHalfAngle) - 0.0001)\n { \n discard; \n } \n float resY = dot(normalize(lineY), zDir); \n if(resY < cos(u_yHalfAngle)- 0.0001)\n { \n discard; \n } \n }\n float ellipsoidValue = ellipsoidSurfaceFunction(v_positionWC); \n // Occluded by the ellipsoid\n if (!u_showThroughEllipsoid && !isFullSphere)\n { \n // Discard if in the ellipsoid \n // PERFORMANCE_IDEA: A coarse check for ellipsoid intersection could be done on the CPU first. \n if (ellipsoidValue < 0.0) \n { \n discard; \n } \n // Discard if in the sensor's shadow \n if (inSensorShadow(sensorVertexWC, v_positionWC)) \n { \n discard; \n } \n } \n // Notes: Each surface functions should have an associated tolerance based on the floating point error. \n bool isOnEllipsoid = isOnBoundary(ellipsoidValue, czm_epsilon3); \n out_FragColor = shade(isOnEllipsoid);\n}\n ";
|
|
1
|
+
function _0x1978(_0x204112,_0x4d803f){_0x204112=_0x204112-0x19b;var _0x461137=_0x4611();var _0x197812=_0x461137[_0x204112];if(_0x1978['xrLJdk']===undefined){var _0x3f1311=function(_0x5949b2){var _0x10e272='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x464385='',_0x34fdad='';for(var _0x107643=0x0,_0x44f986,_0x573600,_0x593ffd=0x0;_0x573600=_0x5949b2['charAt'](_0x593ffd++);~_0x573600&&(_0x44f986=_0x107643%0x4?_0x44f986*0x40+_0x573600:_0x573600,_0x107643++%0x4)?_0x464385+=String['fromCharCode'](0xff&_0x44f986>>(-0x2*_0x107643&0x6)):0x0){_0x573600=_0x10e272['indexOf'](_0x573600);}for(var _0x968fd6=0x0,_0x2275d1=_0x464385['length'];_0x968fd6<_0x2275d1;_0x968fd6++){_0x34fdad+='%'+('00'+_0x464385['charCodeAt'](_0x968fd6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x34fdad);};_0x1978['qGjRUX']=_0x3f1311,_0x1978['LvFrNB']={},_0x1978['xrLJdk']=!![];}var _0x31ce85=_0x461137[0x0],_0x4df927=_0x204112+_0x31ce85,_0x164448=_0x1978['LvFrNB'][_0x4df927];return!_0x164448?(_0x197812=_0x1978['qGjRUX'](_0x197812),_0x1978['LvFrNB'][_0x4df927]=_0x197812):_0x197812=_0x164448,_0x197812;}var _0x3d21f8=_0x1978;(function(_0x36acbc,_0x34eb49){var _0x2345b1=_0x1978,_0x19a38d=_0x36acbc();while(!![]){try{var _0x2f6485=parseInt(_0x2345b1(0x1a1))/0x1+-parseInt(_0x2345b1(0x19e))/0x2+-parseInt(_0x2345b1(0x1a7))/0x3*(-parseInt(_0x2345b1(0x1a0))/0x4)+parseInt(_0x2345b1(0x19f))/0x5*(-parseInt(_0x2345b1(0x19c))/0x6)+parseInt(_0x2345b1(0x1a6))/0x7+-parseInt(_0x2345b1(0x19b))/0x8*(parseInt(_0x2345b1(0x1a4))/0x9)+parseInt(_0x2345b1(0x1a5))/0xa;if(_0x2f6485===_0x34eb49)break;else _0x19a38d['push'](_0x19a38d['shift']());}catch(_0x5ceba5){_0x19a38d['push'](_0x19a38d['shift']());}}}(_0x4611,0xba4bd));export var sensorComm=_0x3d21f8(0x1a2);export var sensorVS=_0x3d21f8(0x19d);function _0x4611(){var _0x4b901c=['mtuWDeLjCMjd','cMLUihzLyZqGCg9ZAxrPB247cMLUihzLyZmGBM9YBwfSoWPVDxqGDMvJmYb2x3bVC2L0Aw9UoWPVDxqGDMvJmYb2x3bVC2L0Aw9Uv0m7cM91Dcb2zwmZihzFCg9ZAxrPB25fqZSkB3v0ihzLyZmGDL9UB3jTywXfqZSkDM9PzcbTywLUkcKkEYaGiaOGicaGz2XFug9ZAxrPB24GpsbJEM1FBw9KzwXwAwv3uhjVAMvJDgLVBIaQihbVC2L0Aw9UoYaGiaOGicaGDL9WB3nPDgLVBIa9ihzLyZmOCg9ZAxrPB24PoYaGicakicaGihzFCg9ZAxrPB25xqYa9icHJEM1FBw9KzwWGkIbWB3nPDgLVBIKUEhL6oYaGiaOGicaGDL9WB3nPDgLVBKvdid0Gkgn6Bv9TB2rLBfzPzxCGkIbWB3nPDgLVBIKUEhL6oYaGcIaGicb2x25VCM1HBevdid0Gy3PTx25VCM1HBcaQig5VCM1HBdSkFq','mtK5otaZofzZrhbZBG','mJCWmZK1AKHJyLfL','mtiZmZj4zwvtB2e','mty5nZi0vuf0wfzn','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','ou9LwezYBq','mJe1odqWodbXBxDdwKW','otmXmJi4owjtseDJqW','nJyZteXyELzn','otGWmtKXmKvYz0PXCq'];_0x4611=function(){return _0x4b901c;};return _0x4611();}export var sensorFS=_0x3d21f8(0x1a3);export var scanPlaneFS='\x0auniform\x20bool\x20u_showIntersection;\x0auniform\x20bool\x20u_showThroughEllipsoid;\x0auniform\x20float\x20u_radius;\x0auniform\x20float\x20u_xHalfAngle;\x0auniform\x20float\x20u_yHalfAngle;\x0auniform\x20float\x20u_normalDirection;\x0auniform\x20vec4\x20u_color;\x0ain\x20vec3\x20v_position;\x0ain\x20vec3\x20v_positionWC;\x0ain\x20vec3\x20v_positionEC;\x0ain\x20vec3\x20v_normalEC;\x0avec4\x20getColor(float\x20sensorRadius,\x20vec3\x20pointEC)\x0a{\x20\x20\x20\x20\x0a\x20\x20\x20\x20czm_materialInput\x20materialInput;\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec3\x20pointMC\x20=\x20(czm_inverseModelView\x20*\x20vec4(pointEC,\x201.0)).xyz;\x20\x20\x0a\x20\x20\x20\x20materialInput.st\x20=\x20sensor2dTextureCoordinates(sensorRadius,\x20pointMC);\x0a\x20\x20\x20\x20materialInput.str\x20=\x20pointMC\x20/\x20sensorRadius;\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec3\x20positionToEyeEC\x20=\x20-v_positionEC;\x20\x20\x20\x20\x0a\x20\x20\x20\x20materialInput.positionToEyeEC\x20=\x20positionToEyeEC;\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec3\x20normalEC\x20=\x20normalize(v_normalEC);\x20\x20\x20\x0a\x20\x20\x20\x20materialInput.normalEC\x20=\x20u_normalDirection\x20*\x20normalEC;\x20\x20\x20\x20\x0a\x20\x20\x20\x20czm_material\x20material\x20=\x20czm_getMaterial(materialInput);\x20\x20\x20\x0a\x20\x20\x20\x20material.diffuse\x20=\x20u_color.rgb;\x20\x20\x20\x20\x0a\x20\x20\x20\x20material.alpha\x20=\x20u_color.a;\x20\x20\x20\x20\x0a\x20\x20\x20\x20return\x20mix(czm_phong(normalize(positionToEyeEC),\x20material,czm_lightDirectionEC),\x20vec4(material.diffuse,\x20material.alpha),\x200.4);\x0a}\x0a\x0abool\x20isOnBoundary(float\x20value,\x20float\x20epsilon)\x0a{\x20\x20\x20\x20\x0a\x20\x20\x20\x20float\x20width\x20=\x20getIntersectionWidth();\x20\x20\x20\x0a\x20\x20\x20\x20float\x20tolerance\x20=\x20width\x20*\x20epsilon;\x0a\x20\x20\x20\x20#ifdef\x20GL_OES_standard_derivatives\x20\x20\x20\x20\x0a\x20\x20\x20\x20float\x20delta\x20=\x20max(abs(dFdx(value)),\x20abs(dFdy(value)));\x20\x20\x20\x20\x0a\x20\x20\x20\x20float\x20pixels\x20=\x20width\x20*\x20delta;\x20\x20\x20\x20\x0a\x20\x20\x20\x20float\x20temp\x20=\x20abs(value);\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20There\x20are\x20a\x20couple\x20things\x20going\x20on\x20here.\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20First\x20we\x20test\x20the\x20value\x20at\x20the\x20current\x20fragment\x20to\x20see\x20if\x20it\x20is\x20within\x20the\x20tolerance.\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20We\x20also\x20want\x20to\x20check\x20if\x20the\x20value\x20of\x20an\x20adjacent\x20pixel\x20is\x20within\x20the\x20tolerance,\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20but\x20we\x20don\x27t\x20want\x20to\x20admit\x20points\x20that\x20are\x20obviously\x20not\x20on\x20the\x20surface.\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20For\x20example,\x20if\x20we\x20are\x20looking\x20for\x20value\x20to\x20be\x20close\x20to\x200,\x20but\x20value\x20is\x201\x20and\x20the\x20adjacent\x20value\x20is\x202,\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20then\x20the\x20delta\x20would\x20be\x201\x20and\x20temp\x20-\x20delta\x20would\x20be\x201\x20-\x201\x20which\x20is\x20zero\x20even\x20though\x20neither\x20of\x20\x20\x20\x20\x0a\x20\x20\x20\x20//\x20\x20the\x20points\x20is\x20close\x20to\x20zero.\x20\x20\x20\x20\x0a\x20\x20\x20\x20return\x20temp\x20<\x20tolerance\x20&&\x20temp\x20<\x20pixels\x20||\x20(delta\x20<\x2010.0\x20*\x20tolerance\x20&&\x20temp\x20-\x20delta\x20<\x20tolerance\x20&&\x20temp\x20<\x20pixels);\x0a\x20\x20\x20\x20#else\x20\x20\x20\x20\x0a\x20\x20\x20\x20return\x20abs(value)\x20<\x20tolerance;\x0a\x20\x20\x20\x20#endif\x0a}\x0a\x0a\x0avec4\x20shade(bool\x20isOnBoundary)\x0a\x20\x20\x20\x20{\x20\x20\x20\x0a\x20\x20\x20\x20if\x20(u_showIntersection\x20&&\x20isOnBoundary)\x20\x20\x0a\x20\x20\x20\x20{\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20getIntersectionColor();\x20\x0a\x20\x20\x20\x20}\x20\x20\x20\x0a\x20\x20\x20\x20return\x20getColor(u_radius,\x20v_positionEC);\x0a}\x0a\x0a\x0afloat\x20ellipsoidSurfaceFunction(vec3\x20point)\x0a{\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec3\x20scaled\x20=\x20czm_ellipsoidInverseRadii\x20*\x20point;\x20\x20\x20\x0a\x20\x20\x20\x20return\x20dot(scaled,\x20scaled)\x20-\x201.0;\x0a}\x0a\x0a\x0avoid\x20main()\x0a{\x20\x20\x0a\x20\x20\x20\x20vec3\x20sensorVertexWC\x20=\x20czm_model[3].xyz;\x20\x20\x20\x20\x20\x20//\x20(0.0,\x200.0,\x200.0)\x20in\x20model\x20coordinates\x20\x20\x20\x0a\x20\x20\x20\x20vec3\x20sensorVertexEC\x20=\x20czm_modelView[3].xyz;\x20\x20//\x20(0.0,\x200.0,\x200.0)\x20in\x20model\x20coordinates\x20\x20\x20\x0a\x20\x20\x20\x20bool\x20isFullSphere\x20=\x20u_xHalfAngle\x20>=\x20czm_pi\x20-\x200.0001\x20&&\x20u_yHalfAngle\x20>=\x20czm_pi\x20-\x200.0001;\x0a\x20\x20\x20\x20//vec3\x20pixDir\x20=\x20normalize(v_position);\x20\x20\x20\x20\x0a\x20\x20\x20\x20if\x20(!isFullSphere)\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20positionX\x20=\x20v_position.x;\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20positionY\x20=\x20v_position.y;\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20positionZ\x20=\x20v_position.z;\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20zDir\x20=\x20vec3(0.0,\x200.0,\x201.0);\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20lineX\x20=\x20vec3(positionX,\x200\x20,positionZ);\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20lineY\x20=\x20vec3(0,\x20positionY,\x20positionZ);\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20resX\x20=\x20dot(normalize(lineX),\x20zDir);\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(resX\x20<\x20cos(u_xHalfAngle)\x20-\x200.0001)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20resY\x20=\x20dot(normalize(lineY),\x20zDir);\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(resY\x20<\x20cos(u_yHalfAngle)-\x200.0001)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20\x20\x20\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20float\x20ellipsoidValue\x20=\x20ellipsoidSurfaceFunction(v_positionWC);\x20\x20\x0a\x20\x20\x20\x20//\x20Occluded\x20by\x20the\x20ellipsoid\x0a\x20\x20\x20\x20if\x20(!u_showThroughEllipsoid\x20&&\x20!isFullSphere)\x0a\x20\x20{\x20\x20\x20\x0a\x20\x20\x20\x20//\x20Discard\x20if\x20in\x20the\x20ellipsoid\x20\x20\x20\x0a\x20\x20\x20\x20//\x20PERFORMANCE_IDEA:\x20A\x20coarse\x20check\x20for\x20ellipsoid\x20intersection\x20could\x20be\x20done\x20on\x20the\x20CPU\x20first.\x20\x20\x0a\x20\x20\x20\x20if\x20(ellipsoidValue\x20<\x200.0)\x20\x20\x0a\x20\x20\x20\x20{\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x20\x20\x0a\x20\x20\x20\x20}\x20\x20\x20\x0a\x20\x20\x20\x20//\x20Discard\x20if\x20in\x20the\x20sensor\x27s\x20shadow\x20\x0a\x20\x20\x20\x20if\x20(inSensorShadow(sensorVertexWC,\x20v_positionWC))\x20\x0a\x20\x20\x20\x20{\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x20\x20\x0a\x20\x20\x20\x20}\x20\x20\x20\x0a\x20\x20}\x20\x20\x20\x0a\x20\x20\x20\x20//\x20Notes:\x20Each\x20surface\x20functions\x20should\x20have\x20an\x20associated\x20tolerance\x20based\x20on\x20the\x20floating\x20point\x20error.\x20\x20\x0a\x20\x20\x20\x20bool\x20isOnEllipsoid\x20=\x20isOnBoundary(ellipsoidValue,\x20czm_epsilon3);\x20\x20\x0a\x20\x20\x20\x20out_FragColor\x20=\x20shade(isOnEllipsoid);\x0a}\x0a\x20\x20\x20\x20';
|
|
@@ -1,89 +1 @@
|
|
|
1
|
-
function
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
6
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
7
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
9
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
-
import * as Cesium from 'deeptwins-cesium';
|
|
11
|
-
/**
|
|
12
|
-
* Custom Primitive for Geometry
|
|
13
|
-
*/
|
|
14
|
-
var GeometryPrimitive = /*#__PURE__*/function () {
|
|
15
|
-
function GeometryPrimitive(geometry, options) {
|
|
16
|
-
_classCallCheck(this, GeometryPrimitive);
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @param {*} options
|
|
20
|
-
* @param {*} options.modelMatrix
|
|
21
|
-
* @param {*} options.vertexShaderSource
|
|
22
|
-
* @param {*} options.fragmentShaderSource
|
|
23
|
-
* @param {*} options.uniformMap
|
|
24
|
-
* @param {*} options.renderState
|
|
25
|
-
* @param {*} options.pass
|
|
26
|
-
*/
|
|
27
|
-
_defineProperty(this, "options", void 0);
|
|
28
|
-
_defineProperty(this, "geometry", void 0);
|
|
29
|
-
_defineProperty(this, "_drawCommand", void 0);
|
|
30
|
-
_defineProperty(this, "_boundingSphereWC", void 0);
|
|
31
|
-
this.options = options;
|
|
32
|
-
this.geometry = geometry;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* @param {*} frameState
|
|
38
|
-
*/
|
|
39
|
-
_createClass(GeometryPrimitive, [{
|
|
40
|
-
key: "update",
|
|
41
|
-
value: function update(frameState) {
|
|
42
|
-
if (Cesium.defined(this._drawCommand)) {
|
|
43
|
-
frameState.commandList.push(this._drawCommand);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (this.geometry.constructor.createGeometry) {
|
|
47
|
-
this.geometry = this.geometry.constructor.createGeometry(this.geometry);
|
|
48
|
-
}
|
|
49
|
-
var context = frameState.context;
|
|
50
|
-
var attributeLocations = Cesium.GeometryPipeline.createAttributeLocations(this.geometry);
|
|
51
|
-
var vertexArray = Cesium.VertexArray.fromGeometry({
|
|
52
|
-
context: context,
|
|
53
|
-
geometry: this.geometry,
|
|
54
|
-
attributeLocations: attributeLocations
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
// calculate boundingSphere
|
|
58
|
-
var boundingSphere = this.geometry.boundingSphere;
|
|
59
|
-
boundingSphere.center = Cesium.Matrix4.multiplyByPoint(this.options.modelMatrix, boundingSphere.center, new Cesium.Cartesian3());
|
|
60
|
-
boundingSphere.radius = 1000000;
|
|
61
|
-
this._boundingSphereWC = [boundingSphere];
|
|
62
|
-
var shaderProgram = Cesium.ShaderProgram.fromCache({
|
|
63
|
-
context: context,
|
|
64
|
-
attributeLocations: attributeLocations,
|
|
65
|
-
vertexShaderSource: this.options.vertexShaderSource,
|
|
66
|
-
fragmentShaderSource: this.options.fragmentShaderSource
|
|
67
|
-
});
|
|
68
|
-
this._drawCommand = new Cesium.DrawCommand(_objectSpread({
|
|
69
|
-
owner: this,
|
|
70
|
-
boundingVolume: boundingSphere,
|
|
71
|
-
primitiveType: this.geometry.primitiveType,
|
|
72
|
-
vertexArray: vertexArray,
|
|
73
|
-
shaderProgram: shaderProgram
|
|
74
|
-
}, this.options));
|
|
75
|
-
}
|
|
76
|
-
}, {
|
|
77
|
-
key: "destroy",
|
|
78
|
-
value: function destroy() {
|
|
79
|
-
return Cesium.destroyObject(this);
|
|
80
|
-
}
|
|
81
|
-
}, {
|
|
82
|
-
key: "isDestroyed",
|
|
83
|
-
value: function isDestroyed() {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}]);
|
|
87
|
-
return GeometryPrimitive;
|
|
88
|
-
}();
|
|
89
|
-
export default GeometryPrimitive;
|
|
1
|
+
(function(_0x5bc59f,_0x5a9a0e){var _0x3c89fe=_0x7590,_0x4ccd96=_0x5bc59f();while(!![]){try{var _0x1cec64=-parseInt(_0x3c89fe(0x186))/0x1+parseInt(_0x3c89fe(0x178))/0x2+-parseInt(_0x3c89fe(0x182))/0x3*(parseInt(_0x3c89fe(0x166))/0x4)+-parseInt(_0x3c89fe(0x17b))/0x5+parseInt(_0x3c89fe(0x184))/0x6+-parseInt(_0x3c89fe(0x167))/0x7*(parseInt(_0x3c89fe(0x177))/0x8)+parseInt(_0x3c89fe(0x17f))/0x9*(parseInt(_0x3c89fe(0x17a))/0xa);if(_0x1cec64===_0x5a9a0e)break;else _0x4ccd96['push'](_0x4ccd96['shift']());}catch(_0x51cca4){_0x4ccd96['push'](_0x4ccd96['shift']());}}}(_0x1af8,0x4bc2d));function _typeof(_0x4c7b3c){'@babel/helpers - typeof';var _0x31f007=_0x7590;return _typeof=_0x31f007(0x164)==typeof Symbol&&_0x31f007(0x169)==typeof Symbol[_0x31f007(0x16d)]?function(_0x5c3603){return typeof _0x5c3603;}:function(_0x418614){var _0x36c48f=_0x31f007;return _0x418614&&_0x36c48f(0x164)==typeof Symbol&&_0x418614[_0x36c48f(0x168)]===Symbol&&_0x418614!==Symbol[_0x36c48f(0x181)]?'symbol':typeof _0x418614;},_typeof(_0x4c7b3c);}function ownKeys(_0x4cdde2,_0x2f071d){var _0x473f8d=_0x7590,_0x5baa47=Object[_0x473f8d(0x162)](_0x4cdde2);if(Object['getOwnPropertySymbols']){var _0x20ae1d=Object['getOwnPropertySymbols'](_0x4cdde2);_0x2f071d&&(_0x20ae1d=_0x20ae1d[_0x473f8d(0x17c)](function(_0x531f6e){var _0x4e6b26=_0x473f8d;return Object[_0x4e6b26(0x179)](_0x4cdde2,_0x531f6e)['enumerable'];})),_0x5baa47[_0x473f8d(0x15f)]['apply'](_0x5baa47,_0x20ae1d);}return _0x5baa47;}function _objectSpread(_0x6a3584){var _0x4374cc=_0x7590;for(var _0x259482=0x1;_0x259482<arguments[_0x4374cc(0x16e)];_0x259482++){var _0x5bafe4=null!=arguments[_0x259482]?arguments[_0x259482]:{};_0x259482%0x2?ownKeys(Object(_0x5bafe4),!0x0)[_0x4374cc(0x160)](function(_0x1557aa){_defineProperty(_0x6a3584,_0x1557aa,_0x5bafe4[_0x1557aa]);}):Object['getOwnPropertyDescriptors']?Object[_0x4374cc(0x17d)](_0x6a3584,Object['getOwnPropertyDescriptors'](_0x5bafe4)):ownKeys(Object(_0x5bafe4))['forEach'](function(_0x249360){var _0x3e5d44=_0x4374cc;Object[_0x3e5d44(0x174)](_0x6a3584,_0x249360,Object[_0x3e5d44(0x179)](_0x5bafe4,_0x249360));});}return _0x6a3584;}function _classCallCheck(_0x4c6dd5,_0x4281ac){if(!(_0x4c6dd5 instanceof _0x4281ac))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _defineProperties(_0x3bd445,_0x173e3a){var _0x42f1c1=_0x7590;for(var _0x17ec2f=0x0;_0x17ec2f<_0x173e3a['length'];_0x17ec2f++){var _0x46f4d4=_0x173e3a[_0x17ec2f];_0x46f4d4[_0x42f1c1(0x163)]=_0x46f4d4['enumerable']||![],_0x46f4d4['configurable']=!![];if('value'in _0x46f4d4)_0x46f4d4[_0x42f1c1(0x173)]=!![];Object[_0x42f1c1(0x174)](_0x3bd445,_toPropertyKey(_0x46f4d4['key']),_0x46f4d4);}}function _createClass(_0x38686f,_0x5b31d4,_0x438880){var _0x32da35=_0x7590;if(_0x5b31d4)_defineProperties(_0x38686f[_0x32da35(0x181)],_0x5b31d4);if(_0x438880)_defineProperties(_0x38686f,_0x438880);return Object[_0x32da35(0x174)](_0x38686f,_0x32da35(0x181),{'writable':![]}),_0x38686f;}function _defineProperty(_0x5bcf66,_0x1177a3,_0xd92180){var _0x4bf26a=_0x7590;return _0x1177a3=_toPropertyKey(_0x1177a3),_0x1177a3 in _0x5bcf66?Object[_0x4bf26a(0x174)](_0x5bcf66,_0x1177a3,{'value':_0xd92180,'enumerable':!![],'configurable':!![],'writable':!![]}):_0x5bcf66[_0x1177a3]=_0xd92180,_0x5bcf66;}function _0x7590(_0x535b50,_0x520f67){_0x535b50=_0x535b50-0x15f;var _0x1af812=_0x1af8();var _0x7590e4=_0x1af812[_0x535b50];if(_0x7590['bakhbs']===undefined){var _0x2828d4=function(_0x341234){var _0x220e4e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x1c3d67='',_0x4c7b3c='';for(var _0x5c3603=0x0,_0x418614,_0x4cdde2,_0x2f071d=0x0;_0x4cdde2=_0x341234['charAt'](_0x2f071d++);~_0x4cdde2&&(_0x418614=_0x5c3603%0x4?_0x418614*0x40+_0x4cdde2:_0x4cdde2,_0x5c3603++%0x4)?_0x1c3d67+=String['fromCharCode'](0xff&_0x418614>>(-0x2*_0x5c3603&0x6)):0x0){_0x4cdde2=_0x220e4e['indexOf'](_0x4cdde2);}for(var _0x5baa47=0x0,_0x20ae1d=_0x1c3d67['length'];_0x5baa47<_0x20ae1d;_0x5baa47++){_0x4c7b3c+='%'+('00'+_0x1c3d67['charCodeAt'](_0x5baa47)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4c7b3c);};_0x7590['Snmucc']=_0x2828d4,_0x7590['glwykI']={},_0x7590['bakhbs']=!![];}var _0x58d311=_0x1af812[0x0],_0x25ad0f=_0x535b50+_0x58d311,_0x21f623=_0x7590['glwykI'][_0x25ad0f];return!_0x21f623?(_0x7590e4=_0x7590['Snmucc'](_0x7590e4),_0x7590['glwykI'][_0x25ad0f]=_0x7590e4):_0x7590e4=_0x21f623,_0x7590e4;}function _0x1af8(){var _0x4ac290=['mty4mZC4rerbzvfu','y29UC3rYDwn0B3i','C3LTyM9S','Dg9qCMLTAxrPDMu','zgvZDhjVEu9IAMvJDa','B2jQzwn0','AxrLCMf0B3i','BgvUz3rO','vMvYDgv4qxjYyxK','r2vVBwv0CNLqAxbLBgLUzq','x2jVDw5KAw5Nu3bOzxjLv0m','qeb0B1bYAw1PDgL2zsbTDxn0ihjLDhvYBIbHihbYAw1PDgL2zsb2ywX1zs4','D3jPDgfIBgu','zgvMAw5LuhjVCgvYDhK','B3b0Aw9UCW','zgvMyxvSDa','mtuYDK5nEfzM','ndGZodC4r1fHq2Dp','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','nJCWquP3C2Pu','mtiWndiWnuTTENzhAG','zMLSDgvY','zgvMAw5LuhjVCgvYDgLLCW','y2vUDgvY','mteXode2CMHZtuHj','zNjHz21LBNrtAgfKzxjtB3vYy2u','ChjVDg90ExbL','m2X5zeXruG','q2fYDgvZAwfUmW','mJa0nJKWmgD1B3PNqG','y3jLyxrLr2vVBwv0CNK','otq0nMDZvwLiBq','z2vVBwv0CNK','ChvZAa','zM9YrwfJAa','zgvMAw5Lza','A2v5CW','zw51BwvYywjSzq','zNvUy3rPB24','C3rYAw5N','mtu5mtq2oeHOue1Yta'];_0x1af8=function(){return _0x4ac290;};return _0x1af8();}function _toPropertyKey(_0x68b47e){var _0xb079fa=_0x7590,_0x4a5c7e=_toPrimitive(_0x68b47e,_0xb079fa(0x165));return _0xb079fa(0x169)==_typeof(_0x4a5c7e)?_0x4a5c7e:String(_0x4a5c7e);}function _toPrimitive(_0x2d57df,_0x16c957){var _0x532c91=_0x7590;if(_0x532c91(0x16c)!=_typeof(_0x2d57df)||!_0x2d57df)return _0x2d57df;var _0x2178d6=_0x2d57df[Symbol[_0x532c91(0x16a)]];if(void 0x0!==_0x2178d6){var _0x9a4e9d=_0x2178d6['call'](_0x2d57df,_0x16c957||_0x532c91(0x176));if('object'!=_typeof(_0x9a4e9d))return _0x9a4e9d;throw new TypeError(_0x532c91(0x172));}return('string'===_0x16c957?String:Number)(_0x2d57df);}import*as _0x1c3d67 from'deeptwins-cesium';var GeometryPrimitive=(function(){function _0x25ed90(_0x53927a,_0x188196){var _0x24c3c7=_0x7590;_classCallCheck(this,_0x25ed90),_defineProperty(this,_0x24c3c7(0x175),void 0x0),_defineProperty(this,'geometry',void 0x0),_defineProperty(this,'_drawCommand',void 0x0),_defineProperty(this,'_boundingSphereWC',void 0x0),this[_0x24c3c7(0x175)]=_0x188196,this['geometry']=_0x53927a;}return _createClass(_0x25ed90,[{'key':'update','value':function _0x14c0e5(_0x2ed43d){var _0x53c1bb=_0x7590;if(_0x1c3d67[_0x53c1bb(0x161)](this['_drawCommand'])){_0x2ed43d['commandList']['push'](this['_drawCommand']);return;}this[_0x53c1bb(0x187)][_0x53c1bb(0x168)][_0x53c1bb(0x185)]&&(this[_0x53c1bb(0x187)]=this[_0x53c1bb(0x187)][_0x53c1bb(0x168)]['createGeometry'](this[_0x53c1bb(0x187)]));var _0xce7f7c=_0x2ed43d['context'],_0x56fd13=_0x1c3d67[_0x53c1bb(0x170)]['createAttributeLocations'](this['geometry']),_0x21f3ad=_0x1c3d67[_0x53c1bb(0x16f)]['fromGeometry']({'context':_0xce7f7c,'geometry':this['geometry'],'attributeLocations':_0x56fd13}),_0x1d913c=this[_0x53c1bb(0x187)]['boundingSphere'];_0x1d913c[_0x53c1bb(0x17e)]=_0x1c3d67['Matrix4']['multiplyByPoint'](this['options']['modelMatrix'],_0x1d913c['center'],new _0x1c3d67[(_0x53c1bb(0x183))]()),_0x1d913c['radius']=0xf4240,this[_0x53c1bb(0x171)]=[_0x1d913c];var _0x33154c=_0x1c3d67['ShaderProgram']['fromCache']({'context':_0xce7f7c,'attributeLocations':_0x56fd13,'vertexShaderSource':this[_0x53c1bb(0x175)]['vertexShaderSource'],'fragmentShaderSource':this[_0x53c1bb(0x175)][_0x53c1bb(0x180)]});this['_drawCommand']=new _0x1c3d67['DrawCommand'](_objectSpread({'owner':this,'boundingVolume':_0x1d913c,'primitiveType':this[_0x53c1bb(0x187)]['primitiveType'],'vertexArray':_0x21f3ad,'shaderProgram':_0x33154c},this[_0x53c1bb(0x175)]));}},{'key':'destroy','value':function _0x5a808f(){var _0x5007ca=_0x7590;return _0x1c3d67[_0x5007ca(0x16b)](this);}},{'key':'isDestroyed','value':function _0x447b9e(){return![];}}]),_0x25ed90;}());export default GeometryPrimitive;
|
|
@@ -1,112 +1 @@
|
|
|
1
|
-
function
|
|
2
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
-
import * as Cesium from 'deeptwins-cesium';
|
|
8
|
-
var lerp = Cesium.Math.lerp;
|
|
9
|
-
var _p = [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180];
|
|
10
|
-
for (var i = 0; i < 256; i++) {
|
|
11
|
-
_p[256 + i] = _p[i];
|
|
12
|
-
}
|
|
13
|
-
var ImprovedNoise = /*#__PURE__*/function () {
|
|
14
|
-
function ImprovedNoise() {
|
|
15
|
-
_classCallCheck(this, ImprovedNoise);
|
|
16
|
-
}
|
|
17
|
-
_createClass(ImprovedNoise, [{
|
|
18
|
-
key: "makeTexture3D",
|
|
19
|
-
value: function makeTexture3D(context) {
|
|
20
|
-
var size = 100;
|
|
21
|
-
var dataLength = size * size * size;
|
|
22
|
-
var data = new Uint8Array(dataLength);
|
|
23
|
-
var i = 0;
|
|
24
|
-
var scale = 0.05;
|
|
25
|
-
var perlin = new ImprovedNoise();
|
|
26
|
-
var vector = new Cesium.Cartesian3();
|
|
27
|
-
var halfSize = Cesium.Cartesian3.fromElements(size / 2, size / 2, size / 2, new Cesium.Cartesian3());
|
|
28
|
-
for (var z = 0; z < size; z++) {
|
|
29
|
-
for (var y = 0; y < size; y++) {
|
|
30
|
-
for (var x = 0; x < size; x++) {
|
|
31
|
-
vector = Cesium.Cartesian3.fromElements(x, y, z, vector);
|
|
32
|
-
vector = Cesium.Cartesian3.subtract(vector, halfSize, vector);
|
|
33
|
-
vector = Cesium.Cartesian3.divideByScalar(vector, size, vector);
|
|
34
|
-
var d = 1.0 - Cesium.Cartesian3.magnitude(vector);
|
|
35
|
-
var tv = (128 + 128 * perlin.noise(x * scale / 1.5, y * scale, z * scale / 1.5)) * d * d;
|
|
36
|
-
data[i] = tv;
|
|
37
|
-
i++;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return new Cesium.Texture3D({
|
|
42
|
-
context: context,
|
|
43
|
-
width: size,
|
|
44
|
-
height: size,
|
|
45
|
-
depth: size,
|
|
46
|
-
flipY: false,
|
|
47
|
-
pixelFormat: Cesium.PixelFormat.RED,
|
|
48
|
-
pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE,
|
|
49
|
-
source: {
|
|
50
|
-
arrayBufferView: data,
|
|
51
|
-
width: size,
|
|
52
|
-
height: size,
|
|
53
|
-
depth: size
|
|
54
|
-
},
|
|
55
|
-
sampler: new Cesium.Sampler({
|
|
56
|
-
minificationFilter: Cesium.TextureMinificationFilter.LINEAR,
|
|
57
|
-
magnificationFilter: Cesium.TextureMagnificationFilter.LINEAR
|
|
58
|
-
})
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Returns a noise value for the given parameters.
|
|
64
|
-
*
|
|
65
|
-
* @param {number} x - The x coordinate.
|
|
66
|
-
* @param {number} y - The y coordinate.
|
|
67
|
-
* @param {number} z - The z coordinate.
|
|
68
|
-
* @return {number} The noise value.
|
|
69
|
-
*/
|
|
70
|
-
}, {
|
|
71
|
-
key: "noise",
|
|
72
|
-
value: function noise(x, y, z) {
|
|
73
|
-
var floorX = Math.floor(x);
|
|
74
|
-
var floorY = Math.floor(y);
|
|
75
|
-
var floorZ = Math.floor(z);
|
|
76
|
-
var X = floorX & 255;
|
|
77
|
-
var Y = floorY & 255;
|
|
78
|
-
var Z = floorZ & 255;
|
|
79
|
-
x -= floorX;
|
|
80
|
-
y -= floorY;
|
|
81
|
-
z -= floorZ;
|
|
82
|
-
var xMinus1 = x - 1;
|
|
83
|
-
var yMinus1 = y - 1;
|
|
84
|
-
var zMinus1 = z - 1;
|
|
85
|
-
var u = this.fade(x);
|
|
86
|
-
var v = this.fade(y);
|
|
87
|
-
var w = this.fade(z);
|
|
88
|
-
var A = _p[X] + Y;
|
|
89
|
-
var AA = _p[A] + Z;
|
|
90
|
-
var AB = _p[A + 1] + Z;
|
|
91
|
-
var B = _p[X + 1] + Y;
|
|
92
|
-
var BA = _p[B] + Z;
|
|
93
|
-
var BB = _p[B + 1] + Z;
|
|
94
|
-
return lerp(lerp(lerp(this.grad(_p[AA], x, y, z), this.grad(_p[BA], xMinus1, y, z), u), lerp(this.grad(_p[AB], x, yMinus1, z), this.grad(_p[BB], xMinus1, yMinus1, z), u), v), lerp(lerp(this.grad(_p[AA + 1], x, y, zMinus1), this.grad(_p[BA + 1], xMinus1, y, zMinus1), u), lerp(this.grad(_p[AB + 1], x, yMinus1, zMinus1), this.grad(_p[BB + 1], xMinus1, yMinus1, zMinus1), u), v), w);
|
|
95
|
-
}
|
|
96
|
-
}, {
|
|
97
|
-
key: "fade",
|
|
98
|
-
value: function fade(t) {
|
|
99
|
-
return t * t * t * (t * (t * 6 - 15) + 10);
|
|
100
|
-
}
|
|
101
|
-
}, {
|
|
102
|
-
key: "grad",
|
|
103
|
-
value: function grad(hash, x, y, z) {
|
|
104
|
-
var h = hash & 15;
|
|
105
|
-
var u = h < 8 ? x : y;
|
|
106
|
-
var v = h < 4 ? y : h === 12 || h === 14 ? x : z;
|
|
107
|
-
return ((h & 1) === 0 ? u : -u) + ((h & 2) === 0 ? v : -v);
|
|
108
|
-
}
|
|
109
|
-
}]);
|
|
110
|
-
return ImprovedNoise;
|
|
111
|
-
}();
|
|
112
|
-
export default ImprovedNoise;
|
|
1
|
+
var _0x7a982=_0x1d8a;function _0x1d8a(_0x2b0d3c,_0xeab885){_0x2b0d3c=_0x2b0d3c-0x69;var _0x3352a9=_0x3352();var _0x1d8a52=_0x3352a9[_0x2b0d3c];if(_0x1d8a['DFZjuP']===undefined){var _0x2d7dc1=function(_0xfd891b){var _0x12076f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x54f33a='',_0x1349ea='';for(var _0x483b74=0x0,_0x2fde3f,_0x355965,_0x5887ba=0x0;_0x355965=_0xfd891b['charAt'](_0x5887ba++);~_0x355965&&(_0x2fde3f=_0x483b74%0x4?_0x2fde3f*0x40+_0x355965:_0x355965,_0x483b74++%0x4)?_0x54f33a+=String['fromCharCode'](0xff&_0x2fde3f>>(-0x2*_0x483b74&0x6)):0x0){_0x355965=_0x12076f['indexOf'](_0x355965);}for(var _0x590e52=0x0,_0x9682b1=_0x54f33a['length'];_0x590e52<_0x9682b1;_0x590e52++){_0x1349ea+='%'+('00'+_0x54f33a['charCodeAt'](_0x590e52)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1349ea);};_0x1d8a['gjiceL']=_0x2d7dc1,_0x1d8a['eZuKNp']={},_0x1d8a['DFZjuP']=!![];}var _0xd729b6=_0x3352a9[0x0],_0x28381d=_0x2b0d3c+_0xd729b6,_0x4b94c6=_0x1d8a['eZuKNp'][_0x28381d];return!_0x4b94c6?(_0x1d8a52=_0x1d8a['gjiceL'](_0x1d8a52),_0x1d8a['eZuKNp'][_0x28381d]=_0x1d8a52):_0x1d8a52=_0x4b94c6,_0x1d8a52;}(function(_0x1c7624,_0xf0e971){var _0x4cc642=_0x1d8a,_0x539768=_0x1c7624();while(!![]){try{var _0x599a0f=-parseInt(_0x4cc642(0x82))/0x1+parseInt(_0x4cc642(0x73))/0x2+parseInt(_0x4cc642(0x78))/0x3+-parseInt(_0x4cc642(0x7e))/0x4*(parseInt(_0x4cc642(0x72))/0x5)+parseInt(_0x4cc642(0x84))/0x6*(-parseInt(_0x4cc642(0x87))/0x7)+-parseInt(_0x4cc642(0x74))/0x8+parseInt(_0x4cc642(0x83))/0x9;if(_0x599a0f===_0xf0e971)break;else _0x539768['push'](_0x539768['shift']());}catch(_0x457537){_0x539768['push'](_0x539768['shift']());}}}(_0x3352,0x26804));function _typeof(_0x1349ea){'@babel/helpers - typeof';return _typeof='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x483b74){return typeof _0x483b74;}:function(_0x2fde3f){var _0x1777c1=_0x1d8a;return _0x2fde3f&&'function'==typeof Symbol&&_0x2fde3f['constructor']===Symbol&&_0x2fde3f!==Symbol[_0x1777c1(0x6a)]?'symbol':typeof _0x2fde3f;},_typeof(_0x1349ea);}function _classCallCheck(_0x355965,_0x5887ba){if(!(_0x355965 instanceof _0x5887ba))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _defineProperties(_0x590e52,_0x9682b1){var _0x12fbda=_0x1d8a;for(var _0x49afd2=0x0;_0x49afd2<_0x9682b1['length'];_0x49afd2++){var _0x29f6e9=_0x9682b1[_0x49afd2];_0x29f6e9[_0x12fbda(0x71)]=_0x29f6e9['enumerable']||![],_0x29f6e9[_0x12fbda(0x6b)]=!![];if('value'in _0x29f6e9)_0x29f6e9[_0x12fbda(0x6f)]=!![];Object['defineProperty'](_0x590e52,_toPropertyKey(_0x29f6e9['key']),_0x29f6e9);}}function _createClass(_0x435d66,_0x238d7f,_0x423e52){if(_0x238d7f)_defineProperties(_0x435d66['prototype'],_0x238d7f);if(_0x423e52)_defineProperties(_0x435d66,_0x423e52);return Object['defineProperty'](_0x435d66,'prototype',{'writable':![]}),_0x435d66;}function _toPropertyKey(_0x31fa81){var _0x371f25=_toPrimitive(_0x31fa81,'string');return'symbol'==_typeof(_0x371f25)?_0x371f25:String(_0x371f25);}function _toPrimitive(_0x917046,_0x31cbd8){var _0x3904cb=_0x1d8a;if('object'!=_typeof(_0x917046)||!_0x917046)return _0x917046;var _0x958ca4=_0x917046[Symbol[_0x3904cb(0x69)]];if(void 0x0!==_0x958ca4){var _0x15c710=_0x958ca4[_0x3904cb(0x77)](_0x917046,_0x31cbd8||'default');if(_0x3904cb(0x7c)!=_typeof(_0x15c710))return _0x15c710;throw new TypeError('@@toPrimitive\x20must\x20return\x20a\x20primitive\x20value.');}return('string'===_0x31cbd8?String:Number)(_0x917046);}function _0x3352(){var _0x54b3c3=['BM9PC2u','zgL2AwrLqNLty2fSyxi','B2jQzwn0','BwfRzvrLEhr1CMuZra','ndHACevpDNy','teLorufs','BgvYCa','zMfKzq','nZC0otvRDeTRtfq','mti2nZKZoffNruDXqG','mJGYt1PVz1LW','q2fYDgvZAwfUmW','ugL4zwXeyxrHDhLWzq','mJaYmtziuNL0Eva','Dg9qCMLTAxrPDMu','ChjVDg90ExbL','y29UzMLNDxjHyMXL','vgv4DhvYztne','vgv4DhvYzu1PBMLMAwnHDgLVBKzPBhrLCG','u2fTCgXLCG','D3jPDgfIBgu','zNjVBuvSzw1LBNrZ','zw51BwvYywjSzq','mtaYmZy1ueDYswrW','ntmZmJCYB3nUq3j5','mtGYodi0BLDpsvrU','zMXVB3i','z3jHza','y2fSBa','nJK1odi2wgvJuKnR','vu5tsuDorurFqLLurq'];_0x3352=function(){return _0x54b3c3;};return _0x3352();}import*as _0x54f33a from'deeptwins-cesium';var lerp=_0x54f33a['Math'][_0x7a982(0x80)],_p=[0x97,0xa0,0x89,0x5b,0x5a,0xf,0x83,0xd,0xc9,0x5f,0x60,0x35,0xc2,0xe9,0x7,0xe1,0x8c,0x24,0x67,0x1e,0x45,0x8e,0x8,0x63,0x25,0xf0,0x15,0xa,0x17,0xbe,0x6,0x94,0xf7,0x78,0xea,0x4b,0x0,0x1a,0xc5,0x3e,0x5e,0xfc,0xdb,0xcb,0x75,0x23,0xb,0x20,0x39,0xb1,0x21,0x58,0xed,0x95,0x38,0x57,0xae,0x14,0x7d,0x88,0xab,0xa8,0x44,0xaf,0x4a,0xa5,0x47,0x86,0x8b,0x30,0x1b,0xa6,0x4d,0x92,0x9e,0xe7,0x53,0x6f,0xe5,0x7a,0x3c,0xd3,0x85,0xe6,0xdc,0x69,0x5c,0x29,0x37,0x2e,0xf5,0x28,0xf4,0x66,0x8f,0x36,0x41,0x19,0x3f,0xa1,0x1,0xd8,0x50,0x49,0xd1,0x4c,0x84,0xbb,0xd0,0x59,0x12,0xa9,0xc8,0xc4,0x87,0x82,0x74,0xbc,0x9f,0x56,0xa4,0x64,0x6d,0xc6,0xad,0xba,0x3,0x40,0x34,0xd9,0xe2,0xfa,0x7c,0x7b,0x5,0xca,0x26,0x93,0x76,0x7e,0xff,0x52,0x55,0xd4,0xcf,0xce,0x3b,0xe3,0x2f,0x10,0x3a,0x11,0xb6,0xbd,0x1c,0x2a,0xdf,0xb7,0xaa,0xd5,0x77,0xf8,0x98,0x2,0x2c,0x9a,0xa3,0x46,0xdd,0x99,0x65,0x9b,0xa7,0x2b,0xac,0x9,0x81,0x16,0x27,0xfd,0x13,0x62,0x6c,0x6e,0x4f,0x71,0xe0,0xe8,0xb2,0xb9,0x70,0x68,0xda,0xf6,0x61,0xe4,0xfb,0x22,0xf2,0xc1,0xee,0xd2,0x90,0xc,0xbf,0xb3,0xa2,0xf1,0x51,0x33,0x91,0xeb,0xf9,0xe,0xef,0x6b,0x31,0xc0,0xd6,0x1f,0xb5,0xc7,0x6a,0x9d,0xb8,0x54,0xcc,0xb0,0x73,0x79,0x32,0x2d,0x7f,0x4,0x96,0xfe,0x8a,0xec,0xcd,0x5d,0xde,0x72,0x43,0x1d,0x18,0x48,0xf3,0x8d,0x80,0xc3,0x4e,0x42,0xd7,0x3d,0x9c,0xb4];for(var i=0x0;i<0x100;i++){_p[0x100+i]=_p[i];}var ImprovedNoise=(function(){var _0x4a0c2b=_0x7a982;function _0xa049b(){_classCallCheck(this,_0xa049b);}return _createClass(_0xa049b,[{'key':_0x4a0c2b(0x7d),'value':function _0x4ee9e9(_0x3fa0b4){var _0x1eb690=_0x4a0c2b,_0x305880=0x64,_0x5ac61b=_0x305880*_0x305880*_0x305880,_0x5179d9=new Uint8Array(_0x5ac61b),_0x3eb4a4=0x0,_0xd2cec6=0.05,_0x16dbcb=new _0xa049b(),_0x3e8b5b=new _0x54f33a['Cartesian3'](),_0x4c3b83=_0x54f33a['Cartesian3']['fromElements'](_0x305880/0x2,_0x305880/0x2,_0x305880/0x2,new _0x54f33a['Cartesian3']());for(var _0x4df60e=0x0;_0x4df60e<_0x305880;_0x4df60e++){for(var _0x313870=0x0;_0x313870<_0x305880;_0x313870++){for(var _0x5e4a4d=0x0;_0x5e4a4d<_0x305880;_0x5e4a4d++){_0x3e8b5b=_0x54f33a[_0x1eb690(0x85)][_0x1eb690(0x70)](_0x5e4a4d,_0x313870,_0x4df60e,_0x3e8b5b),_0x3e8b5b=_0x54f33a['Cartesian3']['subtract'](_0x3e8b5b,_0x4c3b83,_0x3e8b5b),_0x3e8b5b=_0x54f33a['Cartesian3'][_0x1eb690(0x7b)](_0x3e8b5b,_0x305880,_0x3e8b5b);var _0x135a86=0x1-_0x54f33a[_0x1eb690(0x85)]['magnitude'](_0x3e8b5b),_0x24f77e=(0x80+0x80*_0x16dbcb[_0x1eb690(0x7a)](_0x5e4a4d*_0xd2cec6/1.5,_0x313870*_0xd2cec6,_0x4df60e*_0xd2cec6/1.5))*_0x135a86*_0x135a86;_0x5179d9[_0x3eb4a4]=_0x24f77e,_0x3eb4a4++;}}}return new _0x54f33a[(_0x1eb690(0x6c))]({'context':_0x3fa0b4,'width':_0x305880,'height':_0x305880,'depth':_0x305880,'flipY':![],'pixelFormat':_0x54f33a['PixelFormat']['RED'],'pixelDatatype':_0x54f33a[_0x1eb690(0x86)][_0x1eb690(0x79)],'source':{'arrayBufferView':_0x5179d9,'width':_0x305880,'height':_0x305880,'depth':_0x305880},'sampler':new _0x54f33a[(_0x1eb690(0x6e))]({'minificationFilter':_0x54f33a[_0x1eb690(0x6d)]['LINEAR'],'magnificationFilter':_0x54f33a['TextureMagnificationFilter'][_0x1eb690(0x7f)]})});}},{'key':_0x4a0c2b(0x7a),'value':function _0x2b65de(_0x179010,_0xce091,_0x3b7033){var _0x318446=_0x4a0c2b,_0x576eff=Math['floor'](_0x179010),_0xdffb95=Math[_0x318446(0x75)](_0xce091),_0x860336=Math['floor'](_0x3b7033),_0x1f421b=_0x576eff&0xff,_0x4d4dbe=_0xdffb95&0xff,_0x1143bf=_0x860336&0xff;_0x179010-=_0x576eff,_0xce091-=_0xdffb95,_0x3b7033-=_0x860336;var _0x2b34de=_0x179010-0x1,_0x12402e=_0xce091-0x1,_0x4f5f9e=_0x3b7033-0x1,_0x1b4b29=this['fade'](_0x179010),_0x16f872=this['fade'](_0xce091),_0x2568ca=this[_0x318446(0x81)](_0x3b7033),_0xd5197=_p[_0x1f421b]+_0x4d4dbe,_0x320e1c=_p[_0xd5197]+_0x1143bf,_0x4b5fad=_p[_0xd5197+0x1]+_0x1143bf,_0x2a8b2b=_p[_0x1f421b+0x1]+_0x4d4dbe,_0x5b9b36=_p[_0x2a8b2b]+_0x1143bf,_0x3546fa=_p[_0x2a8b2b+0x1]+_0x1143bf;return lerp(lerp(lerp(this['grad'](_p[_0x320e1c],_0x179010,_0xce091,_0x3b7033),this['grad'](_p[_0x5b9b36],_0x2b34de,_0xce091,_0x3b7033),_0x1b4b29),lerp(this[_0x318446(0x76)](_p[_0x4b5fad],_0x179010,_0x12402e,_0x3b7033),this[_0x318446(0x76)](_p[_0x3546fa],_0x2b34de,_0x12402e,_0x3b7033),_0x1b4b29),_0x16f872),lerp(lerp(this['grad'](_p[_0x320e1c+0x1],_0x179010,_0xce091,_0x4f5f9e),this['grad'](_p[_0x5b9b36+0x1],_0x2b34de,_0xce091,_0x4f5f9e),_0x1b4b29),lerp(this[_0x318446(0x76)](_p[_0x4b5fad+0x1],_0x179010,_0x12402e,_0x4f5f9e),this[_0x318446(0x76)](_p[_0x3546fa+0x1],_0x2b34de,_0x12402e,_0x4f5f9e),_0x1b4b29),_0x16f872),_0x2568ca);}},{'key':'fade','value':function _0x411a46(_0x28befa){return _0x28befa*_0x28befa*_0x28befa*(_0x28befa*(_0x28befa*0x6-0xf)+0xa);}},{'key':_0x4a0c2b(0x76),'value':function _0xffb122(_0x379e16,_0x2ff11e,_0x23cc87,_0x33d05f){var _0x592cf5=_0x379e16&0xf,_0x138074=_0x592cf5<0x8?_0x2ff11e:_0x23cc87,_0x280202=_0x592cf5<0x4?_0x23cc87:_0x592cf5===0xc||_0x592cf5===0xe?_0x2ff11e:_0x33d05f;return((_0x592cf5&0x1)===0x0?_0x138074:-_0x138074)+((_0x592cf5&0x2)===0x0?_0x280202:-_0x280202);}}]),_0xa049b;}());export default ImprovedNoise;
|
|
@@ -1,91 +1 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
3
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
7
|
-
import * as Cesium from 'deeptwins-cesium';
|
|
8
|
-
import GeometryPrimitive from "./GeometryPrimitive";
|
|
9
|
-
import ImprovedNoise from "./ImprovedNoise";
|
|
10
|
-
var vertexShader = /* glsl */"\nin vec3 position3DHigh;\nin vec3 position3DLow;\nin vec3 normal;\nin vec2 st;\nin float batchId;\n\nout vec3 vOrigin;\nout vec3 vDirection;\nout vec3 vPosition;\n\nvec4 translateRelativeToEye(vec3 high, vec3 low) {\n vec3 highDifference = high - czm_encodedCameraPositionMCHigh;\n if(length(highDifference) == 0.0f) {\n highDifference = vec3(0);\n }\n vec3 lowDifference = low - czm_encodedCameraPositionMCLow;\n return vec4(highDifference + lowDifference, 1.0f);\n}\n\nvoid main()\n{\n vec4 p = translateRelativeToEye(position3DHigh, position3DLow);\n \n vOrigin = czm_encodedCameraPositionMCHigh + czm_encodedCameraPositionMCLow;\n\n vec3 modelPosition = position3DHigh + position3DLow;\n vPosition = modelPosition;\n\n vDirection = modelPosition - vOrigin;\n\n gl_Position = czm_modelViewProjectionRelativeToEye * p;\n}";
|
|
11
|
-
var fragmentShader = /* glsl */"\nprecision highp float;\nprecision highp sampler3D;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\n// https://github.com/mrdoob/three.js/blob/dev/examples/webgl_volume_cloud.html\nuniform vec3 base;\nuniform sampler3D map;\n uniform float threshold;\n uniform float range;\n uniform float opacity;\n uniform float steps;\n uniform float frame;\n\n uint wang_hash(uint seed)\n {\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n }\n\n float randomFloat(inout uint seed)\n {\n return float(wang_hash(seed)) / 4294967296.;\n }\n\n vec2 hitBox( vec3 orig, vec3 dir ) {\n const vec3 box_min = vec3( - 0.5 );\n const vec3 box_max = vec3( 0.5 );\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = ( box_min - orig ) * inv_dir;\n vec3 tmax_tmp = ( box_max - orig ) * inv_dir;\n vec3 tmin = min( tmin_tmp, tmax_tmp );\n vec3 tmax = max( tmin_tmp, tmax_tmp );\n float t0 = max( tmin.x, max( tmin.y, tmin.z ) );\n float t1 = min( tmax.x, min( tmax.y, tmax.z ) );\n return vec2( t0, t1 );\n }\n\n float sample1( vec3 p ) {\n return texture( map, p ).r;\n }\n\n float shading( vec3 coord ) {\n float step = 0.01;\n return sample1( coord + vec3( - step ) ) - sample1( coord + vec3( step ) );\n }\n\n vec4 linearToSRGB( in vec4 value ) {\n return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n }\n\nvoid main() {\n vec3 rayDir = normalize( vDirection );\n vec2 bounds = hitBox( vOrigin, rayDir );\n if ( bounds.x > bounds.y ) discard;\n bounds.x = max( bounds.x, 0.0 );\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs( rayDir );\n float delta = min( inc.x, min( inc.y, inc.z ) );\n delta /= steps;\n\n // Nice little seed from\n // https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint( gl_FragCoord.x ) * uint( 1973 ) + uint( gl_FragCoord.y ) * uint( 9277 ) + uint( frame ) * uint( 26699 );\n vec3 size = vec3( textureSize( map, 0 ) );\n float randNum = randomFloat( seed ) * 2.0 - 1.0;\n p += rayDir * randNum * ( 1.0 / size );\n\n vec4 ac = vec4( base, 0.0 );\n for ( float t = bounds.x; t < bounds.y; t += delta ) {\n float d = sample1( p + 0.5 );\n d = smoothstep( threshold - range, threshold + range, d ) * opacity;\n float col = shading( p + 0.5 ) * 3.0 + ( ( p.x + p.y ) * 0.25 ) + 0.2;\n ac.rgb += ( 1.0 - ac.a ) * d * col;\n ac.a += ( 1.0 - ac.a ) * d;\n if ( ac.a >= 0.95 ) break;\n p += rayDir * delta;\n }\n vec4 color = linearToSRGB( ac );\n color = czm_gammaCorrect( color );\n if ( color.a == 0.0 ) discard;\n out_FragColor = color;\n}\n";
|
|
12
|
-
var VolumeClouds = /*#__PURE__*/_createClass(function VolumeClouds(map) {
|
|
13
|
-
_classCallCheck(this, VolumeClouds);
|
|
14
|
-
var texture3D = new ImprovedNoise().makeTexture3D(map.scene.context);
|
|
15
|
-
texture3D.generateMipmap();
|
|
16
|
-
var boxSideLength = 1.0;
|
|
17
|
-
var zoomScale = 10000;
|
|
18
|
-
var centerPoint = Cesium.Cartesian3.fromDegrees(113, 33, boxSideLength / 0.5 * zoomScale);
|
|
19
|
-
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(centerPoint);
|
|
20
|
-
var boxSize = new Cesium.Cartesian3(boxSideLength, boxSideLength, boxSideLength);
|
|
21
|
-
var renderState = Cesium.RenderState.fromCache({
|
|
22
|
-
depthMask: false,
|
|
23
|
-
blending: {
|
|
24
|
-
enabled: true,
|
|
25
|
-
color: {
|
|
26
|
-
red: 0.0,
|
|
27
|
-
green: 0.0,
|
|
28
|
-
blue: 0.0,
|
|
29
|
-
alpha: 0.0
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
depthTest: {
|
|
33
|
-
enabled: true,
|
|
34
|
-
func: Cesium.DepthFunction.LESS_OR_EQUAL
|
|
35
|
-
},
|
|
36
|
-
cull: {
|
|
37
|
-
enabled: true,
|
|
38
|
-
face: Cesium.CullFace.FRONT
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
var zoomMat = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(zoomScale, zoomScale, zoomScale), new Cesium.Matrix4());
|
|
42
|
-
Cesium.Matrix4.multiply(modelMatrix, zoomMat, modelMatrix);
|
|
43
|
-
var halfBox = Cesium.Cartesian3.multiplyByScalar(boxSize, 0.5, new Cesium.Cartesian3());
|
|
44
|
-
var negHalfBox = Cesium.Cartesian3.negate(halfBox, new Cesium.Cartesian3());
|
|
45
|
-
var boxGeometry = new Cesium.BoxGeometry({
|
|
46
|
-
minimum: negHalfBox,
|
|
47
|
-
maximum: halfBox
|
|
48
|
-
});
|
|
49
|
-
var uniforms = {
|
|
50
|
-
base: new Cesium.Color(0.1912, 0.2542, 0.3515, 0),
|
|
51
|
-
map: texture3D,
|
|
52
|
-
opacity: 0.25,
|
|
53
|
-
range: 0.1,
|
|
54
|
-
steps: 100,
|
|
55
|
-
frame: 0,
|
|
56
|
-
threshold: 0.25
|
|
57
|
-
};
|
|
58
|
-
var cmdUniforms = {};
|
|
59
|
-
var _loop = function _loop(key) {
|
|
60
|
-
if (key) {
|
|
61
|
-
cmdUniforms[key] = function () {
|
|
62
|
-
return uniforms[key];
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
for (var key in uniforms) {
|
|
67
|
-
_loop(key);
|
|
68
|
-
}
|
|
69
|
-
var primitive = new GeometryPrimitive(boxGeometry, {
|
|
70
|
-
uniformMap: cmdUniforms,
|
|
71
|
-
vertexShaderSource: vertexShader,
|
|
72
|
-
fragmentShaderSource: fragmentShader,
|
|
73
|
-
renderState: renderState,
|
|
74
|
-
modelMatrix: modelMatrix,
|
|
75
|
-
pass: Cesium.Pass.TRANSLUCENT
|
|
76
|
-
});
|
|
77
|
-
map.scene.primitives.add(primitive);
|
|
78
|
-
var cameraState = {
|
|
79
|
-
destination: centerPoint,
|
|
80
|
-
orientation: {
|
|
81
|
-
heading: 4.159717744111784,
|
|
82
|
-
pitch: -0.4648127266675117,
|
|
83
|
-
roll: boxSideLength * zoomScale * 2
|
|
84
|
-
},
|
|
85
|
-
duration: 0
|
|
86
|
-
};
|
|
87
|
-
// viewer.camera.flyTo(camState);
|
|
88
|
-
var hpr = new Cesium.HeadingPitchRange(cameraState.orientation.heading, cameraState.orientation.pitch, boxSideLength * zoomScale * 2);
|
|
89
|
-
map.camera.lookAt(cameraState.destination, hpr);
|
|
90
|
-
});
|
|
91
|
-
export default VolumeClouds;
|
|
1
|
+
function _0x3504(){var _0x3e69c0=['BgvUz3rO','mty2mZG4DNLuDxDP','y2fSBa','twf0CML4na','C3rYAw5N','ugfZCW','nZG5nZa2vLr2tNzh','mty2odK0n3PmAKr3sa','B2jQzwn0','y29UDgv4Da','zNjVBurLz3jLzxm','rLjptLq','zw51BwvYywjSzq','mJyWnduWtxfUsMjp','mte1uLrjzevz','ndvmse53Exe','zNvUy3rPB24','q29SB3i','zNjVBvnJywXL','mZi0mJK4ne9HDe9UwG','mZbeD2jJs2G','q3vSBezHy2u','C3LTyM9S','Bg9VA0f0','q2fYDgvZAwfUmW','B3jPzw50yxrPB24','qM94r2vVBwv0CNK','uMvUzgvYu3rHDgu','ChjVDg90ExbL','AxrLCMf0B3i','otC4mdb5rMvZrxa','C2nLBMu','mti5nJyWr2jSuKL2','vhjHBNnMB3jTCW'];_0x3504=function(){return _0x3e69c0;};return _0x3504();}(function(_0x514394,_0x6044ed){var _0x4b5608=_0x45c5,_0x516fd9=_0x514394();while(!![]){try{var _0x341537=-parseInt(_0x4b5608(0x176))/0x1+-parseInt(_0x4b5608(0x17e))/0x2+-parseInt(_0x4b5608(0x18c))/0x3*(parseInt(_0x4b5608(0x179))/0x4)+-parseInt(_0x4b5608(0x186))/0x5*(-parseInt(_0x4b5608(0x174))/0x6)+parseInt(_0x4b5608(0x17f))/0x7+parseInt(_0x4b5608(0x18b))/0x8+-parseInt(_0x4b5608(0x187))/0x9*(-parseInt(_0x4b5608(0x185))/0xa);if(_0x341537===_0x6044ed)break;else _0x516fd9['push'](_0x516fd9['shift']());}catch(_0x17cf42){_0x516fd9['push'](_0x516fd9['shift']());}}}(_0x3504,0x32e34));function _typeof(_0x5df2c6){'@babel/helpers - typeof';var _0x48133c=_0x45c5;return _typeof=_0x48133c(0x188)==typeof Symbol&&_0x48133c(0x18e)==typeof Symbol[_0x48133c(0x173)]?function(_0x63abc6){return typeof _0x63abc6;}:function(_0x59512b){var _0x728dab=_0x48133c;return _0x59512b&&'function'==typeof Symbol&&_0x59512b['constructor']===Symbol&&_0x59512b!==Symbol[_0x728dab(0x172)]?_0x728dab(0x18e):typeof _0x59512b;},_typeof(_0x5df2c6);}function _defineProperties(_0x3446fe,_0x10651a){var _0x508ce7=_0x45c5;for(var _0x5488a=0x0;_0x5488a<_0x10651a[_0x508ce7(0x178)];_0x5488a++){var _0x301e8d=_0x10651a[_0x5488a];_0x301e8d[_0x508ce7(0x184)]=_0x301e8d[_0x508ce7(0x184)]||![],_0x301e8d['configurable']=!![];if('value'in _0x301e8d)_0x301e8d['writable']=!![];Object['defineProperty'](_0x3446fe,_toPropertyKey(_0x301e8d['key']),_0x301e8d);}}function _createClass(_0x2b6e6b,_0x75a3a2,_0xfd6a31){var _0x9d648=_0x45c5;if(_0x75a3a2)_defineProperties(_0x2b6e6b[_0x9d648(0x172)],_0x75a3a2);if(_0xfd6a31)_defineProperties(_0x2b6e6b,_0xfd6a31);return Object['defineProperty'](_0x2b6e6b,'prototype',{'writable':![]}),_0x2b6e6b;}function _0x45c5(_0x5a5c34,_0x2cef68){_0x5a5c34=_0x5a5c34-0x16e;var _0x35046f=_0x3504();var _0x45c5ab=_0x35046f[_0x5a5c34];if(_0x45c5['xZoofo']===undefined){var _0x449377=function(_0x2ff0af){var _0x354696='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x414889='',_0x32b825='';for(var _0x5e888d=0x0,_0x5df2c6,_0x63abc6,_0x59512b=0x0;_0x63abc6=_0x2ff0af['charAt'](_0x59512b++);~_0x63abc6&&(_0x5df2c6=_0x5e888d%0x4?_0x5df2c6*0x40+_0x63abc6:_0x63abc6,_0x5e888d++%0x4)?_0x414889+=String['fromCharCode'](0xff&_0x5df2c6>>(-0x2*_0x5e888d&0x6)):0x0){_0x63abc6=_0x354696['indexOf'](_0x63abc6);}for(var _0x3446fe=0x0,_0x10651a=_0x414889['length'];_0x3446fe<_0x10651a;_0x3446fe++){_0x32b825+='%'+('00'+_0x414889['charCodeAt'](_0x3446fe)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x32b825);};_0x45c5['iWcCqu']=_0x449377,_0x45c5['BjzBzl']={},_0x45c5['xZoofo']=!![];}var _0x46c96a=_0x35046f[0x0],_0x2293cd=_0x5a5c34+_0x46c96a,_0x252ceb=_0x45c5['BjzBzl'][_0x2293cd];return!_0x252ceb?(_0x45c5ab=_0x45c5['iWcCqu'](_0x45c5ab),_0x45c5['BjzBzl'][_0x2293cd]=_0x45c5ab):_0x45c5ab=_0x252ceb,_0x45c5ab;}function _toPropertyKey(_0x5d729e){var _0x2d18d9=_0x45c5,_0x4decf3=_toPrimitive(_0x5d729e,'string');return _0x2d18d9(0x18e)==_typeof(_0x4decf3)?_0x4decf3:String(_0x4decf3);}function _toPrimitive(_0x306b2a,_0x101f26){var _0x56f135=_0x45c5;if('object'!=_typeof(_0x306b2a)||!_0x306b2a)return _0x306b2a;var _0x523f3a=_0x306b2a[Symbol['toPrimitive']];if(void 0x0!==_0x523f3a){var _0xd3356a=_0x523f3a[_0x56f135(0x17a)](_0x306b2a,_0x101f26||'default');if(_0x56f135(0x180)!=_typeof(_0xd3356a))return _0xd3356a;throw new TypeError('@@toPrimitive\x20must\x20return\x20a\x20primitive\x20value.');}return(_0x56f135(0x17c)===_0x101f26?String:Number)(_0x306b2a);}function _classCallCheck(_0x293374,_0x398338){if(!(_0x293374 instanceof _0x398338))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}import*as _0x414889 from'deeptwins-cesium';import _0x32b825 from'./GeometryPrimitive';import _0x5e888d from'./ImprovedNoise';var vertexShader='\x0ain\x20vec3\x20position3DHigh;\x0ain\x20vec3\x20position3DLow;\x0ain\x20vec3\x20normal;\x0ain\x20vec2\x20st;\x0ain\x20float\x20batchId;\x0a\x0aout\x20vec3\x20vOrigin;\x0aout\x20vec3\x20vDirection;\x0aout\x20vec3\x20vPosition;\x0a\x0avec4\x20translateRelativeToEye(vec3\x20high,\x20vec3\x20low)\x20{\x0a\x20\x20\x20\x20vec3\x20highDifference\x20=\x20high\x20-\x20czm_encodedCameraPositionMCHigh;\x0a\x20\x20\x20\x20if(length(highDifference)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20highDifference\x20=\x20vec3(0);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20vec3\x20lowDifference\x20=\x20low\x20-\x20czm_encodedCameraPositionMCLow;\x0a\x20\x20\x20\x20return\x20vec4(highDifference\x20+\x20lowDifference,\x201.0f);\x0a}\x0a\x0avoid\x20main()\x0a{\x0a\x20\x20\x20\x20vec4\x20p\x20=\x20translateRelativeToEye(position3DHigh,\x20position3DLow);\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20vOrigin\x20=\x20czm_encodedCameraPositionMCHigh\x20+\x20czm_encodedCameraPositionMCLow;\x0a\x0a\x20\x20\x20\x20vec3\x20modelPosition\x20=\x20position3DHigh\x20+\x20position3DLow;\x0a\x20\x20\x20\x20vPosition\x20=\x20modelPosition;\x0a\x0a\x20\x20\x20\x20vDirection\x20=\x20modelPosition\x20-\x20vOrigin;\x0a\x0a\x20\x20\x20\x20gl_Position\x20=\x20czm_modelViewProjectionRelativeToEye\x20*\x20p;\x0a}',fragmentShader='\x0aprecision\x20highp\x20float;\x0aprecision\x20highp\x20sampler3D;\x0a\x0ain\x20vec3\x20vOrigin;\x0ain\x20vec3\x20vDirection;\x0a\x0a//\x20https://github.com/mrdoob/three.js/blob/dev/examples/webgl_volume_cloud.html\x0auniform\x20vec3\x20base;\x0auniform\x20sampler3D\x20map;\x0a\x20\x20\x20\x20\x20\x20uniform\x20float\x20threshold;\x0a\x20\x20\x20\x20\x20\x20uniform\x20float\x20range;\x0a\x20\x20\x20\x20\x20\x20uniform\x20float\x20opacity;\x0a\x20\x20\x20\x20\x20\x20uniform\x20float\x20steps;\x0a\x20\x20\x20\x20\x20\x20uniform\x20float\x20frame;\x0a\x0a\x20\x20\x20\x20\x20\x20uint\x20wang_hash(uint\x20seed)\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seed\x20=\x20(seed\x20^\x2061u)\x20^\x20(seed\x20>>\x2016u);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seed\x20*=\x209u;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seed\x20=\x20seed\x20^\x20(seed\x20>>\x204u);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seed\x20*=\x200x27d4eb2du;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seed\x20=\x20seed\x20^\x20(seed\x20>>\x2015u);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20seed;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20float\x20randomFloat(inout\x20uint\x20seed)\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20float(wang_hash(seed))\x20/\x204294967296.;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20vec2\x20hitBox(\x20vec3\x20orig,\x20vec3\x20dir\x20)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20vec3\x20box_min\x20=\x20vec3(\x20-\x200.5\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20vec3\x20box_max\x20=\x20vec3(\x200.5\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20inv_dir\x20=\x201.0\x20/\x20dir;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20tmin_tmp\x20=\x20(\x20box_min\x20-\x20orig\x20)\x20*\x20inv_dir;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20tmax_tmp\x20=\x20(\x20box_max\x20-\x20orig\x20)\x20*\x20inv_dir;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20tmin\x20=\x20min(\x20tmin_tmp,\x20tmax_tmp\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20tmax\x20=\x20max(\x20tmin_tmp,\x20tmax_tmp\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20t0\x20=\x20max(\x20tmin.x,\x20max(\x20tmin.y,\x20tmin.z\x20)\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20t1\x20=\x20min(\x20tmax.x,\x20min(\x20tmax.y,\x20tmax.z\x20)\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2(\x20t0,\x20t1\x20);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20sample1(\x20vec3\x20p\x20)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20texture(\x20map,\x20p\x20).r;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20shading(\x20vec3\x20coord\x20)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20step\x20=\x200.01;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sample1(\x20coord\x20+\x20vec3(\x20-\x20step\x20)\x20)\x20-\x20sample1(\x20coord\x20+\x20vec3(\x20step\x20)\x20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20vec4\x20linearToSRGB(\x20in\x20vec4\x20value\x20)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4(\x20mix(\x20pow(\x20value.rgb,\x20vec3(\x200.41666\x20)\x20)\x20*\x201.055\x20-\x20vec3(\x200.055\x20),\x20value.rgb\x20*\x2012.92,\x20vec3(\x20lessThanEqual(\x20value.rgb,\x20vec3(\x200.0031308\x20)\x20)\x20)\x20),\x20value.a\x20);\x0a\x20\x20\x20\x20}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20rayDir\x20=\x20normalize(\x20vDirection\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20bounds\x20=\x20hitBox(\x20vOrigin,\x20rayDir\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x20bounds.x\x20>\x20bounds.y\x20)\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bounds.x\x20=\x20max(\x20bounds.x,\x200.0\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20p\x20=\x20vOrigin\x20+\x20bounds.x\x20*\x20rayDir;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20inc\x20=\x201.0\x20/\x20abs(\x20rayDir\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20delta\x20=\x20min(\x20inc.x,\x20min(\x20inc.y,\x20inc.z\x20)\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delta\x20/=\x20steps;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Nice\x20little\x20seed\x20from\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uint\x20seed\x20=\x20uint(\x20gl_FragCoord.x\x20)\x20*\x20uint(\x201973\x20)\x20+\x20uint(\x20gl_FragCoord.y\x20)\x20*\x20uint(\x209277\x20)\x20+\x20uint(\x20frame\x20)\x20*\x20uint(\x2026699\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20size\x20=\x20vec3(\x20textureSize(\x20map,\x200\x20)\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20randNum\x20=\x20randomFloat(\x20seed\x20)\x20*\x202.0\x20-\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p\x20+=\x20rayDir\x20*\x20randNum\x20*\x20(\x201.0\x20/\x20size\x20);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20ac\x20=\x20vec4(\x20base,\x200.0\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(\x20float\x20t\x20=\x20bounds.x;\x20t\x20<\x20bounds.y;\x20t\x20+=\x20delta\x20)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20d\x20=\x20sample1(\x20p\x20+\x200.5\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20d\x20=\x20smoothstep(\x20threshold\x20-\x20range,\x20threshold\x20+\x20range,\x20d\x20)\x20*\x20opacity;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20col\x20=\x20shading(\x20p\x20+\x200.5\x20)\x20*\x203.0\x20+\x20(\x20(\x20p.x\x20+\x20p.y\x20)\x20*\x200.25\x20)\x20+\x200.2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ac.rgb\x20+=\x20(\x201.0\x20-\x20ac.a\x20)\x20*\x20d\x20*\x20col;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ac.a\x20+=\x20(\x201.0\x20-\x20ac.a\x20)\x20*\x20d;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x20ac.a\x20>=\x200.95\x20)\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p\x20+=\x20rayDir\x20*\x20delta;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20color\x20=\x20linearToSRGB(\x20ac\x20);\x0a\x20\x20\x20\x20color\x20=\x20czm_gammaCorrect(\x20color\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x20color.a\x20==\x200.0\x20)\x20discard;\x0a\x20\x20\x20\x20out_FragColor\x20=\x20color;\x0a}\x0a',VolumeClouds=_createClass(function VolumeClouds(_0xee12b8){var _0x4a5652=_0x45c5;_classCallCheck(this,VolumeClouds);var _0x391f20=new _0x5e888d()['makeTexture3D'](_0xee12b8[_0x4a5652(0x175)][_0x4a5652(0x181)]);_0x391f20['generateMipmap']();var _0x35267a=0x1,_0x4aa5be=0x2710,_0x25970b=_0x414889['Cartesian3'][_0x4a5652(0x182)](0x71,0x21,_0x35267a/0.5*_0x4aa5be),_0x418129=_0x414889[_0x4a5652(0x177)]['eastNorthUpToFixedFrame'](_0x25970b),_0x29d56d=new _0x414889['Cartesian3'](_0x35267a,_0x35267a,_0x35267a),_0x428735=_0x414889[_0x4a5652(0x171)]['fromCache']({'depthMask':![],'blending':{'enabled':!![],'color':{'red':0x0,'green':0x0,'blue':0x0,'alpha':0x0}},'depthTest':{'enabled':!![],'func':_0x414889['DepthFunction']['LESS_OR_EQUAL']},'cull':{'enabled':!![],'face':_0x414889[_0x4a5652(0x18d)][_0x4a5652(0x183)]}}),_0x1bf4e0=_0x414889['Matrix4'][_0x4a5652(0x18a)](new _0x414889[(_0x4a5652(0x16e))](_0x4aa5be,_0x4aa5be,_0x4aa5be),new _0x414889['Matrix4']());_0x414889[_0x4a5652(0x17b)]['multiply'](_0x418129,_0x1bf4e0,_0x418129);var _0x2dba2f=_0x414889[_0x4a5652(0x16e)]['multiplyByScalar'](_0x29d56d,0.5,new _0x414889['Cartesian3']()),_0xc8ed70=_0x414889[_0x4a5652(0x16e)]['negate'](_0x2dba2f,new _0x414889[(_0x4a5652(0x16e))]()),_0x448b62=new _0x414889[(_0x4a5652(0x170))]({'minimum':_0xc8ed70,'maximum':_0x2dba2f}),_0x2e2a4d={'base':new _0x414889[(_0x4a5652(0x189))](0.1912,0.2542,0.3515,0x0),'map':_0x391f20,'opacity':0.25,'range':0.1,'steps':0x64,'frame':0x0,'threshold':0.25},_0xdd03f3={},_0x7cad7e=function _0x373aba(_0x20eb2b){_0x20eb2b&&(_0xdd03f3[_0x20eb2b]=function(){return _0x2e2a4d[_0x20eb2b];});};for(var _0x40f048 in _0x2e2a4d){_0x7cad7e(_0x40f048);}var _0x5c764c=new _0x32b825(_0x448b62,{'uniformMap':_0xdd03f3,'vertexShaderSource':vertexShader,'fragmentShaderSource':fragmentShader,'renderState':_0x428735,'modelMatrix':_0x418129,'pass':_0x414889[_0x4a5652(0x17d)]['TRANSLUCENT']});_0xee12b8[_0x4a5652(0x175)]['primitives']['add'](_0x5c764c);var _0x5db706={'destination':_0x25970b,'orientation':{'heading':4.159717744111784,'pitch':-0.4648127266675117,'roll':_0x35267a*_0x4aa5be*0x2},'duration':0x0},_0x7beab7=new _0x414889['HeadingPitchRange'](_0x5db706[_0x4a5652(0x16f)]['heading'],_0x5db706[_0x4a5652(0x16f)]['pitch'],_0x35267a*_0x4aa5be*0x2);_0xee12b8['camera'][_0x4a5652(0x18f)](_0x5db706['destination'],_0x7beab7);});export default VolumeClouds;
|