UNPKG

@arcgis/core

Version:

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

22 lines (21 loc) 1.5 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{Float2PassUniform as o}from"../../shaderModules/Float2PassUniform.js";import{glsl as r}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as e}from"../../shaderModules/Texture2DPassUniform.js";function t(t){t.fragment.uniforms.add(new e("u_transformGrid",o=>o.u_transformGrid),new o("u_transformSpacing",o=>o.common.u_transformSpacing),new o("u_targetImageSize",o=>o.common.u_targetImageSize)),t.fragment.code.add(r`vec2 projectPixelLocation(vec2 coords) { vec2 index_image = floor(coords * u_targetImageSize); vec2 oneTransformPixel = vec2(4.0, 1.0); vec2 index_transform = floor(index_image / u_transformSpacing) * oneTransformPixel; vec2 pos = fract((index_image + 0.5) / u_transformSpacing); vec2 transform_location = index_transform + 0.5; vec2 srcLocation; if (pos.s <= pos.t) { vec3 ll_abc = texelFetch(u_transformGrid, ivec2(transform_location), 0).rgb; vec3 ll_def = texelFetch(u_transformGrid, ivec2(transform_location.s + 1.0, transform_location.t), 0).rgb; srcLocation.s = dot(ll_abc, vec3(pos, 1.0)); srcLocation.t = dot(ll_def, vec3(pos, 1.0)); } else { vec3 ur_abc = texelFetch(u_transformGrid, ivec2(transform_location.s + 2.0, transform_location.t), 0).rgb; vec3 ur_def = texelFetch(u_transformGrid, ivec2(transform_location.s + 3.0, transform_location.t), 0).rgb; srcLocation.s = dot(ur_abc, vec3(pos, 1.0)); srcLocation.t = dot(ur_def, vec3(pos, 1.0)); } return srcLocation; }`)}export{t as Projection};