UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

39 lines (38 loc) 1.26 kB
"use strict"; import { OrthographicCamera, Scene, ShaderMaterial, PlaneGeometry, Mesh } from "three"; import VERTEX from "./depthRead/DepthRead.vert.glsl"; import FRAGMENT from "./depthRead/DepthRead.frag.glsl"; export function setupDepthReadScene() { const camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1); const material = new ShaderMaterial({ vertexShader: VERTEX, fragmentShader: FRAGMENT, uniforms: { cameraNear: { value: camera.near }, cameraFar: { value: camera.far }, tDiffuse: { value: null }, tDepth: { value: null } } }); const postPlane = new PlaneGeometry(2, 2); const postQuad = new Mesh(postPlane, material); const scene = new Scene(); scene.add(postQuad); return { scene, camera, material }; } export function updateDepthSetup(setup, camera, renderTarget) { if (camera.isPerspectiveCamera || camera.isOrthographicCamera) { setup.material.uniforms.cameraNear.value = camera.near; setup.material.uniforms.cameraFar.value = camera.far; setup.material.uniforms.tDiffuse.value = renderTarget.texture; setup.material.uniforms.tDepth.value = renderTarget.depthTexture; } else { console.warn("camera is not a PerspectiveCamera or OrthographicCamera"); } }