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#include \"packHalfPS\"\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        #ifdef GSPLAT_COLOR_UINT\n            pcFragColor0 = uvec4(0u);\n        #else\n            pcFragColor0 = vec4(0.0);\n        #endif\n        #ifndef GSPLAT_COLOR_ONLY\n            pcFragColor1 = uvec4(0u);\n            pcFragColor2 = uvec2(0u);\n        #endif\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 center in local space\n        vec3 modelCenter = readCenter(source);\n\n        // compute world-space center for storage\n        vec3 worldCenter = (matrix_model * 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(matrix_model);\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        #ifdef GSPLAT_COLOR_UINT\n            // Pack RGBA as 4x half-float (16-bit) values for RGBA16U format\n            uint packed_rg = packHalf2x16(color.rg);\n            uint packed_ba = packHalf2x16(color.ba);\n            pcFragColor0 = uvec4(\n                packed_rg & 0xFFFFu,    // R as half\n                packed_rg >> 16u,       // G as half\n                packed_ba & 0xFFFFu,    // B as half\n                packed_ba >> 16u        // A as half\n            );\n        #else\n            pcFragColor0 = color;\n        #endif\n        #ifndef GSPLAT_COLOR_ONLY\n            pcFragColor1 = uvec4(floatBitsToUint(worldCenter.x), floatBitsToUint(worldCenter.y), floatBitsToUint(worldCenter.z), packHalf2x16Safe(vec2(covA.z, covB.z)));\n            pcFragColor2 = uvec2(packHalf2x16Safe(covA.xy), packHalf2x16Safe(covB.xy));\n        #endif\n    }\n}\n";
export default _default;
