Const FragmentShader
FragmentShader: string = `uniform sampler2D mTextures[${TEXT_MAX}];uniform int uvMax;varying vec3 vUv;uniform bool black;int modi(int x, int y) {return x - y * (x / y);}float modf(float x, float y){return x - y * float(int(x / y));}int getInt(float value) {float m = modf(value, 1.0);if(m < 1.0 && m > 0.6){return int(value) + 1;}else{return int(value);}}vec4 getSampleFromArray(sampler2D mTextures[${TEXT_MAX}], int index, int count, vec2 uv){if(index < count){if(index == 0){return texture2D(mTextures[0], uv);}if(index == 1){return texture2D(mTextures[1], uv);}if(index == 2){return texture2D(mTextures[2], uv);}if(index == 3){return texture2D(mTextures[3], uv);}if(index == 4){return texture2D(mTextures[4], uv);}if(index == 5){return texture2D(mTextures[5], uv);}if(index == 6){return texture2D(mTextures[6], uv);}if(index == 7){return texture2D(mTextures[7], uv);}if(index == 8){return texture2D(mTextures[8], uv);}if(index == 9){return texture2D(mTextures[9], uv);}if(index == 10){return texture2D(mTextures[10], uv);}if(index == 11){return texture2D(mTextures[11], uv);}if(index == 12){return texture2D(mTextures[12], uv);}if(index == 13){return texture2D(mTextures[13], uv);}if(index == 14){return texture2D(mTextures[14], uv);}if(index == 15){return texture2D(mTextures[15], uv);}}return vec4(0.0, 0.0, 0.0, 1.0);}vec2 getUv(vec2 uvs, int pos){float min2 = 1.0 / 4096.0;float max2 = 1.0-min2;uvs = clamp(uvs, min2, max2);vec2 tuv = uvs / ${TEXT_SEGMENT}.0;int x = modi(pos, ${TEXT_SEGMENT});int y = pos / ${TEXT_SEGMENT};float segment = 1.0 / float(${TEXT_SEGMENT});vec2 base = vec2(float(x)*segment, float(y)*segment);return tuv + base;}void main(){vec2 tuv = vUv.xy;int indexPos = getInt(vUv.z);int index = indexPos / 100;int pos = modi(indexPos, 100);tuv = getUv(tuv, pos);gl_FragColor = getSampleFromArray(mTextures, index, uvMax, tuv);}`
六面配置