{"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    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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"}