@arcgis/core 6.0.0-next.27 → 6.0.0-next.28
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/Map.d.ts +6 -0
- package/analysis/AreaMeasurementAnalysis.d.ts +4 -2
- package/analysis/DirectLineMeasurementAnalysis.d.ts +8 -4
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0bd04bcd4b2710838d48.js → 03f33cb78b5405ab7e23.js} +1 -1
- package/assets/esri/core/workers/chunks/{7c75a8ee266c36baa902.js → 5eec1c1162779574f46e.js} +1 -1
- package/assets/esri/core/workers/chunks/{9dd1fc56eb1ea6eb705e.js → 76e27e36050a3dd9d249.js} +1 -1
- package/assets/esri/core/workers/chunks/76f877e2d2493d56afab.js +1 -0
- package/assets/esri/core/workers/chunks/{00580a68835aac653038.js → 9c4961213ac6ec283dd9.js} +5 -5
- package/assets/esri/core/workers/chunks/{13c64087be3b2985a21b.js → dbda982485d3fe26c729.js} +1 -1
- package/assets/esri/core/workers/chunks/dc7aa0a1eb6c6e361f9f.js +1 -0
- package/chunks/BlendLayers.glsl.js +1 -1
- package/chunks/Component.glsl.js +9 -12
- package/chunks/GaussianSplat.glsl.js +65 -21
- package/chunks/GaussianSplatDepth.glsl.js +45 -4
- package/chunks/GaussianSplatShadow.glsl.js +73 -19
- package/chunks/GlobalIllumination.glsl.js +2 -17
- package/chunks/LineMarker.glsl.js +32 -31
- package/chunks/OITAddEmission.glsl.js +1 -1
- package/chunks/RasterColorizer.glsl.js +1 -1
- package/chunks/RibbonLine.glsl.js +34 -34
- package/chunks/Terrain.glsl.js +3 -4
- package/chunks/Water.glsl.js +22 -23
- package/config.js +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
- package/geometry/operators/containsOperator.d.ts +1 -1
- package/geometry/operators/densifyOperator.d.ts +1 -1
- package/geometry/operators/differenceOperator.d.ts +6 -4
- package/geometry/operators/distanceOperator.d.ts +1 -1
- package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
- package/geometry/operators/graphicBufferOperator.d.ts +6 -6
- package/geometry/operators/integrateOperator.d.ts +2 -2
- package/geometry/operators/intersectsOperator.d.ts +3 -3
- package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
- package/geometry/operators/locateBetweenOperator.d.ts +2 -2
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
- package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
- package/geometry/operators/projectOperator.d.ts +2 -2
- package/geometry/operators/proximityOperator.d.ts +15 -15
- package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
- package/geometry/operators/simplifyOperator.d.ts +2 -2
- package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
- package/geometry/operators/support/Transformation.d.ts +8 -8
- package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
- package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
- package/geometry/operators/withinOperator.d.ts +3 -3
- package/kernel.js +1 -1
- package/layers/GeospatialPDFLayer.d.ts +2 -2
- package/layers/ParquetLayer.d.ts +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.js +1 -1
- package/popup/support/featureUtils.js +1 -1
- package/rest/featureService/FeatureService.d.ts +0 -5
- package/rest/networks/support/TraceLocation.d.ts +2 -1
- package/rest/networks/support/TraceResult.d.ts +0 -4
- package/rest/support/OutDistance.d.ts +0 -1
- package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
- package/support/BasemapStyle.d.ts +2 -2
- package/symbols/cim/types.d.ts +7 -9
- package/views/2d/engine/webgl/animations/instructions.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/support/projectionUtils.js +1 -1
- package/views/3d/environment/SunLighting.d.ts +15 -2
- package/views/3d/environment/VirtualLighting.d.ts +15 -2
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/ground/GroundMouseWheelMove.js +2 -0
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/navigation/Navigation3D.js +1 -1
- package/views/3d/state/controllers/GroundMouseWheelController.js +2 -0
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/terrain/BlendLayers.glsl.js +1 -1
- package/views/3d/terrain/RasterColorizer.glsl.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js +7 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js +6 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/getLocalUp.glsl.js +4 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/{TileBackground.glsl.js → blendLayers.glsl.js} +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +8 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +61 -108
- package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/DrawScreenTool.js +1 -1
- package/views/input/types.d.ts +2 -4
- package/views/interactive/options/LabelOptions.d.ts +5 -5
- package/views/interactive/options/SnappingOptions.d.ts +2 -2
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +0 -1
- package/widgets/Editor/VisibleElements.d.ts +4 -0
- package/widgets/Editor.d.ts +2 -0
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
- package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Search/LayerSearchSource.d.ts +1 -1
- package/widgets/Sketch/VisibleElements.d.ts +4 -0
- package/widgets/Sketch.d.ts +2 -0
- package/assets/esri/core/workers/chunks/c29091fe157564cffcf7.js +0 -1
- package/assets/esri/core/workers/chunks/c8eae00b0ec87d8b2ff3.js +0 -1
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{markerTextureSize as e,markerSymbolSize as t,markerTipThicknessFactor as n}from"../views/3d/support/engineContent/marker.js";import{sliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{evaluateSceneLightingFragment as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{
|
|
2
|
+
import{markerTextureSize as e,markerSymbolSize as t,markerTipThicknessFactor as n}from"../views/3d/support/engineContent/marker.js";import{sliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{evaluateSceneLightingFragment as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{forwardLocalUp as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js";import{MarkerSizing as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{nearFar as u,viewport as d,viewNormal as f,inverseProjectionMatrix as p,screenPixelSizePerDistance as m,pixelRatio as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as _,NoPerspectiveRead as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as y,addCameraPosition as b}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{glsl as S,If as C}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as w}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{alphaCutoff as T}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as E}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as D}from"../views/webgl/ShaderBuilder.js";function O(O){let k=new D,{draped:A,worldSpace:j,anchor:M,hasTip:N,shadingEnabled:P}=O,F=!A&&!j;k.attributes.add(`position`,`vec3`),k.attributes.add(O.hasVVSize?`sizeFeatureAttribute`:`size`,`float`),O.hasVVOpacity&&k.attributes.add(`opacityFeatureAttribute`,`float`),k.attributes.add(O.hasVVColor?`colorFeatureAttribute`:`color`,O.hasVVColor?`float`:`vec4`),k.vertex.inputs.add(`position`,()=>`position`),O.hasVVSize?k.vertex.inputs.add(`sizeFeatureAttribute`,()=>`sizeFeatureAttribute`):k.vertex.inputs.add(`size`,()=>`size`),O.hasVVOpacity&&k.vertex.inputs.add(`opacityFeatureAttribute`,()=>`opacityFeatureAttribute`),O.hasVVColor?k.vertex.inputs.add(`colorFeatureAttribute`,()=>`colorFeatureAttribute`):k.vertex.inputs.add(`color`,()=>`color`),k.include(i,O),k.include(c,O);let{vertex:I,fragment:L,varyings:R}=k;y(I,O),k.attributes.add(`previousDelta`,`vec4`),k.attributes.add(`uv0`,`vec2`),R.add(`vColor`,`vec4`),R.add(`vpos`,`vec3`,{invariant:!0}),R.add(`vUV`,`vec2`),R.add(`vSize`,`float`),N&&R.add(`vLineWidth`,`float`),I.uniforms.add(u,d).code.add(S`vec4 projectAndScale(vec4 pos) {
|
|
3
3
|
vec4 posNdc = proj * pos;
|
|
4
4
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
5
5
|
return posNdc;
|
|
6
|
-
}`),
|
|
6
|
+
}`),I.code.add(S`void clip(vec4 pos, inout vec4 prev) {
|
|
7
7
|
float vnp = nearFar[0] * 0.99;
|
|
8
8
|
if (prev.z > -nearFar[0]) {
|
|
9
9
|
float interpolation = (-vnp - pos.z) / (prev.z - pos.z);
|
|
10
10
|
prev = mix(pos, prev, interpolation);
|
|
11
11
|
}
|
|
12
|
-
}`),
|
|
12
|
+
}`),j?(k.attributes.add(`normal`,`vec3`),I.constants.add(`tiltThreshold`,`float`,.7).uniforms.add(f).code.add(S`vec3 perpendicular(vec3 v) {
|
|
13
13
|
vec3 n = (viewNormal * vec4(normal.xyz, 1.0)).xyz;
|
|
14
14
|
vec3 n2 = cross(v, n);
|
|
15
15
|
vec3 forward = vec3(0.0, 0.0, 1.0);
|
|
16
16
|
float tiltDot = dot(forward, n);
|
|
17
17
|
return abs(tiltDot) < tiltThreshold ? n : n2;
|
|
18
|
-
}`)):
|
|
18
|
+
}`)):I.code.add(S`vec2 perpendicular(vec2 v) {
|
|
19
19
|
return vec2(v.y, -v.x);
|
|
20
|
-
}`);let
|
|
21
|
-
${
|
|
22
|
-
${
|
|
20
|
+
}`);let z=j?`vec3`:`vec2`;return I.code.add(S`
|
|
21
|
+
${z} normalizedSegment(${z} pos, ${z} prev) {
|
|
22
|
+
${z} segment = pos - prev;
|
|
23
23
|
float segmentLen = length(segment);
|
|
24
24
|
|
|
25
25
|
// normalize or zero if too short
|
|
26
|
-
return (segmentLen > 0.001) ? segment / segmentLen : ${
|
|
26
|
+
return (segmentLen > 0.001) ? segment / segmentLen : ${j?`vec3(0.0, 0.0, 0.0)`:`vec2(0.0, 0.0)`};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
${
|
|
30
|
-
${
|
|
29
|
+
${z} displace(${z} pos, ${z} prev, float displacementLen) {
|
|
30
|
+
${z} segment = normalizedSegment(pos, prev);
|
|
31
31
|
|
|
32
|
-
${
|
|
33
|
-
${
|
|
32
|
+
${z} displacementDirU = perpendicular(segment);
|
|
33
|
+
${z} displacementDirV = segment;
|
|
34
34
|
|
|
35
|
-
${
|
|
35
|
+
${M===1?`pos -= 0.5 * displacementLen * displacementDirV;`:``}
|
|
36
36
|
|
|
37
37
|
return pos + displacementLen * (uv0.x * displacementDirU + uv0.y * displacementDirV);
|
|
38
38
|
}
|
|
39
|
-
`),
|
|
39
|
+
`),F&&(I.uniforms.add(p),I.code.add(S`vec3 inverseProject(vec4 posScreen) {
|
|
40
40
|
posScreen.xy = (posScreen.xy / viewport.zw) * posScreen.w;
|
|
41
41
|
return (inverseProjectionMatrix * posScreen).xyz;
|
|
42
|
-
}`),
|
|
42
|
+
}`),I.code.add(S`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
|
|
43
43
|
float cos = dot(rayDir, planeNormal);
|
|
44
44
|
float t = dot(planeOrigin, planeNormal) / cos;
|
|
45
45
|
intersection = t * rayDir;
|
|
46
46
|
return abs(cos) > 0.001 && t > 0.0;
|
|
47
|
-
}`),
|
|
47
|
+
}`),I.uniforms.add(m),I.code.add(S`
|
|
48
48
|
vec4 toFront(vec4 displacedPosScreen, vec3 posLeft, vec3 posRight, vec3 prev, float lineWidth) {
|
|
49
49
|
// Project displaced position back to camera space
|
|
50
50
|
vec3 displacedPos = inverseProject(displacedPosScreen);
|
|
@@ -54,7 +54,7 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
54
54
|
vec3 planeNormal = normalize(cross(posLeft - posRight, posLeft - prev));
|
|
55
55
|
vec3 planeOrigin = posLeft;
|
|
56
56
|
|
|
57
|
-
${
|
|
57
|
+
${C(O.hasCap,`if(prev.z > posLeft.z) {
|
|
58
58
|
vec2 diff = posLeft.xy - posRight.xy;
|
|
59
59
|
planeOrigin.xy += perpendicular(diff) / 2.0;
|
|
60
60
|
}`)};
|
|
@@ -76,7 +76,7 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
76
76
|
displacedPos *= minDepth / length(displacedPos);
|
|
77
77
|
return vec4(displacedPos.xyz, 1.0);
|
|
78
78
|
}
|
|
79
|
-
`)),
|
|
79
|
+
`)),k.include(_),I.uniforms.add(h).main.add(S`
|
|
80
80
|
// Check for special value of uv0.y which is used by the Renderer when graphics are removed before the VBO is
|
|
81
81
|
// recompacted. If this is the case, then we just project outside of clip space.
|
|
82
82
|
if (uv0.y == 0.0) {
|
|
@@ -88,24 +88,24 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
88
88
|
vec4 pos = view * vec4(position, 1.0);
|
|
89
89
|
vec4 prev = view * vec4(position + previousDelta.xyz * previousDelta.w, 1.0);
|
|
90
90
|
|
|
91
|
-
float lineWidth = getLineWidth(${
|
|
91
|
+
float lineWidth = getLineWidth(${C(O.lineWidthRequiresPosition,`pos.xyz`)});
|
|
92
92
|
float screenMarkerSize = getScreenMarkerSize(lineWidth);
|
|
93
93
|
|
|
94
94
|
clip(pos, prev);
|
|
95
95
|
|
|
96
|
-
${
|
|
96
|
+
${j?S`${C(O.hideOnShortSegments,S`
|
|
97
97
|
if (areWorldMarkersHidden(pos.xyz, prev.xyz)) {
|
|
98
98
|
gl_Position = ${l};
|
|
99
99
|
return;
|
|
100
100
|
}`)}
|
|
101
101
|
pos.xyz = displace(pos.xyz, prev.xyz, getWorldMarkerSize(pos.xyz));
|
|
102
|
-
vec4 displacedPosScreen = projectAndScale(pos);`:
|
|
102
|
+
vec4 displacedPosScreen = projectAndScale(pos);`:S`
|
|
103
103
|
vec4 posScreen = projectAndScale(pos);
|
|
104
104
|
vec4 prevScreen = projectAndScale(prev);
|
|
105
105
|
vec4 displacedPosScreen = posScreen;
|
|
106
106
|
|
|
107
107
|
displacedPosScreen.xy = displace(posScreen.xy, prevScreen.xy, screenMarkerSize);
|
|
108
|
-
${
|
|
108
|
+
${C(F,S`
|
|
109
109
|
vec2 displacementDirU = perpendicular(normalizedSegment(posScreen.xy, prevScreen.xy));
|
|
110
110
|
|
|
111
111
|
// We need three points of the ribbon line in camera space to calculate the plane it lies in
|
|
@@ -121,8 +121,8 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
121
121
|
|
|
122
122
|
// Convert texture coordinate into [0,1]
|
|
123
123
|
vUV = (uv0 + 1.0) / 2.0;
|
|
124
|
-
${
|
|
125
|
-
${
|
|
124
|
+
${C(!j,`vUV = noPerspectiveWrite(vUV, displacedPosScreen.w);`)}
|
|
125
|
+
${C(N,`vLineWidth = noPerspectiveWrite(lineWidth, displacedPosScreen.w);`)}
|
|
126
126
|
|
|
127
127
|
vSize = screenMarkerSize;
|
|
128
128
|
vColor = getColor();
|
|
@@ -131,13 +131,13 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
131
131
|
vpos = pos.xyz;
|
|
132
132
|
|
|
133
133
|
gl_Position = displacedPosScreen;
|
|
134
|
-
`),
|
|
134
|
+
`),L.include(r,O),k.include(E,O),L.include(g),L.include(T),L.uniforms.add(new x(`intrinsicColor`,({color:e})=>e),new w(`tex`,({markerTexture:e})=>e)).constants.add(`texelSize`,`float`,1/e).code.add(S`float markerAlpha(vec2 samplePos) {
|
|
135
135
|
samplePos += vec2(0.5, -0.5) * texelSize;
|
|
136
136
|
float sdf = texture(tex, samplePos).r;
|
|
137
137
|
float pixelDistance = sdf * vSize;
|
|
138
138
|
pixelDistance -= 0.5;
|
|
139
139
|
return clamp(0.5 - pixelDistance, 0.0, 1.0);
|
|
140
|
-
}`),
|
|
140
|
+
}`),N&&(k.include(v),L.constants.add(`relativeMarkerSize`,`float`,t/e).constants.add(`relativeTipLineWidth`,`float`,n).code.add(S`
|
|
141
141
|
float tipAlpha(vec2 samplePos) {
|
|
142
142
|
// Convert coordinates s.t. they are in pixels and relative to the tip of an arrow marker
|
|
143
143
|
samplePos -= vec2(0.5, 0.5 + 0.5 * relativeMarkerSize);
|
|
@@ -146,18 +146,19 @@ return clamp(0.5 - pixelDistance, 0.0, 1.0);
|
|
|
146
146
|
float halfMarkerSize = 0.5 * relativeMarkerSize * vSize;
|
|
147
147
|
float halfTipLineWidth = 0.5 * max(1.0, relativeTipLineWidth * noPerspectiveRead(vLineWidth));
|
|
148
148
|
|
|
149
|
-
${
|
|
149
|
+
${C(j,`halfTipLineWidth *= fwidth(samplePos.y);`)}
|
|
150
150
|
|
|
151
151
|
float distance = max(abs(samplePos.x) - halfMarkerSize, abs(samplePos.y) - halfTipLineWidth);
|
|
152
152
|
return clamp(0.5 - distance, 0.0, 1.0);
|
|
153
153
|
}
|
|
154
|
-
`)),
|
|
154
|
+
`)),k.include(a,O),k.include(v),L.main.add(S`
|
|
155
155
|
discardBySlice(vpos);
|
|
156
156
|
|
|
157
157
|
vec4 albedo = intrinsicColor * vColor;
|
|
158
158
|
|
|
159
159
|
// Cancel out perspective correct interpolation if in screen space or draped
|
|
160
|
-
vec2 samplePos = ${
|
|
161
|
-
albedo.a *= ${
|
|
160
|
+
vec2 samplePos = ${C(j,`vUV`,`noPerspectiveRead(vUV)`)};
|
|
161
|
+
albedo.a *= ${N?`max(markerAlpha(samplePos), tipAlpha(samplePos))`:`markerAlpha(samplePos)`};
|
|
162
162
|
if(albedo.a < alphaCutoff) discard; // We also want to discard in the opaque color pass
|
|
163
|
-
`),
|
|
163
|
+
`),P?(R.add(`vposWorld`,`vec3`),b(I,O),k.include(s,O),I.main.add(S`vposWorld = transpose(mat3(view)) * vpos + cameraPosition;
|
|
164
|
+
forwardLocalUp(vposWorld, localOrigin);`),k.include(o,O),L.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vposWorld, upNormal, albedo);`)):L.main.add(`vec4 finalColor = albedo;`),L.main.add(`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),k}const k=Object.freeze(Object.defineProperty({__proto__:null,build:O},Symbol.toStringTag,{value:`Module`}));export{k as L,O as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ColorConversion as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{emissionFilter as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{OITBlendFragmentPassParameters as a,oitBlendFragment as o}from"../views/3d/webgl-engine/effects/transparency/oitBlendFragment.glsl.js";import{floatBlendScale as s}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ToneMapping as c}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class u extends a{}function d(a){let u=new l;u.include(e);let{fragment:d,outputs:f}=u;return f.add(`fragEmission`,`vec4`,1),d.include(s,a),d.include(o,a),d.include(n,a),d.include(c),d.include(t),d.uniforms.add(new i(`emissionTexture`,e=>e.emissionTexture),new i(`frontFaceEmissionTexture`,e=>e.frontFaceEmissionTexture))
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ColorConversion as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{emissionFilter as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{OITBlendFragmentPassParameters as a,oitBlendFragment as o}from"../views/3d/webgl-engine/effects/transparency/oitBlendFragment.glsl.js";import{floatBlendScale as s}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ToneMapping as c}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class u extends a{}function d(a){let u=new l;u.include(e);let{fragment:d,outputs:f}=u;return f.add(`fragEmission`,`vec4`,1),d.include(s,a),d.include(o,a),d.include(n,a),d.include(c),d.include(t),d.uniforms.add(new i(`emissionTexture`,e=>e.emissionTexture),new i(`frontFaceEmissionTexture`,e=>e.frontFaceEmissionTexture)).main.add(r`vec4 emission = oitBlendFragment(emissionTexture, frontFaceEmissionTexture, floatBlendInputScale);
|
|
3
3
|
vec4 transparentColor = oitBlendFragment();
|
|
4
4
|
vec3 dim = emissionFilter(transparentColor.rgb, transparentColor.a);
|
|
5
5
|
fragEmission.rgb = emission.rgb * dim * pow(emission.a, 0.5) * floatBlendOutputScale;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{ZEROS as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Colormap as t}from"../views/3d/webgl-engine/core/shaderLibrary/raster/Colormap.glsl.js";import{CommonPassParameters as n,Common as r}from"../views/3d/webgl-engine/core/shaderLibrary/raster/Common.glsl.js";import{
|
|
2
|
+
import{ZEROS as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Colormap as t}from"../views/3d/webgl-engine/core/shaderLibrary/raster/Colormap.glsl.js";import{CommonPassParameters as n,Common as r}from"../views/3d/webgl-engine/core/shaderLibrary/raster/Common.glsl.js";import{blendLayers as i}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/blendLayers.glsl.js";import{TileComposite as a}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TileComposite.glsl.js";import{ColorConversion as o}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{BooleanPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/BooleanPassUniform.js";import{Float2PassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3PassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as f}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ShaderBuilder as h}from"../views/webgl/ShaderBuilder.js";class g extends n{constructor(t,n,r,i,a,o){super(t,i,a),this.colormap=n,this.symbolizer=r,this.u_colormap=o,this.backgroundColor=e,this.fboTexture=null,this.baseOpacity=1}}class _ extends g{}class v extends g{}function y(e){let n=new h;return n.include(a),n.include(r,e),n.include(t,e),n.include(i,e),n.fragment.code.add(f`vec4 applyBackgroundBlend(vec4 layerColor) {
|
|
3
3
|
return blendLayers(vuv, layerColor, u_opacity);
|
|
4
4
|
}`),e.colorizerType===0?x(n,e):e.colorizerType===1?b(n):e.colorizerType===2&&S(n,e),n}function b(e){e.fragment.main.add(f`vec2 pixelLocation = getPixelLocation(uv);
|
|
5
5
|
if (isOutside(pixelLocation)) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{
|
|
2
|
+
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{forwardLocalUp as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js";import{mainLightIntensity as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js";import{LineStipple as o,computePixelSize as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{metersPerRenderUnit as f,screenPixelSizePerDistance as p,inverseProjectionMatrix as m,nearFar as h,viewport as ee,pixelRatio as te}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as ne}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as g,NoPerspectiveRead as _}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as y}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as x,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as C}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as re}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{groundMetersToScreenRatio as ie,planarDistanceToScreenRatio as w}from"../views/3d/webgl-engine/shaders/lineUniforms.js";import{outputColorHighlightOLID as T}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as E}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as D}from"../views/webgl/ShaderBuilder.js";const O=1;function k(O){let k=new D,{attributes:A,varyings:j,vertex:M,fragment:N}=k,{applyMarkerOffset:P,draped:F,shadingEnabled:I,output:L,capType:R,stippleEnabled:z,falloffEnabled:B,wireframe:V,innerColorEnabled:H,hasAnimation:U,hasScreenSizePerspective:W,worldSized:G,imagePattern:K,useFlatJoinVarying:q}=O,J=R===2,Y=z&&J,X=B||Y,ae=z||J,Z=O.usePerspectiveCorrectStipple,Q=E(O).createBuilder(k,O);M.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),O.hasVVSize?M.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):M.inputs.add(`size`,()=>Q.getTextureAttribute(`size`)),O.hasVVOpacity&&M.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),O.hasVVColor?M.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):M.inputs.add(`color`,()=>Q.getTextureAttribute(`color`)),N.include(l),k.include(t,O),k.include(o,O),L===11?(k.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),M.code.add(x`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
4
|
return ${Q.getTextureAttribute(`olidColor`)};
|
|
5
5
|
}
|
|
@@ -7,9 +7,9 @@ import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),
|
|
10
|
+
`),N.code.add(x`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(
|
|
12
|
+
}`)):(M.code.add(x`void forwardObjectAndLayerIdColor() {}`),N.code.add(x`void outputObjectAndLayerIdColor() {}`));let $=P&&!F;return $&&k.include(c,O),v(M,O),F&&(G||z)&&M.uniforms.add(G?ie:w),G&&!F&&M.uniforms.add(f,p),M.uniforms.add(m,h,ee,new b(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),M.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),M.constants.add(`EPS`,`float`,.001),M.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,O.numJoinSubdivisions),A.add(`textureElementIndex`,`uint`),A.add(`lineParameters`,`vec2`),j.add(`vColor`,`vec4`),j.add(`vpos`,`vec3`,{invariant:!0}),j.add(`vLineDistance`,`float`),j.add(`vLineWidth`,`float`),q?j.add(`vIsInsideJoin`,`int`,{flat:!0}):j.add(`vIsInsideJoin`,`float`),j.add(`vStretchFactor`,`float`),j.add(`vJoinCenterLineSDFs`,`vec2`),j.add(`vSubdivisionFactor`,`float`),z&&j.add(`vLineSizeInv`,`float`),X&&j.add(`vLineDistanceNorm`,`float`),J&&(j.add(`vSegmentSDF`,`float`),j.add(`vReverseSegmentSDF`,`float`)),M.code.add(x`vec3 perpendicular(vec3 v) {
|
|
13
13
|
return vec3(v.y, -v.x, 0.0);
|
|
14
14
|
}
|
|
15
15
|
float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
|
|
@@ -20,12 +20,12 @@ float s = sin(a);
|
|
|
20
20
|
float c = cos(a);
|
|
21
21
|
mat2 m = mat2(c, -s, s, c);
|
|
22
22
|
return vec3(m * v.xy, v.z);
|
|
23
|
-
}`),
|
|
23
|
+
}`),M.code.add(x`vec4 projectAndScale(vec4 pos) {
|
|
24
24
|
vec4 posNdc = proj * pos;
|
|
25
25
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
26
26
|
posNdc.z /= posNdc.w;
|
|
27
27
|
return posNdc;
|
|
28
|
-
}`),
|
|
28
|
+
}`),M.code.add(x`
|
|
29
29
|
void clip(
|
|
30
30
|
inout vec4 pos,
|
|
31
31
|
inout vec4 prev,
|
|
@@ -75,13 +75,13 @@ return posNdc;
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
`),
|
|
78
|
+
`),M.uniforms.add(te),M.constants.add(`aaWidth`,`float`,1),N.constants.add(`aaWidth`,`float`,1),M.main.add(x`
|
|
79
79
|
vec3 position = ${Q.getTextureAttribute(`position`)};
|
|
80
80
|
float u0 = ${Q.getTextureAttribute(`u0`)};
|
|
81
81
|
${S(G,x`
|
|
82
82
|
float prevU0 = ${Q.getTextureAttribute(`u0`,-1)};
|
|
83
83
|
float nextU0 = ${Q.getTextureAttribute(`u0`,1)};
|
|
84
|
-
${S(!
|
|
84
|
+
${S(!F,x`
|
|
85
85
|
u0 *= metersPerRenderUnit;
|
|
86
86
|
prevU0 *= metersPerRenderUnit;
|
|
87
87
|
nextU0 *= metersPerRenderUnit;
|
|
@@ -102,7 +102,7 @@ return posNdc;
|
|
|
102
102
|
// Check for special value of lineParameters.y which is used by the Renderer when graphics are removed before the
|
|
103
103
|
// VBO is recompacted. If this is the case, then we just project outside of clip space.
|
|
104
104
|
if (lineParameters.y == 0.0) {
|
|
105
|
-
gl_Position = ${
|
|
105
|
+
gl_Position = ${u};
|
|
106
106
|
}
|
|
107
107
|
else {
|
|
108
108
|
vec4 pos = view * vec4(position, 1.0);
|
|
@@ -110,11 +110,11 @@ return posNdc;
|
|
|
110
110
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
111
111
|
|
|
112
112
|
bool isJoin = vertexType < 3.0;
|
|
113
|
-
`),$&&
|
|
113
|
+
`),$&&M.main.add(x`vec4 other = isStartVertex ? next : prev;
|
|
114
114
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
115
115
|
if (!isJoin && !markersHidden) {
|
|
116
116
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
117
|
-
}`),
|
|
117
|
+
}`),k.include(g),M.code.add(x`
|
|
118
118
|
vec2 computeJoinAndCapDisplacement(
|
|
119
119
|
bool isJoin,
|
|
120
120
|
bool isStartVertex,
|
|
@@ -194,7 +194,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
197
|
-
${S(
|
|
197
|
+
${S(O.roundJoins,x`
|
|
198
198
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
199
199
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
200
200
|
float factor = ${z?x`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:x`subdivisionFactor`};
|
|
@@ -224,7 +224,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
224
224
|
|
|
225
225
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
226
226
|
}
|
|
227
|
-
`),
|
|
227
|
+
`),M.main.add(x`
|
|
228
228
|
clip(pos, prev, next, ${S(Z,x`u0, prevU0, nextU0,`)} isStartVertex);
|
|
229
229
|
|
|
230
230
|
vec3 clippedPos = pos.xyz;
|
|
@@ -242,7 +242,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
242
242
|
${S(z&&!W,`float patternLineSize = lineSize;`)}
|
|
243
243
|
|
|
244
244
|
${S(G,x`
|
|
245
|
-
${S(
|
|
245
|
+
${S(F,x`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,x`
|
|
246
246
|
float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
|
|
247
247
|
float lineSizeScreen = lineSize / metersPerScreenPixel;
|
|
248
248
|
`)}
|
|
@@ -253,12 +253,12 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
253
253
|
|
|
254
254
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
255
255
|
${z?`vLineSizeInv = noPerspectiveWrite(1.0 / ${G?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
|
|
256
|
-
`),
|
|
256
|
+
`),ae&&M.main.add(x`
|
|
257
257
|
float isEndVertex = float(!isStartVertex);
|
|
258
258
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
259
259
|
vec3 segment = mix(right, left, isEndVertex);
|
|
260
260
|
${J?`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
|
|
261
|
-
`),
|
|
261
|
+
`),M.main.add(x`
|
|
262
262
|
vIsInsideJoin = ${q?x`0`:x`float(isInsideJoin)`};
|
|
263
263
|
vStretchFactor = 1.0;
|
|
264
264
|
vSubdivisionFactor = 0.0;
|
|
@@ -291,7 +291,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
291
291
|
${X?x`vLineDistanceNorm = lineDistNorm;`:``}
|
|
292
292
|
|
|
293
293
|
pos.xyz += displacement;
|
|
294
|
-
`),
|
|
294
|
+
`),M.main.add(x`if (isJoin) {
|
|
295
295
|
vec2 joinCenterToVertex = displacementXY;
|
|
296
296
|
vec2 leftCenterlineDir = left.xy;
|
|
297
297
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -306,23 +306,23 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
306
306
|
),
|
|
307
307
|
pos.w
|
|
308
308
|
);
|
|
309
|
-
}`),J&&
|
|
309
|
+
}`),J&&M.main.add(x`vec2 segmentDir = normalize(segment.xy);
|
|
310
310
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
311
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),z&&(
|
|
312
|
-
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
311
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),z&&(F?M.main.add(`float stippleDistanceToScreenRatio = ${G?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):M.main.add(x`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
312
|
+
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),M.main.add(x`
|
|
313
313
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
314
314
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
315
315
|
float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
|
|
316
316
|
float segmentLengthRender = ${S(G,x`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,x`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
317
317
|
|
|
318
|
-
${S(!
|
|
318
|
+
${S(!F||G,x`
|
|
319
319
|
float segmentStartRender = ${S(G,x`mix(u0, prevU0, isEndVertex)`,x`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
320
320
|
`)}
|
|
321
321
|
|
|
322
322
|
vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
|
|
323
|
-
`),
|
|
324
|
-
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
325
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),
|
|
323
|
+
`),F?M.main.add(x`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
|
|
324
|
+
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):M.main.add(x`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
|
|
325
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),M.uniforms.add(new b(`stipplePatternPixelSize`,e=>s(e))),M.main.add(x`
|
|
326
326
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
327
327
|
vec2 stippleDistanceLimits;
|
|
328
328
|
|
|
@@ -371,7 +371,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
371
371
|
// Disable stipple distance limits on caps
|
|
372
372
|
vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
|
|
373
373
|
isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
374
|
-
`)),
|
|
374
|
+
`)),M.main.add(x`
|
|
375
375
|
// Convert back into NDC
|
|
376
376
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
377
377
|
pos.z = pos.z * pos.w;
|
|
@@ -379,13 +379,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
379
379
|
vColor = getColor();
|
|
380
380
|
vColor.a = noPerspectiveWrite(vColor.a, pos.w);
|
|
381
381
|
|
|
382
|
-
${V&&!
|
|
382
|
+
${V&&!F?`pos.z -= EPS * pos.w;`:``}
|
|
383
383
|
|
|
384
384
|
// transform final position to camera space for slicing
|
|
385
385
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
386
386
|
gl_Position = pos;
|
|
387
387
|
forwardObjectAndLayerIdColor();
|
|
388
|
-
}`),
|
|
388
|
+
}`),k.include(T,O),k.include(_),N.include(ne),N.include(C),N.include(e,O),N.main.add(`discardBySlice(vpos);`),N.code.add(x`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
389
389
|
float stretchFactor = float(vIsInsideJoin) > 0.5 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
390
390
|
float featherWidth = 2.0;
|
|
391
391
|
float featherStartDistance = lineWidth - featherWidth / stretchFactor;
|
|
@@ -398,12 +398,12 @@ float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (l
|
|
|
398
398
|
feather = float(vIsInsideJoin) > 0.5 ? max(feather, straightFeather) : feather;
|
|
399
399
|
float coverage = min(lineWidth - aaWidth, 1.0);
|
|
400
400
|
return clamp(1.0 - feather, 0.0, coverage);
|
|
401
|
-
}`),
|
|
401
|
+
}`),N.main.add(x`
|
|
402
402
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
403
403
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
404
404
|
${S(X,x`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
405
|
-
`),Y&&
|
|
406
|
-
vec4 finalColor = albedo;`):(J&&
|
|
405
|
+
`),Y&&N.main.add(x`float nominalLineWidth = lineWidth - aaWidth;`),V?N.main.add(x`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
|
|
406
|
+
vec4 finalColor = albedo;`):(J&&N.main.add(x`
|
|
407
407
|
float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
408
408
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
409
409
|
|
|
@@ -414,7 +414,7 @@ vec4 finalColor = albedo;`):(J&&M.main.add(x`
|
|
|
414
414
|
if (capCoverage < alphaCutoff) {
|
|
415
415
|
discard;
|
|
416
416
|
}
|
|
417
|
-
`),Y?
|
|
417
|
+
`),Y?N.main.add(x`vec2 stipplePosition = vec2(
|
|
418
418
|
min(getStippleCapDistance(), 0.0) * nominalLineWidth,
|
|
419
419
|
lineDistance
|
|
420
420
|
);
|
|
@@ -422,11 +422,11 @@ float stippleRadius = length(stipplePosition);
|
|
|
422
422
|
float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
|
|
423
423
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
424
424
|
float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
|
|
425
|
-
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):
|
|
426
|
-
color.a = noPerspectiveRead(color.a);`),H&&
|
|
425
|
+
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):N.main.add(x`float stippleAlpha = getStippleAlpha(lineWidth);`),L!==11&&N.main.add(x`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),N.uniforms.add(new y(`intrinsicColor`,e=>e.color)).main.add(x`vec4 color = intrinsicColor * vColor;
|
|
426
|
+
color.a = noPerspectiveRead(color.a);`),H&&N.uniforms.add(new y(`innerColor`,e=>e.innerColor??e.color),new b(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(x`float distToInner = abs(lineDistance) - innerWidth;
|
|
427
427
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
428
428
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
429
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),
|
|
429
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),N.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),B&&(N.uniforms.add(new b(`falloff`,e=>e.falloff)),N.main.add(x`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),N.main.add(x`albedo.a *= ${Y?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),U&&(M.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),k.include(re,O),N.main.add(`albedo.a *= animatedAlpha();`)),I?(k.include(i,O),M.main.add(x`forwardLocalUp(position, localOrigin);`),M.main.add(`forwardLinearDepthToReadShadow();`),k.include(d,O),N.include(r,O),N.include(n,O),N.uniforms.add(a).main.add(x`vec3 normal = normalize(upNormal);
|
|
430
430
|
float additionalAmbientScale = additionalDirectedAmbientLight(normal);
|
|
431
431
|
float shadow = readFragmentShadow(additionalAmbientScale);
|
|
432
432
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
@@ -435,4 +435,4 @@ vec3 viewDirection = normalize((inverseViewMatrix * vec4(vpos, 0.0)).xyz);
|
|
|
435
435
|
vec4 finalColor = vec4(
|
|
436
436
|
evaluateSceneLighting(normal, albedo.rgb, shadow, 1.0 - ssao, additionalLight,viewDirection, normal),
|
|
437
437
|
albedo.a
|
|
438
|
-
);`)):
|
|
438
|
+
);`)):N.main.add(`vec4 finalColor = albedo;`)),N.main.add(x`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),k}const A=Object.freeze(Object.defineProperty({__proto__:null,build:k,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{A as R,k as b,O as n};
|
package/chunks/Terrain.glsl.js
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as n,set as r}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{waterNormals as a}from"../views/3d/webgl-engine/core/shaderLibrary/bindUniforms.js";import{addLinearDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{sliceDraw as s}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as c}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as u}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as f}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as m}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as g,addAmbientBoostFactor as _}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{
|
|
2
|
+
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as n,set as r}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{waterNormals as a}from"../views/3d/webgl-engine/core/shaderLibrary/bindUniforms.js";import{addLinearDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{sliceDraw as s}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as c}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as u}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as f}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as m}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as g,addAmbientBoostFactor as _}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{forwardLocalUp as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js";import{lightingGlobalFactor as y,mainLightDirection as b,mainLightIntensity as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js";import{readShadowDraw as S}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js";import{OverlayTerrain as C}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as w,TerrainTexture as T}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{viewNormal as E,nearFar as D}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{addProjViewLocalOrigin as O,addCameraPosition as k}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3BindUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as j,If as M}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as N}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{alphaCutoff as P}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as F}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as I}from"../views/webgl/ShaderBuilder.js";class L extends w{constructor(){super(...arguments),this.useStencil=!1}}function R(t){let i=new I,{attributes:w,vertex:L,fragment:R,varyings:V}=i;w.add(`position`,`vec3`),i.include(l,t),i.include(u,t);function H(){L.code.add(j`vec3 getNormal() {
|
|
3
3
|
float z = 1.0 - abs(normalCompressed.x) - abs(normalCompressed.y);
|
|
4
4
|
vec3 n = vec3(normalCompressed + vec2(normalCompressed.x >= 0.0 ? 1.0 : -1.0,
|
|
5
5
|
normalCompressed.y >= 0.0 ? 1.0 : -1.0) * min(z, 0.0), z);
|
|
6
6
|
return normalize(n);
|
|
7
|
-
}`)}O(L,t),i.include(c),R.include(P);let{output:U,overlayMode:W,tileBorders:G,transparencyMode:K,overlayEnabled:q,renderOccluded:J}=t,Y=K===2||K===3,X=q&&Y;switch(U){case 0:case 1:case 2:{i.include(T,t),R.include(g,t),q&&i.include(C,t);let o=W===2;o&&i.include(d,t),V.add(`vnormal`,`vec3`),V.add(`vpos`,`vec3`,{invariant:!0}),
|
|
7
|
+
}`)}O(L,t),i.include(c),R.include(P);let{output:U,overlayMode:W,tileBorders:G,transparencyMode:K,overlayEnabled:q,renderOccluded:J}=t,Y=K===2||K===3,X=q&&Y;switch(U){case 0:case 1:case 2:{i.include(T,t),R.include(g,t),q&&i.include(C,t);let o=W===2;o&&i.include(d,t),V.add(`vnormal`,`vec3`),V.add(`vpos`,`vec3`,{invariant:!0}),H(),L.main.add(j`
|
|
8
8
|
vpos = position;
|
|
9
9
|
vec3 positionWorld = position + localOrigin;
|
|
10
10
|
gl_Position = transformPosition(proj, view, vpos);
|
|
11
11
|
vnormal = getNormal();
|
|
12
|
-
upNormal = getLocalUp(position, localOrigin);
|
|
13
12
|
${M(o,j`forwardVertexTangent(vnormal);`)}
|
|
14
13
|
|
|
15
14
|
forwardTextureCoordinatesWithTransform(uv0);
|
|
16
15
|
${M(q,`setOverlayVTC(uv0);`)}
|
|
17
16
|
${M(G,`forwardTextureCoordinates();`)}
|
|
18
17
|
forwardLinearDepthToReadShadow();
|
|
19
|
-
`);let c=U===0&&!J?``:`discard`;i.include(S,t),R.include(s,t),R.include(g,t),R.include(h,t),i.include(F,t),k(R,t),_(R),R.uniforms.add(
|
|
18
|
+
`),i.include(v,t),L.main.add(j`forwardLocalUp(position, localOrigin);`);let c=U===0&&!J?``:`discard`;i.include(S,t),R.include(s,t),R.include(g,t),R.include(h,t),i.include(F,t),k(R,t),_(R),R.uniforms.add(y),R.uniforms.add(L.uniforms.get(`localOrigin`),new A(`viewDirection`,({camera:e})=>n(B,r(B,e.viewMatrix[12],e.viewMatrix[13],e.viewMatrix[14])))),o&&R.uniforms.add(a,new N(`view`,({origin:t},{camera:n})=>e(z,n.viewMatrix,t))),R.uniforms.add(b,x).main.add(j`
|
|
20
19
|
vec3 normal = normalize(vnormal);
|
|
21
20
|
float lightAlignment = dot(normal, mainLightDirection);
|
|
22
21
|
|