vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 21.8 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: new 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\n const webgl2 = context?.webgl2\n\n let segmentDrawVertText = segmentDrawVert\n if (!webgl2) {\n segmentDrawVertText = segmentDrawVertText.replace('in vec2 st;', 'attribute vec2 st;')\n segmentDrawVertText = segmentDrawVertText.replace('in vec3 normal;', 'attribute vec3 normal;')\n segmentDrawVertText = segmentDrawVertText.replace(/texture\\(/g, 'texture2D(')\n }\n\n let segmentDrawFragText = segmentDrawFrag\n if (!webgl2) {\n segmentDrawFragText = segmentDrawFragText.replace(/out_FragColor/g, 'gl_FragColor')\n }\n\n let fullscreenVertText = fullscreenVert\n if (!webgl2) {\n fullscreenVertText = fullscreenVertText.replace('out vec2 textureCoordinate;', 'varying vec2 textureCoordinate;')\n fullscreenVertText = fullscreenVertText.replace('in vec3 position;', 'attribute vec3 position;')\n fullscreenVertText = fullscreenVertText.replace('in vec2 st;', 'attribute vec2 st;')\n }\n\n let trailDrawFragText = trailDrawFrag\n if (!webgl2) {\n trailDrawFragText = trailDrawFragText.replace('in vec2 textureCoordinate;', 'varying vec2 textureCoordinate;')\n trailDrawFragText = trailDrawFragText.replace(/out_FragColor/g, 'gl_FragColor')\n trailDrawFragText = trailDrawFragText.replace(/gl_FragDepth/g, 'gl_FragDepthEXT')\n trailDrawFragText = trailDrawFragText.replace(/texture\\(/g, 'texture2D(')\n }\n\n let screenDrawFragText = screenDrawFrag\n if (!webgl2) {\n screenDrawFragText = screenDrawFragText.replace('in vec2 textureCoordinate;', 'varying vec2 textureCoordinate;')\n screenDrawFragText = screenDrawFragText.replace(/out_FragColor/g, 'gl_FragColor')\n screenDrawFragText = screenDrawFragText.replace(/texture\\(/g, 'texture2D(')\n }\n\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: [segmentDrawVertText]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n sources: [segmentDrawFragText]\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: [fullscreenVertText]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n sources: [trailDrawFragText]\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: [fullscreenVertText]\n }),\n fragmentShaderSource: new Cesium.ShaderSource({\n defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n sources: [screenDrawFragText]\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","fullscreenVert","trailDrawFrag","screenDrawFrag","Util.createRawRenderState","Util.getFullscreenQuad"],"mappings":"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"}