declare const _default: "\n\n#define GSPLAT_CENTER_NOPROJ\n\n// pre-computed model matrix decomposition (declared before includes, used by\n// gsplatWorkBufferGeometryPS)\nuniform vec3 model_scale;\nuniform vec4 model_rotation;  // (x,y,z,w) format\n\n#include \"gsplatHelpersVS\"\n#include \"gsplatFormatVS\"\n#include \"gsplatStructsVS\"\n#include \"gsplatDeclarationsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatReadVS\"\n#include \"gsplatWorkBufferGeometryPS\"\n#include \"gsplatWorkBufferOutputVS\"\n#include \"gsplatWriteVS\"\n#include \"gsplatModifyVS\"\n\n// Packed sub-draw params: (sourceBase, colStart, rowWidth, rowStart)\nflat varying ivec4 vSubDraw;\n\nuniform vec3 uColorMultiply;\n\n#ifdef GSPLAT_ID\n    uniform uint uId;\n#endif\n\nvoid main(void) {\n    // Compute source index from packed sub-draw varying: (sourceBase, colStart, rowWidth, rowStart)\n    int localRow = int(gl_FragCoord.y) - vSubDraw.w;\n    int localCol = int(gl_FragCoord.x) - vSubDraw.y;\n    uint originalIndex = uint(vSubDraw.x + localRow * vSubDraw.z + localCol);\n\n    // Initialize global splat for format read functions\n    setSplat(originalIndex);\n\n    // World-space geometry to store. Rotation/scale default to identity and are only computed on\n    // the full-render path; under GSPLAT_COLOR_ONLY they are ignored by writeSplat (DCE'd).\n    vec3 worldCenter;\n    vec4 worldRotation = vec4(0.0, 0.0, 0.0, 1.0);\n    vec3 worldScale = vec3(1.0);\n    #if SH_BANDS > 0\n        vec3 dir;   // model-space view direction\n    #endif\n\n    #ifdef GSPLAT_WORKBUFFER_GEOMETRY\n\n        // Color-only update sourcing geometry from previously written work buffer data at this\n        // destination pixel. The stored center already includes the model transform and\n        // modifySplatCenter / modifySplatRotationScale, so neither is re-applied here.\n        initWorkBufferGeometry(ivec2(gl_FragCoord.xy));\n        worldCenter = workBufferWorldCenter();\n\n        #if SH_BANDS > 0\n            // model-space view direction (matches the source path up to non-uniform model scale)\n            dir = normalize(quatRotateInv(model_rotation, worldCenter - uCameraPosition));\n        #endif\n\n    #else\n\n        // read center in local space\n        vec3 modelCenter = getCenter();\n\n        // compute world-space center for storage\n        worldCenter = (matrix_model * vec4(modelCenter, 1.0)).xyz;\n        SplatCenter center;\n        initCenter(modelCenter, center);\n\n        // Get source rotation and scale\n        // getRotation() returns (w,x,y,z) format, convert to (x,y,z,w) for quatMul\n        vec4 srcRotation = getRotation().yzwx;\n        vec3 srcScale = getScale();\n\n        // Combine: world = model * source (both in x,y,z,w format)\n        worldRotation = quatMul(model_rotation, srcRotation);\n        // Ensure w is positive so sqrt() reconstruction works correctly\n        // (quaternions q and -q represent the same rotation)\n        if (worldRotation.w < 0.0) {\n            worldRotation = -worldRotation;\n        }\n        worldScale = model_scale * srcScale;\n\n        // Apply custom center modification\n        vec3 originalCenter = worldCenter;\n        modifySplatCenter(worldCenter);\n\n        // Apply custom rotation/scale modification\n        modifySplatRotationScale(originalCenter, worldCenter, worldRotation, worldScale);\n\n        #if SH_BANDS > 0\n            // calculate the model-space view direction\n            dir = normalize(center.view * mat3(center.modelView));\n        #endif\n\n    #endif\n\n    // read color\n    vec4 color = getColor();\n\n    // evaluate spherical harmonics\n    #if SH_BANDS > 0\n        // read sh coefficients\n        vec3 sh[SH_COEFFS];\n        float scale;\n        readSHData(sh, scale);\n\n        // evaluate\n        color.xyz += evalSH(sh, dir) * scale;\n    #endif\n\n    // Apply custom color modification\n    modifySplatColor(worldCenter, color);\n\n    color.xyz *= uColorMultiply;\n\n    // write color + transform using format-specific encoding (rotation/scale ignored under\n    // GSPLAT_COLOR_ONLY)\n    writeSplat(worldCenter, worldRotation, worldScale, color);\n\n    #ifdef GSPLAT_ID\n        writePcId(uvec4(uId, 0u, 0u, 0u));\n    #endif\n}\n";
export default _default;
