{"version":3,"file":"webgl-1-C0sCwOmj.mjs","names":[],"sources":["../src/player/render/webgl/webgl-1.ts"],"sourcesContent":["export const VERTEX_SHADER = () => {\n  /**\n   * 接受顶点坐标\n   * 接受纹理坐标\n   * 接受纹理坐标\n   * 接受纹理坐标\n   * 传递纹理坐标给片元着色器\n   * 设置坐标\n   * 设置纹理坐标\n   * 设置纹理坐标\n   */\n  return `attribute vec2 a_position;\n    attribute vec2 a_texCoord;\n    attribute vec2 a_alpha_texCoord;\n    varying vec2 v_alpha_texCoord;\n    varying 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\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 = texture2D(u_image${i + 1},uv);\n                          }`,\n      )\n      samplers.push(`uniform sampler2D u_image${i + 1};`)\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 = texture2D(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 `\n          precision lowp float;\n          varying vec2 v_texcoord;\n          varying vec2 v_alpha_texCoord;\n          uniform sampler2D u_image_video;\n          ${sourceUniform}\n          void main(void) {\n              vec4 bgColor = vec4(texture2D(u_image_video, v_texcoord).rgb, texture2D(u_image_video,v_alpha_texCoord).r);\n              ${sourceTexure}\n              gl_FragColor = bgColor;\n          }\n          `\n}\n"],"mappings":"AAAA,MAAa,MAWJ;;;;;;;;;;OAaI,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;yDAC8B,EAAI,EAAE;6BAExD,CACD,EAAS,KAAK,4BAA4B,EAAI,EAAE,GAAG,CAErD,EAAgB;oBACA,EAAS,KAAK;EAAK,CAAC;4CACI,EAAc,EAAS;;;wBAG3C,EAAS,KAAK,SAAS,CAAC;;;oBAI5C,EAAe;;;;;kCAKe,EAAc,EAAS,OAAO,EAAS;;;;;;;;;;;;;;;;;;;;;;oBAwBvE,MAAO;;;;;YAKG,EAAc;;;gBAGV,EAAa"}