@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
39 lines (38 loc) • 1.26 kB
JavaScript
;
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");
}
}