@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
JavaScript
/*
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};