/** * PostProcessTypes.ts * * Type definitions for HoloScript post-processing system. * Supports WebGPU-based effects pipeline with HDR and LDR processing. * * @module render/postprocess */ /** * Supported post-process effect types */ export type PostProcessEffectType = 'bloom' | 'tonemap' | 'dof' | 'motionBlur' | 'ssao' | 'fxaa' | 'sharpen' | 'vignette' | 'colorGrade' | 'filmGrain' | 'chromaticAberration' | 'fog' | 'caustics' | 'ssr' | 'ssgi' | 'custom'; /** * Tone mapping operators */ export type ToneMapOperator = 'none' | 'reinhard' | 'reinhardLum' | 'aces' | 'acesApprox' | 'filmic' | 'uncharted2' | 'uchimura' | 'lottes' | 'khronos'; /** * Blend modes for effect compositing */ export type BlendMode = 'normal' | 'add' | 'multiply' | 'screen' | 'overlay' | 'softLight'; /** * Base effect parameters interface */ export interface IEffectParams { enabled: boolean; intensity: number; blendMode?: BlendMode; } /** * Bloom effect parameters */ export interface IBloomParams extends IEffectParams { threshold: number; softThreshold: number; radius: number; iterations: number; anamorphic: number; highQuality: boolean; } /** * Tone mapping parameters */ export interface IToneMapParams extends IEffectParams { operator: ToneMapOperator; exposure: number; gamma: number; whitePoint: number; contrast: number; saturation: number; } /** * Depth of Field parameters */ export interface IDepthOfFieldParams extends IEffectParams { focusDistance: number; focalLength: number; aperture: number; maxBlur: number; bokehShape: 'circle' | 'hexagon' | 'octagon'; bokehQuality: 'low' | 'medium' | 'high'; nearBlur: boolean; } /** * Motion blur parameters */ export interface IMotionBlurParams extends IEffectParams { samples: number; velocityScale: number; maxVelocity: number; } /** * SSAO parameters */ export interface ISSAOParams extends IEffectParams { radius: number; bias: number; samples: number; power: number; falloff: number; /** 'hemisphere' = random hemisphere, 'hbao' = horizon-based 8-dir × 4-step */ mode?: 'hemisphere' | 'hbao'; /** Output bent normal direction (least-occluded direction) */ bentNormals?: boolean; /** 5×5 cross-bilateral spatial denoise weighted by depth + normal */ spatialDenoise?: boolean; } /** * Anti-aliasing (FXAA) parameters */ export interface IFXAAParams extends IEffectParams { quality: 'low' | 'medium' | 'high' | 'ultra'; edgeThreshold: number; edgeThresholdMin: number; } /** * Sharpen parameters */ export interface ISharpenParams extends IEffectParams { amount: number; threshold: number; } /** * Vignette parameters */ export interface IVignetteParams extends IEffectParams { roundness: number; smoothness: number; color: [number, number, number]; } /** * Color grading parameters */ export interface IColorGradeParams extends IEffectParams { shadows: [number, number, number]; midtones: [number, number, number]; highlights: [number, number, number]; shadowsOffset: number; highlightsOffset: number; hueShift: number; temperature: number; tint: number; lutTexture?: string; lutIntensity: number; } /** * Film grain parameters */ export interface IFilmGrainParams extends IEffectParams { size: number; luminanceContribution: number; animated: boolean; } /** * Chromatic aberration parameters */ export interface IChromaticAberrationParams extends IEffectParams { redOffset: [number, number]; greenOffset: [number, number]; blueOffset: [number, number]; radial: boolean; } /** * Fog parameters */ export interface IFogParams extends IEffectParams { color: [number, number, number]; density: number; start: number; end: number; height: number; heightFalloff: number; mode: 'linear' | 'exponential' | 'exponentialSquared'; } /** * Caustics overlay parameters */ export interface ICausticsParams extends IEffectParams { scale: number; speed: number; color: [number, number, number]; depthFade: number; waterLevel: number; /** RGB IoR separation for prismatic chromatic dispersion */ dispersion?: number; /** Turbulence-driven foam overlay intensity */ foamIntensity?: number; /** Darken terrain where caustics are absent */ shadowStrength?: number; } /** * Screen-Space Reflections (SSR) parameters */ export interface ISSRParams extends IEffectParams { maxSteps: number; stepSize: number; thickness: number; roughnessFade: number; edgeFade: number; /** Golden-angle blur at hit point scaled by roughness (0 = sharp) */ roughnessBlur?: number; /** Schlick Fresnel weighting strength (0 = uniform, 1 = physically correct) */ fresnelStrength?: number; } /** * Screen-Space Global Illumination (SSGI) parameters */ export interface ISSGIParams extends IEffectParams { radius: number; samples: number; bounceIntensity: number; falloff: number; /** Blend with previous frame using motion vectors (0 = off, 1 = full) */ temporalBlend?: number; /** 3×3 edge-stopping cross-bilateral spatial denoise */ spatialDenoise?: boolean; /** Multi-bounce approximation multiplier */ multiBounce?: number; } /** * Custom shader effect parameters */ export interface ICustomEffectParams extends IEffectParams { shader: string; uniforms: Record; } /** * Union type of all effect parameters */ export type EffectParams = IBloomParams | IToneMapParams | IDepthOfFieldParams | IMotionBlurParams | ISSAOParams | IFXAAParams | ISharpenParams | IVignetteParams | IColorGradeParams | IFilmGrainParams | IChromaticAberrationParams | IFogParams | ICausticsParams | ISSRParams | ISSGIParams | ICustomEffectParams; /** * Effect configuration for pipeline */ export interface IEffectConfig { type: PostProcessEffectType; name?: string; params: EffectParams; order?: number; } /** * Render target configuration */ export interface IRenderTargetConfig { width: number; height: number; format: GPUTextureFormat; mipLevelCount?: number; sampleCount?: number; label?: string; } /** * Post-process pipeline configuration */ export interface IPostProcessPipelineConfig { hdrEnabled: boolean; hdrFormat: GPUTextureFormat; ldrFormat: GPUTextureFormat; msaaSamples: 1 | 4; effects: IEffectConfig[]; autoResize: boolean; } /** * Runtime render target */ export interface IRenderTarget { id: string; texture: GPUTexture; view: GPUTextureView; config: IRenderTargetConfig; } /** * Effect shader bindings */ export interface IEffectBindings { inputTexture: GPUTextureView; depthTexture?: GPUTextureView; velocityTexture?: GPUTextureView; noiseTexture?: GPUTextureView; lutTexture?: GPUTextureView; sampler: GPUSampler; uniformBuffer: GPUBuffer; } /** * Frame data passed to effects */ export interface IFrameData { time: number; deltaTime: number; frameCount: number; resolution: [number, number]; nearPlane: number; farPlane: number; cameraPosition?: [number, number, number]; viewMatrix?: Float32Array; projectionMatrix?: Float32Array; prevViewMatrix?: Float32Array; jitter?: [number, number]; } /** * Effect render context */ export interface IEffectRenderContext { device: GPUDevice; commandEncoder: GPUCommandEncoder; frameData: IFrameData; input: IRenderTarget; output: IRenderTarget; depth?: IRenderTarget; velocity?: IRenderTarget; } /** * Default parameter values for each effect type */ export declare const DEFAULT_PARAMS: Record; /** * Get default parameters for effect type */ export declare function getDefaultParams(type: PostProcessEffectType): T; /** * Merge effect parameters with defaults */ export declare function mergeParams(type: PostProcessEffectType, partial: Partial): T; /** * Validate effect parameters */ export declare function validateParams(type: PostProcessEffectType, params: EffectParams): { valid: boolean; errors: string[]; }; /** * Size in bytes for uniform buffers */ export declare const UNIFORM_SIZES: Record; /** * FXAA quality levels */ export type FXAAQuality = 'low' | 'medium' | 'high' | 'ultra'; /** * Alias for IEffectParams (API compatibility) */ export type IBaseEffectParams = IEffectParams; /** * Alias for IDepthOfFieldParams (API compatibility) */ export type IDOFParams = IDepthOfFieldParams; //# sourceMappingURL=PostProcessTypes.d.ts.map