UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

30 lines (29 loc) 2.28 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{VisualVariables as t}from"../shading/VisualVariables.glsl.js";import{Float3PassUniform as i}from"../../shaderModules/Float3PassUniform.js";import{FloatPassUniform as e}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as a}from"../../shaderModules/FloatsPassUniform.js";import{glsl as r}from"../../shaderModules/glsl.js";import{VertexAttribute as v}from"../../../lib/VertexAttribute.js";const o=8;function c(c,s){const l=c.vertex;l.uniforms.add(new e("intrinsicWidth",(t=>t.width))),s.vvSize?(c.attributes.add(v.SIZEFEATUREATTRIBUTE,"float"),l.uniforms.add(new i("vvSizeMinSize",(t=>t.vvSize.minSize)),new i("vvSizeMaxSize",(t=>t.vvSize.maxSize)),new i("vvSizeOffset",(t=>t.vvSize.offset)),new i("vvSizeFactor",(t=>t.vvSize.factor))),l.code.add(r`float getSize() { return intrinsicWidth * clamp(vvSizeOffset + sizeFeatureAttribute * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).x; }`)):(c.attributes.add(v.SIZE,"float"),l.code.add(r`float getSize(){ return intrinsicWidth * size; }`)),s.vvOpacity?(c.attributes.add(v.OPACITYFEATUREATTRIBUTE,"float"),l.constants.add("vvOpacityNumber","int",8),l.uniforms.add(new a("vvOpacityValues",(t=>t.vvOpacity.values),o),new a("vvOpacityOpacities",(t=>t.vvOpacity.opacityValues),o)),l.code.add(r`float interpolateOpacity( float value ){ if (value <= vvOpacityValues[0]) { return vvOpacityOpacities[0]; } for (int i = 1; i < vvOpacityNumber; ++i) { if (vvOpacityValues[i] >= value) { float f = (value - vvOpacityValues[i-1]) / (vvOpacityValues[i] - vvOpacityValues[i-1]); return mix(vvOpacityOpacities[i-1], vvOpacityOpacities[i], f); } } return vvOpacityOpacities[vvOpacityNumber - 1]; } vec4 applyOpacity( vec4 color ){ return vec4(color.xyz, interpolateOpacity(opacityFeatureAttribute)); }`)):l.code.add(r`vec4 applyOpacity( vec4 color ){ return color; }`),s.vvColor?(c.include(t,s),c.attributes.add(v.COLORFEATUREATTRIBUTE,"float"),l.code.add(r`vec4 getColor(){ return applyOpacity(interpolateVVColor(colorFeatureAttribute)); }`)):(c.attributes.add(v.COLOR,"vec4"),l.code.add(r`vec4 getColor(){ return applyOpacity(color); }`))}export{c as RibbonVertexPosition};