UNPKG

@arcgis/core

Version:

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

29 lines (27 loc) 3.29 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{create as r}from"../../../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as o}from"../../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{PositionAttribute as t}from"./PositionAttribute.glsl.js";import{DoublePrecision as a}from"../util/DoublePrecision.glsl.js";import{Float3DrawUniform as i}from"../../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as m}from"../../shaderModules/Float3PassUniform.js";import{glsl as s}from"../../shaderModules/glsl.js";import{Matrix3DrawUniform as l}from"../../shaderModules/Matrix3DrawUniform.js";import{Matrix3PassUniform as d}from"../../shaderModules/Matrix3PassUniform.js";import{Matrix4PassUniform as n}from"../../shaderModules/Matrix4PassUniform.js";import{NoParameters as f}from"../../../../../webgl/NoParameters.js";function v(r,o){r.include(t);const e=r.vertex;e.include(a,o),r.varyings.add("vPositionWorldCameraRelative","vec3"),r.varyings.add("vPosition_view","vec3"),e.uniforms.add(new m("transformWorldFromViewTH",(r=>r.transformWorldFromViewTH)),new m("transformWorldFromViewTL",(r=>r.transformWorldFromViewTL)),new d("transformViewFromCameraRelativeRS",(r=>r.transformViewFromCameraRelativeRS)),new n("transformProjFromView",(r=>r.transformProjFromView)),new l("transformWorldFromModelRS",(r=>r.transformWorldFromModelRS)),new i("transformWorldFromModelTH",(r=>r.transformWorldFromModelTH)),new i("transformWorldFromModelTL",(r=>r.transformWorldFromModelTL))),e.code.add(s`vec3 positionWorldCameraRelative() { vec3 rotatedModelPosition = transformWorldFromModelRS * positionModel(); vec3 transform_CameraRelativeFromModel = dpAdd( transformWorldFromModelTL, transformWorldFromModelTH, -transformWorldFromViewTL, -transformWorldFromViewTH ); return transform_CameraRelativeFromModel + rotatedModelPosition; }`),e.code.add(s` void forwardPosition(float fOffset) { vPositionWorldCameraRelative = positionWorldCameraRelative(); if (fOffset != 0.0) { vPositionWorldCameraRelative += fOffset * ${o.spherical?s`normalize(transformWorldFromViewTL + vPositionWorldCameraRelative)`:s`vec3(0.0, 0.0, 1.0)`}; } vPosition_view = transformViewFromCameraRelativeRS * vPositionWorldCameraRelative; gl_Position = transformProjFromView * vec4(vPosition_view, 1.0); } `),r.fragment.uniforms.add(new m("transformWorldFromViewTL",(r=>r.transformWorldFromViewTL))),e.code.add(s`vec3 positionWorld() { return transformWorldFromViewTL + vPositionWorldCameraRelative; }`),r.fragment.code.add(s`vec3 positionWorld() { return transformWorldFromViewTL + vPositionWorldCameraRelative; }`)}class F extends f{constructor(){super(...arguments),this.transformWorldFromViewTH=e(),this.transformWorldFromViewTL=e(),this.transformViewFromCameraRelativeRS=r(),this.transformProjFromView=o()}}class w extends f{constructor(){super(...arguments),this.transformWorldFromModelRS=r(),this.transformWorldFromModelTH=e(),this.transformWorldFromModelTL=e()}}export{v as VertexPosition,w as VertexPositionDrawParameters,F as VertexPositionPassParameters};