@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.86 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{createColormapTexture as t,setTextures as e}from"../../../../webgl/rasterUtils.js";const n=[1,1],a=[2,0,0,0,2,0,-1,-1,0];function s(n,a,s,r){const{context:i,rasterFunction:o,hasBranches:f}=n,{raster:u}=o.parameters,m=f?u?.id??-1:0,c=[s.functionTextures[m]??s.rasterTexture],l=["u_image"];if(r){const e=t(i,r);s.functionTextures[100]=e,c.push(e),l.push("u_colormap")}e(i,a,l,c)}function r(t,n,a){const{rasters:r}=t.rasterFunction.parameters;if(!r)return;if(r.length<2)return s(t,n,a);const i=r.filter((t=>"Constant"!==t.name)).map((t=>null!=t.id&&"Identity"!==t.name?a.functionTextures[t.id]:a.rasterTexture));if(e(t.context,n,["u_image","u_image1","u_image2"].slice(0,i.length),i),i.length!==r.length)if(2===r.length){const t=r.findIndex((t=>"Constant"===t.name)),e=0===t?[0,1,0,1,0,0,0,0,0]:[1,0,0,0,1,0,0,0,0],{value:a}=r[t].parameters;n.setUniform1f("u_image1Const",a),n.setUniformMatrix3fv("u_imageSwap",e)}else if(3===r.length){const t=[];if(r.forEach(((e,n)=>"Constant"===e.name&&t.push(n))),1===t.length){const{value:e}=r[t[0]].parameters;n.setUniform1f("u_image1Const",e);const a=0===t[0]?[0,1,0,0,0,1,1,0,0]:1===t[0]?[1,0,0,0,0,1,0,1,0]:[1,0,0,0,1,0,0,0,1];n.setUniformMatrix3fv("u_imageSwap",a)}else if(2===t.length){const{value:e}=r[t[0]].parameters;n.setUniform1f("u_image1Const",e);const{value:a}=r[t[1]].parameters;n.setUniform1f("u_image2Const",a);const s=r.findIndex((t=>"Constant"!==t.name)),i=0===s?[1,0,0,0,1,0,0,0,1]:1===s?[0,1,0,1,0,0,0,0,1]:[0,0,1,1,0,0,0,1,0];n.setUniformMatrix3fv("u_imageSwap",i)}}}function i(t){t.setUniform2fv("u_coordScale",n),t.setUniformMatrix3fv("u_dvsMat3",a)}export{i as setCoordsAndTransforms,r as setMultipleImageTextures,s as setSingleImageTextures};