Files
fabrikanabytok/apps/fabrikanabytok/components/planner/advanced-post-processing.tsx
2025-11-28 20:48:15 +01:00

38 lines
1.2 KiB
TypeScript

"use client"
/**
* Advanced Post-Processing Effects System
* Optimized for production use
*/
import { Bloom, Vignette, ToneMapping, EffectComposer } from "@react-three/postprocessing"
import { ToneMappingMode } from "postprocessing"
import type { RenderSettings } from "@/lib/types/planner.types"
interface AdvancedPostProcessingProps {
renderSettings: RenderSettings
enabled?: boolean
children?: React.ReactNode | undefined
children2?: {length: number} | undefined
}
export function AdvancedPostProcessing({ renderSettings, enabled = true, children, children2 }: AdvancedPostProcessingProps) {
// Only enable post-processing for preview and above
const shouldRender = enabled && renderSettings?.postProcessing && renderSettings?.quality !== "draft"
if (!shouldRender) {
return null
}
const multisampling = renderSettings?.quality === "ultra" ? 8 : renderSettings?.quality === "high" ? 4 : 2
return (
<EffectComposer multisampling={multisampling}>
<ToneMapping mode={ToneMappingMode.ACES_FILMIC} />
{renderSettings?.quality !== "preview" && (
<Bloom intensity={0.5} luminanceThreshold={0.9} mipmapBlur />
)}
<Vignette offset={0.35} darkness={0.5} />
</EffectComposer>
)
}