import Shader from '../Shader'; import Material from '../Material'; import type Renderer from '../Renderer'; import type Camera from '../Camera'; import type Scene from '../Scene'; import type ClayNode from '../Node'; import type Renderable from '../Renderable'; /** * Pixel picking is gpu based picking, which is fast and accurate. * But not like ray picking, it can't get the intersection point and triangle. */ declare class PixelPicking { /** * Target renderer */ renderer: Renderer; /** * Downsample ratio of hidden frame buffer * @type {number} */ downSampleRatio: number; width: number; height: number; lookupOffset: number; private _frameBuffer; private _texture; private _shader; _idMaterials: Material[]; _lookupTable: Renderable[]; _meshMaterials: Material[]; _idOffset: number; constructor(renderer: Renderer); /** * Set picking presision * @param {number} ratio */ setPrecision(ratio: number): void; resize(width: number, height: number): void; /** * Update the picking framebuffer * @param {number} ratio */ update(scene: Scene, camera: Camera): void; _setMaterial(root: ClayNode): void; /** * Pick the object * @param {number} x Mouse position x * @param {number} y Mouse position y * @return {clay.Node} */ pick(x: number, y: number): Renderable, import("../Shader").FragmentShader>>> | undefined; _restoreMaterial(): void; dispose(renderer: Renderer): void; } export default PixelPicking;