{"version":3,"file":"webgl-2-XcmvbJCo.cjs","names":[],"sources":["../src/player/render/webgl/webgl-2.ts"],"sourcesContent":["export const VERTEX_SHADER = () => {\n  /**\n   * 声明 WEBGL\n   * 接受顶点坐标\n   * 接受纹理坐标\n   * 接受纹理坐标\n   * 接受纹理坐标\n   * 传递纹理坐标给片元着色器\n   * 设置坐标\n   * 设置纹理坐标\n   * 设置纹理坐标\n   */\n  return `#version 300 es\n    in vec2 a_position;\n    in vec2 a_texCoord;\n    in vec2 a_alpha_texCoord;\n    out vec2 v_alpha_texCoord;\n    out vec2 v_texcoord;\n    uniform vec2 u_scale;\n    void main(void) {\n      gl_Position = vec4(u_scale * a_position, 0.0, 1.0);\n      v_texcoord = a_texCoord;\n      v_alpha_texCoord = a_alpha_texCoord;\n    }\n    `\n}\n\nexport const FRAGMENT_SHADER = (gl: WebGLRenderingContext | WebGL2RenderingContext, PER_SIZE = 9, effectCount = 0) => {\n  //片断着色器没有默认精度，所以我们需要设置一个精度\n  const textureSize = Math.min(effectCount, gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS) - 1)\n  // const textureSize =0\n  let sourceTexure = ''\n  let sourceUniform = ''\n  if (textureSize > 0) {\n    const imgColor = []\n    const samplers = []\n    for (let i = 0; i < textureSize; i++) {\n      imgColor.push(\n        `if(ndx == ${i + 1}){\n                          color = texture(u_image${i + 1},uv);\n                      }`,\n      )\n      samplers.push(`uniform sampler2D u_image${i + 1};`)\n    }\n\n    sourceUniform = `\n              ${samplers.join('\\n')}\n              uniform float image_pos[${textureSize * PER_SIZE}];\n              vec4 getSampleFromArray(int ndx, vec2 uv) {\n                  vec4 color;\n                  ${imgColor.join(' else ')}\n                  return color;\n              }\n              `\n    sourceTexure = `\n              vec4 srcColor,maskColor;\n              vec2 srcTexcoord,maskTexcoord;\n              int srcIndex;\n              float x1,x2,y1,y2,mx1,mx2,my1,my2; //显示的区域\n              for(int i=0;i<${textureSize * PER_SIZE};i+= ${PER_SIZE}){\n                  if ((int(image_pos[i]) > 0)) {\n                    srcIndex = int(image_pos[i]);\n                      x1 = image_pos[i+1];\n                      x2 = image_pos[i+2];\n                      y1 = image_pos[i+3];\n                      y2 = image_pos[i+4];\n                      mx1 = image_pos[i+5];\n                      mx2 = image_pos[i+6];\n                      my1 = image_pos[i+7];\n                      my2 = image_pos[i+8];\n                      if (v_texcoord.s>x1 && v_texcoord.s<x2 && v_texcoord.t>y1 && v_texcoord.t<y2) {\n                          srcTexcoord = vec2((v_texcoord.s-x1)/(x2-x1),(v_texcoord.t-y1)/(y2-y1));\n                           maskTexcoord = vec2(mx1+srcTexcoord.s*(mx2-mx1),my1+srcTexcoord.t*(my2-my1));\n                           srcColor = getSampleFromArray(srcIndex,srcTexcoord);\n                           maskColor = texture(u_image_video, maskTexcoord);\n                           srcColor.a = srcColor.a*(maskColor.r);\n                           bgColor = vec4(srcColor.rgb*srcColor.a,srcColor.a) + (1.0-srcColor.a)*bgColor;\n\n                      }\n                  }\n              }\n              `\n  }\n  return `#version 300 es\n      precision lowp float;\n      in vec2 v_texcoord;\n      in vec2 v_alpha_texCoord;\n      out vec4 fragColor;\n      uniform sampler2D u_image_video;\n      ${sourceUniform}\n      void main(void) {\n          vec4 bgColor = vec4(texture(u_image_video, v_texcoord).rgb, texture(u_image_video,v_alpha_texCoord).r);\n          ${sourceTexure}\n          fragColor = bgColor;\n      }\n      `\n}\n"],"mappings":"AAAA,MAAa,MAYJ;;;;;;;;;;;;MAeI,GAAmB,EAAoD,EAAW,EAAG,EAAc,IAAM,CAEpH,IAAM,EAAc,KAAK,IAAI,EAAa,EAAG,aAAa,EAAG,wBAAwB,CAAG,EAAE,CAEtF,EAAe,GACf,EAAgB,GACpB,GAAI,EAAc,EAAG,CACnB,IAAM,EAAW,EAAE,CACb,EAAW,EAAE,CACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAa,IAC/B,EAAS,KACP,aAAa,EAAI,EAAE;mDACwB,EAAI,EAAE;yBAElD,CACD,EAAS,KAAK,4BAA4B,EAAI,EAAE,GAAG,CAGrD,EAAgB;gBACJ,EAAS,KAAK;EAAK,CAAC;wCACI,EAAc,EAAS;;;oBAG3C,EAAS,KAAK,SAAS,CAAC;;;gBAIxC,EAAe;;;;;8BAKW,EAAc,EAAS,OAAO,EAAS;;;;;;;;;;;;;;;;;;;;;;gBAwBnE,MAAO;;;;;;QAMD,EAAc;;;YAGV,EAAa"}