declare const _default: "\n\n#define GSPLAT_CENTER_NOPROJ\n\n#include \"gsplatStructsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n\nuniform mat4 uTransform;\n\nuniform int uStartLine;      // Start row in destination texture\nuniform int uViewportWidth;  // Width of the destination viewport in pixels\n\n#ifdef GSPLAT_LOD\n    // LOD intervals texture\n    uniform usampler2D uIntervalsTexture;\n#endif\n\nuniform vec3 uColorMultiply;\n\n// number of splats\nuniform int uActiveSplats;\n\nvoid main(void) {\n    // local fragment coordinates (within the viewport)\n    ivec2 localFragCoords = ivec2(int(gl_FragCoord.x), int(gl_FragCoord.y) - uStartLine);\n\n    // linear index of the splat\n    int targetIndex = localFragCoords.y * uViewportWidth + localFragCoords.x;\n    if (targetIndex >= uActiveSplats) {\n\n        // Out of bounds: write zeros\n        pcFragColor0 = vec4(0.0);\n        pcFragColor1 = vec4(0.0);\n        pcFragColor2 = vec4(0.0);\n        pcFragColor3 = vec4(0.0);\n\n    } else {\n\n        #ifdef GSPLAT_LOD\n            // Use intervals texture to remap target index to source index\n            int intervalsSize = int(textureSize(uIntervalsTexture, 0).x);\n            ivec2 intervalUV = ivec2(targetIndex % intervalsSize, targetIndex / intervalsSize);\n            uint originalIndex = texelFetch(uIntervalsTexture, intervalUV, 0).r;\n        #else\n            uint originalIndex = uint(targetIndex);\n        #endif\n        \n        // source texture size\n        #if defined(GSPLAT_SOGS_DATA) || defined(GSPLAT_COMPRESSED_DATA)\n            uint srcSize = uint(textureSize(packedTexture, 0).x);\n        #else\n            uint srcSize = uint(textureSize(splatColor, 0).x);\n        #endif\n        \n        // Create SplatSource used to sample splat data textures\n        SplatSource source;\n        source.id = uint(originalIndex);\n        source.uv = ivec2(source.id % srcSize, source.id / srcSize);\n\n        // read and transform center\n        vec3 modelCenter = readCenter(source);\n        modelCenter = (uTransform * vec4(modelCenter, 1.0)).xyz;\n        SplatCenter center;\n        initCenter(modelCenter, center);\n\n        // read and transform covariance\n        vec3 covA, covB;\n        readCovariance(source, covA, covB);\n\n        mat3 C = mat3(\n            covA.x, covA.y, covA.z,\n            covA.y, covB.x, covB.y,\n            covA.z, covB.y, covB.z\n        );\n        mat3 linear = mat3(uTransform);\n        mat3 Ct = linear * C * transpose(linear);\n        covA = Ct[0];\n        covB = vec3(Ct[1][1], Ct[1][2], Ct[2][2]);\n\n        // read color\n        vec4 color = readColor(source);\n\n        // evaluate spherical harmonics\n        #if SH_BANDS > 0\n            // calculate the model-space view direction\n            vec3 dir = normalize(center.view * mat3(center.modelView));\n\n            // read sh coefficients\n            vec3 sh[SH_COEFFS];\n            float scale;\n            readSHData(source, sh, scale);\n\n            // evaluate\n            color.xyz += evalSH(sh, dir) * scale;\n        #endif\n\n        color.xyz *= uColorMultiply;\n\n        // write out results\n        pcFragColor0 = color;\n        pcFragColor1 = vec4(modelCenter, 1.0);\n        pcFragColor2 = vec4(covA, 1.0);\n        pcFragColor3 = vec4(covB, 1.0);\n    }\n}\n";
export default _default;
