UNPKG

@polygonjs/polygonjs

Version:

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

35 lines (34 loc) 1.08 kB
"use strict"; import { MeshDepthMaterial } from "three"; const _originalMaterialByObjectId = /* @__PURE__ */ new Map(); const materialDepth = new MeshDepthMaterial(); export function updateObjectsWithDepthMaterial(scene, callback) { scene.traverse((object3d) => { const object = object3d; if (object.material) { const geometry = object.geometry; if (geometry) { const customMaterial = object.customDepthDOFMaterial || materialDepth; _originalMaterialByObjectId.set(object, object.material); object.material = customMaterial; } } }); callback(); _originalMaterialByObjectId.forEach((material, object) => { object.material = material; }); _originalMaterialByObjectId.clear(); } export function linearize(depth, near, far) { var zfar = far; var znear = near; return -zfar * znear / (depth * (zfar - znear) - zfar); } export function smoothstep(near, far, depth) { var x = saturate((depth - near) / (far - near)); return x * x * (3 - 2 * x); } function saturate(x) { return Math.max(0, Math.min(1, x)); }