mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
29 lines (25 loc) • 1.09 kB
text/typescript
import { SAOPass } from "three/examples/jsm/postprocessing/SAOPass"
import { getAmbientOcclusion } from "../../../states/useAmbientOcclusion"
import { getCameraRendered } from "../../../states/useCameraRendered"
import scene from "../../scene"
const saoPass = new SAOPass(scene, getCameraRendered(), false, true)
export default saoPass
saoPass.params.saoKernelRadius = 80
saoPass.params.saoBlurStdDev = 5
getAmbientOcclusion(
(ao) => (saoPass.params.saoScale = ao === "light" ? 3000 : 2000)
)
getCameraRendered((camera) => {
saoPass.camera = camera
saoPass.saoMaterial.defines["PERSPECTIVE_CAMERA"] =
camera.isPerspectiveCamera ? 1 : 0
saoPass.saoMaterial.uniforms["cameraInverseProjectionMatrix"].value.copy(
camera.projectionMatrixInverse
)
saoPass.saoMaterial.uniforms["cameraProjectionMatrix"].value =
camera.projectionMatrix
saoPass.vBlurMaterial.defines["PERSPECTIVE_CAMERA"] =
camera.isPerspectiveCamera ? 1 : 0
saoPass.hBlurMaterial.defines["PERSPECTIVE_CAMERA"] =
camera.isPerspectiveCamera ? 1 : 0
})