UNPKG

@arcgis/core

Version:

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

51 lines (50 loc) 3.1 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{neverReached as e}from"../../../../../../core/compilerUtils.js";import{RgbaFloatEncoding as t}from"../../../core/shaderLibrary/util/RgbaFloatEncoding.glsl.js";import{FloatDrawUniform as r}from"../../../core/shaderModules/FloatDrawUniform.js";import{glsl as a}from"../../../core/shaderModules/glsl.js";import{Texture2DDrawUniform as s}from"../../../core/shaderModules/Texture2DDrawUniform.js";import{usesSketchLogic as o,EdgeType as l}from"./EdgeUtil.glsl.js";import{UnpackAttributes as u}from"./UnpackAttributes.glsl.js";import{NoParameters as c}from"../../../../../webgl/NoParameters.js";class i extends c{}function n(c,i){c.include(u,i);const{vertex:n,fragment:d}=c;switch(o(i.type)&&(c.varyings.add("vStrokeUV","vec2"),n.uniforms.add(new s("strokesTexture",(e=>e.strokesTexture.texture)),new r("strokesLog2Resolution",(e=>Math.log2(e.strokesTexture.resolution))),new r("strokeVariants",(e=>e.strokesTexture.variants))).code.add(a`void calculateStyleOutputsSketch(float lineLength, UnpackedAttributes unpackedAttributes) { vec2 sidenessNorm = unpackedAttributes.sidenessNorm; float lineIndex = clamp(ceil(log2(lineLength)), 0.0, strokesLog2Resolution); vStrokeUV = vec2(exp2(lineIndex) * sidenessNorm.y, lineIndex * strokeVariants + variantStroke + 0.5) / vec2(textureSize(strokesTexture, 0)); vStrokeUV.x += variantOffset; }`),c.fragment.include(t),d.uniforms.add(new s("strokesTexture",(e=>e.strokesTexture.texture)),new r("strokesNormalizationScale",(e=>e.strokesTexture.normalizationScale))).code.add(a`float calculateLineOffsetSketch() { float offsetNorm = rgbaTofloat(texture(strokesTexture, vStrokeUV)); return (offsetNorm - 0.5) * strokesNormalizationScale; } float calculateLinePressureSketch() { return rgbaTofloat(texture(strokesTexture, vStrokeUV + vec2(0.0, 0.5))); }`)),i.type){case l.Solid:n.code.add(a`void calculateStyleOutputs(UnpackedAttributes unpackedAttributes) {}`),d.code.add(a`float calculateLineOffset() { return 0.0; } float calculateLinePressure() { return 1.0; }`);break;case l.Sketch:n.code.add(a`void calculateStyleOutputs(UnpackedAttributes unpackedAttributes) { calculateStyleOutputsSketch(vLineLengthPixels, unpackedAttributes); }`),d.code.add(a`float calculateLineOffset() { return calculateLineOffsetSketch(); } float calculateLinePressure() { return calculateLinePressureSketch(); }`);break;case l.Mixed:c.varyings.add("vType","float"),n.code.add(a`void calculateStyleOutputs(UnpackedAttributes unpackedAttributes) { vType = unpackedAttributes.type; if (unpackedAttributes.type <= 0.0) { calculateStyleOutputsSketch(vLineLengthPixels, unpackedAttributes); } }`),d.code.add(a`float calculateLineOffset() { if (vType <= 0.0) { return calculateLineOffsetSketch(); } else { return 0.0; } } float calculateLinePressure() { if (vType <= 0.0) { return calculateLinePressureSketch(); } else { return 1.0; } }`);break;case l.COUNT:break;default:e(i.type)}}export{n as LineOffset,i as LineOffsetDrawParameters};