mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
67 lines (54 loc) • 2.2 kB
text/typescript
import { createEffect } from "@lincode/reactivity"
import { Pass } from "three/examples/jsm/postprocessing/EffectComposer"
import { getBloom } from "../../../states/useBloom"
import { getSelectiveBloom } from "../../../states/useSelectiveBloom"
import bloomPass from "./bloomPass"
import renderPass from "./renderPass"
import selectiveBloomPass from "./selectiveBloomPass"
import lensDistortionPass from "./lensDistortionPass"
import { getLensDistortion } from "../../../states/useLensDistortion"
import { getEffectComposer } from "../../../states/useEffectComposer"
import motionBlurPass from "./motionBlurPass"
import { getMotionBlur } from "../../../states/useMotionBlur"
import { getAmbientOcclusion } from "../../../states/useAmbientOcclusion"
import saoPass from "./saoPass"
import { getBokeh } from "../../../states/useBokeh"
import bokehPass from "./bokehPass"
import { getOutline } from "../../../states/useOutline"
import outlinePass from "./outlinePass"
import { getAntiAlias } from "../../../states/useAntiAlias"
import { getRenderer } from "../../../states/useRenderer"
import smaaPass from "./smaaPass"
createEffect(() => {
const effectComposer = getEffectComposer()
if (!effectComposer) return
const passes: Array<Pass> = [renderPass]
if (getAmbientOcclusion()) passes.push(saoPass)
if (getBloom()) passes.push(bloomPass)
if (getSelectiveBloom()) passes.push(selectiveBloomPass)
if (getBokeh()) passes.push(bokehPass)
if (getOutline()) passes.push(outlinePass)
if (getLensDistortion()) passes.push(lensDistortionPass)
if (getMotionBlur()) for (const pass of motionBlurPass) passes.push(pass)
const antiAlias = getAntiAlias()
if (
antiAlias === "SMAA" ||
(antiAlias === "MSAA" && !getRenderer()?.capabilities.isWebGL2)
)
passes.push(smaaPass)
for (const pass of passes) effectComposer.addPass(pass)
return () => {
for (const pass of passes) effectComposer.removePass(pass)
}
}, [
getEffectComposer,
getAmbientOcclusion,
getBloom,
getSelectiveBloom,
getBokeh,
getOutline,
getLensDistortion,
getMotionBlur,
getAntiAlias,
getRenderer
])