declare const _default: "\n#if SH_BANDS > 0\nvar packedShN: texture_2d<f32>;\n\nuniform shN_mins: f32;\nuniform shN_maxs: f32;\n\nfn readSHTexel(u: i32, v: i32) -> half3 {\n    return mix(half3(half(uniform.shN_mins)), half3(half(uniform.shN_maxs)), half3(unpack111110(pack8888(textureLoad(packedShN, vec2i(u, v), 0)))));\n}\n\nfn readSHData(sh: ptr<function, array<half3, SH_COEFFS>>, scale: ptr<function, f32>) {\n    // extract spherical harmonics palette index\n    let t = vec2i(packedSample.xy & vec2u(255u));\n    let n = t.x + t.y * 256;\n    let u = (n % 64) * SH_COEFFS;\n    let v = n / 64;\n\n    // read consecutive texels (unrolled to avoid Dawn's forward progress volatile wrapper)\n    sh[0] = readSHTexel(u, v);\n    sh[1] = readSHTexel(u + 1, v);\n    sh[2] = readSHTexel(u + 2, v);\n    #if SH_BANDS > 1\n        sh[3] = readSHTexel(u + 3, v);\n        sh[4] = readSHTexel(u + 4, v);\n        sh[5] = readSHTexel(u + 5, v);\n        sh[6] = readSHTexel(u + 6, v);\n        sh[7] = readSHTexel(u + 7, v);\n    #endif\n    #if SH_BANDS > 2\n        sh[8]  = readSHTexel(u + 8, v);\n        sh[9]  = readSHTexel(u + 9, v);\n        sh[10] = readSHTexel(u + 10, v);\n        sh[11] = readSHTexel(u + 11, v);\n        sh[12] = readSHTexel(u + 12, v);\n        sh[13] = readSHTexel(u + 13, v);\n        sh[14] = readSHTexel(u + 14, v);\n    #endif\n\n    *scale = 1.0;\n}\n#endif\n";
export default _default;
