@maptalks/video-layer
Advanced tools
| /*! | ||
| * @maptalks/video-layer v0.120.0 | ||
| * @maptalks/video-layer v0.121.0 | ||
| * LICENSE : UNLICENSED | ||
| * (c) 2016-2026 maptalks.org | ||
| */ | ||
| import*as t from"maptalks";import{Eventable as e,Handlerable as i,Class as s,DrawToolLayer as r,Polygon as o,Layer as n}from"maptalks";import{CanvasCompatible as h,reshader as a,mat4 as l,quat as c}from"@maptalks/gl"; | ||
| import*as e from"maptalks";import{Eventable as t,Handlerable as r,Class as i,DrawToolLayer as o,Polygon as n,Layer as s}from"maptalks";import{CanvasCompatible as a,reshader as d,mat4 as l,quat as c}from"@maptalks/gl"; | ||
| /*! | ||
@@ -11,3 +11,3 @@ * Contains code from THREE.js | ||
| * https://github.com/mrdoob/three.js | ||
| */for(var d=[],u=0;u<6;u++)d[u]=[];var p=[];function f(t,e,i){var s,r,o,n,h,a,l,c,u,f,v,w,y,x,b,_,T;r=(s=t)[0],o=s[1],n=s[2],h=s[3],a=s[4],l=s[5],c=s[6],u=s[7],f=s[8],v=s[9],w=s[10],y=s[11],x=s[12],b=s[13],_=s[14],T=s[15],m(d[0],h-r,u-a,y-f,T-x),m(d[1],h+r,u+a,y+f,T+x),m(d[2],h+o,u+l,y+v,T+b),m(d[3],h-o,u-l,y-v,T-b),m(d[4],h-n,u-c,y-w,T-_),m(d[5],h+n,u+c,y+w,T+_);for(var C=0;C<6;C++){var O=d[C];if(p[0]=O[0]>0?e[1][0]:e[0][0],p[1]=O[1]>0?e[1][1]:e[0][1],p[2]=O[2]>0?e[1][2]:e[0][2],g(O,p)<0)return!1}return!0}function m(t,e,i,s,r){var o=1/Math.sqrt(e*e+i*i+s*s);return t[0]=e*o,t[1]=i*o,t[2]=s*o,t[3]=r*o,t}function g(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]}const v={vert:"\n attribute vec3 aPosition;\n attribute vec2 aTexCoord;\n uniform mat4 projViewModelMatrix;\n uniform mat4 positionMatrix;\n uniform mat4 modelMatrix;\n varying vec2 vTexCoords;\n #include <get_output>\n void main()\n {\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n }\n",frag:"\n precision mediump float;\n uniform sampler2D videoTexture;\n uniform float opacity;\n\n varying vec2 vTexCoords;\n void main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n }\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>l.multiply([],e.projViewMatrix,e.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},w=[1,0,3,3,2,1];class y extends(h(t.renderer.LayerAbstractRenderer)){constructor(t){super(t),this.t={}}draw(t,e){this.prepareCanvas(),this.i(e)}drawOnInteracting(t,e,i){this.i(i)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:t,device:e,reglGL:i}=this.context;this.regl=t||e,this.gl=i,this.device=t||e,this.o(),this.h();const s=this.layer.getVideoSurfaces();for(let t=0;t<s.length;t++)this.l(s[t])}u(t,e){const i=["webgl","experimental-webgl"];let s=null;for(let r=0;r<i.length;++r){try{s=t.getContext(i[r],e)}catch(t){}if(s)break}return s}h(){const t=this.layer.getMap(),e=new a.Renderer(this.regl);this.renderer=e,this.p={projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,viewMatrix:t.viewMatrix,halton:[.2107,-.0202],uHalton:[.2107,-.0202],uCameraPosition:t.cameraPosition,cameraPosition:t.cameraPosition,globalTexSize:[t.width,t.height]}}m(){return this.regl}o(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this.v()}v(){this._&&this._.dispose(),this.layer.options.showTopAlways?(v.extraCommandProps.depth.mask=!1,v.extraCommandProps.depth.range=[0,0]):(delete v.extraCommandProps.depth.mask,delete v.extraCommandProps.depth.range),v.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this._=new a.MeshShader(v)}l(t){const e=this.device.texture(),i=new a.Material({videoTexture:e,opacity:1}),s=t.getCoordinates(),{worldCenter:r,points:o}=this.T(s),n=this.C(o),h=new a.Mesh(n,i);this.O(h,r);const l=new a.Scene(h),c=t.M();this.t[c]=l}S(t){const e=t.M(),i=this.t[e].getMeshes()[0],s=t.getCoordinates();i.geometry.dispose();const{worldCenter:r,points:o}=this.T(s),n=this.C(o);i.geometry=n,this.O(i,r)}i(t){const e=this.layer.getVideoSurfaces().filter((t=>t.isVisible()));if(!e.length)return;const i=this.P(e);if(!i)return;let s=null;t&&(s=t.renderTarget&&t.renderTarget.fbo),this.renderer.render(this._,this.p,i,s)}C(t){return new a.Geometry({POSITION:t,TEXCOORD:[0,0,1,0,1,1,0,1]},w,0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3})}T(e){let i=[];const s=this.getMap(),r=new t.Polygon(e).getCenter(),o=x(s,r,0);return this.V=o,s&&e.forEach((e=>{const r=new t.Coordinate(e[0],e[1]),n=s.altitudeToPoint(e[2]||0,s.getGLRes()),h=x(s,r,n);h[0]=h[0]-o[0],h[1]=h[1]-o[1],i=i.concat(h)})),{worldCenter:o,points:i}}P(t){const e=[],i=this.layer.getMap();for(let s=0;s<t.length;s++){const r=t[s],o=this.t[r.M()];if(!o)continue;const n=o.getMeshes();for(let t=0;t<n.length;t++){const s=n[t],o=s.getMaterial(),h=o.get("videoTexture");h&&r.k()&&(h(r.video),o.set("opacity",r.getOpacity())),f(i.projViewMatrix,s.getBoundingBox())&&e.push(s)}}return e.length?new a.Scene(e):null}O(t,e){l.fromRotationTranslationScale(t.localTransform,c.fromEuler([],0,0,0),e,[1,1,1])}remove(){this._&&this._.dispose(),super.remove()}A(t){const e=this.t[t];if(!e)return;e.getMeshes().forEach((t=>{t.geometry.dispose(),t.material&&t.material.dispose(),t.dispose()}))}}function x(t,e,i){if(!t)return null;const s=t.coordinateToPointAtRes(e,t.getGLRes());return[s.x,s.y,i]}class b extends(e(i(s))){constructor(t,e){super(e),this.setCoordinates(t),this.I()}setCoordinates(t){this.R=t}getCoordinates(){return this.R}setVideo(t){this.D="stop",this.options.url=t,delete this.options.elementId,this.I()}setElementId(t){this.D="stop",this.options.elementId=t,delete this.options.url,this.I()}I(){this.D="stop";const t=this.options.url,e=this.options.elementId;let i=document.getElementById(e);if(t&&(i=document.createElement("video"),i.src=t),!i)throw new Error("there is no element or url setting for video mask");i.autoplay=!0,i.loop=!0,i.muted=!0,i.play(),i.addEventListener("playing",(()=>{this.D="playing",this.fire("playing",{state:this.D,url:t})})),i.addEventListener("pause",(()=>{this.D="pause",this.fire("pause",{state:this.D,url:t})})),i.addEventListener("error",(()=>{throw this.D="pause",this.fire("error",{state:this.D,url:t}),new Error("video resource load error")})),this.video=i}getVideo(){return this.video}j(t){this.F=t}M(){return this.F}addTo(t){if(this.L)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return t.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(t){this.video.muted=t}setOpacity(t){this.options.opacity=t}getOpacity(){return this.options.opacity}remove(){delete this.video;const t=this.getLayer();t&&t.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this.L}k(){return"playing"===this.D}startEdit(){const t=this.getLayer();if(!t)return void console.warn("videosurface should be added to a map before edit");const e=t.getMap();if(!e)return void console.warn("videosurface should be added to a map before edit");if(this.H(),!this.N){const i=t.getId();this.N=new r(`internal_${i}_edit`).addTo(e)}const i=this.getCoordinates();this.G=new o(i,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this.N),this.G.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this.G.on("shapechange",(e=>{const i=e.target.getCoordinates()[0].slice(0,4).map((t=>[t.x,t.y,0]));this.setCoordinates(i);t.getRenderer().S(this)}),this)}endEdit(){this.N&&(this.G.endEdit(),this.G.remove(),this.N.remove()),delete this.N,delete this.G}H(){this.N&&this.N.clear(),delete this.G}}b.mergeOptions({opacity:1,visible:!0});class _ extends n{constructor(t,e,i){!e||Array.isArray(e)||e instanceof b||(i=e,e=null),super(t,i),this.W={},this.videoId=0,this.W={},this.videoId=0,e&&this.addSurfaces(e)}addSurfaces(t){if(t)if(Array.isArray(t))t.forEach((t=>{this.addSurfaces(t)}));else{t.L=this,this.W[this.videoId]=t,t.j(this.videoId);const e=this.getRenderer();e?e.m()&&e.l(t):this.on("renderercreate",(e=>{e.renderer.m()&&e.renderer.l(t)})),this.videoId++}}showTopAlways(t){this.options.showTopAlways=t;const e=this.getRenderer();e&&e.v()}setDoubleSide(t){this.options.doubleSide=t;const e=this.getRenderer();e&&e.v()}getVideoSurfaces(){const t=[];for(const e in this.W)t.push(this.W[e]);return t}removeVideoSurfaces(t){if(Array.isArray(t))t.forEach((t=>{this.removeVideoSurfaces(t)}));else{const e=t.M(),i=this.getRenderer();i&&i.A(e),delete this.W[e]}}remove(){this.clear(),super.remove()}clear(){const t=this.getVideoSurfaces();for(let e=0;e<t.length;e++)t[e].remove()}}_.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),_.registerJSONType("VideoLayer"),_.registerRenderer("gl",y),_.registerRenderer("gpu",y);export{_ as VideoLayer,b as VideoSurface};"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.120.0"); | ||
| */for(var h=[],u=0;u<6;u++)h[u]=[];var p=[];function g(e,t,r){var i,o,n,s,a,d,l,c,u,g,f,_,y,x,w,S,M;o=(i=e)[0],n=i[1],s=i[2],a=i[3],d=i[4],l=i[5],c=i[6],u=i[7],g=i[8],f=i[9],_=i[10],y=i[11],x=i[12],w=i[13],S=i[14],M=i[15],m(h[0],a-o,u-d,y-g,M-x),m(h[1],a+o,u+d,y+g,M+x),m(h[2],a+n,u+l,y+f,M+w),m(h[3],a-n,u-l,y-f,M-w),m(h[4],a-s,u-c,y-_,M-S),m(h[5],a+s,u+c,y+_,M+S);for(var b=0;b<6;b++){var C=h[b];if(p[0]=C[0]>0?t[1][0]:t[0][0],p[1]=C[1]>0?t[1][1]:t[0][1],p[2]=C[2]>0?t[1][2]:t[0][2],v(C,p)<0)return!1}return!0}function m(e,t,r,i,o){var n=1/Math.sqrt(t*t+r*r+i*i);return e[0]=t*n,e[1]=r*n,e[2]=i*n,e[3]=o*n,e}function v(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]}const f={name:"video-layer",vert:"attribute vec3 aPosition;\nattribute vec2 aTexCoord;\nuniform mat4 projViewModelMatrix;\nuniform mat4 positionMatrix;\nuniform mat4 modelMatrix;\nvarying vec2 vTexCoords;\n#include <get_output>\nvoid main()\n{\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n}",frag:"precision mediump float;\nuniform sampler2D videoTexture;\nuniform float opacity;\nvarying vec2 vTexCoords;\nvoid main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n}",wgslVert:"#include <get_output>\nstruct Uniforms {\n modelMatrix: mat4x4f,\n positionMatrix: mat4x4f,\n projViewModelMatrix: mat4x4f,\n};\n@group(0) @binding($b) var<uniform> uniforms: Uniforms;\nstruct VertexInput {\n @location($i) aPosition: vec3f,\n @location($i) aTexCoord: vec2f,\n};\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location($o) vTexCoords: vec2f,\n};\n@vertex\nfn main(vertexInput: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let localPositionMatrix: mat4x4f = getPositionMatrix(vertexInput, &output, uniforms.positionMatrix);\n let localPosition: vec4f = getPosition(vec3f(vertexInput.aPosition.xyz), vertexInput);\n output.vTexCoords = vertexInput.aTexCoord;\n output.position = uniforms.projViewModelMatrix * localPositionMatrix * localPosition;\n return output;\n}",wgslFrag:"struct FragUniforms {\n opacity: f32\n}\n@group(0) @binding($b) var videoTexture: texture_2d<f32>;\n@group(0) @binding($b) var videoTextureSampler: sampler;\n@group(0) @binding($b) var<uniform> fragUniforms: FragUniforms;\n@fragment\nfn main(vertexOutput: VertexOutput) -> @location(0) vec4f {\n let color = textureSample(videoTexture, videoTextureSampler, vertexOutput.vTexCoords);\n return color * fragUniforms.opacity;\n}",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(e,t)=>l.multiply([],t.projViewMatrix,t.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},_=[1,0,3,3,2,1];class y extends(a(e.renderer.LayerAbstractRenderer)){constructor(e){super(e),this._scenes={}}draw(e,t){this.prepareCanvas(),this._renderScene(t)}drawOnInteracting(e,t,r){this._renderScene(r)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:e,device:t,reglGL:r}=this.context;this.regl=e||t,this.gl=r,this.device=e||t,this._initShader(),this._initRenderer();const i=this.layer.getVideoSurfaces();for(let e=0;e<i.length;e++)this._createScene(i[e])}_createGLContext(e,t){const r=["webgl","experimental-webgl"];let i=null;for(let o=0;o<r.length;++o){try{i=e.getContext(r[o],t)}catch(e){}if(i)break}return i}_initRenderer(){const e=this.layer.getMap(),t=new d.Renderer(this.regl);this.renderer=t,this._uniforms={projMatrix:e.projMatrix,projViewMatrix:e.projViewMatrix,viewMatrix:e.viewMatrix,halton:[.2107,-.0202],uHalton:[.2107,-.0202],uCameraPosition:e.cameraPosition,cameraPosition:e.cameraPosition,globalTexSize:[e.width,e.height]}}_getRegl(){return this.regl}_initShader(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this._updateShader()}_updateShader(){this._shader&&this._shader.dispose(),this.layer.options.showTopAlways?(f.extraCommandProps.depth.mask=!1,f.extraCommandProps.depth.range=[0,0]):(delete f.extraCommandProps.depth.mask,delete f.extraCommandProps.depth.range),f.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this._shader=new d.MeshShader(f)}_createScene(e){const t=this.device.texture(),r=new d.Material({videoTexture:t,opacity:1}),i=e.getCoordinates(),{worldCenter:o,points:n}=this._transformCoordToWorld(i),s=this._createGeometry(n),a=new d.Mesh(s,r);this._updateMatrix(a,o);const l=new d.Scene(a),c=e._getVideoId();this._scenes[c]=l}_updateCoordinates(e){const t=e._getVideoId(),r=this._scenes[t].getMeshes()[0],i=e.getCoordinates();r.geometry.dispose();const{worldCenter:o,points:n}=this._transformCoordToWorld(i),s=this._createGeometry(n);r.geometry=s,this._updateMatrix(r,o)}_renderScene(e){const t=this.layer.getVideoSurfaces().filter((e=>e.isVisible()));if(!t.length)return;const r=this._createSceneInFrustum(t);if(!r)return;let i=null;e&&(i=e.renderTarget&&e.renderTarget.fbo),this.renderer.render(this._shader,this._uniforms,r,i)}_createGeometry(e){const t=new d.Geometry({POSITION:new Float32Array(e),TEXCOORD:new Float32Array([0,0,1,0,1,1,0,1])},new Uint16Array(_),0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3});return t.generateBuffers(this.device),t}_transformCoordToWorld(t){let r=[];const i=this.getMap(),o=new e.Polygon(t).getCenter(),n=x(i,o,0);return this._worldCenter=n,i&&t.forEach((t=>{const o=new e.Coordinate(t[0],t[1]),s=i.altitudeToPoint(t[2]||0,i.getGLRes()),a=x(i,o,s);a[0]=a[0]-n[0],a[1]=a[1]-n[1],r=r.concat(a)})),{worldCenter:n,points:r}}_createSceneInFrustum(e){const t=[],r=this.layer.getMap();for(let i=0;i<e.length;i++){const o=e[i],n=this._scenes[o._getVideoId()];if(!n)continue;const s=n.getMeshes();for(let e=0;e<s.length;e++){const i=s[e],n=i.getMaterial(),a=n.get("videoTexture");a&&o._canDrawing()&&(a.update?a.update({data:o.video}):a(o.video),n.set("opacity",o.getOpacity())),g(r.projViewMatrix,i.getBoundingBox())&&t.push(i)}}return t.length?new d.Scene(t):null}_updateMatrix(e,t){l.fromRotationTranslationScale(e.localTransform,c.fromEuler([],0,0,0),t,[1,1,1])}remove(){this._shader&&this._shader.dispose(),super.remove()}_deleteScene(e){const t=this._scenes[e];if(!t)return;t.getMeshes().forEach((e=>{e.geometry.dispose(),e.material&&e.material.dispose(),e.dispose()}))}}function x(e,t,r){if(!e)return null;const i=e.coordinateToPointAtRes(t,e.getGLRes());return[i.x,i.y,r]}class w extends(t(r(i))){constructor(e,t){super(t),this.setCoordinates(e),this._createVideo()}setCoordinates(e){this._coordinates=e}getCoordinates(){return this._coordinates}setVideo(e){this._videoState="stop",this.options.url=e,delete this.options.elementId,this._createVideo()}setElementId(e){this._videoState="stop",this.options.elementId=e,delete this.options.url,this._createVideo()}_createVideo(){this._videoState="stop";const e=this.options.url,t=this.options.elementId;let r=document.getElementById(t);if(e&&(r=document.createElement("video"),r.src=e),!r)throw new Error("there is no element or url setting for video mask");r.autoplay=!0,r.loop=!0,r.muted=!0,r.play(),r.addEventListener("playing",(()=>{this._videoState="playing",this.fire("playing",{state:this._videoState,url:e})})),r.addEventListener("pause",(()=>{this._videoState="pause",this.fire("pause",{state:this._videoState,url:e})})),r.addEventListener("error",(()=>{throw this._videoState="pause",this.fire("error",{state:this._videoState,url:e}),new Error("video resource load error")})),this.video=r}getVideo(){return this.video}_setVideoId(e){this._videoId=e}_getVideoId(){return this._videoId}addTo(e){if(this._layer)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return e.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(e){this.video.muted=e}setOpacity(e){this.options.opacity=e}getOpacity(){return this.options.opacity}remove(){delete this.video;const e=this.getLayer();e&&e.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this._layer}_canDrawing(){return"playing"===this._videoState}startEdit(){const e=this.getLayer();if(!e)return void console.warn("videosurface should be added to a map before edit");const t=e.getMap();if(!t)return void console.warn("videosurface should be added to a map before edit");if(this._clearEditHelper(),!this._editHelpLayer){const r=e.getId();this._editHelpLayer=new o(`internal_${r}_edit`).addTo(t)}const r=this.getCoordinates();this._editHelpPolygon=new n(r,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this._editHelpLayer),this._editHelpPolygon.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this._editHelpPolygon.on("shapechange",(t=>{const r=t.target.getCoordinates()[0].slice(0,4).map((e=>[e.x,e.y,0]));this.setCoordinates(r);e.getRenderer()._updateCoordinates(this)}),this)}endEdit(){this._editHelpLayer&&(this._editHelpPolygon.endEdit(),this._editHelpPolygon.remove(),this._editHelpLayer.remove()),delete this._editHelpLayer,delete this._editHelpPolygon}_clearEditHelper(){this._editHelpLayer&&this._editHelpLayer.clear(),delete this._editHelpPolygon}}w.mergeOptions({opacity:1,visible:!0});class S extends s{constructor(e,t,r){!t||Array.isArray(t)||t instanceof w||(r=t,t=null),super(e,r),this._videoSurfaceMap={},this.videoId=0,this._videoSurfaceMap={},this.videoId=0,t&&this.addSurfaces(t)}addSurfaces(e){if(e)if(Array.isArray(e))e.forEach((e=>{this.addSurfaces(e)}));else{e._layer=this,this._videoSurfaceMap[this.videoId]=e,e._setVideoId(this.videoId);const t=this.getRenderer();t?t._getRegl()&&t._createScene(e):this.on("renderercreate",(t=>{t.renderer._getRegl()&&t.renderer._createScene(e)})),this.videoId++}}showTopAlways(e){this.options.showTopAlways=e;const t=this.getRenderer();t&&t._updateShader()}setDoubleSide(e){this.options.doubleSide=e;const t=this.getRenderer();t&&t._updateShader()}getVideoSurfaces(){const e=[];for(const t in this._videoSurfaceMap)e.push(this._videoSurfaceMap[t]);return e}removeVideoSurfaces(e){if(Array.isArray(e))e.forEach((e=>{this.removeVideoSurfaces(e)}));else{const t=e._getVideoId(),r=this.getRenderer();r&&r._deleteScene(t),delete this._videoSurfaceMap[t]}}remove(){this.clear(),super.remove()}clear(){const e=this.getVideoSurfaces();for(let t=0;t<e.length;t++)e[t].remove()}}S.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),S.registerJSONType("VideoLayer"),S.registerRenderer("gl",y),S.registerRenderer("gpu",y);export{S as VideoLayer,w as VideoSurface};"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.121.0"); | ||
| //# sourceMappingURL=maptalks.video.es.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"maptalks.video.es.js","sources":["../../../node_modules/.pnpm/frustum-intersects@0.2.4/node_modules/frustum-intersects/src/index.js","../src/VideoLayerRenderer.js","../src/VideoSurface.ts","../src/VideoLayer.ts"],"sourcesContent":["/*!\r\n* Contains code from THREE.js\r\n* MIT License\r\n* https://github.com/mrdoob/three.js\r\n*/\r\n\r\nvar planes = [];\r\nfor (var i = 0; i < 6; i++) {\r\n planes[i] = [];\r\n}\r\n\r\nexport function intersectsSphere(matrix, sphere, mask) {\r\n setPlanes(matrix);\r\n var center = sphere[0];\r\n var negRadius = -sphere[1];\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var distance = distanceToPoint(planes[i], center);\r\n if (distance < negRadius) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nvar p = [];\r\n\r\nexport function intersectsBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n // corner at max distance\r\n p[0] = plane[0] > 0 ? box[1][0] : box[0][0];\r\n p[1] = plane[1] > 0 ? box[1][1] : box[0][1];\r\n p[2] = plane[2] > 0 ? box[1][2] : box[0][2];\r\n\r\n if (distanceToPoint(plane, p) < 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function intersectsOrientedBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n if (!intersectsPlane(plane, box)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nvar COLUMN0ROW0 = 0 + 3, COLUMN0ROW1 = 1 + 3, COLUMN0ROW2 = 2 + 3, COLUMN1ROW0 = 3 + 3, COLUMN1ROW1 = 4 + 3, COLUMN1ROW2 = 5 + 3, COLUMN2ROW0 = 6 + 3, COLUMN2ROW1 = 7 + 3, COLUMN2ROW2 = 8 + 3;\r\n// const COLUMN0ROW0 = 0, COLUMN0ROW1 = 1, COLUMN0ROW2 = 2, COLUMN1ROW0 = 3, COLUMN1ROW1 = 4, COLUMN1ROW2 = 5, COLUMN2ROW0 = 6, COLUMN2ROW1 = 7, COLUMN2ROW2 = 8;\r\nvar BOX_CENTER = [];\r\nvar HALF_AXES = [];\r\n\r\nfunction intersectsPlane(plane, box) {\r\n var center = box;\r\n var normal = plane;\r\n var halfAxes = box;\r\n var normalX = normal[0], normalY = normal[1], normalZ = normal[2];\r\n // plane is used as if it is its normal; the first three components are assumed to be normalized\r\n var radEffective = Math.abs(normalX * halfAxes[COLUMN0ROW0] + normalY * halfAxes[COLUMN0ROW1] + normalZ * halfAxes[COLUMN0ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN1ROW0] + normalY * halfAxes[COLUMN1ROW1] + normalZ * halfAxes[COLUMN1ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN2ROW0] + normalY * halfAxes[COLUMN2ROW1] + normalZ * halfAxes[COLUMN2ROW2]);\r\n var distanceToPlane = distanceToPoint(plane, center);\r\n\r\n if (distanceToPlane <= -radEffective) {\r\n // The entire box is on the negative side of the plane normal\r\n // return Intersect.OUTSIDE;\r\n return false;\r\n } else if (distanceToPlane >= radEffective) {\r\n // The entire box is on the positive side of the plane normal\r\n // return Intersect.INSIDE;\r\n return true;\r\n }\r\n return true;\r\n // return Intersect.INTERSECTING;\r\n}\r\n\r\nfunction setPlanes(m) {\r\n var me = m;\r\n var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\r\n var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\r\n var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\r\n var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\r\n\r\n //right\r\n setComponents(planes[0], me3 - me0, me7 - me4, me11 - me8, me15 - me12);\r\n //left\r\n setComponents(planes[1], me3 + me0, me7 + me4, me11 + me8, me15 + me12);\r\n //bottom\r\n setComponents(planes[2], me3 + me1, me7 + me5, me11 + me9, me15 + me13);\r\n //top\r\n setComponents(planes[3], me3 - me1, me7 - me5, me11 - me9, me15 - me13);\r\n //z-far\r\n setComponents(planes[4], me3 - me2, me7 - me6, me11 - me10, me15 - me14);\r\n //z-near\r\n setComponents(planes[5], me3 + me2, me7 + me6, me11 + me10, me15 + me14);\r\n}\r\n\r\nfunction setComponents(out, x, y, z, w) {\r\n // THREE.js Plane.js\r\n var inverseNormalLength = 1 / Math.sqrt(x * x + y * y + z * z);\r\n out[0] = x * inverseNormalLength;\r\n out[1] = y * inverseNormalLength;\r\n out[2] = z * inverseNormalLength;\r\n out[3] = w * inverseNormalLength;\r\n return out;\r\n}\r\n\r\nfunction distanceToPoint(plane, p) {\r\n return plane[0] * p[0] + plane[1] * p[1] + plane[2] * p[2] + plane[3];\r\n}\r\n","import * as maptalks from 'maptalks';\nimport { CanvasCompatible, reshader, mat4, quat } from '@maptalks/gl';\nimport { intersectsBox } from 'frustum-intersects';\n\nconst vert = `\n attribute vec3 aPosition;\n attribute vec2 aTexCoord;\n uniform mat4 projViewModelMatrix;\n uniform mat4 positionMatrix;\n uniform mat4 modelMatrix;\n varying vec2 vTexCoords;\n #include <get_output>\n void main()\n {\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n }\n`;\n\nconst frag = `\n precision mediump float;\n uniform sampler2D videoTexture;\n uniform float opacity;\n\n varying vec2 vTexCoords;\n void main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n }\n`;\nconst shaderConfig = {\n vert,\n frag,\n uniforms : [\n {\n name: 'projViewModelMatrix',\n type: 'function',\n fn: (context, props) => {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n },\n 'texture',\n 'opacity'\n ],\n positionAttribute : 'POSITION',\n extraCommandProps: {\n depth: {\n enable: true,\n func: 'always'\n },\n cull: {\n enable: false,\n face: 'back'\n },\n frontFace: 'cw',\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n }\n};\n\nconst triangles = [1, 0, 3, 3, 2, 1];\nclass VideoLayerRenderer extends CanvasCompatible(maptalks.renderer.LayerAbstractRenderer) {\n constructor(layer) {\n super(layer);\n this._scenes = {};\n }\n\n draw(timestamp, context) {\n this.prepareCanvas();\n this._renderScene(context);\n }\n\n drawOnInteracting(e, timestamp, context) {\n this._renderScene(context);\n }\n\n needToRedraw() {\n return true;\n }\n\n hitDetect() {\n return false;\n }\n\n initContext() {\n super.initContext();\n const { regl, device, reglGL } = this.context;\n\n this.regl = regl || device;\n this.gl = reglGL;\n this.device = regl || device;\n\n this._initShader();\n this._initRenderer();\n const videoSurfaces = this.layer.getVideoSurfaces();\n for (let i = 0; i < videoSurfaces.length; i++) {\n this._createScene(videoSurfaces[i]);\n }\n }\n\n _createGLContext(canvas, options) {\n const names = ['webgl', 'experimental-webgl'];\n let context = null;\n /* eslint-disable no-empty */\n for (let i = 0; i < names.length; ++i) {\n try {\n context = canvas.getContext(names[i], options);\n } catch (e) {}\n if (context) {\n break;\n }\n }\n return context;\n /* eslint-enable no-empty */\n }\n\n _initRenderer() {\n const map = this.layer.getMap();\n const renderer = new reshader.Renderer(this.regl);\n this.renderer = renderer;\n this._uniforms = {\n 'projMatrix': map.projMatrix,\n 'projViewMatrix' : map.projViewMatrix,\n 'viewMatrix': map.viewMatrix,\n 'halton': [0.2107, -0.0202],\n 'uHalton': [0.2107, -0.0202],\n 'uCameraPosition' : map.cameraPosition,\n 'cameraPosition' : map.cameraPosition,\n 'globalTexSize' : [map.width, map.height]\n };\n }\n\n _getRegl() {\n return this.regl;\n }\n\n _initShader() {\n this.viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.canvas ? this.canvas.width : 1;\n },\n height : () => {\n return this.canvas ? this.canvas.height : 1;\n }\n };\n this._updateShader();\n }\n\n _updateShader() {\n if (this._shader) {\n this._shader.dispose();\n }\n if (this.layer.options['showTopAlways']) {\n shaderConfig.extraCommandProps.depth.mask = false;\n shaderConfig.extraCommandProps.depth.range = [0, 0];\n } else {\n delete shaderConfig.extraCommandProps.depth.mask;\n delete shaderConfig.extraCommandProps.depth.range;\n }\n shaderConfig.extraCommandProps.cull.enable = this.layer.options['doubleSide'] ? false : true;\n this._shader = new reshader.MeshShader(shaderConfig);\n }\n\n _createScene(videoSurface) {\n const texture = this.device.texture();\n const material = new reshader.Material({\n videoTexture: texture,\n opacity: 1.0\n });\n const coordinates = videoSurface.getCoordinates();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n const mesh = new reshader.Mesh(geometry, material);\n this._updateMatrix(mesh, worldCenter);\n const scene = new reshader.Scene(mesh);\n const videoId = videoSurface._getVideoId();\n this._scenes[videoId] = scene;\n }\n\n _updateCoordinates(videoSurface) {\n const videoId = videoSurface._getVideoId();\n const scene = this._scenes[videoId];\n const mesh = scene.getMeshes()[0];\n const coordinates = videoSurface.getCoordinates();\n mesh.geometry.dispose();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n mesh.geometry = geometry;\n this._updateMatrix(mesh, worldCenter);\n }\n\n _renderScene(context) {\n const visibles = this.layer.getVideoSurfaces().filter(videoSurface => {\n return videoSurface.isVisible();\n });\n if (!visibles.length) {\n return;\n }\n const renderScene = this._createSceneInFrustum(visibles);\n if (!renderScene) {\n return;\n }\n let targetFBO = null;\n if (context) {\n targetFBO = context.renderTarget && context.renderTarget.fbo;\n }\n this.renderer.render(this._shader, this._uniforms, renderScene, targetFBO);\n }\n\n _createGeometry(points) {\n return new reshader.Geometry({\n POSITION : points,\n TEXCOORD : [\n 0.0, 0.0,\n 1.0, 0.0,\n 1.0, 1.0,\n 0.0, 1.0\n ]\n },\n triangles,\n 0,\n {\n primitive: 'triangles',\n //顶点的属性名称,默认为aPosition\n positionAttribute: 'POSITION',\n uv0Attribute: 'TEXCOORD',\n normalAttribute: 'NORMAL',\n //顶点个数,默认为3\n positionSize : 3\n });\n }\n\n _transformCoordToWorld(coordinates) {\n let points = [];\n const map = this.getMap();\n const tmpPolygon = new maptalks.Polygon(coordinates);\n const center = tmpPolygon.getCenter();\n const worldCenter = coordinateToWorld(map, center, 0);\n this._worldCenter = worldCenter;\n if (map) {\n coordinates.forEach(coordinate => {\n const coord = new maptalks.Coordinate(coordinate[0], coordinate[1]);\n const altitude = map.altitudeToPoint(coordinate[2] || 0, map.getGLRes());\n const worldPoint = coordinateToWorld(map, coord, altitude);\n worldPoint[0] = worldPoint[0] - worldCenter[0];\n worldPoint[1] = worldPoint[1] - worldCenter[1];\n points = points.concat(worldPoint);\n });\n }\n return { worldCenter, points };\n }\n\n _createSceneInFrustum(videoSurfaces) {\n const visibles = [];\n const map = this.layer.getMap();\n for (let i = 0; i < videoSurfaces.length; i++) {\n const videoSurface = videoSurfaces[i];\n const scene = this._scenes[videoSurface._getVideoId()];\n if (!scene) {\n continue;\n }\n const meshes = scene.getMeshes();\n for (let ii = 0; ii < meshes.length; ii++) {\n const mesh = meshes[ii];\n const material = mesh.getMaterial();\n const texture = material.get('videoTexture');\n if (texture && videoSurface._canDrawing()) {\n texture(videoSurface.video);\n material.set('opacity', videoSurface.getOpacity());\n }\n if (intersectsBox(map.projViewMatrix, mesh.getBoundingBox())) {\n visibles.push(mesh);\n }\n }\n }\n return visibles.length ? new reshader.Scene(visibles) : null;\n }\n\n _updateMatrix(mesh, worldCenter) {\n mat4.fromRotationTranslationScale(mesh.localTransform, quat.fromEuler([], 0, 0, 0), worldCenter, [1, 1, 1]);\n }\n\n remove() {\n if (this._shader) {\n this._shader.dispose();\n }\n super.remove();\n }\n\n _deleteScene(videoId) {\n const scene = this._scenes[videoId];\n if (!scene) {\n return;\n }\n const meshes = scene.getMeshes();\n meshes.forEach(mesh => {\n mesh.geometry.dispose();\n if (mesh.material) {\n mesh.material.dispose();\n }\n mesh.dispose();\n });\n }\n}\nexport default VideoLayerRenderer;\n\nfunction coordinateToWorld(map, coordinate, z) {\n if (!map) {\n return null;\n }\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n return [p.x, p.y, z];\n}\n",null,null],"names":["planes","i","p","intersectsBox","matrix","box","mask","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","plane","distanceToPoint","out","x","y","z","w","inverseNormalLength","Math","sqrt","shaderConfig","vert","frag","uniforms","name","type","fn","context","props","mat4","multiply","positionAttribute","extraCommandProps","depth","enable","func","cull","face","frontFace","blend","src","dst","equation","triangles","VideoLayerRenderer","CanvasCompatible","maptalks","renderer","LayerAbstractRenderer","constructor","layer","super","this","_scenes","draw","timestamp","prepareCanvas","_renderScene","drawOnInteracting","e","needToRedraw","hitDetect","initContext","regl","device","reglGL","gl","_initShader","_initRenderer","videoSurfaces","getVideoSurfaces","length","_createScene","_createGLContext","canvas","options","names","getContext","map","getMap","reshader","Renderer","_uniforms","projMatrix","projViewMatrix","viewMatrix","halton","uHalton","uCameraPosition","cameraPosition","globalTexSize","width","height","_getRegl","viewport","_updateShader","_shader","dispose","range","MeshShader","videoSurface","texture","material","Material","videoTexture","opacity","coordinates","getCoordinates","worldCenter","points","_transformCoordToWorld","geometry","_createGeometry","mesh","Mesh","_updateMatrix","scene","Scene","videoId","_getVideoId","_updateCoordinates","getMeshes","visibles","filter","isVisible","renderScene","_createSceneInFrustum","targetFBO","renderTarget","fbo","render","Geometry","POSITION","TEXCOORD","primitive","uv0Attribute","normalAttribute","positionSize","center","Polygon","getCenter","coordinateToWorld","_worldCenter","forEach","coordinate","coord","Coordinate","altitude","altitudeToPoint","getGLRes","worldPoint","concat","meshes","ii","getMaterial","get","_canDrawing","video","set","getOpacity","getBoundingBox","push","fromRotationTranslationScale","localTransform","quat","fromEuler","remove","_deleteScene","coordinateToPointAtRes","VideoSurface","Eventable","Handlerable","Class","setCoordinates","_createVideo","_coordinates","setVideo","url","_videoState","elementId","setElementId","id","document","getElementById","createElement","Error","autoplay","loop","muted","play","addEventListener","fire","state","getVideo","_setVideoId","_videoId","addTo","_layer","addSurfaces","show","visible","hide","pause","setAudio","audio","setOpacity","getLayer","removeVideoSurfaces","endEdit","startEdit","console","warn","_clearEditHelper","_editHelpLayer","layerId","getId","DrawToolLayer","_editHelpPolygon","symbol","lineColor","lineWidth","polygonFill","polygonOpacity","newVertexHandleSymbol","markerType","markerWidth","markerHeight","on","positions","target","slice","getRenderer","clear","mergeOptions","VideoLayer","Layer","Array","isArray","_videoSurfaceMap","showTopAlways","always","setDoubleSide","doubleSide","surfaceList","s","surfaces","doubleBuffer","glOptions","markerEvents","forceRenderOnZooming","forceRenderOnMoving","forceRenderOnRotating","registerJSONType","registerRenderer"],"mappings":"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","x_google_ignoreList":[0]} | ||
| {"version":3,"file":"maptalks.video.es.js","sources":["../../../node_modules/.pnpm/frustum-intersects@0.2.4/node_modules/frustum-intersects/src/index.js","../src/VideoLayerRenderer.js","../src/VideoSurface.ts","../src/VideoLayer.ts"],"sourcesContent":["/*!\r\n* Contains code from THREE.js\r\n* MIT License\r\n* https://github.com/mrdoob/three.js\r\n*/\r\n\r\nvar planes = [];\r\nfor (var i = 0; i < 6; i++) {\r\n planes[i] = [];\r\n}\r\n\r\nexport function intersectsSphere(matrix, sphere, mask) {\r\n setPlanes(matrix);\r\n var center = sphere[0];\r\n var negRadius = -sphere[1];\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var distance = distanceToPoint(planes[i], center);\r\n if (distance < negRadius) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nvar p = [];\r\n\r\nexport function intersectsBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n // corner at max distance\r\n p[0] = plane[0] > 0 ? box[1][0] : box[0][0];\r\n p[1] = plane[1] > 0 ? box[1][1] : box[0][1];\r\n p[2] = plane[2] > 0 ? box[1][2] : box[0][2];\r\n\r\n if (distanceToPoint(plane, p) < 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function intersectsOrientedBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n if (!intersectsPlane(plane, box)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nvar COLUMN0ROW0 = 0 + 3, COLUMN0ROW1 = 1 + 3, COLUMN0ROW2 = 2 + 3, COLUMN1ROW0 = 3 + 3, COLUMN1ROW1 = 4 + 3, COLUMN1ROW2 = 5 + 3, COLUMN2ROW0 = 6 + 3, COLUMN2ROW1 = 7 + 3, COLUMN2ROW2 = 8 + 3;\r\n// const COLUMN0ROW0 = 0, COLUMN0ROW1 = 1, COLUMN0ROW2 = 2, COLUMN1ROW0 = 3, COLUMN1ROW1 = 4, COLUMN1ROW2 = 5, COLUMN2ROW0 = 6, COLUMN2ROW1 = 7, COLUMN2ROW2 = 8;\r\nvar BOX_CENTER = [];\r\nvar HALF_AXES = [];\r\n\r\nfunction intersectsPlane(plane, box) {\r\n var center = box;\r\n var normal = plane;\r\n var halfAxes = box;\r\n var normalX = normal[0], normalY = normal[1], normalZ = normal[2];\r\n // plane is used as if it is its normal; the first three components are assumed to be normalized\r\n var radEffective = Math.abs(normalX * halfAxes[COLUMN0ROW0] + normalY * halfAxes[COLUMN0ROW1] + normalZ * halfAxes[COLUMN0ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN1ROW0] + normalY * halfAxes[COLUMN1ROW1] + normalZ * halfAxes[COLUMN1ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN2ROW0] + normalY * halfAxes[COLUMN2ROW1] + normalZ * halfAxes[COLUMN2ROW2]);\r\n var distanceToPlane = distanceToPoint(plane, center);\r\n\r\n if (distanceToPlane <= -radEffective) {\r\n // The entire box is on the negative side of the plane normal\r\n // return Intersect.OUTSIDE;\r\n return false;\r\n } else if (distanceToPlane >= radEffective) {\r\n // The entire box is on the positive side of the plane normal\r\n // return Intersect.INSIDE;\r\n return true;\r\n }\r\n return true;\r\n // return Intersect.INTERSECTING;\r\n}\r\n\r\nfunction setPlanes(m) {\r\n var me = m;\r\n var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\r\n var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\r\n var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\r\n var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\r\n\r\n //right\r\n setComponents(planes[0], me3 - me0, me7 - me4, me11 - me8, me15 - me12);\r\n //left\r\n setComponents(planes[1], me3 + me0, me7 + me4, me11 + me8, me15 + me12);\r\n //bottom\r\n setComponents(planes[2], me3 + me1, me7 + me5, me11 + me9, me15 + me13);\r\n //top\r\n setComponents(planes[3], me3 - me1, me7 - me5, me11 - me9, me15 - me13);\r\n //z-far\r\n setComponents(planes[4], me3 - me2, me7 - me6, me11 - me10, me15 - me14);\r\n //z-near\r\n setComponents(planes[5], me3 + me2, me7 + me6, me11 + me10, me15 + me14);\r\n}\r\n\r\nfunction setComponents(out, x, y, z, w) {\r\n // THREE.js Plane.js\r\n var inverseNormalLength = 1 / Math.sqrt(x * x + y * y + z * z);\r\n out[0] = x * inverseNormalLength;\r\n out[1] = y * inverseNormalLength;\r\n out[2] = z * inverseNormalLength;\r\n out[3] = w * inverseNormalLength;\r\n return out;\r\n}\r\n\r\nfunction distanceToPoint(plane, p) {\r\n return plane[0] * p[0] + plane[1] * p[1] + plane[2] * p[2] + plane[3];\r\n}\r\n","import * as maptalks from 'maptalks';\nimport { CanvasCompatible, reshader, mat4, quat } from '@maptalks/gl';\nimport { intersectsBox } from 'frustum-intersects';\nimport vert from './video.vert';\nimport frag from './video.frag';\nimport wgslVert from './video_vert.wgsl';\nimport wgslFrag from './video_frag.wgsl';\n\nconst shaderConfig = {\n name: 'video-layer',\n vert,\n frag,\n wgslVert,\n wgslFrag,\n uniforms : [\n {\n name: 'projViewModelMatrix',\n type: 'function',\n fn: (context, props) => {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n },\n 'texture',\n 'opacity'\n ],\n positionAttribute : 'POSITION',\n extraCommandProps: {\n depth: {\n enable: true,\n func: 'always'\n },\n cull: {\n enable: false,\n face: 'back'\n },\n frontFace: 'cw',\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n }\n};\n\nconst triangles = [1, 0, 3, 3, 2, 1];\nclass VideoLayerRenderer extends CanvasCompatible(maptalks.renderer.LayerAbstractRenderer) {\n constructor(layer) {\n super(layer);\n this._scenes = {};\n }\n\n draw(timestamp, context) {\n this.prepareCanvas();\n this._renderScene(context);\n }\n\n drawOnInteracting(e, timestamp, context) {\n this._renderScene(context);\n }\n\n needToRedraw() {\n return true;\n }\n\n hitDetect() {\n return false;\n }\n\n initContext() {\n super.initContext();\n const { regl, device, reglGL } = this.context;\n\n this.regl = regl || device;\n this.gl = reglGL;\n this.device = regl || device;\n\n this._initShader();\n this._initRenderer();\n const videoSurfaces = this.layer.getVideoSurfaces();\n for (let i = 0; i < videoSurfaces.length; i++) {\n this._createScene(videoSurfaces[i]);\n }\n }\n\n _createGLContext(canvas, options) {\n const names = ['webgl', 'experimental-webgl'];\n let context = null;\n /* eslint-disable no-empty */\n for (let i = 0; i < names.length; ++i) {\n try {\n context = canvas.getContext(names[i], options);\n } catch (e) {}\n if (context) {\n break;\n }\n }\n return context;\n /* eslint-enable no-empty */\n }\n\n _initRenderer() {\n const map = this.layer.getMap();\n const renderer = new reshader.Renderer(this.regl);\n this.renderer = renderer;\n this._uniforms = {\n 'projMatrix': map.projMatrix,\n 'projViewMatrix' : map.projViewMatrix,\n 'viewMatrix': map.viewMatrix,\n 'halton': [0.2107, -0.0202],\n 'uHalton': [0.2107, -0.0202],\n 'uCameraPosition' : map.cameraPosition,\n 'cameraPosition' : map.cameraPosition,\n 'globalTexSize' : [map.width, map.height]\n };\n }\n\n _getRegl() {\n return this.regl;\n }\n\n _initShader() {\n this.viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.canvas ? this.canvas.width : 1;\n },\n height : () => {\n return this.canvas ? this.canvas.height : 1;\n }\n };\n this._updateShader();\n }\n\n _updateShader() {\n if (this._shader) {\n this._shader.dispose();\n }\n if (this.layer.options['showTopAlways']) {\n shaderConfig.extraCommandProps.depth.mask = false;\n shaderConfig.extraCommandProps.depth.range = [0, 0];\n } else {\n delete shaderConfig.extraCommandProps.depth.mask;\n delete shaderConfig.extraCommandProps.depth.range;\n }\n shaderConfig.extraCommandProps.cull.enable = this.layer.options['doubleSide'] ? false : true;\n this._shader = new reshader.MeshShader(shaderConfig);\n }\n\n _createScene(videoSurface) {\n const texture = this.device.texture();\n const material = new reshader.Material({\n videoTexture: texture,\n opacity: 1.0\n });\n const coordinates = videoSurface.getCoordinates();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n const mesh = new reshader.Mesh(geometry, material);\n this._updateMatrix(mesh, worldCenter);\n const scene = new reshader.Scene(mesh);\n const videoId = videoSurface._getVideoId();\n this._scenes[videoId] = scene;\n }\n\n _updateCoordinates(videoSurface) {\n const videoId = videoSurface._getVideoId();\n const scene = this._scenes[videoId];\n const mesh = scene.getMeshes()[0];\n const coordinates = videoSurface.getCoordinates();\n mesh.geometry.dispose();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n mesh.geometry = geometry;\n this._updateMatrix(mesh, worldCenter);\n }\n\n _renderScene(context) {\n const visibles = this.layer.getVideoSurfaces().filter(videoSurface => {\n return videoSurface.isVisible();\n });\n if (!visibles.length) {\n return;\n }\n const renderScene = this._createSceneInFrustum(visibles);\n if (!renderScene) {\n return;\n }\n let targetFBO = null;\n if (context) {\n targetFBO = context.renderTarget && context.renderTarget.fbo;\n }\n this.renderer.render(this._shader, this._uniforms, renderScene, targetFBO);\n }\n\n _createGeometry(points) {\n const geometry = new reshader.Geometry({\n POSITION: new Float32Array(points),\n TEXCOORD: new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 1.0, 1.0,\n 0.0, 1.0\n ])\n },\n new Uint16Array(triangles),\n 0,\n {\n primitive: 'triangles',\n //顶点的属性名称,默认为 aPosition\n positionAttribute: 'POSITION',\n uv0Attribute: 'TEXCOORD',\n normalAttribute: 'NORMAL',\n //顶点个数,默认为3\n positionSize: 3\n });\n geometry.generateBuffers(this.device);\n return geometry;\n }\n\n _transformCoordToWorld(coordinates) {\n let points = [];\n const map = this.getMap();\n const tmpPolygon = new maptalks.Polygon(coordinates);\n const center = tmpPolygon.getCenter();\n const worldCenter = coordinateToWorld(map, center, 0);\n this._worldCenter = worldCenter;\n if (map) {\n coordinates.forEach(coordinate => {\n const coord = new maptalks.Coordinate(coordinate[0], coordinate[1]);\n const altitude = map.altitudeToPoint(coordinate[2] || 0, map.getGLRes());\n const worldPoint = coordinateToWorld(map, coord, altitude);\n worldPoint[0] = worldPoint[0] - worldCenter[0];\n worldPoint[1] = worldPoint[1] - worldCenter[1];\n points = points.concat(worldPoint);\n });\n }\n return { worldCenter, points };\n }\n\n _createSceneInFrustum(videoSurfaces) {\n const visibles = [];\n const map = this.layer.getMap();\n for (let i = 0; i < videoSurfaces.length; i++) {\n const videoSurface = videoSurfaces[i];\n const scene = this._scenes[videoSurface._getVideoId()];\n if (!scene) {\n continue;\n }\n const meshes = scene.getMeshes();\n for (let ii = 0; ii < meshes.length; ii++) {\n const mesh = meshes[ii];\n const material = mesh.getMaterial();\n const texture = material.get('videoTexture');\n if (texture && videoSurface._canDrawing()) {\n if (texture.update) {\n texture.update({ data: videoSurface.video });\n } else {\n texture(videoSurface.video);\n }\n\n material.set('opacity', videoSurface.getOpacity());\n }\n if (intersectsBox(map.projViewMatrix, mesh.getBoundingBox())) {\n visibles.push(mesh);\n }\n }\n }\n return visibles.length ? new reshader.Scene(visibles) : null;\n }\n\n _updateMatrix(mesh, worldCenter) {\n mat4.fromRotationTranslationScale(mesh.localTransform, quat.fromEuler([], 0, 0, 0), worldCenter, [1, 1, 1]);\n }\n\n remove() {\n if (this._shader) {\n this._shader.dispose();\n }\n super.remove();\n }\n\n _deleteScene(videoId) {\n const scene = this._scenes[videoId];\n if (!scene) {\n return;\n }\n const meshes = scene.getMeshes();\n meshes.forEach(mesh => {\n mesh.geometry.dispose();\n if (mesh.material) {\n mesh.material.dispose();\n }\n mesh.dispose();\n });\n }\n}\nexport default VideoLayerRenderer;\n\nfunction coordinateToWorld(map, coordinate, z) {\n if (!map) {\n return null;\n }\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n return [p.x, p.y, z];\n}\n",null,null],"names":["planes","i","p","intersectsBox","matrix","box","mask","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","plane","distanceToPoint","out","x","y","z","w","inverseNormalLength","Math","sqrt","shaderConfig","name","vert","frag","wgslVert","wgslFrag","uniforms","type","fn","context","props","mat4","multiply","positionAttribute","extraCommandProps","depth","enable","func","cull","face","frontFace","blend","src","dst","equation","triangles","VideoLayerRenderer","CanvasCompatible","maptalks","renderer","LayerAbstractRenderer","constructor","layer","super","this","_scenes","draw","timestamp","prepareCanvas","_renderScene","drawOnInteracting","e","needToRedraw","hitDetect","initContext","regl","device","reglGL","gl","_initShader","_initRenderer","videoSurfaces","getVideoSurfaces","length","_createScene","_createGLContext","canvas","options","names","getContext","map","getMap","reshader","Renderer","_uniforms","projMatrix","projViewMatrix","viewMatrix","halton","uHalton","uCameraPosition","cameraPosition","globalTexSize","width","height","_getRegl","viewport","_updateShader","_shader","dispose","range","MeshShader","videoSurface","texture","material","Material","videoTexture","opacity","coordinates","getCoordinates","worldCenter","points","_transformCoordToWorld","geometry","_createGeometry","mesh","Mesh","_updateMatrix","scene","Scene","videoId","_getVideoId","_updateCoordinates","getMeshes","visibles","filter","isVisible","renderScene","_createSceneInFrustum","targetFBO","renderTarget","fbo","render","Geometry","POSITION","Float32Array","TEXCOORD","Uint16Array","primitive","uv0Attribute","normalAttribute","positionSize","generateBuffers","center","Polygon","getCenter","coordinateToWorld","_worldCenter","forEach","coordinate","coord","Coordinate","altitude","altitudeToPoint","getGLRes","worldPoint","concat","meshes","ii","getMaterial","get","_canDrawing","update","data","video","set","getOpacity","getBoundingBox","push","fromRotationTranslationScale","localTransform","quat","fromEuler","remove","_deleteScene","coordinateToPointAtRes","VideoSurface","Eventable","Handlerable","Class","setCoordinates","_createVideo","_coordinates","setVideo","url","_videoState","elementId","setElementId","id","document","getElementById","createElement","Error","autoplay","loop","muted","play","addEventListener","fire","state","getVideo","_setVideoId","_videoId","addTo","_layer","addSurfaces","show","visible","hide","pause","setAudio","audio","setOpacity","getLayer","removeVideoSurfaces","endEdit","startEdit","console","warn","_clearEditHelper","_editHelpLayer","layerId","getId","DrawToolLayer","_editHelpPolygon","symbol","lineColor","lineWidth","polygonFill","polygonOpacity","newVertexHandleSymbol","markerType","markerWidth","markerHeight","on","positions","target","slice","getRenderer","clear","mergeOptions","VideoLayer","Layer","Array","isArray","_videoSurfaceMap","showTopAlways","always","setDoubleSide","doubleSide","surfaceList","s","surfaces","doubleBuffer","glOptions","markerEvents","forceRenderOnZooming","forceRenderOnMoving","forceRenderOnRotating","registerJSONType","registerRenderer"],"mappings":"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","x_google_ignoreList":[0]} |
| /*! | ||
| * @maptalks/video-layer v0.120.0 | ||
| * @maptalks/video-layer v0.121.0 | ||
| * LICENSE : UNLICENSED | ||
| * (c) 2016-2026 maptalks.org | ||
| */ | ||
| import*as t from"maptalks";import{Eventable as e,Handlerable as i,Class as s,DrawToolLayer as r,Polygon as o,Layer as n}from"maptalks";import{CanvasCompatible as h,reshader as a,mat4 as l,quat as c}from"@maptalks/gpu"; | ||
| import*as e from"maptalks";import{Eventable as t,Handlerable as r,Class as i,DrawToolLayer as o,Polygon as n,Layer as s}from"maptalks";import{CanvasCompatible as a,reshader as d,mat4 as l,quat as c}from"@maptalks/gpu"; | ||
| /*! | ||
@@ -11,3 +11,3 @@ * Contains code from THREE.js | ||
| * https://github.com/mrdoob/three.js | ||
| */for(var d=[],u=0;u<6;u++)d[u]=[];var p=[];function f(t,e,i){var s,r,o,n,h,a,l,c,u,f,v,w,y,x,b,_,T;r=(s=t)[0],o=s[1],n=s[2],h=s[3],a=s[4],l=s[5],c=s[6],u=s[7],f=s[8],v=s[9],w=s[10],y=s[11],x=s[12],b=s[13],_=s[14],T=s[15],m(d[0],h-r,u-a,y-f,T-x),m(d[1],h+r,u+a,y+f,T+x),m(d[2],h+o,u+l,y+v,T+b),m(d[3],h-o,u-l,y-v,T-b),m(d[4],h-n,u-c,y-w,T-_),m(d[5],h+n,u+c,y+w,T+_);for(var C=0;C<6;C++){var O=d[C];if(p[0]=O[0]>0?e[1][0]:e[0][0],p[1]=O[1]>0?e[1][1]:e[0][1],p[2]=O[2]>0?e[1][2]:e[0][2],g(O,p)<0)return!1}return!0}function m(t,e,i,s,r){var o=1/Math.sqrt(e*e+i*i+s*s);return t[0]=e*o,t[1]=i*o,t[2]=s*o,t[3]=r*o,t}function g(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]}const v={vert:"\n attribute vec3 aPosition;\n attribute vec2 aTexCoord;\n uniform mat4 projViewModelMatrix;\n uniform mat4 positionMatrix;\n uniform mat4 modelMatrix;\n varying vec2 vTexCoords;\n #include <get_output>\n void main()\n {\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n }\n",frag:"\n precision mediump float;\n uniform sampler2D videoTexture;\n uniform float opacity;\n\n varying vec2 vTexCoords;\n void main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n }\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>l.multiply([],e.projViewMatrix,e.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},w=[1,0,3,3,2,1];class y extends(h(t.renderer.LayerAbstractRenderer)){constructor(t){super(t),this.t={}}draw(t,e){this.prepareCanvas(),this.i(e)}drawOnInteracting(t,e,i){this.i(i)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:t,device:e,reglGL:i}=this.context;this.regl=t||e,this.gl=i,this.device=t||e,this.o(),this.h();const s=this.layer.getVideoSurfaces();for(let t=0;t<s.length;t++)this.l(s[t])}u(t,e){const i=["webgl","experimental-webgl"];let s=null;for(let r=0;r<i.length;++r){try{s=t.getContext(i[r],e)}catch(t){}if(s)break}return s}h(){const t=this.layer.getMap(),e=new a.Renderer(this.regl);this.renderer=e,this.p={projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,viewMatrix:t.viewMatrix,halton:[.2107,-.0202],uHalton:[.2107,-.0202],uCameraPosition:t.cameraPosition,cameraPosition:t.cameraPosition,globalTexSize:[t.width,t.height]}}m(){return this.regl}o(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this.v()}v(){this._&&this._.dispose(),this.layer.options.showTopAlways?(v.extraCommandProps.depth.mask=!1,v.extraCommandProps.depth.range=[0,0]):(delete v.extraCommandProps.depth.mask,delete v.extraCommandProps.depth.range),v.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this._=new a.MeshShader(v)}l(t){const e=this.device.texture(),i=new a.Material({videoTexture:e,opacity:1}),s=t.getCoordinates(),{worldCenter:r,points:o}=this.T(s),n=this.C(o),h=new a.Mesh(n,i);this.O(h,r);const l=new a.Scene(h),c=t.M();this.t[c]=l}S(t){const e=t.M(),i=this.t[e].getMeshes()[0],s=t.getCoordinates();i.geometry.dispose();const{worldCenter:r,points:o}=this.T(s),n=this.C(o);i.geometry=n,this.O(i,r)}i(t){const e=this.layer.getVideoSurfaces().filter((t=>t.isVisible()));if(!e.length)return;const i=this.P(e);if(!i)return;let s=null;t&&(s=t.renderTarget&&t.renderTarget.fbo),this.renderer.render(this._,this.p,i,s)}C(t){return new a.Geometry({POSITION:t,TEXCOORD:[0,0,1,0,1,1,0,1]},w,0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3})}T(e){let i=[];const s=this.getMap(),r=new t.Polygon(e).getCenter(),o=x(s,r,0);return this.V=o,s&&e.forEach((e=>{const r=new t.Coordinate(e[0],e[1]),n=s.altitudeToPoint(e[2]||0,s.getGLRes()),h=x(s,r,n);h[0]=h[0]-o[0],h[1]=h[1]-o[1],i=i.concat(h)})),{worldCenter:o,points:i}}P(t){const e=[],i=this.layer.getMap();for(let s=0;s<t.length;s++){const r=t[s],o=this.t[r.M()];if(!o)continue;const n=o.getMeshes();for(let t=0;t<n.length;t++){const s=n[t],o=s.getMaterial(),h=o.get("videoTexture");h&&r.k()&&(h(r.video),o.set("opacity",r.getOpacity())),f(i.projViewMatrix,s.getBoundingBox())&&e.push(s)}}return e.length?new a.Scene(e):null}O(t,e){l.fromRotationTranslationScale(t.localTransform,c.fromEuler([],0,0,0),e,[1,1,1])}remove(){this._&&this._.dispose(),super.remove()}A(t){const e=this.t[t];if(!e)return;e.getMeshes().forEach((t=>{t.geometry.dispose(),t.material&&t.material.dispose(),t.dispose()}))}}function x(t,e,i){if(!t)return null;const s=t.coordinateToPointAtRes(e,t.getGLRes());return[s.x,s.y,i]}class b extends(e(i(s))){constructor(t,e){super(e),this.setCoordinates(t),this.I()}setCoordinates(t){this.R=t}getCoordinates(){return this.R}setVideo(t){this.D="stop",this.options.url=t,delete this.options.elementId,this.I()}setElementId(t){this.D="stop",this.options.elementId=t,delete this.options.url,this.I()}I(){this.D="stop";const t=this.options.url,e=this.options.elementId;let i=document.getElementById(e);if(t&&(i=document.createElement("video"),i.src=t),!i)throw new Error("there is no element or url setting for video mask");i.autoplay=!0,i.loop=!0,i.muted=!0,i.play(),i.addEventListener("playing",(()=>{this.D="playing",this.fire("playing",{state:this.D,url:t})})),i.addEventListener("pause",(()=>{this.D="pause",this.fire("pause",{state:this.D,url:t})})),i.addEventListener("error",(()=>{throw this.D="pause",this.fire("error",{state:this.D,url:t}),new Error("video resource load error")})),this.video=i}getVideo(){return this.video}j(t){this.F=t}M(){return this.F}addTo(t){if(this.L)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return t.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(t){this.video.muted=t}setOpacity(t){this.options.opacity=t}getOpacity(){return this.options.opacity}remove(){delete this.video;const t=this.getLayer();t&&t.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this.L}k(){return"playing"===this.D}startEdit(){const t=this.getLayer();if(!t)return void console.warn("videosurface should be added to a map before edit");const e=t.getMap();if(!e)return void console.warn("videosurface should be added to a map before edit");if(this.H(),!this.N){const i=t.getId();this.N=new r(`internal_${i}_edit`).addTo(e)}const i=this.getCoordinates();this.G=new o(i,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this.N),this.G.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this.G.on("shapechange",(e=>{const i=e.target.getCoordinates()[0].slice(0,4).map((t=>[t.x,t.y,0]));this.setCoordinates(i);t.getRenderer().S(this)}),this)}endEdit(){this.N&&(this.G.endEdit(),this.G.remove(),this.N.remove()),delete this.N,delete this.G}H(){this.N&&this.N.clear(),delete this.G}}b.mergeOptions({opacity:1,visible:!0});class _ extends n{constructor(t,e,i){!e||Array.isArray(e)||e instanceof b||(i=e,e=null),super(t,i),this.W={},this.videoId=0,this.W={},this.videoId=0,e&&this.addSurfaces(e)}addSurfaces(t){if(t)if(Array.isArray(t))t.forEach((t=>{this.addSurfaces(t)}));else{t.L=this,this.W[this.videoId]=t,t.j(this.videoId);const e=this.getRenderer();e?e.m()&&e.l(t):this.on("renderercreate",(e=>{e.renderer.m()&&e.renderer.l(t)})),this.videoId++}}showTopAlways(t){this.options.showTopAlways=t;const e=this.getRenderer();e&&e.v()}setDoubleSide(t){this.options.doubleSide=t;const e=this.getRenderer();e&&e.v()}getVideoSurfaces(){const t=[];for(const e in this.W)t.push(this.W[e]);return t}removeVideoSurfaces(t){if(Array.isArray(t))t.forEach((t=>{this.removeVideoSurfaces(t)}));else{const e=t.M(),i=this.getRenderer();i&&i.A(e),delete this.W[e]}}remove(){this.clear(),super.remove()}clear(){const t=this.getVideoSurfaces();for(let e=0;e<t.length;e++)t[e].remove()}}_.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),_.registerJSONType("VideoLayer"),_.registerRenderer("gl",y),_.registerRenderer("gpu",y);export{_ as VideoLayer,b as VideoSurface};"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.120.0"); | ||
| */for(var h=[],u=0;u<6;u++)h[u]=[];var p=[];function g(e,t,r){var i,o,n,s,a,d,l,c,u,g,f,_,y,x,w,S,M;o=(i=e)[0],n=i[1],s=i[2],a=i[3],d=i[4],l=i[5],c=i[6],u=i[7],g=i[8],f=i[9],_=i[10],y=i[11],x=i[12],w=i[13],S=i[14],M=i[15],m(h[0],a-o,u-d,y-g,M-x),m(h[1],a+o,u+d,y+g,M+x),m(h[2],a+n,u+l,y+f,M+w),m(h[3],a-n,u-l,y-f,M-w),m(h[4],a-s,u-c,y-_,M-S),m(h[5],a+s,u+c,y+_,M+S);for(var b=0;b<6;b++){var C=h[b];if(p[0]=C[0]>0?t[1][0]:t[0][0],p[1]=C[1]>0?t[1][1]:t[0][1],p[2]=C[2]>0?t[1][2]:t[0][2],v(C,p)<0)return!1}return!0}function m(e,t,r,i,o){var n=1/Math.sqrt(t*t+r*r+i*i);return e[0]=t*n,e[1]=r*n,e[2]=i*n,e[3]=o*n,e}function v(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]}const f={name:"video-layer",vert:"attribute vec3 aPosition;\nattribute vec2 aTexCoord;\nuniform mat4 projViewModelMatrix;\nuniform mat4 positionMatrix;\nuniform mat4 modelMatrix;\nvarying vec2 vTexCoords;\n#include <get_output>\nvoid main()\n{\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n}",frag:"precision mediump float;\nuniform sampler2D videoTexture;\nuniform float opacity;\nvarying vec2 vTexCoords;\nvoid main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n}",wgslVert:"#include <get_output>\nstruct Uniforms {\n modelMatrix: mat4x4f,\n positionMatrix: mat4x4f,\n projViewModelMatrix: mat4x4f,\n};\n@group(0) @binding($b) var<uniform> uniforms: Uniforms;\nstruct VertexInput {\n @location($i) aPosition: vec3f,\n @location($i) aTexCoord: vec2f,\n};\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location($o) vTexCoords: vec2f,\n};\n@vertex\nfn main(vertexInput: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let localPositionMatrix: mat4x4f = getPositionMatrix(vertexInput, &output, uniforms.positionMatrix);\n let localPosition: vec4f = getPosition(vec3f(vertexInput.aPosition.xyz), vertexInput);\n output.vTexCoords = vertexInput.aTexCoord;\n output.position = uniforms.projViewModelMatrix * localPositionMatrix * localPosition;\n return output;\n}",wgslFrag:"struct FragUniforms {\n opacity: f32\n}\n@group(0) @binding($b) var videoTexture: texture_2d<f32>;\n@group(0) @binding($b) var videoTextureSampler: sampler;\n@group(0) @binding($b) var<uniform> fragUniforms: FragUniforms;\n@fragment\nfn main(vertexOutput: VertexOutput) -> @location(0) vec4f {\n let color = textureSample(videoTexture, videoTextureSampler, vertexOutput.vTexCoords);\n return color * fragUniforms.opacity;\n}",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(e,t)=>l.multiply([],t.projViewMatrix,t.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},_=[1,0,3,3,2,1];class y extends(a(e.renderer.LayerAbstractRenderer)){constructor(e){super(e),this._scenes={}}draw(e,t){this.prepareCanvas(),this._renderScene(t)}drawOnInteracting(e,t,r){this._renderScene(r)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:e,device:t,reglGL:r}=this.context;this.regl=e||t,this.gl=r,this.device=e||t,this._initShader(),this._initRenderer();const i=this.layer.getVideoSurfaces();for(let e=0;e<i.length;e++)this._createScene(i[e])}_createGLContext(e,t){const r=["webgl","experimental-webgl"];let i=null;for(let o=0;o<r.length;++o){try{i=e.getContext(r[o],t)}catch(e){}if(i)break}return i}_initRenderer(){const e=this.layer.getMap(),t=new d.Renderer(this.regl);this.renderer=t,this._uniforms={projMatrix:e.projMatrix,projViewMatrix:e.projViewMatrix,viewMatrix:e.viewMatrix,halton:[.2107,-.0202],uHalton:[.2107,-.0202],uCameraPosition:e.cameraPosition,cameraPosition:e.cameraPosition,globalTexSize:[e.width,e.height]}}_getRegl(){return this.regl}_initShader(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this._updateShader()}_updateShader(){this._shader&&this._shader.dispose(),this.layer.options.showTopAlways?(f.extraCommandProps.depth.mask=!1,f.extraCommandProps.depth.range=[0,0]):(delete f.extraCommandProps.depth.mask,delete f.extraCommandProps.depth.range),f.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this._shader=new d.MeshShader(f)}_createScene(e){const t=this.device.texture(),r=new d.Material({videoTexture:t,opacity:1}),i=e.getCoordinates(),{worldCenter:o,points:n}=this._transformCoordToWorld(i),s=this._createGeometry(n),a=new d.Mesh(s,r);this._updateMatrix(a,o);const l=new d.Scene(a),c=e._getVideoId();this._scenes[c]=l}_updateCoordinates(e){const t=e._getVideoId(),r=this._scenes[t].getMeshes()[0],i=e.getCoordinates();r.geometry.dispose();const{worldCenter:o,points:n}=this._transformCoordToWorld(i),s=this._createGeometry(n);r.geometry=s,this._updateMatrix(r,o)}_renderScene(e){const t=this.layer.getVideoSurfaces().filter((e=>e.isVisible()));if(!t.length)return;const r=this._createSceneInFrustum(t);if(!r)return;let i=null;e&&(i=e.renderTarget&&e.renderTarget.fbo),this.renderer.render(this._shader,this._uniforms,r,i)}_createGeometry(e){const t=new d.Geometry({POSITION:new Float32Array(e),TEXCOORD:new Float32Array([0,0,1,0,1,1,0,1])},new Uint16Array(_),0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3});return t.generateBuffers(this.device),t}_transformCoordToWorld(t){let r=[];const i=this.getMap(),o=new e.Polygon(t).getCenter(),n=x(i,o,0);return this._worldCenter=n,i&&t.forEach((t=>{const o=new e.Coordinate(t[0],t[1]),s=i.altitudeToPoint(t[2]||0,i.getGLRes()),a=x(i,o,s);a[0]=a[0]-n[0],a[1]=a[1]-n[1],r=r.concat(a)})),{worldCenter:n,points:r}}_createSceneInFrustum(e){const t=[],r=this.layer.getMap();for(let i=0;i<e.length;i++){const o=e[i],n=this._scenes[o._getVideoId()];if(!n)continue;const s=n.getMeshes();for(let e=0;e<s.length;e++){const i=s[e],n=i.getMaterial(),a=n.get("videoTexture");a&&o._canDrawing()&&(a.update?a.update({data:o.video}):a(o.video),n.set("opacity",o.getOpacity())),g(r.projViewMatrix,i.getBoundingBox())&&t.push(i)}}return t.length?new d.Scene(t):null}_updateMatrix(e,t){l.fromRotationTranslationScale(e.localTransform,c.fromEuler([],0,0,0),t,[1,1,1])}remove(){this._shader&&this._shader.dispose(),super.remove()}_deleteScene(e){const t=this._scenes[e];if(!t)return;t.getMeshes().forEach((e=>{e.geometry.dispose(),e.material&&e.material.dispose(),e.dispose()}))}}function x(e,t,r){if(!e)return null;const i=e.coordinateToPointAtRes(t,e.getGLRes());return[i.x,i.y,r]}class w extends(t(r(i))){constructor(e,t){super(t),this.setCoordinates(e),this._createVideo()}setCoordinates(e){this._coordinates=e}getCoordinates(){return this._coordinates}setVideo(e){this._videoState="stop",this.options.url=e,delete this.options.elementId,this._createVideo()}setElementId(e){this._videoState="stop",this.options.elementId=e,delete this.options.url,this._createVideo()}_createVideo(){this._videoState="stop";const e=this.options.url,t=this.options.elementId;let r=document.getElementById(t);if(e&&(r=document.createElement("video"),r.src=e),!r)throw new Error("there is no element or url setting for video mask");r.autoplay=!0,r.loop=!0,r.muted=!0,r.play(),r.addEventListener("playing",(()=>{this._videoState="playing",this.fire("playing",{state:this._videoState,url:e})})),r.addEventListener("pause",(()=>{this._videoState="pause",this.fire("pause",{state:this._videoState,url:e})})),r.addEventListener("error",(()=>{throw this._videoState="pause",this.fire("error",{state:this._videoState,url:e}),new Error("video resource load error")})),this.video=r}getVideo(){return this.video}_setVideoId(e){this._videoId=e}_getVideoId(){return this._videoId}addTo(e){if(this._layer)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return e.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(e){this.video.muted=e}setOpacity(e){this.options.opacity=e}getOpacity(){return this.options.opacity}remove(){delete this.video;const e=this.getLayer();e&&e.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this._layer}_canDrawing(){return"playing"===this._videoState}startEdit(){const e=this.getLayer();if(!e)return void console.warn("videosurface should be added to a map before edit");const t=e.getMap();if(!t)return void console.warn("videosurface should be added to a map before edit");if(this._clearEditHelper(),!this._editHelpLayer){const r=e.getId();this._editHelpLayer=new o(`internal_${r}_edit`).addTo(t)}const r=this.getCoordinates();this._editHelpPolygon=new n(r,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this._editHelpLayer),this._editHelpPolygon.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this._editHelpPolygon.on("shapechange",(t=>{const r=t.target.getCoordinates()[0].slice(0,4).map((e=>[e.x,e.y,0]));this.setCoordinates(r);e.getRenderer()._updateCoordinates(this)}),this)}endEdit(){this._editHelpLayer&&(this._editHelpPolygon.endEdit(),this._editHelpPolygon.remove(),this._editHelpLayer.remove()),delete this._editHelpLayer,delete this._editHelpPolygon}_clearEditHelper(){this._editHelpLayer&&this._editHelpLayer.clear(),delete this._editHelpPolygon}}w.mergeOptions({opacity:1,visible:!0});class S extends s{constructor(e,t,r){!t||Array.isArray(t)||t instanceof w||(r=t,t=null),super(e,r),this._videoSurfaceMap={},this.videoId=0,this._videoSurfaceMap={},this.videoId=0,t&&this.addSurfaces(t)}addSurfaces(e){if(e)if(Array.isArray(e))e.forEach((e=>{this.addSurfaces(e)}));else{e._layer=this,this._videoSurfaceMap[this.videoId]=e,e._setVideoId(this.videoId);const t=this.getRenderer();t?t._getRegl()&&t._createScene(e):this.on("renderercreate",(t=>{t.renderer._getRegl()&&t.renderer._createScene(e)})),this.videoId++}}showTopAlways(e){this.options.showTopAlways=e;const t=this.getRenderer();t&&t._updateShader()}setDoubleSide(e){this.options.doubleSide=e;const t=this.getRenderer();t&&t._updateShader()}getVideoSurfaces(){const e=[];for(const t in this._videoSurfaceMap)e.push(this._videoSurfaceMap[t]);return e}removeVideoSurfaces(e){if(Array.isArray(e))e.forEach((e=>{this.removeVideoSurfaces(e)}));else{const t=e._getVideoId(),r=this.getRenderer();r&&r._deleteScene(t),delete this._videoSurfaceMap[t]}}remove(){this.clear(),super.remove()}clear(){const e=this.getVideoSurfaces();for(let t=0;t<e.length;t++)e[t].remove()}}S.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),S.registerJSONType("VideoLayer"),S.registerRenderer("gl",y),S.registerRenderer("gpu",y);export{S as VideoLayer,w as VideoSurface};"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.121.0"); | ||
| //# sourceMappingURL=maptalks.video.es.js.map |
| /*! | ||
| * @maptalks/video-layer v0.120.0 | ||
| * @maptalks/video-layer v0.121.0 | ||
| * LICENSE : UNLICENSED | ||
| * (c) 2016-2026 maptalks.org | ||
| */ | ||
| !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("maptalks"),require("@maptalks/gl")):"function"==typeof define&&define.amd?define(["exports","maptalks","@maptalks/gl"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).maptalks=t.maptalks||{},t.maptalks,t.maptalks)}(this,(function(t,e,i){"use strict";function s(t){var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}for(var r=s(e),o=[],n=0 | ||
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("maptalks"),require("@maptalks/gl")):"function"==typeof define&&define.amd?define(["exports","maptalks","@maptalks/gl"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).maptalks=e.maptalks||{},e.maptalks,e.maptalks)}(this,(function(e,t,r){"use strict";function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}for(var o=i(t),n=[],s=0 | ||
| /*! | ||
@@ -11,3 +11,3 @@ * Contains code from THREE.js | ||
| * https://github.com/mrdoob/three.js | ||
| */;n<6;n++)o[n]=[];var a=[];function h(t,e,i){var s,r,n,h,u,d,p,f,m,g,v,y,w,b,x,O,T;r=(s=t)[0],n=s[1],h=s[2],u=s[3],d=s[4],p=s[5],f=s[6],m=s[7],g=s[8],v=s[9],y=s[10],w=s[11],b=s[12],x=s[13],O=s[14],T=s[15],l(o[0],u-r,m-d,w-g,T-b),l(o[1],u+r,m+d,w+g,T+b),l(o[2],u+n,m+p,w+v,T+x),l(o[3],u-n,m-p,w-v,T-x),l(o[4],u-h,m-f,w-y,T-O),l(o[5],u+h,m+f,w+y,T+O);for(var _=0;_<6;_++){var C=o[_];if(a[0]=C[0]>0?e[1][0]:e[0][0],a[1]=C[1]>0?e[1][1]:e[0][1],a[2]=C[2]>0?e[1][2]:e[0][2],c(C,a)<0)return!1}return!0}function l(t,e,i,s,r){var o=1/Math.sqrt(e*e+i*i+s*s);return t[0]=e*o,t[1]=i*o,t[2]=s*o,t[3]=r*o,t}function c(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]}const u={vert:"\n attribute vec3 aPosition;\n attribute vec2 aTexCoord;\n uniform mat4 projViewModelMatrix;\n uniform mat4 positionMatrix;\n uniform mat4 modelMatrix;\n varying vec2 vTexCoords;\n #include <get_output>\n void main()\n {\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n }\n",frag:"\n precision mediump float;\n uniform sampler2D videoTexture;\n uniform float opacity;\n\n varying vec2 vTexCoords;\n void main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n }\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>i.mat4.multiply([],e.projViewMatrix,e.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},d=[1,0,3,3,2,1];class p extends(i.CanvasCompatible(r.renderer.LayerAbstractRenderer)){constructor(t){super(t),this.t={}}draw(t,e){this.prepareCanvas(),this.i(e)}drawOnInteracting(t,e,i){this.i(i)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:t,device:e,reglGL:i}=this.context;this.regl=t||e,this.gl=i,this.device=t||e,this.o(),this.h();const s=this.layer.getVideoSurfaces();for(let t=0;t<s.length;t++)this.l(s[t])}u(t,e){const i=["webgl","experimental-webgl"];let s=null;for(let r=0;r<i.length;++r){try{s=t.getContext(i[r],e)}catch(t){}if(s)break}return s}h(){const t=this.layer.getMap(),e=new i.reshader.Renderer(this.regl);this.renderer=e,this.p={"projMatrix":t.projMatrix,"projViewMatrix":t.projViewMatrix,"viewMatrix":t.viewMatrix,"halton":[.2107,-.0202],"uHalton":[.2107,-.0202],"uCameraPosition":t.cameraPosition,"cameraPosition":t.cameraPosition,"globalTexSize":[t.width,t.height]}}m(){return this.regl}o(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this.v()}v(){this.O&&this.O.dispose(),this.layer.options.showTopAlways?(u.extraCommandProps.depth.mask=!1,u.extraCommandProps.depth.range=[0,0]):(delete u.extraCommandProps.depth.mask,delete u.extraCommandProps.depth.range),u.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this.O=new i.reshader.MeshShader(u)}l(t){const e=this.device.texture(),s=new i.reshader.Material({videoTexture:e,opacity:1}),r=t.getCoordinates(),{worldCenter:o,points:n}=this.T(r),a=this._(n),h=new i.reshader.Mesh(a,s);this.C(h,o);const l=new i.reshader.Scene(h),c=t.M();this.t[c]=l}S(t){const e=t.M(),i=this.t[e].getMeshes()[0],s=t.getCoordinates();i.geometry.dispose();const{worldCenter:r,points:o}=this.T(s),n=this._(o);i.geometry=n,this.C(i,r)}i(t){const e=this.layer.getVideoSurfaces().filter((t=>t.isVisible()));if(!e.length)return;const i=this.P(e);if(!i)return;let s=null;t&&(s=t.renderTarget&&t.renderTarget.fbo),this.renderer.render(this.O,this.p,i,s)}_(t){return new i.reshader.Geometry({POSITION:t,TEXCOORD:[0,0,1,0,1,1,0,1]},d,0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3})}T(t){let e=[];const i=this.getMap(),s=new r.Polygon(t).getCenter(),o=f(i,s,0);return this.V=o,i&&t.forEach((t=>{const s=new r.Coordinate(t[0],t[1]),n=i.altitudeToPoint(t[2]||0,i.getGLRes()),a=f(i,s,n);a[0]=a[0]-o[0],a[1]=a[1]-o[1],e=e.concat(a)})),{worldCenter:o,points:e}}P(t){const e=[],s=this.layer.getMap();for(let i=0;i<t.length;i++){const r=t[i],o=this.t[r.M()];if(!o)continue;const n=o.getMeshes();for(let t=0;t<n.length;t++){const i=n[t],o=i.getMaterial(),a=o.get("videoTexture");a&&r.k()&&(a(r.video),o.set("opacity",r.getOpacity())),h(s.projViewMatrix,i.getBoundingBox())&&e.push(i)}}return e.length?new i.reshader.Scene(e):null}C(t,e){i.mat4.fromRotationTranslationScale(t.localTransform,i.quat.fromEuler([],0,0,0),e,[1,1,1])}remove(){this.O&&this.O.dispose(),super.remove()}j(t){const e=this.t[t];if(!e)return;e.getMeshes().forEach((t=>{t.geometry.dispose(),t.material&&t.material.dispose(),t.dispose()}))}}function f(t,e,i){if(!t)return null;const s=t.coordinateToPointAtRes(e,t.getGLRes());return[s.x,s.y,i]}class m extends(e.Eventable(e.Handlerable(e.Class))){constructor(t,e){super(e),this.setCoordinates(t),this.A()}setCoordinates(t){this.I=t}getCoordinates(){return this.I}setVideo(t){this.R="stop",this.options.url=t,delete this.options.elementId,this.A()}setElementId(t){this.R="stop",this.options.elementId=t,delete this.options.url,this.A()}A(){this.R="stop";const t=this.options.url,e=this.options.elementId;let i=document.getElementById(e);if(t&&(i=document.createElement("video"),i.src=t),!i)throw new Error("there is no element or url setting for video mask");i.autoplay=!0,i.loop=!0,i.muted=!0,i.play(),i.addEventListener("playing",(()=>{this.R="playing",this.fire("playing",{state:this.R,url:t})})),i.addEventListener("pause",(()=>{this.R="pause",this.fire("pause",{state:this.R,url:t})})),i.addEventListener("error",(()=>{throw this.R="pause",this.fire("error",{state:this.R,url:t}),new Error("video resource load error")})),this.video=i}getVideo(){return this.video}D(t){this.F=t}M(){return this.F}addTo(t){if(this.L)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return t.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(t){this.video.muted=t}setOpacity(t){this.options.opacity=t}getOpacity(){return this.options.opacity}remove(){delete this.video;const t=this.getLayer();t&&t.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this.L}k(){return"playing"===this.R}startEdit(){const t=this.getLayer();if(!t)return void console.warn("videosurface should be added to a map before edit");const i=t.getMap();if(!i)return void console.warn("videosurface should be added to a map before edit");if(this.H(),!this.N){const s=t.getId();this.N=new e.DrawToolLayer(`internal_${s}_edit`).addTo(i)}const s=this.getCoordinates();this.q=new e.Polygon(s,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this.N),this.q.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this.q.on("shapechange",(e=>{const i=e.target.getCoordinates()[0].slice(0,4).map((t=>[t.x,t.y,0]));this.setCoordinates(i);t.getRenderer().S(this)}),this)}endEdit(){this.N&&(this.q.endEdit(),this.q.remove(),this.N.remove()),delete this.N,delete this.q}H(){this.N&&this.N.clear(),delete this.q}}m.mergeOptions({opacity:1,visible:!0});class g extends e.Layer{constructor(t,e,i){!e||Array.isArray(e)||e instanceof m||(i=e,e=null),super(t,i),this.G={},this.videoId=0,this.G={},this.videoId=0,e&&this.addSurfaces(e)}addSurfaces(t){if(t)if(Array.isArray(t))t.forEach((t=>{this.addSurfaces(t)}));else{t.L=this,this.G[this.videoId]=t,t.D(this.videoId);const e=this.getRenderer();e?e.m()&&e.l(t):this.on("renderercreate",(e=>{e.renderer.m()&&e.renderer.l(t)})),this.videoId++}}showTopAlways(t){this.options.showTopAlways=t;const e=this.getRenderer();e&&e.v()}setDoubleSide(t){this.options.doubleSide=t;const e=this.getRenderer();e&&e.v()}getVideoSurfaces(){const t=[];for(const e in this.G)t.push(this.G[e]);return t}removeVideoSurfaces(t){if(Array.isArray(t))t.forEach((t=>{this.removeVideoSurfaces(t)}));else{const e=t.M(),i=this.getRenderer();i&&i.j(e),delete this.G[e]}}remove(){this.clear(),super.remove()}clear(){const t=this.getVideoSurfaces();for(let e=0;e<t.length;e++)t[e].remove()}}g.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),g.registerJSONType("VideoLayer"),g.registerRenderer("gl",p),g.registerRenderer("gpu",p),t.VideoLayer=g,t.VideoSurface=m,"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.120.0")})); | ||
| */;s<6;s++)n[s]=[];var a=[];function d(e,t,r){var i,o,s,d,u,h,p,g,f,m,v,_,y,x,w,S,b;o=(i=e)[0],s=i[1],d=i[2],u=i[3],h=i[4],p=i[5],g=i[6],f=i[7],m=i[8],v=i[9],_=i[10],y=i[11],x=i[12],w=i[13],S=i[14],b=i[15],l(n[0],u-o,f-h,y-m,b-x),l(n[1],u+o,f+h,y+m,b+x),l(n[2],u+s,f+p,y+v,b+w),l(n[3],u-s,f-p,y-v,b-w),l(n[4],u-d,f-g,y-_,b-S),l(n[5],u+d,f+g,y+_,b+S);for(var M=0;M<6;M++){var C=n[M];if(a[0]=C[0]>0?t[1][0]:t[0][0],a[1]=C[1]>0?t[1][1]:t[0][1],a[2]=C[2]>0?t[1][2]:t[0][2],c(C,a)<0)return!1}return!0}function l(e,t,r,i,o){var n=1/Math.sqrt(t*t+r*r+i*i);return e[0]=t*n,e[1]=r*n,e[2]=i*n,e[3]=o*n,e}function c(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]}const u={name:"video-layer",vert:"attribute vec3 aPosition;\nattribute vec2 aTexCoord;\nuniform mat4 projViewModelMatrix;\nuniform mat4 positionMatrix;\nuniform mat4 modelMatrix;\nvarying vec2 vTexCoords;\n#include <get_output>\nvoid main()\n{\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n}",frag:"precision mediump float;\nuniform sampler2D videoTexture;\nuniform float opacity;\nvarying vec2 vTexCoords;\nvoid main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n}",wgslVert:"#include <get_output>\nstruct Uniforms {\n modelMatrix: mat4x4f,\n positionMatrix: mat4x4f,\n projViewModelMatrix: mat4x4f,\n};\n@group(0) @binding($b) var<uniform> uniforms: Uniforms;\nstruct VertexInput {\n @location($i) aPosition: vec3f,\n @location($i) aTexCoord: vec2f,\n};\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location($o) vTexCoords: vec2f,\n};\n@vertex\nfn main(vertexInput: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let localPositionMatrix: mat4x4f = getPositionMatrix(vertexInput, &output, uniforms.positionMatrix);\n let localPosition: vec4f = getPosition(vec3f(vertexInput.aPosition.xyz), vertexInput);\n output.vTexCoords = vertexInput.aTexCoord;\n output.position = uniforms.projViewModelMatrix * localPositionMatrix * localPosition;\n return output;\n}",wgslFrag:"struct FragUniforms {\n opacity: f32\n}\n@group(0) @binding($b) var videoTexture: texture_2d<f32>;\n@group(0) @binding($b) var videoTextureSampler: sampler;\n@group(0) @binding($b) var<uniform> fragUniforms: FragUniforms;\n@fragment\nfn main(vertexOutput: VertexOutput) -> @location(0) vec4f {\n let color = textureSample(videoTexture, videoTextureSampler, vertexOutput.vTexCoords);\n return color * fragUniforms.opacity;\n}",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(e,t)=>r.mat4.multiply([],t.projViewMatrix,t.modelMatrix)},"texture","opacity"],positionAttribute:"POSITION",extraCommandProps:{depth:{enable:!0,func:"always"},cull:{enable:!1,face:"back"},frontFace:"cw",blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}}},h=[1,0,3,3,2,1];class p extends(r.CanvasCompatible(o.renderer.LayerAbstractRenderer)){constructor(e){super(e),this._scenes={}}draw(e,t){this.prepareCanvas(),this._renderScene(t)}drawOnInteracting(e,t,r){this._renderScene(r)}needToRedraw(){return!0}hitDetect(){return!1}initContext(){super.initContext();const{regl:e,device:t,reglGL:r}=this.context;this.regl=e||t,this.gl=r,this.device=e||t,this._initShader(),this._initRenderer();const i=this.layer.getVideoSurfaces();for(let e=0;e<i.length;e++)this._createScene(i[e])}_createGLContext(e,t){const r=["webgl","experimental-webgl"];let i=null;for(let o=0;o<r.length;++o){try{i=e.getContext(r[o],t)}catch(e){}if(i)break}return i}_initRenderer(){const e=this.layer.getMap(),t=new r.reshader.Renderer(this.regl);this.renderer=t,this._uniforms={"projMatrix":e.projMatrix,"projViewMatrix":e.projViewMatrix,"viewMatrix":e.viewMatrix,"halton":[.2107,-.0202],"uHalton":[.2107,-.0202],"uCameraPosition":e.cameraPosition,"cameraPosition":e.cameraPosition,"globalTexSize":[e.width,e.height]}}_getRegl(){return this.regl}_initShader(){this.viewport={x:0,y:0,width:()=>this.canvas?this.canvas.width:1,height:()=>this.canvas?this.canvas.height:1},this._updateShader()}_updateShader(){this._shader&&this._shader.dispose(),this.layer.options.showTopAlways?(u.extraCommandProps.depth.mask=!1,u.extraCommandProps.depth.range=[0,0]):(delete u.extraCommandProps.depth.mask,delete u.extraCommandProps.depth.range),u.extraCommandProps.cull.enable=!this.layer.options.doubleSide,this._shader=new r.reshader.MeshShader(u)}_createScene(e){const t=this.device.texture(),i=new r.reshader.Material({videoTexture:t,opacity:1}),o=e.getCoordinates(),{worldCenter:n,points:s}=this._transformCoordToWorld(o),a=this._createGeometry(s),d=new r.reshader.Mesh(a,i);this._updateMatrix(d,n);const l=new r.reshader.Scene(d),c=e._getVideoId();this._scenes[c]=l}_updateCoordinates(e){const t=e._getVideoId(),r=this._scenes[t].getMeshes()[0],i=e.getCoordinates();r.geometry.dispose();const{worldCenter:o,points:n}=this._transformCoordToWorld(i),s=this._createGeometry(n);r.geometry=s,this._updateMatrix(r,o)}_renderScene(e){const t=this.layer.getVideoSurfaces().filter((e=>e.isVisible()));if(!t.length)return;const r=this._createSceneInFrustum(t);if(!r)return;let i=null;e&&(i=e.renderTarget&&e.renderTarget.fbo),this.renderer.render(this._shader,this._uniforms,r,i)}_createGeometry(e){const t=new r.reshader.Geometry({POSITION:new Float32Array(e),TEXCOORD:new Float32Array([0,0,1,0,1,1,0,1])},new Uint16Array(h),0,{primitive:"triangles",positionAttribute:"POSITION",uv0Attribute:"TEXCOORD",normalAttribute:"NORMAL",positionSize:3});return t.generateBuffers(this.device),t}_transformCoordToWorld(e){let t=[];const r=this.getMap(),i=new o.Polygon(e).getCenter(),n=g(r,i,0);return this._worldCenter=n,r&&e.forEach((e=>{const i=new o.Coordinate(e[0],e[1]),s=r.altitudeToPoint(e[2]||0,r.getGLRes()),a=g(r,i,s);a[0]=a[0]-n[0],a[1]=a[1]-n[1],t=t.concat(a)})),{worldCenter:n,points:t}}_createSceneInFrustum(e){const t=[],i=this.layer.getMap();for(let r=0;r<e.length;r++){const o=e[r],n=this._scenes[o._getVideoId()];if(!n)continue;const s=n.getMeshes();for(let e=0;e<s.length;e++){const r=s[e],n=r.getMaterial(),a=n.get("videoTexture");a&&o._canDrawing()&&(a.update?a.update({data:o.video}):a(o.video),n.set("opacity",o.getOpacity())),d(i.projViewMatrix,r.getBoundingBox())&&t.push(r)}}return t.length?new r.reshader.Scene(t):null}_updateMatrix(e,t){r.mat4.fromRotationTranslationScale(e.localTransform,r.quat.fromEuler([],0,0,0),t,[1,1,1])}remove(){this._shader&&this._shader.dispose(),super.remove()}_deleteScene(e){const t=this._scenes[e];if(!t)return;t.getMeshes().forEach((e=>{e.geometry.dispose(),e.material&&e.material.dispose(),e.dispose()}))}}function g(e,t,r){if(!e)return null;const i=e.coordinateToPointAtRes(t,e.getGLRes());return[i.x,i.y,r]}class f extends(t.Eventable(t.Handlerable(t.Class))){constructor(e,t){super(t),this.setCoordinates(e),this._createVideo()}setCoordinates(e){this._coordinates=e}getCoordinates(){return this._coordinates}setVideo(e){this._videoState="stop",this.options.url=e,delete this.options.elementId,this._createVideo()}setElementId(e){this._videoState="stop",this.options.elementId=e,delete this.options.url,this._createVideo()}_createVideo(){this._videoState="stop";const e=this.options.url,t=this.options.elementId;let r=document.getElementById(t);if(e&&(r=document.createElement("video"),r.src=e),!r)throw new Error("there is no element or url setting for video mask");r.autoplay=!0,r.loop=!0,r.muted=!0,r.play(),r.addEventListener("playing",(()=>{this._videoState="playing",this.fire("playing",{state:this._videoState,url:e})})),r.addEventListener("pause",(()=>{this._videoState="pause",this.fire("pause",{state:this._videoState,url:e})})),r.addEventListener("error",(()=>{throw this._videoState="pause",this.fire("error",{state:this._videoState,url:e}),new Error("video resource load error")})),this.video=r}getVideo(){return this.video}_setVideoId(e){this._videoId=e}_getVideoId(){return this._videoId}addTo(e){if(this._layer)throw new Error("VideoSurface cannot be added to two or more layers at the same time.");return e.addSurfaces(this),this}show(){return this.options.visible=!0,this}hide(){return this.options.visible=!1,this}isVisible(){return this.options.visible}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}setAudio(e){this.video.muted=e}setOpacity(e){this.options.opacity=e}getOpacity(){return this.options.opacity}remove(){delete this.video;const e=this.getLayer();e&&e.removeVideoSurfaces(this),this.endEdit()}getLayer(){return this._layer}_canDrawing(){return"playing"===this._videoState}startEdit(){const e=this.getLayer();if(!e)return void console.warn("videosurface should be added to a map before edit");const r=e.getMap();if(!r)return void console.warn("videosurface should be added to a map before edit");if(this._clearEditHelper(),!this._editHelpLayer){const i=e.getId();this._editHelpLayer=new t.DrawToolLayer(`internal_${i}_edit`).addTo(r)}const i=this.getCoordinates();this._editHelpPolygon=new t.Polygon(i,{symbol:{lineColor:"#34495e",lineWidth:2,polygonFill:"rgb(135,196,240)",polygonOpacity:.1}}).addTo(this._editHelpLayer),this._editHelpPolygon.startEdit({newVertexHandleSymbol:{polygonFill:"rgba(0, 0, 0, 0)",polygonOpacity:0,markerType:"ellipse",markerWidth:1,markerHeight:1}}),this._editHelpPolygon.on("shapechange",(t=>{const r=t.target.getCoordinates()[0].slice(0,4).map((e=>[e.x,e.y,0]));this.setCoordinates(r);e.getRenderer()._updateCoordinates(this)}),this)}endEdit(){this._editHelpLayer&&(this._editHelpPolygon.endEdit(),this._editHelpPolygon.remove(),this._editHelpLayer.remove()),delete this._editHelpLayer,delete this._editHelpPolygon}_clearEditHelper(){this._editHelpLayer&&this._editHelpLayer.clear(),delete this._editHelpPolygon}}f.mergeOptions({opacity:1,visible:!0});class m extends t.Layer{constructor(e,t,r){!t||Array.isArray(t)||t instanceof f||(r=t,t=null),super(e,r),this._videoSurfaceMap={},this.videoId=0,this._videoSurfaceMap={},this.videoId=0,t&&this.addSurfaces(t)}addSurfaces(e){if(e)if(Array.isArray(e))e.forEach((e=>{this.addSurfaces(e)}));else{e._layer=this,this._videoSurfaceMap[this.videoId]=e,e._setVideoId(this.videoId);const t=this.getRenderer();t?t._getRegl()&&t._createScene(e):this.on("renderercreate",(t=>{t.renderer._getRegl()&&t.renderer._createScene(e)})),this.videoId++}}showTopAlways(e){this.options.showTopAlways=e;const t=this.getRenderer();t&&t._updateShader()}setDoubleSide(e){this.options.doubleSide=e;const t=this.getRenderer();t&&t._updateShader()}getVideoSurfaces(){const e=[];for(const t in this._videoSurfaceMap)e.push(this._videoSurfaceMap[t]);return e}removeVideoSurfaces(e){if(Array.isArray(e))e.forEach((e=>{this.removeVideoSurfaces(e)}));else{const t=e._getVideoId(),r=this.getRenderer();r&&r._deleteScene(t),delete this._videoSurfaceMap[t]}}remove(){this.clear(),super.remove()}clear(){const e=this.getVideoSurfaces();for(let t=0;t<e.length;t++)e[t].remove()}}m.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,markerEvents:!0,forceRenderOnZooming:!0,forceRenderOnMoving:!0,forceRenderOnRotating:!0,showTopAlways:!0,doubleSide:!0}),m.registerJSONType("VideoLayer"),m.registerRenderer("gl",p),m.registerRenderer("gpu",p),e.VideoLayer=m,e.VideoSurface=f,"undefined"!=typeof console&&console.log("@maptalks/video-layer v0.121.0")})); | ||
| //# sourceMappingURL=maptalks.video.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"maptalks.video.js","sources":["../../../node_modules/.pnpm/frustum-intersects@0.2.4/node_modules/frustum-intersects/src/index.js","../src/VideoLayerRenderer.js","../src/VideoSurface.ts","../src/VideoLayer.ts"],"sourcesContent":["/*!\r\n* Contains code from THREE.js\r\n* MIT License\r\n* https://github.com/mrdoob/three.js\r\n*/\r\n\r\nvar planes = [];\r\nfor (var i = 0; i < 6; i++) {\r\n planes[i] = [];\r\n}\r\n\r\nexport function intersectsSphere(matrix, sphere, mask) {\r\n setPlanes(matrix);\r\n var center = sphere[0];\r\n var negRadius = -sphere[1];\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var distance = distanceToPoint(planes[i], center);\r\n if (distance < negRadius) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nvar p = [];\r\n\r\nexport function intersectsBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n // corner at max distance\r\n p[0] = plane[0] > 0 ? box[1][0] : box[0][0];\r\n p[1] = plane[1] > 0 ? box[1][1] : box[0][1];\r\n p[2] = plane[2] > 0 ? box[1][2] : box[0][2];\r\n\r\n if (distanceToPoint(plane, p) < 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function intersectsOrientedBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n if (!intersectsPlane(plane, box)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nvar COLUMN0ROW0 = 0 + 3, COLUMN0ROW1 = 1 + 3, COLUMN0ROW2 = 2 + 3, COLUMN1ROW0 = 3 + 3, COLUMN1ROW1 = 4 + 3, COLUMN1ROW2 = 5 + 3, COLUMN2ROW0 = 6 + 3, COLUMN2ROW1 = 7 + 3, COLUMN2ROW2 = 8 + 3;\r\n// const COLUMN0ROW0 = 0, COLUMN0ROW1 = 1, COLUMN0ROW2 = 2, COLUMN1ROW0 = 3, COLUMN1ROW1 = 4, COLUMN1ROW2 = 5, COLUMN2ROW0 = 6, COLUMN2ROW1 = 7, COLUMN2ROW2 = 8;\r\nvar BOX_CENTER = [];\r\nvar HALF_AXES = [];\r\n\r\nfunction intersectsPlane(plane, box) {\r\n var center = box;\r\n var normal = plane;\r\n var halfAxes = box;\r\n var normalX = normal[0], normalY = normal[1], normalZ = normal[2];\r\n // plane is used as if it is its normal; the first three components are assumed to be normalized\r\n var radEffective = Math.abs(normalX * halfAxes[COLUMN0ROW0] + normalY * halfAxes[COLUMN0ROW1] + normalZ * halfAxes[COLUMN0ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN1ROW0] + normalY * halfAxes[COLUMN1ROW1] + normalZ * halfAxes[COLUMN1ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN2ROW0] + normalY * halfAxes[COLUMN2ROW1] + normalZ * halfAxes[COLUMN2ROW2]);\r\n var distanceToPlane = distanceToPoint(plane, center);\r\n\r\n if (distanceToPlane <= -radEffective) {\r\n // The entire box is on the negative side of the plane normal\r\n // return Intersect.OUTSIDE;\r\n return false;\r\n } else if (distanceToPlane >= radEffective) {\r\n // The entire box is on the positive side of the plane normal\r\n // return Intersect.INSIDE;\r\n return true;\r\n }\r\n return true;\r\n // return Intersect.INTERSECTING;\r\n}\r\n\r\nfunction setPlanes(m) {\r\n var me = m;\r\n var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\r\n var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\r\n var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\r\n var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\r\n\r\n //right\r\n setComponents(planes[0], me3 - me0, me7 - me4, me11 - me8, me15 - me12);\r\n //left\r\n setComponents(planes[1], me3 + me0, me7 + me4, me11 + me8, me15 + me12);\r\n //bottom\r\n setComponents(planes[2], me3 + me1, me7 + me5, me11 + me9, me15 + me13);\r\n //top\r\n setComponents(planes[3], me3 - me1, me7 - me5, me11 - me9, me15 - me13);\r\n //z-far\r\n setComponents(planes[4], me3 - me2, me7 - me6, me11 - me10, me15 - me14);\r\n //z-near\r\n setComponents(planes[5], me3 + me2, me7 + me6, me11 + me10, me15 + me14);\r\n}\r\n\r\nfunction setComponents(out, x, y, z, w) {\r\n // THREE.js Plane.js\r\n var inverseNormalLength = 1 / Math.sqrt(x * x + y * y + z * z);\r\n out[0] = x * inverseNormalLength;\r\n out[1] = y * inverseNormalLength;\r\n out[2] = z * inverseNormalLength;\r\n out[3] = w * inverseNormalLength;\r\n return out;\r\n}\r\n\r\nfunction distanceToPoint(plane, p) {\r\n return plane[0] * p[0] + plane[1] * p[1] + plane[2] * p[2] + plane[3];\r\n}\r\n","import * as maptalks from 'maptalks';\nimport { CanvasCompatible, reshader, mat4, quat } from '@maptalks/gl';\nimport { intersectsBox } from 'frustum-intersects';\n\nconst vert = `\n attribute vec3 aPosition;\n attribute vec2 aTexCoord;\n uniform mat4 projViewModelMatrix;\n uniform mat4 positionMatrix;\n uniform mat4 modelMatrix;\n varying vec2 vTexCoords;\n #include <get_output>\n void main()\n {\n mat4 localPositionMatrix = getPositionMatrix();\n vec4 localPosition = getPosition(aPosition);\n gl_Position = projViewModelMatrix * localPositionMatrix * localPosition;\n vTexCoords = aTexCoord;\n }\n`;\n\nconst frag = `\n precision mediump float;\n uniform sampler2D videoTexture;\n uniform float opacity;\n\n varying vec2 vTexCoords;\n void main() {\n vec4 color = texture2D(videoTexture, vTexCoords);\n gl_FragColor = color * opacity;\n }\n`;\nconst shaderConfig = {\n vert,\n frag,\n uniforms : [\n {\n name: 'projViewModelMatrix',\n type: 'function',\n fn: (context, props) => {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n },\n 'texture',\n 'opacity'\n ],\n positionAttribute : 'POSITION',\n extraCommandProps: {\n depth: {\n enable: true,\n func: 'always'\n },\n cull: {\n enable: false,\n face: 'back'\n },\n frontFace: 'cw',\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n }\n};\n\nconst triangles = [1, 0, 3, 3, 2, 1];\nclass VideoLayerRenderer extends CanvasCompatible(maptalks.renderer.LayerAbstractRenderer) {\n constructor(layer) {\n super(layer);\n this._scenes = {};\n }\n\n draw(timestamp, context) {\n this.prepareCanvas();\n this._renderScene(context);\n }\n\n drawOnInteracting(e, timestamp, context) {\n this._renderScene(context);\n }\n\n needToRedraw() {\n return true;\n }\n\n hitDetect() {\n return false;\n }\n\n initContext() {\n super.initContext();\n const { regl, device, reglGL } = this.context;\n\n this.regl = regl || device;\n this.gl = reglGL;\n this.device = regl || device;\n\n this._initShader();\n this._initRenderer();\n const videoSurfaces = this.layer.getVideoSurfaces();\n for (let i = 0; i < videoSurfaces.length; i++) {\n this._createScene(videoSurfaces[i]);\n }\n }\n\n _createGLContext(canvas, options) {\n const names = ['webgl', 'experimental-webgl'];\n let context = null;\n /* eslint-disable no-empty */\n for (let i = 0; i < names.length; ++i) {\n try {\n context = canvas.getContext(names[i], options);\n } catch (e) {}\n if (context) {\n break;\n }\n }\n return context;\n /* eslint-enable no-empty */\n }\n\n _initRenderer() {\n const map = this.layer.getMap();\n const renderer = new reshader.Renderer(this.regl);\n this.renderer = renderer;\n this._uniforms = {\n 'projMatrix': map.projMatrix,\n 'projViewMatrix' : map.projViewMatrix,\n 'viewMatrix': map.viewMatrix,\n 'halton': [0.2107, -0.0202],\n 'uHalton': [0.2107, -0.0202],\n 'uCameraPosition' : map.cameraPosition,\n 'cameraPosition' : map.cameraPosition,\n 'globalTexSize' : [map.width, map.height]\n };\n }\n\n _getRegl() {\n return this.regl;\n }\n\n _initShader() {\n this.viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.canvas ? this.canvas.width : 1;\n },\n height : () => {\n return this.canvas ? this.canvas.height : 1;\n }\n };\n this._updateShader();\n }\n\n _updateShader() {\n if (this._shader) {\n this._shader.dispose();\n }\n if (this.layer.options['showTopAlways']) {\n shaderConfig.extraCommandProps.depth.mask = false;\n shaderConfig.extraCommandProps.depth.range = [0, 0];\n } else {\n delete shaderConfig.extraCommandProps.depth.mask;\n delete shaderConfig.extraCommandProps.depth.range;\n }\n shaderConfig.extraCommandProps.cull.enable = this.layer.options['doubleSide'] ? false : true;\n this._shader = new reshader.MeshShader(shaderConfig);\n }\n\n _createScene(videoSurface) {\n const texture = this.device.texture();\n const material = new reshader.Material({\n videoTexture: texture,\n opacity: 1.0\n });\n const coordinates = videoSurface.getCoordinates();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n const mesh = new reshader.Mesh(geometry, material);\n this._updateMatrix(mesh, worldCenter);\n const scene = new reshader.Scene(mesh);\n const videoId = videoSurface._getVideoId();\n this._scenes[videoId] = scene;\n }\n\n _updateCoordinates(videoSurface) {\n const videoId = videoSurface._getVideoId();\n const scene = this._scenes[videoId];\n const mesh = scene.getMeshes()[0];\n const coordinates = videoSurface.getCoordinates();\n mesh.geometry.dispose();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n mesh.geometry = geometry;\n this._updateMatrix(mesh, worldCenter);\n }\n\n _renderScene(context) {\n const visibles = this.layer.getVideoSurfaces().filter(videoSurface => {\n return videoSurface.isVisible();\n });\n if (!visibles.length) {\n return;\n }\n const renderScene = this._createSceneInFrustum(visibles);\n if (!renderScene) {\n return;\n }\n let targetFBO = null;\n if (context) {\n targetFBO = context.renderTarget && context.renderTarget.fbo;\n }\n this.renderer.render(this._shader, this._uniforms, renderScene, targetFBO);\n }\n\n _createGeometry(points) {\n return new reshader.Geometry({\n POSITION : points,\n TEXCOORD : [\n 0.0, 0.0,\n 1.0, 0.0,\n 1.0, 1.0,\n 0.0, 1.0\n ]\n },\n triangles,\n 0,\n {\n primitive: 'triangles',\n //顶点的属性名称,默认为aPosition\n positionAttribute: 'POSITION',\n uv0Attribute: 'TEXCOORD',\n normalAttribute: 'NORMAL',\n //顶点个数,默认为3\n positionSize : 3\n });\n }\n\n _transformCoordToWorld(coordinates) {\n let points = [];\n const map = this.getMap();\n const tmpPolygon = new maptalks.Polygon(coordinates);\n const center = tmpPolygon.getCenter();\n const worldCenter = coordinateToWorld(map, center, 0);\n this._worldCenter = worldCenter;\n if (map) {\n coordinates.forEach(coordinate => {\n const coord = new maptalks.Coordinate(coordinate[0], coordinate[1]);\n const altitude = map.altitudeToPoint(coordinate[2] || 0, map.getGLRes());\n const worldPoint = coordinateToWorld(map, coord, altitude);\n worldPoint[0] = worldPoint[0] - worldCenter[0];\n worldPoint[1] = worldPoint[1] - worldCenter[1];\n points = points.concat(worldPoint);\n });\n }\n return { worldCenter, points };\n }\n\n _createSceneInFrustum(videoSurfaces) {\n const visibles = [];\n const map = this.layer.getMap();\n for (let i = 0; i < videoSurfaces.length; i++) {\n const videoSurface = videoSurfaces[i];\n const scene = this._scenes[videoSurface._getVideoId()];\n if (!scene) {\n continue;\n }\n const meshes = scene.getMeshes();\n for (let ii = 0; ii < meshes.length; ii++) {\n const mesh = meshes[ii];\n const material = mesh.getMaterial();\n const texture = material.get('videoTexture');\n if (texture && videoSurface._canDrawing()) {\n texture(videoSurface.video);\n material.set('opacity', videoSurface.getOpacity());\n }\n if (intersectsBox(map.projViewMatrix, mesh.getBoundingBox())) {\n visibles.push(mesh);\n }\n }\n }\n return visibles.length ? new reshader.Scene(visibles) : null;\n }\n\n _updateMatrix(mesh, worldCenter) {\n mat4.fromRotationTranslationScale(mesh.localTransform, quat.fromEuler([], 0, 0, 0), worldCenter, [1, 1, 1]);\n }\n\n remove() {\n if (this._shader) {\n this._shader.dispose();\n }\n super.remove();\n }\n\n _deleteScene(videoId) {\n const scene = this._scenes[videoId];\n if (!scene) {\n return;\n }\n const meshes = scene.getMeshes();\n meshes.forEach(mesh => {\n mesh.geometry.dispose();\n if (mesh.material) {\n mesh.material.dispose();\n }\n mesh.dispose();\n });\n }\n}\nexport default VideoLayerRenderer;\n\nfunction coordinateToWorld(map, coordinate, z) {\n if (!map) {\n return null;\n }\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n return [p.x, p.y, z];\n}\n",null,null],"names":["planes","i","p","intersectsBox","matrix","box","mask","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","plane","distanceToPoint","out","x","y","z","w","inverseNormalLength","Math","sqrt","shaderConfig","vert","frag","uniforms","name","type","fn","context","props","mat4","multiply","positionAttribute","extraCommandProps","depth","enable","func","cull","face","frontFace","blend","src","dst","equation","triangles","VideoLayerRenderer","CanvasCompatible","maptalks","renderer","LayerAbstractRenderer","constructor","layer","super","this","_scenes","draw","timestamp","prepareCanvas","_renderScene","drawOnInteracting","e","needToRedraw","hitDetect","initContext","regl","device","reglGL","gl","_initShader","_initRenderer","videoSurfaces","getVideoSurfaces","length","_createScene","_createGLContext","canvas","options","names","getContext","map","getMap","reshader","Renderer","_uniforms","projMatrix","projViewMatrix","viewMatrix","halton","uHalton","uCameraPosition","cameraPosition","globalTexSize","width","height","_getRegl","viewport","_updateShader","_shader","dispose","range","MeshShader","videoSurface","texture","material","Material","videoTexture","opacity","coordinates","getCoordinates","worldCenter","points","_transformCoordToWorld","geometry","_createGeometry","mesh","Mesh","_updateMatrix","scene","Scene","videoId","_getVideoId","_updateCoordinates","getMeshes","visibles","filter","isVisible","renderScene","_createSceneInFrustum","targetFBO","renderTarget","fbo","render","Geometry","POSITION","TEXCOORD","primitive","uv0Attribute","normalAttribute","positionSize","center","Polygon","getCenter","coordinateToWorld","_worldCenter","forEach","coordinate","coord","Coordinate","altitude","altitudeToPoint","getGLRes","worldPoint","concat","meshes","ii","getMaterial","get","_canDrawing","video","set","getOpacity","getBoundingBox","push","fromRotationTranslationScale","localTransform","quat","fromEuler","remove","_deleteScene","coordinateToPointAtRes","VideoSurface","Eventable","Handlerable","Class","setCoordinates","_createVideo","_coordinates","setVideo","url","_videoState","elementId","setElementId","id","document","getElementById","createElement","Error","autoplay","loop","muted","play","addEventListener","fire","state","getVideo","_setVideoId","_videoId","addTo","_layer","addSurfaces","show","visible","hide","pause","setAudio","audio","setOpacity","getLayer","removeVideoSurfaces","endEdit","startEdit","console","warn","_clearEditHelper","_editHelpLayer","layerId","getId","DrawToolLayer","_editHelpPolygon","symbol","lineColor","lineWidth","polygonFill","polygonOpacity","newVertexHandleSymbol","markerType","markerWidth","markerHeight","on","positions","target","slice","getRenderer","clear","mergeOptions","VideoLayer","Layer","Array","isArray","_videoSurfaceMap","showTopAlways","always","setDoubleSide","doubleSide","surfaceList","s","surfaces","doubleBuffer","glOptions","markerEvents","forceRenderOnZooming","forceRenderOnMoving","forceRenderOnRotating","registerJSONType","registerRenderer"],"mappings":"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","x_google_ignoreList":[0]} | ||
| {"version":3,"file":"maptalks.video.js","sources":["../../../node_modules/.pnpm/frustum-intersects@0.2.4/node_modules/frustum-intersects/src/index.js","../src/VideoLayerRenderer.js","../src/VideoSurface.ts","../src/VideoLayer.ts"],"sourcesContent":["/*!\r\n* Contains code from THREE.js\r\n* MIT License\r\n* https://github.com/mrdoob/three.js\r\n*/\r\n\r\nvar planes = [];\r\nfor (var i = 0; i < 6; i++) {\r\n planes[i] = [];\r\n}\r\n\r\nexport function intersectsSphere(matrix, sphere, mask) {\r\n setPlanes(matrix);\r\n var center = sphere[0];\r\n var negRadius = -sphere[1];\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var distance = distanceToPoint(planes[i], center);\r\n if (distance < negRadius) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nvar p = [];\r\n\r\nexport function intersectsBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n // corner at max distance\r\n p[0] = plane[0] > 0 ? box[1][0] : box[0][0];\r\n p[1] = plane[1] > 0 ? box[1][1] : box[0][1];\r\n p[2] = plane[2] > 0 ? box[1][2] : box[0][2];\r\n\r\n if (distanceToPoint(plane, p) < 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function intersectsOrientedBox(matrix, box, mask) {\r\n setPlanes(matrix);\r\n for (var i = 0; i < 6; i++) {\r\n if (mask && mask.charAt(i) === '0') {\r\n continue;\r\n }\r\n var plane = planes[i];\r\n if (!intersectsPlane(plane, box)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nvar COLUMN0ROW0 = 0 + 3, COLUMN0ROW1 = 1 + 3, COLUMN0ROW2 = 2 + 3, COLUMN1ROW0 = 3 + 3, COLUMN1ROW1 = 4 + 3, COLUMN1ROW2 = 5 + 3, COLUMN2ROW0 = 6 + 3, COLUMN2ROW1 = 7 + 3, COLUMN2ROW2 = 8 + 3;\r\n// const COLUMN0ROW0 = 0, COLUMN0ROW1 = 1, COLUMN0ROW2 = 2, COLUMN1ROW0 = 3, COLUMN1ROW1 = 4, COLUMN1ROW2 = 5, COLUMN2ROW0 = 6, COLUMN2ROW1 = 7, COLUMN2ROW2 = 8;\r\nvar BOX_CENTER = [];\r\nvar HALF_AXES = [];\r\n\r\nfunction intersectsPlane(plane, box) {\r\n var center = box;\r\n var normal = plane;\r\n var halfAxes = box;\r\n var normalX = normal[0], normalY = normal[1], normalZ = normal[2];\r\n // plane is used as if it is its normal; the first three components are assumed to be normalized\r\n var radEffective = Math.abs(normalX * halfAxes[COLUMN0ROW0] + normalY * halfAxes[COLUMN0ROW1] + normalZ * halfAxes[COLUMN0ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN1ROW0] + normalY * halfAxes[COLUMN1ROW1] + normalZ * halfAxes[COLUMN1ROW2]) +\r\n Math.abs(normalX * halfAxes[COLUMN2ROW0] + normalY * halfAxes[COLUMN2ROW1] + normalZ * halfAxes[COLUMN2ROW2]);\r\n var distanceToPlane = distanceToPoint(plane, center);\r\n\r\n if (distanceToPlane <= -radEffective) {\r\n // The entire box is on the negative side of the plane normal\r\n // return Intersect.OUTSIDE;\r\n return false;\r\n } else if (distanceToPlane >= radEffective) {\r\n // The entire box is on the positive side of the plane normal\r\n // return Intersect.INSIDE;\r\n return true;\r\n }\r\n return true;\r\n // return Intersect.INTERSECTING;\r\n}\r\n\r\nfunction setPlanes(m) {\r\n var me = m;\r\n var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\r\n var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\r\n var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\r\n var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\r\n\r\n //right\r\n setComponents(planes[0], me3 - me0, me7 - me4, me11 - me8, me15 - me12);\r\n //left\r\n setComponents(planes[1], me3 + me0, me7 + me4, me11 + me8, me15 + me12);\r\n //bottom\r\n setComponents(planes[2], me3 + me1, me7 + me5, me11 + me9, me15 + me13);\r\n //top\r\n setComponents(planes[3], me3 - me1, me7 - me5, me11 - me9, me15 - me13);\r\n //z-far\r\n setComponents(planes[4], me3 - me2, me7 - me6, me11 - me10, me15 - me14);\r\n //z-near\r\n setComponents(planes[5], me3 + me2, me7 + me6, me11 + me10, me15 + me14);\r\n}\r\n\r\nfunction setComponents(out, x, y, z, w) {\r\n // THREE.js Plane.js\r\n var inverseNormalLength = 1 / Math.sqrt(x * x + y * y + z * z);\r\n out[0] = x * inverseNormalLength;\r\n out[1] = y * inverseNormalLength;\r\n out[2] = z * inverseNormalLength;\r\n out[3] = w * inverseNormalLength;\r\n return out;\r\n}\r\n\r\nfunction distanceToPoint(plane, p) {\r\n return plane[0] * p[0] + plane[1] * p[1] + plane[2] * p[2] + plane[3];\r\n}\r\n","import * as maptalks from 'maptalks';\nimport { CanvasCompatible, reshader, mat4, quat } from '@maptalks/gl';\nimport { intersectsBox } from 'frustum-intersects';\nimport vert from './video.vert';\nimport frag from './video.frag';\nimport wgslVert from './video_vert.wgsl';\nimport wgslFrag from './video_frag.wgsl';\n\nconst shaderConfig = {\n name: 'video-layer',\n vert,\n frag,\n wgslVert,\n wgslFrag,\n uniforms : [\n {\n name: 'projViewModelMatrix',\n type: 'function',\n fn: (context, props) => {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n },\n 'texture',\n 'opacity'\n ],\n positionAttribute : 'POSITION',\n extraCommandProps: {\n depth: {\n enable: true,\n func: 'always'\n },\n cull: {\n enable: false,\n face: 'back'\n },\n frontFace: 'cw',\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n }\n};\n\nconst triangles = [1, 0, 3, 3, 2, 1];\nclass VideoLayerRenderer extends CanvasCompatible(maptalks.renderer.LayerAbstractRenderer) {\n constructor(layer) {\n super(layer);\n this._scenes = {};\n }\n\n draw(timestamp, context) {\n this.prepareCanvas();\n this._renderScene(context);\n }\n\n drawOnInteracting(e, timestamp, context) {\n this._renderScene(context);\n }\n\n needToRedraw() {\n return true;\n }\n\n hitDetect() {\n return false;\n }\n\n initContext() {\n super.initContext();\n const { regl, device, reglGL } = this.context;\n\n this.regl = regl || device;\n this.gl = reglGL;\n this.device = regl || device;\n\n this._initShader();\n this._initRenderer();\n const videoSurfaces = this.layer.getVideoSurfaces();\n for (let i = 0; i < videoSurfaces.length; i++) {\n this._createScene(videoSurfaces[i]);\n }\n }\n\n _createGLContext(canvas, options) {\n const names = ['webgl', 'experimental-webgl'];\n let context = null;\n /* eslint-disable no-empty */\n for (let i = 0; i < names.length; ++i) {\n try {\n context = canvas.getContext(names[i], options);\n } catch (e) {}\n if (context) {\n break;\n }\n }\n return context;\n /* eslint-enable no-empty */\n }\n\n _initRenderer() {\n const map = this.layer.getMap();\n const renderer = new reshader.Renderer(this.regl);\n this.renderer = renderer;\n this._uniforms = {\n 'projMatrix': map.projMatrix,\n 'projViewMatrix' : map.projViewMatrix,\n 'viewMatrix': map.viewMatrix,\n 'halton': [0.2107, -0.0202],\n 'uHalton': [0.2107, -0.0202],\n 'uCameraPosition' : map.cameraPosition,\n 'cameraPosition' : map.cameraPosition,\n 'globalTexSize' : [map.width, map.height]\n };\n }\n\n _getRegl() {\n return this.regl;\n }\n\n _initShader() {\n this.viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.canvas ? this.canvas.width : 1;\n },\n height : () => {\n return this.canvas ? this.canvas.height : 1;\n }\n };\n this._updateShader();\n }\n\n _updateShader() {\n if (this._shader) {\n this._shader.dispose();\n }\n if (this.layer.options['showTopAlways']) {\n shaderConfig.extraCommandProps.depth.mask = false;\n shaderConfig.extraCommandProps.depth.range = [0, 0];\n } else {\n delete shaderConfig.extraCommandProps.depth.mask;\n delete shaderConfig.extraCommandProps.depth.range;\n }\n shaderConfig.extraCommandProps.cull.enable = this.layer.options['doubleSide'] ? false : true;\n this._shader = new reshader.MeshShader(shaderConfig);\n }\n\n _createScene(videoSurface) {\n const texture = this.device.texture();\n const material = new reshader.Material({\n videoTexture: texture,\n opacity: 1.0\n });\n const coordinates = videoSurface.getCoordinates();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n const mesh = new reshader.Mesh(geometry, material);\n this._updateMatrix(mesh, worldCenter);\n const scene = new reshader.Scene(mesh);\n const videoId = videoSurface._getVideoId();\n this._scenes[videoId] = scene;\n }\n\n _updateCoordinates(videoSurface) {\n const videoId = videoSurface._getVideoId();\n const scene = this._scenes[videoId];\n const mesh = scene.getMeshes()[0];\n const coordinates = videoSurface.getCoordinates();\n mesh.geometry.dispose();\n const { worldCenter, points } = this._transformCoordToWorld(coordinates);\n const geometry = this._createGeometry(points);\n mesh.geometry = geometry;\n this._updateMatrix(mesh, worldCenter);\n }\n\n _renderScene(context) {\n const visibles = this.layer.getVideoSurfaces().filter(videoSurface => {\n return videoSurface.isVisible();\n });\n if (!visibles.length) {\n return;\n }\n const renderScene = this._createSceneInFrustum(visibles);\n if (!renderScene) {\n return;\n }\n let targetFBO = null;\n if (context) {\n targetFBO = context.renderTarget && context.renderTarget.fbo;\n }\n this.renderer.render(this._shader, this._uniforms, renderScene, targetFBO);\n }\n\n _createGeometry(points) {\n const geometry = new reshader.Geometry({\n POSITION: new Float32Array(points),\n TEXCOORD: new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 1.0, 1.0,\n 0.0, 1.0\n ])\n },\n new Uint16Array(triangles),\n 0,\n {\n primitive: 'triangles',\n //顶点的属性名称,默认为 aPosition\n positionAttribute: 'POSITION',\n uv0Attribute: 'TEXCOORD',\n normalAttribute: 'NORMAL',\n //顶点个数,默认为3\n positionSize: 3\n });\n geometry.generateBuffers(this.device);\n return geometry;\n }\n\n _transformCoordToWorld(coordinates) {\n let points = [];\n const map = this.getMap();\n const tmpPolygon = new maptalks.Polygon(coordinates);\n const center = tmpPolygon.getCenter();\n const worldCenter = coordinateToWorld(map, center, 0);\n this._worldCenter = worldCenter;\n if (map) {\n coordinates.forEach(coordinate => {\n const coord = new maptalks.Coordinate(coordinate[0], coordinate[1]);\n const altitude = map.altitudeToPoint(coordinate[2] || 0, map.getGLRes());\n const worldPoint = coordinateToWorld(map, coord, altitude);\n worldPoint[0] = worldPoint[0] - worldCenter[0];\n worldPoint[1] = worldPoint[1] - worldCenter[1];\n points = points.concat(worldPoint);\n });\n }\n return { worldCenter, points };\n }\n\n _createSceneInFrustum(videoSurfaces) {\n const visibles = [];\n const map = this.layer.getMap();\n for (let i = 0; i < videoSurfaces.length; i++) {\n const videoSurface = videoSurfaces[i];\n const scene = this._scenes[videoSurface._getVideoId()];\n if (!scene) {\n continue;\n }\n const meshes = scene.getMeshes();\n for (let ii = 0; ii < meshes.length; ii++) {\n const mesh = meshes[ii];\n const material = mesh.getMaterial();\n const texture = material.get('videoTexture');\n if (texture && videoSurface._canDrawing()) {\n if (texture.update) {\n texture.update({ data: videoSurface.video });\n } else {\n texture(videoSurface.video);\n }\n\n material.set('opacity', videoSurface.getOpacity());\n }\n if (intersectsBox(map.projViewMatrix, mesh.getBoundingBox())) {\n visibles.push(mesh);\n }\n }\n }\n return visibles.length ? new reshader.Scene(visibles) : null;\n }\n\n _updateMatrix(mesh, worldCenter) {\n mat4.fromRotationTranslationScale(mesh.localTransform, quat.fromEuler([], 0, 0, 0), worldCenter, [1, 1, 1]);\n }\n\n remove() {\n if (this._shader) {\n this._shader.dispose();\n }\n super.remove();\n }\n\n _deleteScene(videoId) {\n const scene = this._scenes[videoId];\n if (!scene) {\n return;\n }\n const meshes = scene.getMeshes();\n meshes.forEach(mesh => {\n mesh.geometry.dispose();\n if (mesh.material) {\n mesh.material.dispose();\n }\n mesh.dispose();\n });\n }\n}\nexport default VideoLayerRenderer;\n\nfunction coordinateToWorld(map, coordinate, z) {\n if (!map) {\n return null;\n }\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n return [p.x, p.y, z];\n}\n",null,null],"names":["planes","i","p","intersectsBox","matrix","box","mask","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","plane","distanceToPoint","out","x","y","z","w","inverseNormalLength","Math","sqrt","shaderConfig","name","vert","frag","wgslVert","wgslFrag","uniforms","type","fn","context","props","mat4","multiply","positionAttribute","extraCommandProps","depth","enable","func","cull","face","frontFace","blend","src","dst","equation","triangles","VideoLayerRenderer","CanvasCompatible","maptalks","renderer","LayerAbstractRenderer","constructor","layer","super","this","_scenes","draw","timestamp","prepareCanvas","_renderScene","drawOnInteracting","e","needToRedraw","hitDetect","initContext","regl","device","reglGL","gl","_initShader","_initRenderer","videoSurfaces","getVideoSurfaces","length","_createScene","_createGLContext","canvas","options","names","getContext","map","getMap","reshader","Renderer","_uniforms","projMatrix","projViewMatrix","viewMatrix","halton","uHalton","uCameraPosition","cameraPosition","globalTexSize","width","height","_getRegl","viewport","_updateShader","_shader","dispose","range","MeshShader","videoSurface","texture","material","Material","videoTexture","opacity","coordinates","getCoordinates","worldCenter","points","_transformCoordToWorld","geometry","_createGeometry","mesh","Mesh","_updateMatrix","scene","Scene","videoId","_getVideoId","_updateCoordinates","getMeshes","visibles","filter","isVisible","renderScene","_createSceneInFrustum","targetFBO","renderTarget","fbo","render","Geometry","POSITION","Float32Array","TEXCOORD","Uint16Array","primitive","uv0Attribute","normalAttribute","positionSize","generateBuffers","center","Polygon","getCenter","coordinateToWorld","_worldCenter","forEach","coordinate","coord","Coordinate","altitude","altitudeToPoint","getGLRes","worldPoint","concat","meshes","ii","getMaterial","get","_canDrawing","update","data","video","set","getOpacity","getBoundingBox","push","fromRotationTranslationScale","localTransform","quat","fromEuler","remove","_deleteScene","coordinateToPointAtRes","VideoSurface","Eventable","Handlerable","Class","setCoordinates","_createVideo","_coordinates","setVideo","url","_videoState","elementId","setElementId","id","document","getElementById","createElement","Error","autoplay","loop","muted","play","addEventListener","fire","state","getVideo","_setVideoId","_videoId","addTo","_layer","addSurfaces","show","visible","hide","pause","setAudio","audio","setOpacity","getLayer","removeVideoSurfaces","endEdit","startEdit","console","warn","_clearEditHelper","_editHelpLayer","layerId","getId","DrawToolLayer","_editHelpPolygon","symbol","lineColor","lineWidth","polygonFill","polygonOpacity","newVertexHandleSymbol","markerType","markerWidth","markerHeight","on","positions","target","slice","getRenderer","clear","mergeOptions","VideoLayer","Layer","Array","isArray","_videoSurfaceMap","showTopAlways","always","setDoubleSide","doubleSide","surfaceList","s","surfaces","doubleBuffer","glOptions","markerEvents","forceRenderOnZooming","forceRenderOnMoving","forceRenderOnRotating","registerJSONType","registerRenderer"],"mappings":"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","x_google_ignoreList":[0]} |
+4
-4
| { | ||
| "name": "@maptalks/video-layer", | ||
| "version": "0.120.0", | ||
| "version": "0.121.0", | ||
| "description": "A maptalks Layer to render video", | ||
@@ -37,5 +37,5 @@ "license": "UNLICENSED", | ||
| "rollup": "^4.17.2", | ||
| "@maptalks/gl": "0.120.0", | ||
| "@maptalks/gpu": "0.120.0", | ||
| "maptalks": "1.9.0" | ||
| "@maptalks/gl": "0.121.0", | ||
| "@maptalks/gpu": "0.121.0", | ||
| "maptalks": "1.10.0" | ||
| }, | ||
@@ -42,0 +42,0 @@ "dependencies": { |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
96088
8.52%165
22.22%