vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
1 lines • 18.9 kB
Source Map (JSON)
{"version":3,"file":"particlesRendering.mjs","sources":["../../../../../../packages/components/overlays/wind/particlesRendering.ts"],"sourcesContent":["import * as Util from './util'\nimport segmentDrawVert from './glsl/segmentDraw.vert'\nimport segmentDrawFrag from './glsl/segmentDraw.frag'\nimport fullscreenVert from './glsl/fullscreen.vert'\nimport trailDrawFrag from './glsl/trailDraw.frag'\nimport screenDrawFrag from './glsl/screenDraw.frag'\nimport CustomPrimitive from './customPrimitive'\n\nclass ParticlesRendering {\n textures: any\n framebuffers: any\n primitives: any\n constructor(context, data, particleSystemOptions, viewerParameters, particlesComputing) {\n this.createRenderingTextures(context, data)\n this.createRenderingFramebuffers(context)\n this.createRenderingPrimitives(context, particleSystemOptions, viewerParameters, particlesComputing)\n }\n\n createRenderingTextures(context, data) {\n const colorTextureOptions = {\n context: context,\n width: context.drawingBufferWidth,\n height: context.drawingBufferHeight,\n pixelFormat: Cesium.PixelFormat.RGBA,\n pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE\n }\n const depthTextureOptions = {\n context: context,\n width: context.drawingBufferWidth,\n height: context.drawingBufferHeight,\n pixelFormat: Cesium.PixelFormat.DEPTH_COMPONENT,\n pixelDatatype: Cesium.PixelDatatype.UNSIGNED_INT\n }\n\n this.textures = {\n segmentsColor: Util.createTexture(colorTextureOptions),\n segmentsDepth: Util.createTexture(depthTextureOptions),\n\n currentTrailsColor: Util.createTexture(colorTextureOptions),\n currentTrailsDepth: Util.createTexture(depthTextureOptions),\n\n nextTrailsColor: Util.createTexture(colorTextureOptions),\n nextTrailsDepth: Util.createTexture(depthTextureOptions)\n }\n }\n\n createRenderingFramebuffers(context) {\n this.framebuffers = {\n segments: Util.createFramebuffer(context, this.textures.segmentsColor, this.textures.segmentsDepth),\n currentTrails: Util.createFramebuffer(context, this.textures.currentTrailsColor, this.textures.currentTrailsDepth),\n nextTrails: Util.createFramebuffer(context, this.textures.nextTrailsColor, this.textures.nextTrailsDepth)\n }\n }\n\n createSegmentsGeometry(particleSystemOptions) {\n const repeatVertex = 6\n\n const typedArray: Array<number> = []\n for (let s = 0; s < particleSystemOptions.particlesTextureSize; s++) {\n for (let t = 0; t < particleSystemOptions.particlesTextureSize; t++) {\n for (let i = 0; i < repeatVertex; i++) {\n typedArray.push(s / particleSystemOptions.particlesTextureSize)\n typedArray.push(t / particleSystemOptions.particlesTextureSize)\n }\n }\n }\n const st = new Float32Array(typedArray)\n\n const normalArray: number[] = []\n const pointToUse: number[] = [-1, 0, 1]\n const offsetSign: number[] = [-1, 1]\n for (let i = 0; i < particleSystemOptions.maxParticles; i++) {\n for (let j = 0; j < pointToUse.length; j++) {\n for (let k = 0; k < offsetSign.length; k++) {\n normalArray.push(pointToUse[j])\n normalArray.push(offsetSign[k])\n normalArray.push(0)\n }\n }\n }\n const normal = new Float32Array(normalArray)\n\n const indexSize = 12 * particleSystemOptions.maxParticles\n const vertexIndexes = new Uint32Array(indexSize)\n for (let i = 0, j = 0, vertex = 0; i < particleSystemOptions.maxParticles; i++) {\n vertexIndexes[j++] = vertex + 0\n vertexIndexes[j++] = vertex + 1\n vertexIndexes[j++] = vertex + 2\n\n vertexIndexes[j++] = vertex + 2\n vertexIndexes[j++] = vertex + 1\n vertexIndexes[j++] = vertex + 3\n\n vertexIndexes[j++] = vertex + 2\n vertexIndexes[j++] = vertex + 4\n vertexIndexes[j++] = vertex + 3\n\n vertexIndexes[j++] = vertex + 4\n vertexIndexes[j++] = vertex + 3\n vertexIndexes[j++] = vertex + 5\n\n vertex += repeatVertex\n }\n const GeometryAttributes = Cesium.GeometryAttributes as any\n const geometry = new Cesium.Geometry({\n attributes: GeometryAttributes({\n st: new Cesium.GeometryAttribute({\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: st\n }),\n normal: new Cesium.GeometryAttribute({\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: normal\n })\n }),\n indices: vertexIndexes\n })\n\n return geometry\n }\n\n createRenderingPrimitives(context, particleSystemOptions, viewerParameters, particlesComputing) {\n const that = this\n this.primitives = {\n segments: new CustomPrimitive({\n commandType: 'Draw',\n attributeLocations: {\n st: 0,\n normal: 1\n },\n geometry: this.createSegmentsGeometry(particleSystemOptions),\n primitiveType: Cesium.PrimitiveType.TRIANGLES,\n uniformMap: {\n previousParticlesPosition: function () {\n return particlesComputing.particlesTextures.previousParticlesPosition\n },\n currentParticlesPosition: function () {\n return particlesComputing.particlesTextures.currentParticlesPosition\n },\n postProcessingPosition: function () {\n return particlesComputing.particlesTextures.postProcessingPosition\n },\n aspect: function () {\n return context.drawingBufferWidth / context.drawingBufferHeight\n },\n pixelSize: function () {\n return viewerParameters.pixelSize\n },\n lineWidth: function () {\n return particleSystemOptions.lineWidth\n },\n particleHeight: function () {\n return particleSystemOptions.particleHeight\n }\n },\n vertexShaderSource: new Cesium.ShaderSource({\n sources: [segmentDrawVert]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n sources: [segmentDrawFrag]\n }),\n rawRenderState: Util.createRawRenderState({\n // undefined value means let Cesium deal with it\n viewport: undefined,\n depthTest: {\n enabled: true\n },\n depthMask: true\n }),\n framebuffer: this.framebuffers.segments,\n autoClear: true\n }),\n\n trails: new CustomPrimitive({\n commandType: 'Draw',\n attributeLocations: {\n position: 0,\n st: 1\n },\n geometry: Util.getFullscreenQuad(),\n primitiveType: Cesium.PrimitiveType.TRIANGLES,\n uniformMap: {\n segmentsColorTexture: function () {\n return that.textures.segmentsColor\n },\n segmentsDepthTexture: function () {\n return that.textures.segmentsDepth\n },\n currentTrailsColor: function () {\n return that.framebuffers.currentTrails.getColorTexture(0)\n },\n trailsDepthTexture: function () {\n return that.framebuffers.currentTrails.depthTexture\n },\n fadeOpacity: function () {\n return particleSystemOptions.fadeOpacity\n }\n },\n // prevent Cesium from writing depth because the depth here should be written manually\n vertexShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_GL_POSITION_LOG_DEPTH'],\n sources: [fullscreenVert]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n sources: [trailDrawFrag]\n }),\n rawRenderState: Util.createRawRenderState({\n viewport: undefined,\n depthTest: {\n enabled: true,\n func: Cesium.DepthFunction.ALWAYS // always pass depth test for full control of depth information\n },\n depthMask: true\n }),\n framebuffer: this.framebuffers.nextTrails,\n autoClear: true,\n preExecute: function () {\n // swap framebuffers before binding\n const temp = that.framebuffers.currentTrails\n that.framebuffers.currentTrails = that.framebuffers.nextTrails\n that.framebuffers.nextTrails = temp\n\n // keep the framebuffers up to date\n that.primitives.trails.commandToExecute.framebuffer = that.framebuffers.nextTrails\n that.primitives.trails.clearCommand.framebuffer = that.framebuffers.nextTrails\n }\n }),\n\n screen: new CustomPrimitive({\n commandType: 'Draw',\n attributeLocations: {\n position: 0,\n st: 1\n },\n geometry: Util.getFullscreenQuad(),\n primitiveType: Cesium.PrimitiveType.TRIANGLES,\n uniformMap: {\n trailsColorTexture: function () {\n return that.framebuffers.nextTrails.getColorTexture(0)\n },\n trailsDepthTexture: function () {\n return that.framebuffers.nextTrails.depthTexture\n }\n },\n // prevent Cesium from writing depth because the depth here should be written manually\n vertexShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_GL_POSITION_LOG_DEPTH'],\n sources: [fullscreenVert]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n sources: [screenDrawFrag]\n }),\n rawRenderState: Util.createRawRenderState({\n viewport: undefined,\n depthTest: {\n enabled: false\n },\n depthMask: true,\n blending: {\n enabled: true\n }\n }),\n framebuffer: undefined // undefined value means let Cesium deal with it\n })\n }\n }\n}\n\nexport default ParticlesRendering\n"],"names":["Util.createTexture","Util.createFramebuffer","segmentDrawVert","segmentDrawFrag","Util.createRawRenderState","Util.getFullscreenQuad","fullscreenVert","trailDrawFrag","screenDrawFrag"],"mappings":"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"}