@xviewer.js/postprocessing 1.0.0-beta.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +115 -831
- package/dist/main.js.map +1 -1
- package/dist/module.js +110 -827
- package/dist/module.js.map +1 -1
- package/package.json +2 -2
- package/types/Bloom.d.ts +14 -0
- package/types/BloomPlugin.d.ts +2 -0
- package/types/DepthOfField.d.ts +15 -0
- package/types/DepthOfFieldPlugin.d.ts +16 -0
- package/types/FXAA.d.ts +6 -0
- package/types/FXAAPlugin.d.ts +1 -0
- package/types/MSAA.d.ts +4 -0
- package/types/PostProcessing.d.ts +5 -0
- package/types/PostProcessingManager.d.ts +22 -0
- package/types/SMAA.d.ts +13 -0
- package/types/ToneMapping.d.ts +8 -0
- package/types/index.d.ts +8 -7
- package/types/MotionBlurPlugin.d.ts +0 -5
- package/types/TTTTTTTT.d.ts +0 -2
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/EffectComposerPlugin.ts","../src/PassPlugin.ts","../src/ToneMappingPlugin.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.11/node_modules/@swc/helpers/esm/_extends.js","../src/BloomPlugin.ts","../src/FXAAPlugin.ts","../src/SMAAPlugin.ts","../src/MSAAPlugin.ts","../src/realism-effects/temporal-reproject/utils/QuasirandomGenerator.js","../src/realism-effects/taa/TAAUtils.js","../src/realism-effects/utils/ShaderUtils.js","../src/realism-effects/temporal-reproject/material/TemporalReprojectMaterial.js","../src/realism-effects/utils/SceneUtils.js","../src/realism-effects/temporal-reproject/TemporalReprojectPass.js","../src/realism-effects/traa/TRAAEffect.js","../src/realism-effects/temporal-reproject/material/VelocityDepthNormalMaterial.js","../src/realism-effects/utils/GBufferUtils.js","../src/realism-effects/temporal-reproject/pass/VelocityDepthNormalPass.js","../src/getVelocityDepthNormalPass.ts","../src/TRAAPlugin.ts"],"sourcesContent":["import { Plugin, Viewer } from \"@xviewer.js/core\";\nimport { EffectComposer, EffectPass, Pass, RenderPass } from \"postprocessing\";\nimport { HalfFloatType } from \"three\";\n\nexport class EffectComposerPlugin extends Plugin {\n type: string = \"EffectComposerPlugin\"\n\n static Instance(viewer: Viewer) {\n return viewer.getPlugin(EffectComposerPlugin, true);\n }\n\n get multisampling() {\n return this._composer.multisampling;\n }\n set multisampling(v: number) {\n this._composer.multisampling = v;\n }\n\n private _composer: EffectComposer;\n private _renderPass: RenderPass;\n private _outputPass: EffectPass;\n\n constructor(props: ConstructorParameters<typeof EffectComposer>[1]) {\n super();\n this.install = () => {\n const { renderer, scene, camera } = this.viewer;\n\n this._renderPass = new RenderPass(scene, camera);\n this._outputPass = new EffectPass(camera);\n\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType: HalfFloatType }, props));\n this._composer.addPass(this._renderPass);\n this._composer.addPass(this._outputPass);\n\n this.viewer._onResize = (width: number, height: number) => this._composer.setSize(width, height);\n this.viewer._onRender = (dt: number) => this._composer.render(dt);\n }\n this.uninstall = () => {\n this._composer.dispose();\n }\n }\n\n getPass<T extends Pass>(constructor: (new (...args) => T) | Function) {\n return this._composer.passes.find(v => v.constructor === constructor) as T;\n }\n\n addPass<T extends Pass>(pass: T) {\n this._composer.addPass(pass, this._composer.passes.length - 1);\n this._checkOutputPass();\n return pass;\n }\n\n removePass(pass: Pass) {\n this._composer.removePass(pass);\n this._checkOutputPass();\n }\n\n activePass(pass: Pass, v: boolean) {\n pass.enabled = v;\n this._checkOutputPass();\n return pass;\n }\n\n private _checkOutputPass() {\n const count = this._composer.passes.filter(v => v.enabled && v.name !== \"VelocityDepthNormalPass\" && v !== this._outputPass).length;\n this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;\n this._setRenderToScreen();\n }\n\n private _setRenderToScreen() {\n const passes = this._composer.passes;\n for (let k = 0, i = passes.length; i--;) {\n let pass = passes[i];\n if (pass.enabled && pass.name !== \"VelocityDepthNormalPass\" && k === 0) {\n k = i;\n }\n pass.renderToScreen = k === i;\n }\n }\n\n}","import { Plugin } from \"@xviewer.js/core\";\nimport { Pass } from \"postprocessing\";\nimport { EffectComposerPlugin } from \"./EffectComposerPlugin\";\n\nexport class PassPlugin<T extends Pass> extends Plugin {\n\n get enable() {\n return this.pass.enabled;\n }\n set enable(v: boolean) {\n this.setEnable(v);\n }\n\n get composer() {\n return EffectComposerPlugin.Instance(this.viewer);\n }\n\n pass: T;\n\n setEnable(v: boolean) {\n this.composer.activePass(this.pass, v);\n }\n\n}","import { PropertyManager } from \"@xviewer.js/core\";\nimport { EffectPass, ToneMappingEffect, ToneMappingMode } from \"postprocessing\";\nimport { PassPlugin } from \"./PassPlugin\";\n\nexport class ToneMappingPlugin extends PassPlugin<EffectPass> {\n type: string = \"ToneMappingPlugin\"\n\n get mode() {\n return this.effect.mode;\n }\n\n set mode(v: ToneMappingMode) {\n this.effect.mode = v;\n }\n\n effect: ToneMappingEffect;\n\n constructor(props: ConstructorParameters<typeof ToneMappingEffect>[0]) {\n super();\n this.install = () => {\n this.effect = new ToneMappingEffect(props);\n this.pass = this.composer.addPass(new EffectPass(this.viewer.camera, this.effect));\n }\n this.uninstall = () => {\n this.composer.removePass(this.pass);\n }\n }\n}\n\nPropertyManager._getClassProperties(\"ToneMappingPlugin\")\n .property(\"enable\")\n .property(\"mode\", { value: ToneMappingMode })","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { BlendFunction, BloomEffect, EffectPass } from \"postprocessing\";\nimport { PassPlugin } from \"./PassPlugin\";\nimport { PropertyManager } from \"@xviewer.js/core\";\n\nexport class BloomPlugin extends PassPlugin<EffectPass> {\n type: string = \"BloomPlugin\";\n\n // @property({ min: 0, max: 2, step: 0.01 })\n get intensity() {\n return this.effect.intensity;\n }\n set intensity(v: number) {\n this.effect.intensity = v;\n }\n\n // @property({ min: 0, max: 10, step: 0.01 })\n get luminanceThreshold() {\n return this.effect.luminanceMaterial.threshold;\n }\n set luminanceThreshold(v: number) {\n this.effect.luminanceMaterial.threshold = v;\n }\n\n // @property({ min: 0, max: 10, step: 0.01 })\n get luminanceSmoothing() {\n return this.effect.luminanceMaterial.smoothing;\n }\n set luminanceSmoothing(v: number) {\n this.effect.luminanceMaterial.smoothing = v;\n }\n\n effect: BloomEffect;\n\n constructor(props?: ConstructorParameters<typeof BloomEffect>[0]) {\n super();\n this.install = () => {\n this.effect = new BloomEffect({ blendFunction: BlendFunction.ADD, ...props });\n this.pass = this.composer.addPass(new EffectPass(this.viewer.camera, this.effect));\n }\n this.uninstall = () => {\n this.composer.removePass(this.pass);\n }\n }\n\n}\n\nPropertyManager._getClassProperties(\"BloomPlugin\")\n .property(\"enable\")\n .property(\"intensity\", { min: 0, max: 2, step: 0.01 })\n .property(\"luminanceThreshold\", { min: 0, max: 10, step: 0.01 })\n .property(\"luminanceSmoothing\", { min: 0, max: 10, step: 0.01 })","import { EffectPass, FXAAEffect } from \"postprocessing\";\nimport { PassPlugin } from \"./PassPlugin\";\nimport { PropertyManager } from \"@xviewer.js/core\";\n\nexport class FXAAPlugin extends PassPlugin<EffectPass> {\n type: string = \"FXAAPlugin\";\n\n constructor() {\n super();\n this.install = () => {\n this.pass = this.composer.addPass(new EffectPass(this.viewer.camera, new FXAAEffect()));\n }\n this.uninstall = () => {\n this.composer.removePass(this.pass);\n }\n }\n}\n\n\nPropertyManager._getClassProperties(\"FXAAPlugin\")\n .property(\"enable\")\n\n","import { EdgeDetectionMode, EffectPass, PredicationMode, SMAAEffect, SMAAPreset } from \"postprocessing\";\nimport { PassPlugin } from \"./PassPlugin\";\nimport { PropertyManager } from \"@xviewer.js/core\";\n\nexport class SMAAPlugin extends PassPlugin<EffectPass> {\n type: string = \"SMAAPlugin\"\n\n private _preset: SMAAPreset = SMAAPreset.MEDIUM;\n\n // @property({ value: SMAAPreset })\n get preset() {\n return this._preset;\n }\n set preset(v: SMAAPreset) {\n if (this._preset !== v) {\n this._preset = v;\n this.effect.applyPreset(v);\n }\n }\n\n // @property({ value: EdgeDetectionMode })\n get edgeDetectionMode() {\n return this.effect.edgeDetectionMaterial.edgeDetectionMode;\n }\n set edgeDetectionMode(v: EdgeDetectionMode) {\n this.effect.edgeDetectionMaterial.edgeDetectionMode = v;\n }\n\n // @property({ value: PredicationMode })\n get predicationMode() {\n return this.effect.edgeDetectionMaterial.predicationMode;\n }\n set predicationMode(v: PredicationMode) {\n this.effect.edgeDetectionMaterial.predicationMode = v;\n }\n\n effect: SMAAEffect;\n\n constructor(props: ConstructorParameters<typeof SMAAEffect>[0] = {}) {\n super();\n this.install = () => {\n this.effect = new SMAAEffect(props);\n this.pass = this.composer.addPass(new EffectPass(this.viewer.camera, this.effect));\n }\n this.uninstall = () => {\n this.composer.removePass(this.pass);\n }\n }\n}\n\nPropertyManager._getClassProperties(\"SMAAPlugin\")\n .property(\"enable\")\n .property(\"preset\", { value: SMAAPreset })\n .property(\"edgeDetectionMode\", { value: EdgeDetectionMode })\n .property(\"predicationMode\", { value: PredicationMode })\n","import { Plugin, PropertyManager } from \"@xviewer.js/core\";\nimport { EffectComposerPlugin } from \"./EffectComposerPlugin\";\n\nexport class MSAAPlugin extends Plugin {\n type: string = \"MSAAPlugin\"\n\n get enable() {\n return this.composer.multisampling > 0;\n }\n set enable(v: boolean) {\n this.composer.multisampling = v ? this._maxSamples : 0;\n }\n\n get composer() {\n return EffectComposerPlugin.Instance(this.viewer);\n }\n\n private _maxSamples: number = 4;\n\n constructor() {\n super();\n this.install = () => {\n const { renderer } = this.viewer;\n this._maxSamples = Math.min(4, renderer.capabilities.maxSamples);\n this.composer.multisampling = this._maxSamples;\n }\n this.uninstall = () => {\n this.composer.multisampling = 0;\n }\n }\n}\n\nPropertyManager._getClassProperties(\"MSAAPlugin\")\n .property(\"enable\")","// from: https://news.ycombinator.com/item?id=17876741\n// reference: http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/\n\n// eslint-disable-next-line no-unused-vars\nconst harmoniousNumber = (n = 2, value = 0, depth = 100) => {\n\tif (depth === 0) return value\n\n\treturn (1 + harmoniousNumber(n, value, depth - 1)) ** (1 / n)\n}\n\nconst g = 1.32471795724474602596090885447809 // Plastic number\nconst a1 = 1.0 / g\nconst a2 = 1.0 / (g * g)\nconst base = 1.1127756842787055 // harmoniousNumber(7), yields better coverage compared to using 0.5\n\nexport const generateR2 = count => {\n\tconst points = []\n\n\tfor (let n = 0; n < count; n++) {\n\t\tpoints.push([(base + a1 * n) % 1, (base + a2 * n) % 1])\n\t}\n\n\treturn points\n}\n\nexport const getR2Index = n => {\n\treturn [(base + a1 * n) % 1, (base + a2 * n) % 1]\n}\n\nexport const getR3Index = n => {\n\tconst g = 1.2207440846057596\n\tconst a1 = 1.0 / g\n\tconst a2 = 1.0 / (g * g)\n\tconst a3 = 1.0 / (g * g * g)\n\n\treturn [(base + a1 * n) % 1, (base + a2 * n) % 1, (base + a3 * n) % 1]\n}\n\nexport const generateR3 = count => {\n\tconst g = 1.32471795724474602596090885447809 // Plastic number\n\tconst a1 = 1.0 / g\n\tconst a2 = 1.0 / (g * g)\n\tconst a3 = 1.0 / (g * g * g)\n\tconst base = 1.1127756842787055 // harmoniousNumber(7), yields better coverage compared to using 0.5\n\n\tconst points = []\n\n\tfor (let n = 0; n < count; n++) {\n\t\tpoints.push([(base + a1 * n) % 1, (base + a2 * n) % 1, (base + a3 * n) % 1])\n\t}\n\n\treturn points\n}\n","import { generateR2 } from \"../temporal-reproject/utils/QuasirandomGenerator\"\n\nexport const r2Sequence = generateR2(256).map(([a, b]) => [a - 0.5, b - 0.5])\n\nexport function jitter(width, height, camera, frame, jitterScale = 1) {\n\tconst [x, y] = r2Sequence[frame % r2Sequence.length]\n\n\tif (camera.setViewOffset) {\n\t\tcamera.setViewOffset(width, height, x * jitterScale, y * jitterScale, width, height)\n\t}\n}","// source: https://github.com/mrdoob/three.js/blob/b9bc47ab1978022ab0947a9bce1b1209769b8d91/src/renderers/webgl/WebGLProgram.js#L228\n// Unroll Loops\n\nconst unrollLoopPattern =\n\t/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g\n\nexport function unrollLoops(string) {\n\treturn string.replace(unrollLoopPattern, loopReplacer)\n}\n\nfunction loopReplacer(match, start, end, snippet) {\n\tlet string = \"\"\n\n\tfor (let i = parseInt(start); i < parseInt(end); i++) {\n\t\tstring += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i)\n\t}\n\n\treturn string\n}\n","/* eslint-disable camelcase */\nimport { GLSL3, Matrix4, NoBlending } from \"three\"\nimport { Vector3 } from \"three\"\nimport { ShaderMaterial, Uniform, Vector2 } from \"three\"\nimport vertexShader from \"../../utils/shader/basic.vert\"\nimport fragmentShader from \"../shader/temporal_reproject.frag\"\nimport reproject from \"../shader/reproject.frag\"\nimport gbuffer_packing from \"../../utils/shader/gbuffer_packing.glsl\"\nimport { unrollLoops } from \"../../utils/ShaderUtils\"\n\nexport class TemporalReprojectMaterial extends ShaderMaterial {\n\tconstructor(textureCount = 1) {\n\t\tlet finalFragmentShader = fragmentShader\n\t\t\t.replace(\"#include <reproject>\", reproject)\n\t\t\t.replace(\"#include <gbuffer_packing>\", gbuffer_packing)\n\n\t\tlet definitions = \"\"\n\t\tfor (let i = 0; i < textureCount; i++) {\n\t\t\tdefinitions += /* glsl */ `\n\t\t\t\tuniform sampler2D accumulatedTexture${i};\n\n\t\t\t\tlayout(location = ${i}) out vec4 gOutput${i};\n\t\t\t`\n\t\t}\n\n\t\tfinalFragmentShader = definitions + finalFragmentShader.replaceAll(\"textureCount\", textureCount)\n\t\tfinalFragmentShader = unrollLoops(finalFragmentShader)\n\n\t\tconst matches2 = finalFragmentShader.matchAll(/accumulatedTexture\\[\\s*[0-9]+\\s*]/g)\n\n\t\tfor (const [key] of matches2) {\n\t\t\tconst number = key.replace(/[^0-9]/g, \"\")\n\t\t\tfinalFragmentShader = finalFragmentShader.replace(key, \"accumulatedTexture\" + number)\n\t\t}\n\n\t\tconst matches3 = finalFragmentShader.matchAll(/gOutput\\[\\s*[0-9]+\\s*]/g)\n\n\t\tfor (const [key] of matches3) {\n\t\t\tconst number = key.replace(/[^0-9]/g, \"\")\n\t\t\tfinalFragmentShader = finalFragmentShader.replace(key, \"gOutput\" + number)\n\t\t}\n\n\t\tsuper({\n\t\t\ttype: \"TemporalReprojectMaterial\",\n\t\t\tuniforms: {\n\t\t\t\tinputTexture: new Uniform(null),\n\t\t\t\tvelocityTexture: new Uniform(null),\n\t\t\t\tdepthTexture: new Uniform(null),\n\t\t\t\tlastVelocityTexture: new Uniform(null),\n\t\t\t\tneighborhoodClampIntensity: new Uniform(0),\n\t\t\t\tfullAccumulate: new Uniform(false),\n\t\t\t\tkeepData: new Uniform(1),\n\t\t\t\tdelta: new Uniform(0),\n\t\t\t\tinvTexSize: new Uniform(new Vector2()),\n\t\t\t\tprojectionMatrix: new Uniform(new Matrix4()),\n\t\t\t\tprojectionMatrixInverse: new Uniform(new Matrix4()),\n\t\t\t\tcameraMatrixWorld: new Uniform(new Matrix4()),\n\t\t\t\tviewMatrix: new Uniform(new Matrix4()),\n\t\t\t\tprevViewMatrix: new Uniform(new Matrix4()),\n\t\t\t\tprevCameraMatrixWorld: new Uniform(new Matrix4()),\n\t\t\t\tprevProjectionMatrix: new Uniform(new Matrix4()),\n\t\t\t\tprevProjectionMatrixInverse: new Uniform(new Matrix4()),\n\t\t\t\tcameraPos: new Uniform(new Vector3()),\n\t\t\t\tprevCameraPos: new Uniform(new Vector3()),\n\t\t\t\tcameraNear: new Uniform(0),\n\t\t\t\tcameraFar: new Uniform(0),\n\t\t\t\tmaxBlend: new Uniform(0)\n\t\t\t},\n\t\t\tvertexShader,\n\t\t\tfragmentShader: finalFragmentShader,\n\t\t\tblending: NoBlending,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t\ttoneMapped: false,\n\t\t\tglslVersion: GLSL3\n\t\t})\n\n\t\tfor (let i = 0; i < textureCount; i++) {\n\t\t\tthis.uniforms[\"inputTexture\" + i] = new Uniform(null)\n\t\t\tthis.uniforms[\"accumulatedTexture\" + i] = new Uniform(null)\n\t\t}\n\t}\n}\n","export const isGroundProjectedEnv = c => {\n\treturn c.material.fragmentShader?.includes(\n\t\t\"float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );\"\n\t)\n}\n\nexport const isChildMaterialRenderable = (c, material = c.material) => {\n\treturn (\n\t\tmaterial.visible &&\n\t\tmaterial.depthWrite &&\n\t\tmaterial.depthTest &&\n\t\t(!material.transparent || material.opacity > 0) &&\n\t\t!isGroundProjectedEnv(c)\n\t)\n}\n\nexport const didCameraMove = (camera, lastCameraPosition, lastCameraQuaternion) => {\n\tif (camera.position.distanceToSquared(lastCameraPosition) > 0.000001) {\n\t\treturn true\n\t}\n\n\tif (camera.quaternion.angleTo(lastCameraQuaternion) > 0.001) {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nexport const getVisibleChildren = object => {\n\tconst queue = [object]\n\tconst objects = []\n\n\twhile (queue.length !== 0) {\n\t\tconst mesh = queue.shift()\n\t\tif (mesh.material) objects.push(mesh)\n\n\t\tfor (const c of mesh.children) {\n\t\t\tif (c.visible) queue.push(c)\n\t\t}\n\t}\n\n\treturn objects\n}\n","import { Pass } from \"postprocessing\"\nimport {\n\tClock,\n\tFramebufferTexture,\n\tLinearFilter,\n\tMatrix4,\n\tNearestFilter,\n\tQuaternion,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget\n} from \"three\"\nimport { jitter } from \"../taa/TAAUtils\"\nimport { TemporalReprojectMaterial } from \"./material/TemporalReprojectMaterial\"\nimport { didCameraMove } from \"../utils/SceneUtils\"\n\nexport const defaultTemporalReprojectPassOptions = {\n\tdilation: false,\n\tfullAccumulate: false,\n\tneighborhoodClamp: false,\n\tneighborhoodClampRadius: 1,\n\tneighborhoodClampIntensity: 1,\n\tmaxBlend: 1,\n\tlogTransform: false,\n\tdepthDistance: 2,\n\tworldDistance: 4,\n\treprojectSpecular: false,\n\trenderTarget: null,\n\tcopyTextures: true,\n\tconfidencePower: 0.75,\n\tinputType: \"diffuse\"\n}\n\nconst tmpProjectionMatrix = new Matrix4()\nconst tmpProjectionMatrixInverse = new Matrix4()\nconst tmpVec2 = new Vector2()\n\nexport class TemporalReprojectPass extends Pass {\n\tneedsSwap = false\n\n\toverrideAccumulatedTextures = []\n\tclock = new Clock()\n\tr2Sequence = []\n\tframe = 0\n\tlastCameraTransform = {\n\t\tposition: new Vector3(),\n\t\tquaternion: new Quaternion()\n\t}\n\n\tconstructor(\n\t\tscene,\n\t\tcamera,\n\t\tvelocityDepthNormalPass,\n\t\ttexture,\n\t\ttextureCount,\n\t\toptions = defaultTemporalReprojectPassOptions\n\t) {\n\t\tsuper(\"TemporalReprojectPass\")\n\n\t\tthis._scene = scene\n\t\tthis._camera = camera\n\t\tthis.textureCount = textureCount\n\t\toptions = { ...defaultTemporalReprojectPassOptions, ...options }\n\n\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\n\t\t\tcount: textureCount,\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: texture.type,\n\t\t\tdepthBuffer: false\n\t\t})\n\n\t\tthis.renderTarget.textures.forEach(\n\t\t\t(texture, index) => (texture.name = \"TemporalReprojectPass.accumulatedTexture\" + index)\n\t\t)\n\n\t\tthis.fullscreenMaterial = new TemporalReprojectMaterial(textureCount)\n\t\tthis.fullscreenMaterial.defines.textureCount = textureCount\n\n\t\tif (options.dilation) this.fullscreenMaterial.defines.dilation = \"\"\n\t\tif (options.neighborhoodClamp) this.fullscreenMaterial.defines.neighborhoodClamp = \"\"\n\t\tif (options.logTransform) this.fullscreenMaterial.defines.logTransform = \"\"\n\t\tif (camera.isPerspectiveCamera) this.fullscreenMaterial.defines.PERSPECTIVE_CAMERA = \"\"\n\t\tthis.fullscreenMaterial.defines.neighborhoodClampRadius = parseInt(options.neighborhoodClampRadius)\n\n\t\tthis.fullscreenMaterial.defines.depthDistance = options.depthDistance.toPrecision(5)\n\t\tthis.fullscreenMaterial.defines.worldDistance = options.worldDistance.toPrecision(5)\n\n\t\tthis.fullscreenMaterial.uniforms.fullAccumulate.value = options.fullAccumulate\n\t\tthis.fullscreenMaterial.uniforms.neighborhoodClampIntensity.value = options.neighborhoodClampIntensity\n\t\tthis.fullscreenMaterial.uniforms.maxBlend.value = options.maxBlend\n\n\t\tthis.fullscreenMaterial.uniforms.projectionMatrix.value = camera.projectionMatrix.clone()\n\t\tthis.fullscreenMaterial.uniforms.projectionMatrixInverse.value = camera.projectionMatrixInverse.clone()\n\t\tthis.fullscreenMaterial.uniforms.cameraMatrixWorld.value = camera.matrixWorld\n\t\tthis.fullscreenMaterial.uniforms.viewMatrix.value = camera.matrixWorldInverse\n\t\tthis.fullscreenMaterial.uniforms.cameraPos.value = camera.position\n\n\t\tthis.fullscreenMaterial.uniforms.prevViewMatrix.value = camera.matrixWorldInverse.clone()\n\t\tthis.fullscreenMaterial.uniforms.prevCameraMatrixWorld.value = camera.matrixWorld.clone()\n\t\tthis.fullscreenMaterial.uniforms.prevProjectionMatrix.value = camera.projectionMatrix.clone()\n\t\tthis.fullscreenMaterial.uniforms.prevProjectionMatrixInverse.value = camera.projectionMatrixInverse.clone()\n\n\t\tthis.fullscreenMaterial.uniforms.velocityTexture.value = velocityDepthNormalPass.renderTarget.texture\n\t\tthis.fullscreenMaterial.uniforms.depthTexture.value = velocityDepthNormalPass.depthTexture\n\n\t\tthis.fullscreenMaterial.defines.inputType =\n\t\t\t[\"diffuseSpecular\", \"diffuse\", \"specular\"].indexOf(options.inputType) ?? 1\n\n\t\tfor (const opt of [\"reprojectSpecular\", \"neighborhoodClamp\"]) {\n\t\t\tlet value = options[opt]\n\n\t\t\tif (typeof value !== \"array\") value = Array(textureCount).fill(value)\n\n\t\t\tthis.fullscreenMaterial.defines[opt] = /* glsl */ `bool[](${value.join(\", \")})`\n\t\t}\n\n\t\tthis.fullscreenMaterial.defines.confidencePower = options.confidencePower.toPrecision(5)\n\n\t\tthis.options = options\n\t\tthis.velocityDepthNormalPass = velocityDepthNormalPass\n\n\t\tthis.fullscreenMaterial.uniforms.inputTexture.value = texture\n\t}\n\n\tsetInputTexture(texture) {\n\t\tthis.fullscreenMaterial.uniforms.inputTexture.value = texture\n\t}\n\n\tdispose() {\n\t\tsuper.dispose()\n\n\t\tthis.renderTarget.dispose()\n\t\tthis.fullscreenMaterial.dispose()\n\t}\n\n\tsetSize(width, height) {\n\t\tthis.renderTarget.setSize(width, height)\n\n\t\tthis.fullscreenMaterial.uniforms.invTexSize.value.set(1 / width, 1 / height)\n\n\t\tthis.framebufferTexture?.dispose()\n\n\t\tconst inputTexture = this.fullscreenMaterial.uniforms.inputTexture.value\n\n\t\tthis.framebufferTexture = new FramebufferTexture(width, height, inputTexture.format)\n\t\tthis.framebufferTexture.type = inputTexture.type\n\t\tthis.framebufferTexture.minFilter = LinearFilter\n\t\tthis.framebufferTexture.magFilter = LinearFilter\n\n\t\tthis.framebufferTexture.needsUpdate = true\n\n\t\tfor (let i = 0; i < this.textureCount; i++) {\n\t\t\tconst accumulatedTexture = this.overrideAccumulatedTextures[i] ?? this.framebufferTexture\n\t\t\tthis.fullscreenMaterial.uniforms[\"accumulatedTexture\" + i].value = accumulatedTexture\n\t\t}\n\t}\n\n\tget texture() {\n\t\treturn this.renderTarget.texture;\n\t}\n\n\treset() {\n\t\tthis.fullscreenMaterial.uniforms.keepData.value = 0\n\t}\n\n\trender(renderer) {\n\t\tthis.frame = (this.frame + 1) % 4096\n\n\t\tconst delta = Math.min(1 / 10, this.clock.getDelta())\n\t\tthis.fullscreenMaterial.uniforms.delta.value = delta\n\n\t\ttmpProjectionMatrix.copy(this._camera.projectionMatrix)\n\t\ttmpProjectionMatrixInverse.copy(this._camera.projectionMatrixInverse)\n\n\t\tif (this._camera.view) this._camera.view.enabled = false\n\t\tthis._camera.updateProjectionMatrix()\n\n\t\tthis.fullscreenMaterial.uniforms.projectionMatrix.value.copy(this._camera.projectionMatrix)\n\t\tthis.fullscreenMaterial.uniforms.projectionMatrixInverse.value.copy(this._camera.projectionMatrixInverse)\n\t\tthis.fullscreenMaterial.uniforms.lastVelocityTexture.value = this.velocityDepthNormalPass.lastVelocityTexture\n\n\t\tthis.fullscreenMaterial.uniforms.fullAccumulate.value =\n\t\t\tthis.options.fullAccumulate &&\n\t\t\t!didCameraMove(this._camera, this.lastCameraTransform.position, this.lastCameraTransform.quaternion)\n\n\t\tthis.lastCameraTransform.position.copy(this._camera.position)\n\t\tthis.lastCameraTransform.quaternion.copy(this._camera.quaternion)\n\n\t\tif (this._camera.view) this._camera.view.enabled = true\n\t\tthis._camera.projectionMatrix.copy(tmpProjectionMatrix)\n\t\tthis._camera.projectionMatrixInverse.copy(tmpProjectionMatrixInverse)\n\n\t\tthis.fullscreenMaterial.uniforms.cameraNear.value = this._camera.near\n\t\tthis.fullscreenMaterial.uniforms.cameraFar.value = this._camera.far\n\n\t\trenderer.setRenderTarget(this.renderTarget)\n\t\trenderer.render(this.scene, this.camera)\n\n\t\tthis.fullscreenMaterial.uniforms.keepData.value = 1\n\n\t\tif (this.overrideAccumulatedTextures.length === 0) {\n\t\t\tthis.framebufferTexture.needsUpdate = true\n\t\t\trenderer.copyFramebufferToTexture(tmpVec2, this.framebufferTexture)\n\t\t}\n\n\t\t// save last transformations\n\t\tthis.fullscreenMaterial.uniforms.prevCameraMatrixWorld.value.copy(this._camera.matrixWorld)\n\t\tthis.fullscreenMaterial.uniforms.prevViewMatrix.value.copy(this._camera.matrixWorldInverse)\n\n\t\tthis.fullscreenMaterial.uniforms.prevProjectionMatrix.value.copy(\n\t\t\tthis.fullscreenMaterial.uniforms.projectionMatrix.value\n\t\t)\n\t\tthis.fullscreenMaterial.uniforms.prevProjectionMatrixInverse.value.copy(\n\t\t\tthis.fullscreenMaterial.uniforms.projectionMatrixInverse.value\n\t\t)\n\n\t\tthis.fullscreenMaterial.uniforms.prevCameraPos.value.copy(this._camera.position)\n\t}\n\n\tjitter(jitterScale = 1) {\n\t\tthis.unjitter()\n\n\t\tjitter(this.renderTarget.width, this.renderTarget.height, this._camera, this.frame, jitterScale)\n\t}\n\n\tunjitter() {\n\t\tif (this._camera.clearViewOffset) this._camera.clearViewOffset()\n\t}\n}\n","import { Effect } from \"postprocessing\"\nimport { Uniform } from \"three\"\nimport {\n\tTemporalReprojectPass,\n\tdefaultTemporalReprojectPassOptions\n} from \"../temporal-reproject/TemporalReprojectPass.js\"\n// eslint-disable-next-line camelcase\nimport traa_compose from \"./shader/traa_compose.frag\"\n\nexport class TRAAEffect extends Effect {\n\tconstructor(scene, camera, velocityDepthNormalPass, options = defaultTemporalReprojectPassOptions) {\n\t\tsuper(\"TRAAEffect\", traa_compose, {\n\t\t\ttype: \"FinalTRAAEffectMaterial\",\n\t\t\tuniforms: new Map([[\"accumulatedTexture\", new Uniform(null)]])\n\t\t})\n\n\t\tthis._scene = scene\n\t\tthis._camera = camera\n\t\tthis.velocityDepthNormalPass = velocityDepthNormalPass\n\n\t\toptions = {\n\t\t\t...options,\n\t\t\t...{\n\t\t\t\tmaxBlend: 0.9,\n\t\t\t\tneighborhoodClamp: true,\n\t\t\t\tneighborhoodClampIntensity: 1,\n\t\t\t\tneighborhoodClampRadius: 1,\n\t\t\t\tlogTransform: true,\n\t\t\t\tconfidencePower: 4\n\t\t\t}\n\t\t}\n\n\t\tthis.options = { ...defaultTemporalReprojectPassOptions, ...options }\n\n\t\tthis.setSize(options.width, options.height)\n\t}\n\n\tsetSize(width, height) {\n\t\tthis.temporalReprojectPass?.setSize(width, height)\n\t}\n\n\tdispose() {\n\t\tsuper.dispose()\n\n\t\tthis.temporalReprojectPass.dispose()\n\t}\n\n\treset() {\n\t\tthis.temporalReprojectPass.reset()\n\t}\n\n\tupdate(renderer, inputBuffer) {\n\t\tif (!this.temporalReprojectPass) {\n\t\t\tthis.temporalReprojectPass = new TemporalReprojectPass(\n\t\t\t\tthis._scene,\n\t\t\t\tthis._camera,\n\t\t\t\tthis.velocityDepthNormalPass,\n\t\t\t\tinputBuffer.texture,\n\t\t\t\t1,\n\t\t\t\tthis.options\n\t\t\t)\n\t\t\tthis.temporalReprojectPass.setSize(inputBuffer.width, inputBuffer.height)\n\n\t\t\tthis.uniforms.get(\"accumulatedTexture\").value = this.temporalReprojectPass.texture\n\t\t}\n\n\t\tthis.temporalReprojectPass.setInputTexture(inputBuffer.texture);\n\n\t\tthis.temporalReprojectPass.unjitter()\n\t\tthis.unjitteredProjectionMatrix = this._camera.projectionMatrix.clone()\n\n\t\tthis._camera.projectionMatrix.copy(this.unjitteredProjectionMatrix)\n\n\t\tthis.temporalReprojectPass.jitter()\n\n\t\tthis.temporalReprojectPass.render(renderer)\n\t}\n}\n\nexport const defaultTRAAOptions = defaultTemporalReprojectPassOptions\n","// this shader is from: https://github.com/gkjohnson/threejs-sandbox\n/* eslint-disable camelcase */\n\nimport { Matrix3, Matrix4, ShaderChunk, ShaderMaterial, UniformsUtils, Vector2 } from \"three\"\n\n// Modified ShaderChunk.skinning_pars_vertex to handle\n// a second set of bone information from the previous frame\nconst prev_skinning_pars_vertex = /* glsl */ `\n\t\t#ifdef USE_SKINNING\n\t\t#ifdef BONE_TEXTURE\n\t\t\tuniform sampler2D prevBoneTexture;\n\t\t\tmat4 getPrevBoneMatrix( const in float i ) {\n\t\t\t\tfloat j = i * 4.0;\n\t\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\t\ty = dy * ( y + 0.5 );\n\t\t\t\tvec4 v1 = textureLod( prevBoneTexture, vec2( dx * ( x + 0.5 ), y ), 0. );\n\t\t\t\tvec4 v2 = textureLod( prevBoneTexture, vec2( dx * ( x + 1.5 ), y ), 0. );\n\t\t\t\tvec4 v3 = textureLod( prevBoneTexture, vec2( dx * ( x + 2.5 ), y ), 0. );\n\t\t\t\tvec4 v4 = textureLod( prevBoneTexture, vec2( dx * ( x + 3.5 ), y ), 0. );\n\t\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\t\treturn bone;\n\t\t\t}\n\t\t#else\n\t\t\tuniform mat4 prevBoneMatrices[ MAX_BONES ];\n\t\t\tmat4 getPrevBoneMatrix( const in float i ) {\n\t\t\t\tmat4 bone = prevBoneMatrices[ int(i) ];\n\t\t\t\treturn bone;\n\t\t\t}\n\t\t#endif\n\t\t#endif\n`\n\nexport const velocity_vertex_pars = /* glsl */ `\n#define MAX_BONES 64\n \n${ShaderChunk.skinning_pars_vertex}\n${prev_skinning_pars_vertex}\n\nuniform mat4 velocityMatrix;\nuniform mat4 prevVelocityMatrix;\nvarying vec4 prevPosition;\nvarying vec4 newPosition;\n\nvarying vec2 vHighPrecisionZW;\n`\n\n// Returns the body of the vertex shader for the velocity buffer\nexport const velocity_vertex_main = /* glsl */ `\n// Get the current vertex position\ntransformed = vec3( position );\n${ShaderChunk.skinning_vertex}\nnewPosition = velocityMatrix * vec4( transformed, 1.0 );\n\n// Get the previous vertex position\ntransformed = vec3( position );\n${ShaderChunk.skinbase_vertex.replace(/mat4 /g, \"\").replace(/getBoneMatrix/g, \"getPrevBoneMatrix\")}\n${ShaderChunk.skinning_vertex.replace(/vec4 /g, \"\")}\nprevPosition = prevVelocityMatrix * vec4( transformed, 1.0 );\n\ngl_Position = newPosition;\n\nvHighPrecisionZW = gl_Position.zw;\n`\n\nexport const velocity_fragment_pars = /* glsl */ `\nvarying vec4 prevPosition;\nvarying vec4 newPosition;\n\nvarying vec2 vHighPrecisionZW;\n`\n\nexport const velocity_fragment_main = /* glsl */ `\nvec2 pos0 = (prevPosition.xy / prevPosition.w) * 0.5 + 0.5;\nvec2 pos1 = (newPosition.xy / newPosition.w) * 0.5 + 0.5;\n\nvec2 vel = pos1 - pos0;\n\nfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\ngl_FragColor = vec4(vel.x, vel.y, 0., 0.);\n`\n\nexport const velocity_uniforms = {\n\tprevVelocityMatrix: { value: new Matrix4() },\n\tvelocityMatrix: { value: new Matrix4() },\n\tprevBoneTexture: { value: null },\n\tboneTexture: { value: null },\n\tnormalMap: { value: null },\n\tnormalScale: { value: new Vector2(1, 1) },\n\tuvTransform: { value: new Matrix3() }\n}\n\nexport class VelocityDepthNormalMaterial extends ShaderMaterial {\n\tconstructor(camera) {\n\t\tsuper({\n\t\t\tuniforms: {\n\t\t\t\t...UniformsUtils.clone(velocity_uniforms),\n\t\t\t\t...{\n\t\t\t\t\tcameraMatrixWorld: { value: camera.matrixWorld }\n\t\t\t\t}\n\t\t\t},\n\t\t\tvertexShader: /* glsl */ `\n\t\t\t\t\t#include <common>\n\t\t\t\t\t#include <uv_pars_vertex>\n\t\t\t\t\t#include <displacementmap_pars_vertex>\n\t\t\t\t\t#include <normal_pars_vertex>\n\t\t\t\t\t#include <morphtarget_pars_vertex>\n\t\t\t\t\t#include <logdepthbuf_pars_vertex>\n\t\t\t\t\t#include <clipping_planes_pars_vertex>\n\n\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t\tvarying vec3 vViewPosition;\n\t\t\t\t\t\n ${velocity_vertex_pars}\n \n void main() {\n\t\t\t\t\t\tvec3 transformed;\n\n\t\t\t\t\t\t#include <uv_vertex>\n\n\t\t\t\t\t\t#include <skinbase_vertex>\n\t\t\t\t\t\t#include <beginnormal_vertex>\n\t\t\t\t\t\t#include <skinnormal_vertex>\n\t\t\t\t\t\t#include <defaultnormal_vertex>\n\n\t\t\t\t\t\t#include <morphnormal_vertex>\n\t\t\t\t\t\t#include <normal_vertex>\n\t\t\t\t\t\t#include <morphtarget_vertex>\n\t\t\t\t\t\t#include <displacementmap_vertex>\n\t\t\t\t\t\t#include <project_vertex>\n\t\t\t\t\t\t#include <logdepthbuf_vertex>\n\t\t\t\t\t\t#include <clipping_planes_vertex>\n\n\t\t\t\t\t\t${velocity_vertex_main}\n\n\t\t\t\t\t\tvViewPosition = - mvPosition.xyz;\n\n\t\t\t\t\t\tvUv = uv;\n\n }`,\n\t\t\tfragmentShader: /* glsl */ `\n\t\t\t\t\tprecision highp float;\n\t\t\t\t\tuniform mat4 cameraMatrixWorld;\n\n\t\t\t\t\tvarying vec3 vViewPosition;\n\n\t\t\t\t\t${velocity_fragment_pars}\n\t\t\t\t\t#include <packing>\n\n\t\t\t\t\t#include <uv_pars_fragment>\n\t\t\t\t\t#include <normal_pars_fragment>\n\t\t\t\t\t#include <normalmap_pars_fragment>\n\n\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t\t// source: https://knarkowicz.wordpress.com/2014/04/16/octahedron-normal-vector-encoding/\n\t\t\t\t\tvec2 OctWrap( vec2 v ) {\n\t\t\t\t\t\tvec2 w = 1.0 - abs( v.yx );\n\t\t\t\t\t\tif (v.x < 0.0) w.x = -w.x;\n\t\t\t\t\t\tif (v.y < 0.0) w.y = -w.y;\n\t\t\t\t\t\treturn w;\n\t\t\t\t\t}\n\n\t\t\t\t\tvec2 encodeOctWrap(vec3 n) {\n\t\t\t\t\t\tn /= (abs(n.x) + abs(n.y) + abs(n.z));\n\t\t\t\t\t\tn.xy = n.z > 0.0 ? n.xy : OctWrap(n.xy);\n\t\t\t\t\t\tn.xy = n.xy * 0.5 + 0.5;\n\t\t\t\t\t\treturn n.xy;\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat packNormal(vec3 normal) {\n\t\t\t\t\t\treturn uintBitsToFloat(packHalf2x16(encodeOctWrap(normal)));\n\t\t\t\t\t}\n\n void main() {\n\t\t\t\t\t\t#define vNormalMapUv vUv\n\n\t\t\t\t\t\t#include <normal_fragment_begin>\n \t#include <normal_fragment_maps>\n\n\t\t\t\t\t\t${velocity_fragment_main}\n\t\t\t\t\t\tvec3 worldNormal = normalize((cameraMatrixWorld * vec4(normal, 0.)).xyz);\n\t\t\t\t\t\tgl_FragColor.b = packNormal(worldNormal);\n\t\t\t\t\t\tgl_FragColor.a = fragCoordZ;\n }`\n\t\t})\n\t}\n}\n","const materialProps = [\n\t\"vertexTangent\",\n\t\"vertexColors\",\n\t\"vertexAlphas\",\n\t\"vertexUvs\",\n\t\"uvsVertexOnly\",\n\t\"supportsVertexTextures\",\n\t\"instancing\",\n\t\"instancingColor\",\n\t\"side\",\n\t\"flatShading\",\n\t\"skinning\",\n\t\"doubleSided\",\n\t\"flipSided\"\n]\n\nexport const copyNecessaryProps = (originalMaterial, newMaterial) => {\n\tfor (const props of materialProps) newMaterial[props] = originalMaterial[props]\n}\n\nexport const keepMaterialMapUpdated = (mrtMaterial, originalMaterial, prop, define, useKey) => {\n\tif (useKey) {\n\t\tif (originalMaterial[prop] !== mrtMaterial[prop]) {\n\t\t\tmrtMaterial[prop] = originalMaterial[prop]\n\t\t\tmrtMaterial.uniforms[prop].value = originalMaterial[prop]\n\n\t\t\tif (originalMaterial[prop]) {\n\t\t\t\tmrtMaterial.defines[define] = \"\"\n\t\t\t} else {\n\t\t\t\tdelete mrtMaterial.defines[define]\n\t\t\t}\n\n\t\t\tmrtMaterial.needsUpdate = true\n\t\t}\n\t} else if (mrtMaterial[prop] !== undefined) {\n\t\tmrtMaterial[prop] = undefined\n\t\tmrtMaterial.uniforms[prop].value = undefined\n\t\tdelete mrtMaterial.defines[define]\n\t\tmrtMaterial.needsUpdate = true\n\t}\n}\n\nexport const getVisibleChildren = object => {\n\tconst queue = [object]\n\tconst objects = []\n\n\twhile (queue.length !== 0) {\n\t\tconst mesh = queue.shift()\n\t\tif (mesh.material) objects.push(mesh)\n\n\t\tfor (const c of mesh.children) {\n\t\t\tif (c.visible) queue.push(c)\n\t\t}\n\t}\n\n\treturn objects\n}\n","import { Pass } from \"postprocessing\"\nimport {\n\tColor,\n\tDataTexture,\n\tDepthTexture,\n\tFramebufferTexture,\n\tHalfFloatType,\n\tMatrix4,\n\tNearestFilter,\n\tRGBAFormat,\n\tVector2,\n\tWebGLRenderTarget\n} from \"three\"\nimport { VelocityDepthNormalMaterial } from \"../material/VelocityDepthNormalMaterial.js\"\nimport { copyNecessaryProps, keepMaterialMapUpdated } from \"../../utils/GBufferUtils.js\"\nimport { getVisibleChildren } from \"../../utils/SceneUtils.js\"\nimport { isChildMaterialRenderable } from \"../../utils/SceneUtils.js\"\n\nconst backgroundColor = new Color(0)\nconst zeroVec2 = new Vector2()\nconst tmpProjectionMatrix = new Matrix4()\nconst tmpProjectionMatrixInverse = new Matrix4()\n\nconst saveBoneTexture = (object, floatType) => {\n\tlet boneTexture = object.material.uniforms.prevBoneTexture.value\n\n\tif (boneTexture && boneTexture.image.width === object.skeleton.boneTexture.width) {\n\t\tboneTexture = object.material.uniforms.prevBoneTexture.value\n\t\tboneTexture.image.data.set(object.skeleton.boneTexture.image.data)\n\t} else {\n\t\tboneTexture?.dispose()\n\n\t\tconst boneMatrices = object.skeleton.boneTexture.image.data.slice()\n\t\tconst size = object.skeleton.boneTexture.image.width\n\n\t\tboneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, floatType)\n\t\tobject.material.uniforms.prevBoneTexture.value = boneTexture\n\n\t\tboneTexture.needsUpdate = true\n\t}\n}\n\nconst updateVelocityDepthNormalMaterialBeforeRender = (c, camera) => {\n\tif (c.skeleton?.boneTexture) {\n\t\tc.material.uniforms.boneTexture.value = c.skeleton.boneTexture\n\n\t\tif (!(\"USE_SKINNING\" in c.material.defines)) {\n\t\t\tc.material.defines.USE_SKINNING = \"\"\n\t\t\tc.material.defines.BONE_TEXTURE = \"\"\n\n\t\t\tc.material.needsUpdate = true\n\t\t}\n\t}\n\n\tc.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, c.matrixWorld)\n\n\tc.material.uniforms.velocityMatrix.value.multiplyMatrices(camera.projectionMatrix, c.modelViewMatrix)\n}\n\nconst updateVelocityDepthNormalMaterialAfterRender = (c, camera, floatType) => {\n\tc.material.uniforms.prevVelocityMatrix.value.multiplyMatrices(camera.projectionMatrix, c.modelViewMatrix)\n\n\tif (c.skeleton?.boneTexture) saveBoneTexture(c, floatType)\n}\n\nexport class VelocityDepthNormalPass extends Pass {\n\tcachedMaterials = new WeakMap()\n\tvisibleMeshes = []\n\tneedsSwap = false\n\n\tconstructor(scene, camera, floatType = HalfFloatType) {\n\t\tsuper(\"VelocityDepthNormalPass\")\n\n\t\tthis._scene = scene\n\t\tthis._camera = camera\n\t\tthis._floatType = floatType\n\n\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\n\t\t\ttype: floatType,\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter\n\t\t})\n\n\t\tthis.renderTarget.texture.name = \"VelocityDepthNormalPass.Texture\"\n\n\t\tthis.renderTarget.depthTexture = new DepthTexture(1, 1)\n\t\tthis.renderTarget.depthTexture.type = floatType;\n\t}\n\n\tget texture() {\n\t\treturn this.renderTarget.texture\n\t}\n\n\tsetVelocityDepthNormalMaterialInScene() {\n\t\tthis.visibleMeshes = getVisibleChildren(this._scene)\n\n\t\tfor (const c of this.visibleMeshes) {\n\t\t\tconst originalMaterial = c.material\n\n\t\t\tlet [cachedOriginalMaterial, velocityDepthNormalMaterial] = this.cachedMaterials.get(c) || []\n\n\t\t\tif (originalMaterial !== cachedOriginalMaterial) {\n\t\t\t\tvelocityDepthNormalMaterial = new VelocityDepthNormalMaterial(this._camera)\n\n\t\t\t\tcopyNecessaryProps(originalMaterial, velocityDepthNormalMaterial)\n\n\t\t\t\tc.material = velocityDepthNormalMaterial\n\n\t\t\t\tif (c.skeleton?.boneTexture) saveBoneTexture(c, this._floatType);\n\n\t\t\t\tthis.cachedMaterials.set(c, [originalMaterial, velocityDepthNormalMaterial])\n\t\t\t}\n\n\t\t\tc.material = velocityDepthNormalMaterial\n\n\t\t\tc.visible = isChildMaterialRenderable(c, originalMaterial)\n\n\t\t\tkeepMaterialMapUpdated(\n\t\t\t\tvelocityDepthNormalMaterial,\n\t\t\t\toriginalMaterial,\n\t\t\t\t\"normalMap\",\n\t\t\t\t\"USE_NORMALMAP_TANGENTSPACE\",\n\t\t\t\ttrue\n\t\t\t)\n\t\t\tvelocityDepthNormalMaterial.uniforms.normalMap.value = originalMaterial.normalMap\n\n\t\t\tconst map =\n\t\t\t\toriginalMaterial.map ||\n\t\t\t\toriginalMaterial.normalMap ||\n\t\t\t\toriginalMaterial.roughnessMap ||\n\t\t\t\toriginalMaterial.metalnessMap\n\n\t\t\tif (map) velocityDepthNormalMaterial.uniforms.uvTransform.value = map.matrix\n\n\t\t\tupdateVelocityDepthNormalMaterialBeforeRender(c, this._camera)\n\t\t}\n\t}\n\n\tunsetVelocityDepthNormalMaterialInScene() {\n\t\tfor (const c of this.visibleMeshes) {\n\t\t\tc.visible = true\n\n\t\t\tupdateVelocityDepthNormalMaterialAfterRender(c, this._camera, this._floatType)\n\n\t\t\tc.material = this.cachedMaterials.get(c)[0]\n\t\t}\n\t}\n\n\tsetSize(width, height) {\n\t\tthis.renderTarget.setSize(width, height)\n\n\t\tthis.lastVelocityTexture?.dispose()\n\n\t\tthis.lastVelocityTexture = new FramebufferTexture(width, height, RGBAFormat)\n\t\tthis.lastVelocityTexture.type = this._floatType;\n\t\tthis.lastVelocityTexture.minFilter = NearestFilter\n\t\tthis.lastVelocityTexture.magFilter = NearestFilter\n\t}\n\n\tdispose() {\n\t\tsuper.dispose()\n\n\t\tthis.renderTarget.dispose()\n\t}\n\n\trender(renderer) {\n\t\ttmpProjectionMatrix.copy(this._camera.projectionMatrix)\n\t\ttmpProjectionMatrixInverse.copy(this._camera.projectionMatrixInverse)\n\n\t\tif (this._camera.view) this._camera.view.enabled = false\n\t\tthis._camera.updateProjectionMatrix()\n\n\t\t// in case a RenderPass is not being used, so we need to update the camera's world matrix manually\n\t\tthis._camera.updateMatrixWorld()\n\n\t\tthis.setVelocityDepthNormalMaterialInScene()\n\n\t\tconst { background } = this._scene\n\n\t\tthis._scene.background = backgroundColor\n\n\t\trenderer.setRenderTarget(this.renderTarget)\n\t\trenderer.copyFramebufferToTexture(zeroVec2, this.lastVelocityTexture)\n\n\t\trenderer.render(this._scene, this._camera)\n\n\t\tthis._scene.background = background\n\n\t\tthis.unsetVelocityDepthNormalMaterialInScene()\n\n\t\tif (this._camera.view) this._camera.view.enabled = true\n\t\tthis._camera.projectionMatrix.copy(tmpProjectionMatrix)\n\t\tthis._camera.projectionMatrixInverse.copy(tmpProjectionMatrixInverse)\n\t}\n}\n","import { Viewer } from \"@xviewer.js/core\";\nimport { VelocityDepthNormalPass } from \"./realism-effects\";\nimport { EffectComposerPlugin } from \"./EffectComposerPlugin\";\n\nexport function getVelocityDepthNormalPass(viewer: Viewer, autoAdd: boolean = true) {\n const composer = EffectComposerPlugin.Instance(viewer);\n let vdnPass = composer.getPass(VelocityDepthNormalPass);\n if (vdnPass === undefined && autoAdd) {\n vdnPass = composer.addPass(new VelocityDepthNormalPass(viewer.scene, viewer.camera));\n }\n return vdnPass;\n}","import { EffectPass } from \"postprocessing\";\nimport { TRAAEffect } from \"./realism-effects\";\nimport { PassPlugin } from \"./PassPlugin\";\nimport { getVelocityDepthNormalPass } from \"./getVelocityDepthNormalPass\";\nimport { PropertyManager } from \"@xviewer.js/core\";\n\nexport class TRAAPlugin extends PassPlugin<EffectPass> {\n type: string = \"TRAAPlugin\"\n\n private _effect: TRAAEffect;\n\n constructor(props: {\n dilation?: boolean,\n fullAccumulate?: boolean,\n neighborhoodClamp?: boolean,\n neighborhoodClampRadius?: number,\n neighborhoodClampIntensity?: number,\n } = {}) {\n super();\n this.install = () => {\n const { scene, camera } = this.viewer;\n this._effect = new TRAAEffect(scene, camera, getVelocityDepthNormalPass(this.viewer), props);\n this.pass = this.composer.addPass(new EffectPass(camera, this._effect));\n }\n this.uninstall = () => {\n this.composer.removePass(this.pass);\n }\n }\n}\n\nPropertyManager._getClassProperties(\"TRAAPlugin\")\n .property(\"enable\")"],"names":["EffectComposerPlugin","Plugin","Instance","viewer","getPlugin","multisampling","_composer","v","getPass","constructor","passes","find","addPass","pass","length","_checkOutputPass","removePass","activePass","enabled","count","filter","name","_outputPass","_setRenderToScreen","k","i","renderToScreen","props","type","install","renderer","scene","camera","_renderPass","RenderPass","EffectPass","EffectComposer","Object","assign","frameBufferType","HalfFloatType","_onResize","width","height","setSize","_onRender","dt","render","uninstall","dispose","PassPlugin","enable","setEnable","composer","ToneMappingPlugin","mode","effect","ToneMappingEffect","PropertyManager","_getClassProperties","property","value","ToneMappingMode","BloomPlugin","intensity","luminanceThreshold","luminanceMaterial","threshold","luminanceSmoothing","smoothing","BloomEffect","blendFunction","BlendFunction","ADD","min","max","step","FXAAPlugin","FXAAEffect","SMAAPlugin","preset","_preset","applyPreset","edgeDetectionMode","edgeDetectionMaterial","predicationMode","SMAAPreset","MEDIUM","SMAAEffect","EdgeDetectionMode","PredicationMode","MSAAPlugin","_maxSamples","Math","capabilities","maxSamples","g","a1","a2","base","generateR2","points","n","push","r2Sequence","map","a","b","jitter","frame","jitterScale","x","y","setViewOffset","unrollLoopPattern","unrollLoops","string","replace","loopReplacer","match","start","end","snippet","parseInt","TemporalReprojectMaterial","ShaderMaterial","textureCount","finalFragmentShader","fragmentShader","reproject","gbuffer_packing","definitions","replaceAll","matches2","matchAll","key","number","matches3","uniforms","inputTexture","Uniform","velocityTexture","depthTexture","lastVelocityTexture","neighborhoodClampIntensity","fullAccumulate","keepData","delta","invTexSize","Vector2","projectionMatrix","Matrix4","projectionMatrixInverse","cameraMatrixWorld","viewMatrix","prevViewMatrix","prevCameraMatrixWorld","prevProjectionMatrix","prevProjectionMatrixInverse","cameraPos","Vector3","prevCameraPos","cameraNear","cameraFar","maxBlend","vertexShader","blending","NoBlending","depthWrite","depthTest","toneMapped","glslVersion","GLSL3","isGroundProjectedEnv","c","material","includes","isChildMaterialRenderable","visible","transparent","opacity","didCameraMove","lastCameraPosition","lastCameraQuaternion","position","distanceToSquared","quaternion","angleTo","getVisibleChildren","object","queue","objects","mesh","shift","children","defaultTemporalReprojectPassOptions","dilation","neighborhoodClamp","neighborhoodClampRadius","logTransform","depthDistance","worldDistance","reprojectSpecular","renderTarget","copyTextures","confidencePower","inputType","tmpProjectionMatrix","tmpProjectionMatrixInverse","tmpVec2","TemporalReprojectPass","Pass","setInputTexture","texture","fullscreenMaterial","set","framebufferTexture","FramebufferTexture","format","minFilter","LinearFilter","magFilter","needsUpdate","accumulatedTexture","overrideAccumulatedTextures","reset","clock","getDelta","copy","_camera","view","updateProjectionMatrix","velocityDepthNormalPass","options","lastCameraTransform","near","far","setRenderTarget","copyFramebufferToTexture","matrixWorld","matrixWorldInverse","unjitter","clearViewOffset","needsSwap","Clock","Quaternion","_scene","WebGLRenderTarget","NearestFilter","depthBuffer","textures","forEach","index","defines","isPerspectiveCamera","PERSPECTIVE_CAMERA","toPrecision","clone","indexOf","opt","Array","fill","join","TRAAEffect","Effect","temporalReprojectPass","update","inputBuffer","get","unjitteredProjectionMatrix","traa_compose","Map","prev_skinning_pars_vertex","velocity_vertex_pars","ShaderChunk","skinning_pars_vertex","velocity_vertex_main","skinning_vertex","skinbase_vertex","velocity_fragment_pars","velocity_fragment_main","velocity_uniforms","prevVelocityMatrix","velocityMatrix","prevBoneTexture","boneTexture","normalMap","normalScale","uvTransform","Matrix3","VelocityDepthNormalMaterial","UniformsUtils","materialProps","copyNecessaryProps","originalMaterial","newMaterial","keepMaterialMapUpdated","mrtMaterial","prop","define","useKey","backgroundColor","Color","zeroVec2","saveBoneTexture","floatType","image","skeleton","data","boneMatrices","slice","size","DataTexture","RGBAFormat","updateVelocityDepthNormalMaterialBeforeRender","USE_SKINNING","BONE_TEXTURE","modelViewMatrix","multiplyMatrices","updateVelocityDepthNormalMaterialAfterRender","VelocityDepthNormalPass","setVelocityDepthNormalMaterialInScene","visibleMeshes","cachedOriginalMaterial","velocityDepthNormalMaterial","cachedMaterials","_floatType","roughnessMap","metalnessMap","matrix","unsetVelocityDepthNormalMaterialInScene","updateMatrixWorld","background","WeakMap","DepthTexture","getVelocityDepthNormalPass","autoAdd","vdnPass","undefined","TRAAPlugin","_effect"],"mappings":"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","x_google_ignoreList":[3]}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/PostProcessingManager.ts","../src/PostProcessing.ts","../src/ToneMapping.ts","../src/DepthOfField.ts","../src/Bloom.ts","../src/FXAA.ts","../src/SMAA.ts","../src/MSAA.ts"],"sourcesContent":["import { Mount, PropertyManager } from \"@xviewer.js/core\";\nimport { Effect, EffectComposer, EffectPass, Pass, RenderPass } from \"postprocessing\";\nimport { HalfFloatType } from \"three\";\n\nexport class PostProcessingManager extends Mount {\n private _renderPass: RenderPass;\n private _outputPass: EffectPass;\n private _composer: EffectComposer;\n\n private _effects: Effect[] = [];\n private _effectPass: EffectPass = null;\n private _effectDirty: boolean = true;\n\n get multisampling() {\n return this._composer.multisampling;\n }\n set multisampling(v: number) {\n this._composer.multisampling = v;\n }\n\n constructor(props: ConstructorParameters<typeof EffectComposer>[1]) {\n super();\n this.onLoad = () => {\n const { renderer, scene, camera } = this.viewer;\n\n this._renderPass = new RenderPass(scene, camera);\n this._outputPass = new EffectPass(camera);\n\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType: HalfFloatType }, props));\n this._composer.addPass(this._renderPass);\n this._composer.addPass(this._outputPass);\n\n this.viewer._resizing = (width: number, height: number) => this._composer.setSize(width, height);\n this.viewer._rendering = (dt: number) => this.enabled && this._composer.render(dt);\n }\n this.onDestroy = () => {\n this._composer.dispose();\n }\n }\n\n update(dt: number): void {\n if (this._effectDirty) {\n this._effectDirty = false;\n this._effectPass && this.removePass(this._effectPass);\n this._effectPass = this.addPass(new EffectPass(this.viewer.camera, ...this._effects));\n }\n }\n\n getPass<T extends Pass>(constructor: (new (...args) => T) | Function) {\n return this._composer.passes.find(v => v.constructor === constructor) as T;\n }\n\n addPass<T extends Pass>(pass: T) {\n this._composer.addPass(pass, this._composer.passes.length - 1);\n this._checkOutputPass();\n return pass;\n }\n\n removePass(pass: Pass) {\n pass.dispose();\n this._composer.removePass(pass);\n this._checkOutputPass();\n }\n\n activePass(pass: Pass, v: boolean) {\n pass.enabled = v;\n this._checkOutputPass();\n return pass;\n }\n\n addEffect(effect: Effect) {\n this._effects.push(effect);\n this._effectDirty = true;\n return effect;\n }\n\n removeEffect(effect: Effect) {\n effect.dispose();\n this._effects.splice(this._effects.indexOf(effect), 1);\n this._effectDirty = true;\n }\n\n private _checkOutputPass() {\n const count = this._composer.passes.filter(v => v.enabled && v.name !== \"VelocityDepthNormalPass\" && v !== this._outputPass).length;\n this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;\n this._setRenderToScreen();\n }\n\n private _setRenderToScreen() {\n const passes = this._composer.passes;\n for (let k = 0, i = passes.length; i--;) {\n let pass = passes[i];\n if (pass.enabled && pass.name !== \"VelocityDepthNormalPass\" && k === 0) {\n k = i;\n }\n pass.renderToScreen = k === i;\n }\n }\n}","import { Mount } from \"@xviewer.js/core\";\nimport { PostProcessingManager } from \"./PostProcessingManager\";\n\nexport class PostProcessing extends Mount {\n\n get postprocessing() {\n return this.viewer.mount(PostProcessingManager, true);\n }\n}","import { PropertyManager } from \"@xviewer.js/core\";\nimport { ToneMappingEffect, ToneMappingMode } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class ToneMapping extends PostProcessing {\n effect: ToneMappingEffect;\n\n constructor(props: ConstructorParameters<typeof ToneMappingEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new ToneMappingEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get mode() {\n return this.effect.mode;\n }\n set mode(v: ToneMappingMode) {\n this.effect.mode = v;\n }\n}\n\nPropertyManager._getClassProperties(ToneMapping.name)\n .property(\"enabled\")\n .property(\"mode\", { value: ToneMappingMode })","\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { DepthOfFieldEffect } from \"postprocessing\";\nimport { Vector3 } from \"three\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class DepthOfField extends PostProcessing {\n effect: DepthOfFieldEffect;\n\n constructor(props?: ConstructorParameters<typeof DepthOfFieldEffect>[1] & { target?: Vector3 }) {\n super();\n this.onEnable = () => {\n this.effect = new DepthOfFieldEffect(this.viewer.camera, props);\n this.effect.target = props && props.target || null;\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get focusDistance() {\n return this.effect.cocMaterial.focusDistance;\n }\n set focusDistance(v: number) {\n this.effect.cocMaterial.focusDistance = v;\n }\n\n get focalLength() {\n return this.effect.cocMaterial.focalLength;\n }\n\n set focalLength(v: number) {\n this.effect.cocMaterial.focalLength = v;\n }\n\n get bokehScale() {\n return this.effect.bokehScale;\n }\n\n set bokehScale(v: number) {\n this.effect.bokehScale = v;\n }\n}\n\nPropertyManager._getClassProperties(DepthOfField.name)\n .property(\"enabled\")\n .property(\"focusDistance\")\n .property(\"focalLength\")\n .property(\"bokehScale\")","import { BlendFunction, BloomEffect } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class Bloom extends PostProcessing {\n effect: BloomEffect;\n\n constructor(props?: ConstructorParameters<typeof BloomEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new BloomEffect({ blendFunction: BlendFunction.ADD, ...props });\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get intensity() {\n return this.effect.intensity;\n }\n set intensity(v: number) {\n this.effect.intensity = v;\n }\n\n get luminanceThreshold() {\n return this.effect.luminanceMaterial.threshold;\n }\n set luminanceThreshold(v: number) {\n this.effect.luminanceMaterial.threshold = v;\n }\n\n get luminanceSmoothing() {\n return this.effect.luminanceMaterial.smoothing;\n }\n set luminanceSmoothing(v: number) {\n this.effect.luminanceMaterial.smoothing = v;\n }\n\n get blurRadius() {\n return this.effect[\"mipmapBlurPass\"].radius;\n }\n set blurRadius(v: number) {\n this.effect[\"mipmapBlurPass\"].radius = v;\n }\n}\n\nPropertyManager._getClassProperties(Bloom.name)\n .property(\"enabled\")\n .property(\"intensity\", { min: 0, max: 2, step: 0.01 })\n .property(\"luminanceThreshold\", { min: 0, max: 10, step: 0.01 })\n .property(\"luminanceSmoothing\", { min: 0, max: 10, step: 0.01 })\n .property(\"blurRadius\", { min: 0, max: 1, step: 0.01 })","import { PropertyManager } from \"@xviewer.js/core\";\nimport { FXAAEffect } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class FXAA extends PostProcessing {\n effect: FXAAEffect;\n\n constructor() {\n super();\n this.onEnable = () => {\n this.effect = new FXAAEffect();\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n}\n\nPropertyManager._getClassProperties(FXAA.name)\n .property(\"enabled\")","import { EdgeDetectionMode, PredicationMode, SMAAEffect, SMAAPreset } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class SMAA extends PostProcessing {\n effect: SMAAEffect;\n\n constructor(props: ConstructorParameters<typeof SMAAEffect>[0] = {}) {\n super();\n this.onEnable = () => {\n this.effect = new SMAAEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n private _preset: SMAAPreset = SMAAPreset.MEDIUM;\n\n get preset() {\n return this._preset;\n }\n set preset(v: SMAAPreset) {\n if (this._preset !== v) {\n this._preset = v;\n this.effect.applyPreset(v);\n }\n }\n\n get edgeDetectionMode() {\n return this.effect.edgeDetectionMaterial.edgeDetectionMode;\n }\n set edgeDetectionMode(v: EdgeDetectionMode) {\n this.effect.edgeDetectionMaterial.edgeDetectionMode = v;\n }\n\n get predicationMode() {\n return this.effect.edgeDetectionMaterial.predicationMode;\n }\n set predicationMode(v: PredicationMode) {\n this.effect.edgeDetectionMaterial.predicationMode = v;\n }\n}\n\nPropertyManager._getClassProperties(SMAA.name)\n .property(\"enabled\")\n .property(\"preset\", { value: SMAAPreset })\n .property(\"edgeDetectionMode\", { value: EdgeDetectionMode })\n .property(\"predicationMode\", { value: PredicationMode })\n","import { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class MSAA extends PostProcessing {\n\n constructor() {\n super();\n this.onEnable = () => {\n const { renderer } = this.viewer;\n const maxSamples = Math.min(4, renderer.capabilities.maxSamples);\n this.postprocessing.multisampling = maxSamples;\n }\n this.onDisable = () => {\n this.postprocessing.multisampling = 0;\n }\n }\n}\n\nPropertyManager._getClassProperties(MSAA.name)\n .property(\"enabled\")"],"names":["PostProcessingManager","Mount","multisampling","_composer","v","update","dt","_effectDirty","_effectPass","removePass","addPass","EffectPass","viewer","camera","_effects","getPass","constructor","passes","find","pass","length","_checkOutputPass","dispose","activePass","enabled","addEffect","effect","push","removeEffect","splice","indexOf","count","filter","name","_outputPass","_setRenderToScreen","k","i","renderToScreen","props","onLoad","renderer","scene","_renderPass","RenderPass","EffectComposer","Object","assign","frameBufferType","HalfFloatType","_resizing","width","height","setSize","_rendering","render","onDestroy","PostProcessing","postprocessing","mount","ToneMapping","mode","onEnable","ToneMappingEffect","onDisable","PropertyManager","_getClassProperties","property","value","ToneMappingMode","DepthOfField","focusDistance","cocMaterial","focalLength","bokehScale","DepthOfFieldEffect","target","Bloom","intensity","luminanceThreshold","luminanceMaterial","threshold","luminanceSmoothing","smoothing","blurRadius","radius","BloomEffect","blendFunction","BlendFunction","ADD","min","max","step","FXAA","FXAAEffect","SMAA","preset","_preset","applyPreset","edgeDetectionMode","edgeDetectionMaterial","predicationMode","SMAAPreset","MEDIUM","SMAAEffect","EdgeDetectionMode","PredicationMode","MSAA","maxSamples","Math","capabilities"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xviewer.js/postprocessing",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"types/**/*"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@xviewer.js/core": "1.0.0
|
|
16
|
+
"@xviewer.js/core": "1.0.0"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"postprocessing": ">= 6.35.4"
|
package/types/Bloom.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BloomEffect } from "postprocessing";
|
|
2
|
+
import { PostProcessing } from "./PostProcessing";
|
|
3
|
+
export declare class Bloom extends PostProcessing {
|
|
4
|
+
effect: BloomEffect;
|
|
5
|
+
constructor(props?: ConstructorParameters<typeof BloomEffect>[0]);
|
|
6
|
+
get intensity(): number;
|
|
7
|
+
set intensity(v: number);
|
|
8
|
+
get luminanceThreshold(): number;
|
|
9
|
+
set luminanceThreshold(v: number);
|
|
10
|
+
get luminanceSmoothing(): number;
|
|
11
|
+
set luminanceSmoothing(v: number);
|
|
12
|
+
get blurRadius(): number;
|
|
13
|
+
set blurRadius(v: number);
|
|
14
|
+
}
|
package/types/BloomPlugin.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export declare class BloomPlugin extends PassPlugin<EffectPass> {
|
|
|
8
8
|
set luminanceThreshold(v: number);
|
|
9
9
|
get luminanceSmoothing(): number;
|
|
10
10
|
set luminanceSmoothing(v: number);
|
|
11
|
+
get blurRadius(): number;
|
|
12
|
+
set blurRadius(v: number);
|
|
11
13
|
effect: BloomEffect;
|
|
12
14
|
constructor(props?: ConstructorParameters<typeof BloomEffect>[0]);
|
|
13
15
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DepthOfFieldEffect } from "postprocessing";
|
|
2
|
+
import { Vector3 } from "three";
|
|
3
|
+
import { PostProcessing } from "./PostProcessing";
|
|
4
|
+
export declare class DepthOfField extends PostProcessing {
|
|
5
|
+
effect: DepthOfFieldEffect;
|
|
6
|
+
constructor(props?: ConstructorParameters<typeof DepthOfFieldEffect>[1] & {
|
|
7
|
+
target?: Vector3;
|
|
8
|
+
});
|
|
9
|
+
get focusDistance(): number;
|
|
10
|
+
set focusDistance(v: number);
|
|
11
|
+
get focalLength(): number;
|
|
12
|
+
set focalLength(v: number);
|
|
13
|
+
get bokehScale(): number;
|
|
14
|
+
set bokehScale(v: number);
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DepthOfFieldEffect, EffectPass } from "postprocessing";
|
|
2
|
+
import { PassPlugin } from "./PassPlugin";
|
|
3
|
+
import { Vector3 } from "three";
|
|
4
|
+
export declare class DepthOfFieldPlugin extends PassPlugin<EffectPass> {
|
|
5
|
+
type: string;
|
|
6
|
+
effect: DepthOfFieldEffect;
|
|
7
|
+
constructor(props?: ConstructorParameters<typeof DepthOfFieldEffect>[1] & {
|
|
8
|
+
target?: Vector3;
|
|
9
|
+
});
|
|
10
|
+
get focusDistance(): number;
|
|
11
|
+
set focusDistance(v: number);
|
|
12
|
+
get focalLength(): number;
|
|
13
|
+
set focalLength(v: number);
|
|
14
|
+
get bokehScale(): number;
|
|
15
|
+
set bokehScale(v: number);
|
|
16
|
+
}
|
package/types/FXAA.d.ts
ADDED
package/types/FXAAPlugin.d.ts
CHANGED
package/types/MSAA.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Mount } from "@xviewer.js/core";
|
|
2
|
+
import { Effect, EffectComposer, Pass } from "postprocessing";
|
|
3
|
+
export declare class PostProcessingManager extends Mount {
|
|
4
|
+
private _renderPass;
|
|
5
|
+
private _outputPass;
|
|
6
|
+
private _composer;
|
|
7
|
+
private _effects;
|
|
8
|
+
private _effectPass;
|
|
9
|
+
private _effectDirty;
|
|
10
|
+
get multisampling(): number;
|
|
11
|
+
set multisampling(v: number);
|
|
12
|
+
constructor(props: ConstructorParameters<typeof EffectComposer>[1]);
|
|
13
|
+
update(dt: number): void;
|
|
14
|
+
getPass<T extends Pass>(constructor: (new (...args: any[]) => T) | Function): T;
|
|
15
|
+
addPass<T extends Pass>(pass: T): T;
|
|
16
|
+
removePass(pass: Pass): void;
|
|
17
|
+
activePass(pass: Pass, v: boolean): Pass;
|
|
18
|
+
addEffect(effect: Effect): Effect;
|
|
19
|
+
removeEffect(effect: Effect): void;
|
|
20
|
+
private _checkOutputPass;
|
|
21
|
+
private _setRenderToScreen;
|
|
22
|
+
}
|
package/types/SMAA.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EdgeDetectionMode, PredicationMode, SMAAEffect, SMAAPreset } from "postprocessing";
|
|
2
|
+
import { PostProcessing } from "./PostProcessing";
|
|
3
|
+
export declare class SMAA extends PostProcessing {
|
|
4
|
+
effect: SMAAEffect;
|
|
5
|
+
constructor(props?: ConstructorParameters<typeof SMAAEffect>[0]);
|
|
6
|
+
private _preset;
|
|
7
|
+
get preset(): SMAAPreset;
|
|
8
|
+
set preset(v: SMAAPreset);
|
|
9
|
+
get edgeDetectionMode(): EdgeDetectionMode;
|
|
10
|
+
set edgeDetectionMode(v: EdgeDetectionMode);
|
|
11
|
+
get predicationMode(): PredicationMode;
|
|
12
|
+
set predicationMode(v: PredicationMode);
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ToneMappingEffect, ToneMappingMode } from "postprocessing";
|
|
2
|
+
import { PostProcessing } from "./PostProcessing";
|
|
3
|
+
export declare class ToneMapping extends PostProcessing {
|
|
4
|
+
effect: ToneMappingEffect;
|
|
5
|
+
constructor(props: ConstructorParameters<typeof ToneMappingEffect>[0]);
|
|
6
|
+
get mode(): ToneMappingMode;
|
|
7
|
+
set mode(v: ToneMappingMode);
|
|
8
|
+
}
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
1
|
+
export { PostProcessingManager } from "./PostProcessingManager";
|
|
2
|
+
export { PostProcessing } from "./PostProcessing";
|
|
3
|
+
export { ToneMapping } from "./ToneMapping";
|
|
4
|
+
export { DepthOfField } from "./DepthOfField";
|
|
5
|
+
export { Bloom } from "./Bloom";
|
|
6
|
+
export { FXAA } from "./FXAA";
|
|
7
|
+
export { SMAA } from "./SMAA";
|
|
8
|
+
export { MSAA } from "./MSAA";
|
package/types/TTTTTTTT.d.ts
DELETED