/* COPYRIGHT Esri - https://js.arcgis.com/5.1.2/LICENSE.txt */
import{__decorate as e}from"tslib";import{subclass as i}from"../../../../core/accessorSupport/decorators.js";import{glLayout as t}from"../../support/buffer/glUtil.js";import{newLayout as r}from"../../support/buffer/InterleavedLayout.js";import{ReloadableShader as l}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../core/shaderTechnique/ShaderTechnique.js";import{depthWrite as n,depthTest as o,blending as c}from"../lib/OrderIndependentTransparency.js";import{stencilToolMaskBase as p,stencilBaseAllZeros as u,stencilWriteMaskOn as a,stencilToolTransparentOccluder as d,depthCompareAlways as h,stencilToolMaskOccluder as m,stencilWriteMaskOff as f,depthCompareLess as P}from"../lib/StencilUtils.js";import{L as g}from"../../../../chunks/LineMarker.glsl.js";import{makePipelineState as T,defaultColorWrite as b,unpremultipliedAlphaToPremultipliedAlpha as W}from"../../../webgl/renderState.js";let _=class extends s{constructor(e,i){super(e,i,t(S(i))),this.shader=new l(g,()=>import("./LineMarker.glsl.js"))}_makePipelineState(e,i){const{output:t,space:r,hasOccludees:l}=e;return T({blending:c(t,!1,e.emissionDimmingPass),depthTest:0===r?null:o(t),depthWrite:n(e),colorWrite:b,stencilWrite:l?a:null,stencilTest:l?i?p:u:null,polygonOffset:{factor:0,units:-10}})}initializePipeline(e){return e.occluder?(this._occluderPipelineTransparent=T({blending:W,depthTest:h,depthWrite:null,colorWrite:b,stencilWrite:null,stencilTest:d}),this._occluderPipelineOpaque=T({blending:W,depthTest:h,depthWrite:null,colorWrite:b,stencilWrite:f,stencilTest:m}),this._occluderPipelineMaskWrite=T({blending:null,depthTest:P,depthWrite:null,colorWrite:null,stencilWrite:a,stencilTest:p})):this._occluderPipelineTransparent=this._occluderPipelineOpaque=this._occluderPipelineMaskWrite=null,this._occludeePipelineState=this._makePipelineState(e,!0),this._makePipelineState(e,!1)}getPipeline(e,i,t){return t?this._occludeePipelineState:11===e.occluder?this._occluderPipelineTransparent??super.getPipeline(e,i,t):10===e.occluder?this._occluderPipelineOpaque??super.getPipeline(e,i,t):this._occluderPipelineMaskWrite??super.getPipeline(e,i,t)}};function S(e){const i=r().vec3f("position").vec4f16("previousDelta").vec2f16("uv0");return e.hasVVColor?i.f32("colorFeatureAttribute"):i.vec4u8("color",{glNormalized:!0}),e.hasVVOpacity&&i.f32("opacityFeatureAttribute"),e.hasVVSize?i.f32("sizeFeatureAttribute"):i.f16("size"),e.worldSpace&&i.vec3f16("normal"),i.freeze()}_=e([i("esri.views.3d.webgl-engine.shaders.LineMarkerTechnique")],_);export{_ as LineMarkerTechnique,S as getLayout};
