{"version":3,"file":"DebugCameraPrimitive.mjs","sources":["../../../../../packages/shared/src/DebugCameraPrimitive.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-17 22:17:16\n * @LastEditTime: 2023-03-09 18:00:52\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\DebugCameraPrimitive.ts\n */\n\nconst attributeLocations = {\n  position: 0,\n  normal: 1\n}\n\nclass DebugCameraPrimitive {\n  modelMatrix: Cesium.Matrix4\n  fovH: number\n  fovV: number\n  segmentH: number\n  segmentV: number\n  subSegmentH: number\n  subSegmentV: number\n  _faceColor: Cesium.Color\n  _lineColor: Cesium.Color\n  show: boolean\n  _modelMatrix: Cesium.Matrix4\n  _fovH: number\n  _fovV: number\n  _segmentH: number\n  _segmentV: number\n  _subSegmentH: number\n  _subSegmentV: number\n  _boundingSphere: Cesium.BoundingSphere\n  _initBoundingSphere: any\n  _command: any\n  _lineCommand: any\n  _shaderprogram: any\n  constructor(options) {\n    const { defaultValue, Matrix4, Math: CesiumMath, Color, BoundingSphere } = Cesium\n    this.modelMatrix = defaultValue(options.modelMatrix, new Matrix4())\n    this.fovH = defaultValue(options.fovH, CesiumMath.toRadians(60))\n    this.fovV = defaultValue(options.fovV, CesiumMath.toRadians(30))\n    this.segmentH = defaultValue(options.segmentH, 16)\n    this.segmentV = defaultValue(options.segmentV, 8)\n    this.subSegmentH = defaultValue(options.subSegmentH, 3)\n    this.subSegmentV = defaultValue(options.subSegmentV, 3)\n    this._faceColor = defaultValue(options.faceColor, new Color(1, 1, 1, 0.1))\n    this._lineColor = defaultValue(options.lineColor, new Color(1, 1, 1, 0.4))\n    this.show = defaultValue(options.show, true)\n    this._modelMatrix = Matrix4.clone(Matrix4.IDENTITY)\n    this._fovH = 0\n    this._fovV = 0\n    this._segmentH = 1\n    this._segmentV = 1\n    this._subSegmentH = 1\n    this._subSegmentV = 1\n    this._boundingSphere = new BoundingSphere()\n    this._initBoundingSphere = undefined\n    this._command = undefined\n  }\n\n  get faceColor() {\n    return this._faceColor\n  }\n  set faceColor(e) {\n    this._faceColor = e\n  }\n\n  get lineColor() {\n    return this._lineColor\n  }\n  set lineColor(e) {\n    this._lineColor = e\n  }\n\n  update(frameState) {\n    if (this.show && frameState.passes.render) {\n      const { clone, Matrix4, defined, BoundingSphere } = Cesium\n\n      ;(this.fovH === this._fovH &&\n        this.fovV === this._fovV &&\n        this.segmentH === this._segmentH &&\n        this.segmentV === this._segmentV &&\n        this.subSegmentH === this._subSegmentH &&\n        this.subSegmentV === this._subSegmentV) ||\n        ((this._fovH = this.fovH),\n        (this._fovV = this.fovV),\n        (this._segmentH = this.segmentH),\n        (this._segmentV = this.segmentV),\n        (this._subSegmentH = this.subSegmentH),\n        (this._subSegmentV = this.subSegmentV),\n        (this._modelMatrix = clone(Matrix4.IDENTITY)),\n        this._destroyVideoMemory())\n\n      if (\n        this.fovH !== this._fovH &&\n        this.fovV !== this._fovV &&\n        this.segmentH !== this._segmentH &&\n        this.segmentV !== this._segmentV &&\n        this.subSegmentH !== this._subSegmentH &&\n        this.subSegmentV !== this._subSegmentV\n      ) {\n        this._fovH = this.fovH\n        this._fovV = this.fovV\n        this._segmentH = this.segmentH\n        this._segmentV = this.segmentV\n        this._subSegmentH = this.subSegmentH\n        this._subSegmentV = this.subSegmentV\n        this._modelMatrix = clone(Matrix4.IDENTITY)\n        this._destroyVideoMemory()\n      }\n\n      if (!defined(this._command)) {\n        this._createCommand(frameState.context)\n      }\n      if (!Matrix4.equals(this.modelMatrix, this._modelMatrix)) {\n        Matrix4.clone(this.modelMatrix, this._modelMatrix)\n        this._command.modelMatrix = Matrix4.IDENTITY\n        this._command.modelMatrix = this._modelMatrix\n        this._command.boundingVolume = BoundingSphere.transform(this._initBoundingSphere, this._modelMatrix, this._boundingSphere)\n        this._lineCommand.modelMatrix = Matrix4.IDENTITY\n        this._lineCommand.modelMatrix = this._modelMatrix\n        this._lineCommand.boundingVolume = BoundingSphere.transform(this._initBoundingSphere, this._modelMatrix, this._boundingSphere)\n      }\n\n      this._command && frameState.commandList.push(this._command)\n      this._lineCommand && frameState.commandList.push(this._lineCommand)\n    }\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    this._destroyVideoMemory()\n    Cesium.destroyObject(this)\n  }\n\n  _createCommand(context) {\n    const {\n      Appearance,\n      RenderState,\n      ShaderSource,\n      ShaderProgram,\n      BufferUsage,\n      IndexDatatype,\n      VertexArray,\n      ComponentDatatype,\n      BoundingSphere,\n      DrawCommand,\n      PrimitiveType,\n      Pass,\n      Matrix4\n    } = Cesium\n    const that = this\n    const segmentHLength = this._subSegmentH * this._segmentH\n    const segmentVLength = this._subSegmentV * this._segmentV\n    const positionTypedArray1 = createTypedArray(this._fovH, this._fovV, segmentHLength, segmentVLength)\n    const positionTypedArray2 = createTypedArray(this._fovH, this._fovV, segmentHLength, segmentVLength)\n    const indexTypedArray1 = generateIndices1(segmentHLength, segmentVLength)\n    const indexTypedArray2 = generateIndices2(this._segmentH, this._segmentV, this._subSegmentH, this._subSegmentV)\n    const appearance = Appearance['getDefaultRenderState'](true, false, undefined)\n    const renderState = RenderState.fromCache(appearance)\n    const webgl2 = context.webgl2\n    const vs = new ShaderSource({\n      sources: [\n        `\n        // 使用double类型的position进行计算\n        // attribute vec3 position3DHigh;\n        // attribute vec3 position3DLow;\n        ${webgl2 ? 'in' : 'attribute'} vec3 position;\n        ${webgl2 ? 'in' : 'attribute'} vec3 normal;\n        // attribute vec2 st;\n        // attribute float batchId;\n        ${webgl2 ? 'out' : 'varying'} vec3 v_positionEC;\n        ${webgl2 ? 'out' : 'varying'} vec3 v_normalEC;\n        // varying vec2 v_st;\n        void main()\n          {\n            // 使用double类型的position进行计算\n            // vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow);\n            // v_positionEC = (czm_modelViewRelativeToEye * p).xyz;\n            // position in eye coordinates\n            // v_normalEC = czm_normal * normal;\n            // normal in eye coordinates\n            // v_st = st;\n            // gl_Position = czm_modelViewProjectionRelativeToEye * p;\n            v_positionEC = (czm_modelView * vec4(position, 1.0)).xyz;\n            // position in eye coordinates\n            v_normalEC = czm_normal * normal;\n            // normal in eye coordinates\n            // v_st = st;\n            gl_Position = czm_modelViewProjection * vec4(position, 1.0);\n          }\n        `\n      ]\n    })\n    const fs = new ShaderSource({\n      sources: [\n        `\n        ${webgl2 ? 'in' : 'varying'} vec3 v_positionEC;\n        ${webgl2 ? 'in' : 'varying'} vec3 v_normalEC;\n        // varying vec2 v_st;\n        // uniform sampler2D myImage;\n        uniform vec4 vcColor;\n        void main()\n        {\n          vec3 positionToEyeEC = -v_positionEC;\n          vec3 normalEC = normalize(v_normalEC);\n          #ifdef FACE_FORWARD\n          normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n          #endif\n          czm_materialInput materialInput;\n          materialInput.normalEC = normalEC;\n          materialInput.positionToEyeEC = positionToEyeEC;\n          // materialInput.st = v_st;\n          //czm_material material = czm_getMaterial(materialInput);\n          czm_material material = czm_getDefaultMaterial(materialInput);\n          // material.diffuse = texture2D(myImage, materialInput.st).rgb;\n          material.diffuse = vcColor.rgb;\n          material.alpha = vcColor.a;\n          #ifdef FLAT\n          ${webgl2 ? 'out_FragColor' : 'gl_FragColor'} = vec4(material.diffuse + material.emission, material.alpha);\n          #else\n          ${webgl2 ? 'out_FragColor' : 'gl_FragColor'} = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n          #endif\n        }\n        `\n      ]\n    })\n\n    const uniformsFace = {\n      vcColor: function () {\n        return that._faceColor\n      }\n    }\n\n    const uniformsLine = {\n      vcColor: function () {\n        return that._lineColor\n      }\n    }\n\n    const shaderProgram = ShaderProgram.fromCache({\n      context: context,\n      vertexShaderSource: vs,\n      fragmentShaderSource: fs,\n      attributeLocations: attributeLocations\n    })\n\n    this._shaderprogram = shaderProgram\n    const positionBuffer1 = Cesium['Buffer'].createVertexBuffer({\n      context: context,\n      typedArray: positionTypedArray1,\n      usage: BufferUsage.STATIC_DRAW\n    })\n    const positionBuffer2 = Cesium['Buffer'].createVertexBuffer({\n      context: context,\n      typedArray: positionTypedArray2,\n      usage: BufferUsage.STATIC_DRAW\n    })\n\n    const indexBuffer1 = Cesium['Buffer'].createIndexBuffer({\n      context: context,\n      typedArray: indexTypedArray1,\n      usage: BufferUsage.STATIC_DRAW,\n      indexDatatype: IndexDatatype.UNSIGNED_SHORT\n    })\n\n    const indexBuffer2 = Cesium['Buffer'].createIndexBuffer({\n      context: context,\n      typedArray: indexTypedArray2,\n      usage: BufferUsage.STATIC_DRAW,\n      indexDatatype: IndexDatatype.UNSIGNED_SHORT\n    })\n\n    const textureVA1 = new VertexArray({\n      context: context,\n      attributes: [\n        {\n          index: 0,\n          vertexBuffer: positionBuffer1,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        },\n        {\n          index: 1,\n          vertexBuffer: positionBuffer2,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        }\n      ],\n      indexBuffer: indexBuffer1\n    })\n\n    const textureVA2 = new VertexArray({\n      context: context,\n      attributes: [\n        {\n          index: 0,\n          vertexBuffer: positionBuffer1,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        },\n        {\n          index: 1,\n          vertexBuffer: positionBuffer2,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        }\n      ],\n      indexBuffer: indexBuffer2\n    })\n\n    this._initBoundingSphere = BoundingSphere.fromVertices(positionTypedArray1 as any)\n    this._command = new DrawCommand({\n      vertexArray: textureVA1,\n      primitiveType: PrimitiveType.TRIANGLES,\n      renderState: renderState,\n      shaderProgram: shaderProgram,\n      uniformMap: uniformsFace,\n      owner: this,\n      pass: Pass.TRANSLUCENT,\n      modelMatrix: new Matrix4(),\n      boundingVolume: new BoundingSphere(),\n      cull: true\n    })\n\n    this._lineCommand = new DrawCommand({\n      vertexArray: textureVA2,\n      primitiveType: PrimitiveType.LINES,\n      renderState: renderState,\n      shaderProgram: shaderProgram,\n      uniformMap: uniformsLine,\n      owner: this,\n      pass: Pass.TRANSLUCENT,\n      modelMatrix: new Matrix4(),\n      boundingVolume: new BoundingSphere(),\n      cull: true\n    })\n  }\n\n  _destroyVideoMemory() {\n    const { defined } = Cesium\n    this._shaderprogram = this._shaderprogram && this._shaderprogram.destroy()\n    if (defined(this._command)) {\n      this._command.vertexArray.destroy()\n      this._command = undefined\n    }\n    if (defined(this._lineCommand)) {\n      this._lineCommand.vertexArray.destroy()\n      this._lineCommand = undefined\n    }\n  }\n}\n\nfunction createTypedArray(fovH: number, fovV: number, segmentHLength: number, segmentVLength: number) {\n  const buffer = new Float32Array((segmentHLength + 1) * (segmentVLength + 1) * 3 + 3)\n  for (let i = 0; i < segmentHLength + 1; i++) {\n    for (let j = 0; j < segmentVLength + 1; j++) {\n      const width = fovH * (i / segmentHLength - 0.5)\n      const height = fovV * (j / segmentVLength - 0.5)\n      const positions = [Math.cos(-width) * Math.cos(-height), Math.sin(-width) * Math.cos(-height), Math.sin(height)]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 0] = positions[0]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 1] = positions[1]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 2] = positions[2]\n    }\n  }\n\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 0] = 0\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 1] = 0\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 2] = 0\n  return buffer\n}\n\nfunction generateIndices1(segmentHLength, segmentVLength) {\n  const vertexCount = segmentHLength * segmentVLength * 6\n  const indices = new Uint16Array(vertexCount)\n  for (let i = 0; i < segmentHLength; i++) {\n    for (let j = 0; j < segmentVLength; j++) {\n      const a = j * (1 + segmentHLength) + i\n      const b = j * (1 + segmentHLength) + i + 1\n      const c = (j + 1) * (1 + segmentHLength) + i\n      const d = (j + 1) * (1 + segmentHLength) + i + 1\n      const quadIndex = 6 * (j * segmentHLength + i)\n      indices[0 + quadIndex] = a\n      indices[1 + quadIndex] = b\n      indices[2 + quadIndex] = d\n      indices[3 + quadIndex] = a\n      indices[4 + quadIndex] = d\n      indices[5 + quadIndex] = c\n    }\n  }\n\n  return indices\n}\n\nfunction generateIndices2(segmentH, segmentV, subSegmentH, subSegmentV) {\n  const segmentHLength = segmentH * subSegmentH\n  const segmentVLength = segmentV * subSegmentV\n  const indices = new Uint16Array((segmentH + 1) * (2 * segmentVLength) + (segmentV + 1) * (2 * segmentHLength) + 8)\n  for (let i = 0; i < segmentH + 1; i++) {\n    for (let j = 0; j < segmentVLength; j++) {\n      const index = i * subSegmentH\n      indices[2 * (i * segmentVLength + j) + 0] = j * (1 + segmentHLength) + index\n      indices[2 * (i * segmentVLength + j) + 1] = (j + 1) * (1 + segmentHLength) + index\n    }\n  }\n\n  const size = (segmentH + 1) * (2 * segmentVLength)\n  for (let i = 0; i < segmentV; i++) {\n    for (let j = 0; j < segmentHLength; j++) {\n      const index = i * subSegmentV\n      indices[size + 2 * (j + i * segmentHLength)] = index * (1 + segmentHLength) + j\n      indices[size + 2 * (j + i * segmentHLength) + 1] = index * (1 + segmentHLength) + j + 1\n    }\n  }\n\n  const index = (segmentH + 1) * (2 * segmentVLength) + (segmentV + 1) * (2 * segmentHLength)\n  indices[index] = 0\n  indices[index + 1] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 2] = segmentHLength\n  indices[index + 3] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 4] = (1 + segmentHLength) * segmentVLength\n  indices[index + 5] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 6] = (1 + segmentHLength) * (1 + segmentVLength) - 1\n  indices[index + 7] = (1 + segmentHLength) * (1 + segmentVLength)\n\n  return indices\n}\n\nexport default DebugCameraPrimitive\n"],"names":["index"],"mappings":"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"}