import { Device, Framebuffer } from '@luma.gl/core'; import { ShaderInputs } from "../../shader-inputs.js"; import { pickingUniforms } from "./picking-uniforms.js"; declare const COLOR_PICKING_MAX_OBJECT_INDEX = 16777214; declare const COLOR_PICKING_MAX_BATCH_INDEX = 254; /** Information about picked object */ export type PickInfo = { batchIndex: number | null; objectIndex: number | null; }; export type PickingMode = 'auto' | 'index' | 'color'; export type ResolvedPickingMode = Exclude; /** @deprecated Use `PickingMode`. */ export type PickingBackend = PickingMode; /** @deprecated Use `ResolvedPickingMode`. */ export type ResolvedPickingBackend = ResolvedPickingMode; export type PickingManagerProps = { /** Shader inputs from models to pick */ shaderInputs?: ShaderInputs<{ picking: typeof pickingUniforms.props; }>; /** Callback */ onObjectPicked?: (info: PickInfo) => void; /** Select a picking mode. Defaults to `color`. Use `auto` to prefer `index` when supported. */ mode?: PickingMode; /** @deprecated Use `mode`. */ backend?: PickingBackend; }; export declare function resolvePickingMode(deviceType: Device['type'], mode?: PickingMode, indexPickingSupported?: boolean): ResolvedPickingMode; export declare function supportsIndexPicking(device: Device): boolean; /** @deprecated Use `resolvePickingMode`. */ export declare const resolvePickingBackend: typeof resolvePickingMode; export declare function decodeIndexPickInfo(pixelData: Int32Array): PickInfo; export declare function decodeColorPickInfo(pixelData: Uint8Array): PickInfo; /** * Helper class for using object picking with backend-specific readback. * @todo Support multiple models * @todo Switching picking module */ export declare class PickingManager { device: Device; props: Required; mode: ResolvedPickingMode; /** Info from latest pick operation */ pickInfo: PickInfo; /** Framebuffer used for picking */ framebuffer: Framebuffer | null; static defaultProps: Required; constructor(device: Device, props: PickingManagerProps); destroy(): void; getFramebuffer(): Framebuffer; /** Clear highlighted / picked object */ clearPickState(): void; /** Prepare for rendering picking colors */ beginRenderPass(): import("@luma.gl/core").RenderPass; updatePickInfo(mousePosition: [number, number]): Promise; /** * Get pick position in device pixel range * use the center pixel location in device pixel range */ getPickPosition(mousePosition: [number, number]): [number, number]; protected createIndexFramebuffer(): Framebuffer; protected createColorFramebuffer(): Framebuffer; protected setPickingProps(props: Partial): void; protected readPickInfo(framebuffer: Framebuffer, pickPosition: [number, number]): Promise; protected readIndexPickInfo(framebuffer: Framebuffer, [pickX, pickY]: [number, number]): Promise; protected readColorPickInfo(framebuffer: Framebuffer, [pickX, pickY]: [number, number]): Promise; protected hasPickInfoChanged(pickInfo: PickInfo): boolean; } export { COLOR_PICKING_MAX_BATCH_INDEX, COLOR_PICKING_MAX_OBJECT_INDEX }; //# sourceMappingURL=picking-manager.d.ts.map