UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 2.9 kB
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{smoothstep as s}from"../../../core/mathUtils.js";import{property as r}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import{n as o,e as i,g as n,h,l as p}from"../../../chunks/vec3.js";import{c,f as m}from"../../../chunks/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../geometry/ellipsoidUtils.js";import{atmosphereHeight as d}from"./atmosphereUtils.js";import{F as l}from"../../../chunks/FogHaze.glsl.js";import{FogHazeTechniqueConfiguration as f}from"./FogTechnique.js";import{SimpleHazeTechnique as _}from"./SimpleHazeTechnique.js";import{weatherHeightLimit as g}from"./weather.js";import{Pos2Tex as b}from"../webgl-engine/lib/DefaultVertexBufferLayouts.js";import{createQuadVAO as j}from"../webgl-engine/lib/glUtil3D.js";import{PrimitiveType as x}from"../../webgl/enums.js";const y=.7,v=1;let z=class extends t{constructor(e){super(e),this._passParameters=new l;const t=e.context.renderContext.rctx;this._vao=j(t,b);const s=u(e.view.spatialReference);this._planetRadius=s.radius,this._atmosphereRadius=s.radius+d;const r=new f;r.haze=!0,this._hazeTechnique=e.context.techniqueRepository.acquire(_,r)}destroy(){this._hazeTechnique.release(),this._vao.dispose()}set strength(e){this._passParameters.hazeStrength=e}get strength(){return this._passParameters.hazeStrength}render(e,t){if(0===this.view.basemapTerrain.baseOpacity)return;if(this._update(e,t),this._passParameters.hazeAmount<=0)return;const s=this._hazeTechnique;if(!s.compiled)return void this.context.requestRender();const r=e.offscreenRenderingHelper;r.renderDepthDetached((()=>{this._passParameters.depthTexture=r.depthTexture;const t=e.rctx.bindTechnique(s,this._passParameters,e.bindParameters);this._renderSimpleHaze(t,e)}))}_renderSimpleHaze(e,t){const s=t.rctx;s.bindVAO(this._vao),e.assertCompatibleVertexAttributeLocations(this._vao),s.drawArrays(x.TRIANGLE_STRIP,0,4)}_update(e,t){const r=e.bindParameters.camera;o(S,r.eye);const a=Math.max(0,i(S,e.bindParameters.lighting.mainLight.direction)),c=T;n(w,c,0),h(this._passParameters.hazeColor,w,c,a);const m=p(r.eye),u=m*m;this._passParameters.atmosphereC=u-this._atmosphereRadius*this._atmosphereRadius,this._passParameters.hazeAmount=(1-s(y*g,v*g,Math.abs(m-this._planetRadius)))*t.amount,this._passParameters.fogStrength=t.strength}static isSupported(e){return e.capabilities.depthTexture}};e([r({constructOnly:!0})],z.prototype,"context",void 0),e([r({constructOnly:!0})],z.prototype,"view",void 0),z=e([a("esri.views.3d.environment.SimpleHaze")],z);class P{constructor(){this.strength=0,this.amount=0}}const T=m(.24,.44,.8),S=c(),w=c();export{P as HazeParameters,z as SimpleHaze};