/**
 * Read back the baked octahedral atlas (3 MRT textures: diffuse+alpha,
 * normal+depth, orm) and convert every covered pixel into one CPU sample:
 * world-space position, normal, albedo, ORM.
 *
 * This is the noisy point-cloud the voxelisation step bins into a sparse
 * grid. The atlas captures the surface from many directions, so the same
 * surface point shows up multiple times — that's a feature, not a bug:
 * voxel averaging cancels per-pixel noise and per-frame quantisation
 * error, and surfaces visible from many angles (the ones that matter for
 * impostor quality) get the most votes.
 *
 * @param {object} params
 * @param {ImpostorDescription} params.impostor    bake output from ImpostorBaker
 * @param {THREE.WebGLRenderer} params.renderer
 * @returns {{samples: Float32Array, sample_count: number}}
 */
export function read_atlas_to_samples({ impostor, renderer }: {
    impostor: ImpostorDescription;
    renderer: THREE.WebGLRenderer;
}): {
    samples: Float32Array;
    sample_count: number;
};
/**
 * Layout per output sample (Float32Array, see ATLAS_SAMPLE_STRIDE):
 *
 * | offset | size | content                                    |
 * |--------|------|--------------------------------------------|
 * |   0    |   3  | position.xyz (object space, around offset) |
 * |   3    |   3  | normal.xyz   (object space, unit length)   |
 * |   6    |   3  | albedo.rgb   (linear, no alpha)            |
 * |   9    |   3  | orm (occlusion, roughness, metalness)      |
 *
 * @type {number}
 */
export const ATLAS_SAMPLE_STRIDE: number;
//# sourceMappingURL=read_atlas_to_samples.d.ts.map