import * as THREE from 'three/webgpu'; /** * Single three-vertex geometry for fullscreen passes and vertex-pulled impostors. * * **Purpose** * - Efficient fullscreen pass geometry (1 triangle vs 2 for quad) * - Covers entire screen in clip space: (-1,-1) to (3,-1) to (-1,3) * - Eliminates center seam artifact present in traditional screen quads * - Supplies a non-indexed three-vertex draw count for `positionNode`-driven * impostors. In that role the position/normal/UV attribute values are inert; * disable frustum culling and raycasting because the stored bounds still * describe the fullscreen triangle rather than the generated instances. * * **Usage** * ```js * import { TriangleGeometry } from '../helpers/exampleGeometries.js'; * import { MeshBasicNodeMaterial } from 'three/webgpu'; * import { pass, screenUV } from 'three/tsl'; * * // Fullscreen post-processing * const scenePass = pass(scene, camera); * const postGeo = new TriangleGeometry(); * const postMat = new MeshBasicNodeMaterial(); * postMat.colorNode = scenePass.mul(0.5); // Darken scene * * const postMesh = new Mesh(postGeo, postMat); * postMesh.frustumCulled = false; * * // Vertex-pulled particle impostors * const particles = new Mesh(postGeo, sphereImpostorMaterial); * particles.count = particleCount; * particles.frustumCulled = false; * particles.raycast = () => {}; * ``` * * @class TriangleGeometry * @extends THREE.BufferGeometry * @tags WebGPU, WebGL * @short Three-vertex geometry for fullscreen passes and vertex-pulled impostors. * @category Geometries */ declare class TriangleGeometry extends THREE.BufferGeometry { /** * Create a fullscreen triangle geometry with position, normal, and UV attributes. */ constructor(); } export { TriangleGeometry };