@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.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/LICENSE +73 -0
- package/README.md +3 -0
- package/dist/RenderingEngine.d.ts +296 -0
- package/dist/RenderingEngine.d.ts.map +1 -0
- package/dist/RenderingEngine.js +1079 -0
- package/dist/RenderingEngine.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.d.ts +11 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.d.ts.map +1 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.js +169 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.js.map +1 -0
- package/dist/injectors/TextureUnifierInjector.d.ts +14 -0
- package/dist/injectors/TextureUnifierInjector.d.ts.map +1 -0
- package/dist/injectors/TextureUnifierInjector.js +227 -0
- package/dist/injectors/TextureUnifierInjector.js.map +1 -0
- package/dist/interfaces/ILoader.d.ts +4 -0
- package/dist/interfaces/ILoader.d.ts.map +1 -0
- package/dist/interfaces/ILoader.js +3 -0
- package/dist/interfaces/ILoader.js.map +1 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts +307 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts.map +1 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.js +31 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.js.map +1 -0
- package/dist/interfaces/IRenderingEngine.d.ts +43 -0
- package/dist/interfaces/IRenderingEngine.d.ts.map +1 -0
- package/dist/interfaces/IRenderingEngine.js +3 -0
- package/dist/interfaces/IRenderingEngine.js.map +1 -0
- package/dist/loaders/EnvironmentMapLoader.d.ts +98 -0
- package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -0
- package/dist/loaders/EnvironmentMapLoader.js +348 -0
- package/dist/loaders/EnvironmentMapLoader.js.map +1 -0
- package/dist/loaders/GeometryLoader.d.ts +38 -0
- package/dist/loaders/GeometryLoader.d.ts.map +1 -0
- package/dist/loaders/GeometryLoader.js +505 -0
- package/dist/loaders/GeometryLoader.js.map +1 -0
- package/dist/loaders/HTMLElementAnchorLoader.d.ts +17 -0
- package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -0
- package/dist/loaders/HTMLElementAnchorLoader.js +84 -0
- package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -0
- package/dist/loaders/LightLoader.d.ts +19 -0
- package/dist/loaders/LightLoader.d.ts.map +1 -0
- package/dist/loaders/LightLoader.js +152 -0
- package/dist/loaders/LightLoader.js.map +1 -0
- package/dist/loaders/MaterialLoader.d.ts +99 -0
- package/dist/loaders/MaterialLoader.d.ts.map +1 -0
- package/dist/loaders/MaterialLoader.js +1175 -0
- package/dist/loaders/MaterialLoader.js.map +1 -0
- package/dist/managers/CameraManager.d.ts +20 -0
- package/dist/managers/CameraManager.d.ts.map +1 -0
- package/dist/managers/CameraManager.js +195 -0
- package/dist/managers/CameraManager.js.map +1 -0
- package/dist/managers/EnvironmentGeometryManager.d.ts +43 -0
- package/dist/managers/EnvironmentGeometryManager.d.ts.map +1 -0
- package/dist/managers/EnvironmentGeometryManager.js +210 -0
- package/dist/managers/EnvironmentGeometryManager.js.map +1 -0
- package/dist/managers/PostProcessingManager.d.ts +1014 -0
- package/dist/managers/PostProcessingManager.d.ts.map +1 -0
- package/dist/managers/PostProcessingManager.js +1013 -0
- package/dist/managers/PostProcessingManager.js.map +1 -0
- package/dist/managers/RenderingManager.d.ts +83 -0
- package/dist/managers/RenderingManager.d.ts.map +1 -0
- package/dist/managers/RenderingManager.js +567 -0
- package/dist/managers/RenderingManager.js.map +1 -0
- package/dist/managers/SceneTracingManager.d.ts +26 -0
- package/dist/managers/SceneTracingManager.d.ts.map +1 -0
- package/dist/managers/SceneTracingManager.js +122 -0
- package/dist/managers/SceneTracingManager.js.map +1 -0
- package/dist/managers/SceneTreeManager.d.ts +55 -0
- package/dist/managers/SceneTreeManager.d.ts.map +1 -0
- package/dist/managers/SceneTreeManager.js +501 -0
- package/dist/managers/SceneTreeManager.js.map +1 -0
- package/dist/managers/postprocessing/GodRaysManager.d.ts +13 -0
- package/dist/managers/postprocessing/GodRaysManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/GodRaysManager.js +64 -0
- package/dist/managers/postprocessing/GodRaysManager.js.map +1 -0
- package/dist/managers/postprocessing/OutlineManager.d.ts +15 -0
- package/dist/managers/postprocessing/OutlineManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/OutlineManager.js +67 -0
- package/dist/managers/postprocessing/OutlineManager.js.map +1 -0
- package/dist/managers/postprocessing/SSAARenderPass.d.ts +54 -0
- package/dist/managers/postprocessing/SSAARenderPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/SSAARenderPass.js +234 -0
- package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +15 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.js +67 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +47 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.js +134 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +13 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.js +78 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +2 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +23 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +15 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +25 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +2 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +102 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +2 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +99 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +37 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +171 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +2 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +131 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +15 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +76 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +2 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +134 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +2 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.js +12 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.js.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +2 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +42 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js.map +1 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +38 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.js +106 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.js.map +1 -0
- package/dist/managers/postprocessing/utils/CopyShader.d.ts +14 -0
- package/dist/managers/postprocessing/utils/CopyShader.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/CopyShader.js +36 -0
- package/dist/managers/postprocessing/utils/CopyShader.js.map +1 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +10 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.js +29 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.js.map +1 -0
- package/dist/managers/postprocessing/utils/NormalPass.d.ts +88 -0
- package/dist/managers/postprocessing/utils/NormalPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/NormalPass.js +157 -0
- package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -0
- package/dist/managers/postprocessing/utils/RenderPass.d.ts +115 -0
- package/dist/managers/postprocessing/utils/RenderPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/RenderPass.js +251 -0
- package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -0
- package/dist/materials/GemMaterial.d.ts +38 -0
- package/dist/materials/GemMaterial.d.ts.map +1 -0
- package/dist/materials/GemMaterial.js +253 -0
- package/dist/materials/GemMaterial.js.map +1 -0
- package/dist/materials/MeshUnlitMaterialParameters.d.ts +4 -0
- package/dist/materials/MeshUnlitMaterialParameters.d.ts.map +1 -0
- package/dist/materials/MeshUnlitMaterialParameters.js +3 -0
- package/dist/materials/MeshUnlitMaterialParameters.js.map +1 -0
- package/dist/materials/MultiPointsMaterial.d.ts +94 -0
- package/dist/materials/MultiPointsMaterial.d.ts.map +1 -0
- package/dist/materials/MultiPointsMaterial.js +567 -0
- package/dist/materials/MultiPointsMaterial.js.map +1 -0
- package/dist/materials/SpecularGlossinessMaterial.d.ts +14 -0
- package/dist/materials/SpecularGlossinessMaterial.d.ts.map +1 -0
- package/dist/materials/SpecularGlossinessMaterial.js +162 -0
- package/dist/materials/SpecularGlossinessMaterial.js.map +1 -0
- package/dist/objects/SDBone.d.ts +13 -0
- package/dist/objects/SDBone.d.ts.map +1 -0
- package/dist/objects/SDBone.js +75 -0
- package/dist/objects/SDBone.js.map +1 -0
- package/dist/objects/SDColor.d.ts +17 -0
- package/dist/objects/SDColor.d.ts.map +1 -0
- package/dist/objects/SDColor.js +49 -0
- package/dist/objects/SDColor.js.map +1 -0
- package/dist/objects/SDData.d.ts +19 -0
- package/dist/objects/SDData.d.ts.map +1 -0
- package/dist/objects/SDData.js +48 -0
- package/dist/objects/SDData.js.map +1 -0
- package/dist/objects/SDObject.d.ts +14 -0
- package/dist/objects/SDObject.d.ts.map +1 -0
- package/dist/objects/SDObject.js +81 -0
- package/dist/objects/SDObject.js.map +1 -0
- package/dist/shaders/PCSS.d.ts +3 -0
- package/dist/shaders/PCSS.d.ts.map +1 -0
- package/dist/shaders/PCSS.js +127 -0
- package/dist/shaders/PCSS.js.map +1 -0
- package/dist/shaders/gem.d.ts +3 -0
- package/dist/shaders/gem.d.ts.map +1 -0
- package/dist/shaders/gem.js +578 -0
- package/dist/shaders/gem.js.map +1 -0
- package/dist/shaders/multi_points.d.ts +3 -0
- package/dist/shaders/multi_points.d.ts.map +1 -0
- package/dist/shaders/multi_points.js +294 -0
- package/dist/shaders/multi_points.js.map +1 -0
- package/dist/styling/viewport-css.d.ts +2 -0
- package/dist/styling/viewport-css.d.ts.map +1 -0
- package/dist/styling/viewport-css.js +117 -0
- package/dist/styling/viewport-css.js.map +1 -0
- package/dist/three/font.d.ts +2365 -0
- package/dist/three/font.d.ts.map +1 -0
- package/dist/three/font.js +6 -0
- package/dist/three/font.js.map +1 -0
- package/dist/three/geometries/TextGeometry.d.ts +22 -0
- package/dist/three/geometries/TextGeometry.d.ts.map +1 -0
- package/dist/three/geometries/TextGeometry.js +45 -0
- package/dist/three/geometries/TextGeometry.js.map +1 -0
- package/dist/three/loaders/FontLoader.d.ts +15 -0
- package/dist/three/loaders/FontLoader.d.ts.map +1 -0
- package/dist/three/loaders/FontLoader.js +118 -0
- package/dist/three/loaders/FontLoader.js.map +1 -0
- package/dist/three/loaders/RGBELoader.d.ts +24 -0
- package/dist/three/loaders/RGBELoader.d.ts.map +1 -0
- package/dist/three/loaders/RGBELoader.js +299 -0
- package/dist/three/loaders/RGBELoader.js.map +1 -0
- package/dist/types/IThreejsData.d.ts +7 -0
- package/dist/types/IThreejsData.d.ts.map +1 -0
- package/dist/types/IThreejsData.js +3 -0
- package/dist/types/IThreejsData.js.map +1 -0
- package/dist/types/ThreejsData.d.ts +11 -0
- package/dist/types/ThreejsData.d.ts.map +1 -0
- package/dist/types/ThreejsData.js +42 -0
- package/dist/types/ThreejsData.js.map +1 -0
- package/package.json +65 -0
- package/src/RenderingEngine.ts +1342 -0
- package/src/index.ts +23 -0
- package/src/injectors/Tag3dGeometryCreationInjector.ts +170 -0
- package/src/injectors/TextureUnifierInjector.ts +224 -0
- package/src/interfaces/ILoader.ts +3 -0
- package/src/interfaces/IPostProcessingEffectDefinitions.ts +402 -0
- package/src/interfaces/IRenderingEngine.ts +48 -0
- package/src/loaders/EnvironmentMapLoader.ts +355 -0
- package/src/loaders/GeometryLoader.ts +565 -0
- package/src/loaders/HTMLElementAnchorLoader.ts +107 -0
- package/src/loaders/LightLoader.ts +171 -0
- package/src/loaders/MaterialLoader.ts +1418 -0
- package/src/managers/CameraManager.ts +178 -0
- package/src/managers/EnvironmentGeometryManager.ts +224 -0
- package/src/managers/PostProcessingManager.ts +1169 -0
- package/src/managers/RenderingManager.ts +657 -0
- package/src/managers/SceneTracingManager.ts +120 -0
- package/src/managers/SceneTreeManager.ts +569 -0
- package/src/managers/postprocessing/GodRaysManager.ts +52 -0
- package/src/managers/postprocessing/OutlineManager.ts +58 -0
- package/src/managers/postprocessing/SSAARenderPass.ts +339 -0
- package/src/managers/postprocessing/SelectiveBloomManager.ts +58 -0
- package/src/managers/postprocessing/ao/ao/AOEffect.ts +180 -0
- package/src/managers/postprocessing/ao/ao/AOPass.ts +128 -0
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.glsl +17 -0
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.ts +19 -0
- package/src/managers/postprocessing/ao/hbao/HBAOEffect.ts +41 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao.glsl +96 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao.ts +98 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.glsl +92 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts +95 -0
- package/src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts +245 -0
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.glsl +125 -0
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.ts +127 -0
- package/src/managers/postprocessing/ao/ssao/SSAOEffect.ts +106 -0
- package/src/managers/postprocessing/ao/ssao/shader/ssao.glsl +128 -0
- package/src/managers/postprocessing/ao/ssao/shader/ssao.ts +130 -0
- package/src/managers/postprocessing/ao/utils/shader/basic.glsl +6 -0
- package/src/managers/postprocessing/ao/utils/shader/basic.ts +8 -0
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.glsl +36 -0
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.ts +38 -0
- package/src/managers/postprocessing/utils/CopyMaterial.ts +130 -0
- package/src/managers/postprocessing/utils/CopyShader.ts +39 -0
- package/src/managers/postprocessing/utils/FullScreenQuad.ts +47 -0
- package/src/managers/postprocessing/utils/NormalPass.ts +222 -0
- package/src/managers/postprocessing/utils/RenderPass.ts +366 -0
- package/src/materials/GemMaterial.ts +268 -0
- package/src/materials/MeshUnlitMaterialParameters.ts +4 -0
- package/src/materials/MultiPointsMaterial.ts +646 -0
- package/src/materials/SpecularGlossinessMaterial.ts +182 -0
- package/src/objects/SDBone.ts +51 -0
- package/src/objects/SDColor.ts +54 -0
- package/src/objects/SDData.ts +44 -0
- package/src/objects/SDObject.ts +58 -0
- package/src/shaders/PCSS.ts +124 -0
- package/src/shaders/gem.ts +575 -0
- package/src/shaders/gem_frag.glsl +517 -0
- package/src/shaders/gem_vert.glsl +53 -0
- package/src/shaders/multi_points.ts +291 -0
- package/src/shaders/multi_points_frag.glsl +166 -0
- package/src/shaders/multi_points_vert.glsl +120 -0
- package/src/styling/viewport-css.ts +113 -0
- package/src/styling/viewport.css +111 -0
- package/src/three/font.ts +2 -0
- package/src/three/geometries/TextGeometry.ts +58 -0
- package/src/three/loaders/FontLoader.ts +205 -0
- package/src/three/loaders/RGBELoader.ts +496 -0
- package/src/types/IThreejsData.ts +16 -0
- package/src/types/ThreejsData.ts +43 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AOEffect.js","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/ao/AOEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Pass } from 'postprocessing';
|
|
2
|
+
import { Camera, Scene, WebGLRenderTarget, WebGLRenderer } from 'three';
|
|
3
|
+
declare class AOPass extends Pass {
|
|
4
|
+
private _camera;
|
|
5
|
+
private _scene;
|
|
6
|
+
renderTarget: WebGLRenderTarget;
|
|
7
|
+
constructor(camera: Camera, scene: Scene, fragmentShader: string);
|
|
8
|
+
get texture(): import("three").Texture;
|
|
9
|
+
render(renderer: WebGLRenderer): void;
|
|
10
|
+
setSize(width: number, height: number): void;
|
|
11
|
+
}
|
|
12
|
+
export { AOPass };
|
|
13
|
+
//# sourceMappingURL=AOPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AOPass.d.ts","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/ao/AOPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EACN,MAAM,EAQN,KAAK,EAIL,iBAAiB,EACjB,aAAa,EACb,MAAM,OAAO,CAAC;AAMf,cAAM,MAAO,SAAQ,IAAI;IAGxB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAQ;IAEf,YAAY,EAAE,iBAAiB,CAAC;gBAM3B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM;IAiDhE,IAAW,OAAO,4BAEjB;IAMM,MAAM,CAAC,QAAQ,EAAE,aAAa;IA2B9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAO5C;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AOPass = void 0;
|
|
4
|
+
const postprocessing_1 = require("postprocessing");
|
|
5
|
+
const three_1 = require("three");
|
|
6
|
+
const basic_1 = require("../utils/shader/basic");
|
|
7
|
+
const sampleBlueNoise_1 = require("../utils/shader/sampleBlueNoise");
|
|
8
|
+
const PoissionDenoisePass_1 = require("../poissionDenoise/PoissionDenoisePass");
|
|
9
|
+
// a general AO pass that can be used for any AO algorithm
|
|
10
|
+
class AOPass extends postprocessing_1.Pass {
|
|
11
|
+
// #endregion Properties (3)
|
|
12
|
+
// #region Constructors (1)
|
|
13
|
+
constructor(camera, scene, fragmentShader) {
|
|
14
|
+
super();
|
|
15
|
+
this._camera = camera;
|
|
16
|
+
this._scene = scene;
|
|
17
|
+
this.renderTarget = new three_1.WebGLRenderTarget(1, 1, {
|
|
18
|
+
type: three_1.HalfFloatType,
|
|
19
|
+
depthBuffer: false
|
|
20
|
+
});
|
|
21
|
+
const finalFragmentShader = fragmentShader.replace('#include <sampleBlueNoise>', sampleBlueNoise_1.sampleBlueNoise);
|
|
22
|
+
this.fullscreenMaterial = new three_1.ShaderMaterial({
|
|
23
|
+
fragmentShader: finalFragmentShader,
|
|
24
|
+
vertexShader: basic_1.basic,
|
|
25
|
+
uniforms: {
|
|
26
|
+
depthTexture: { value: null },
|
|
27
|
+
normalTexture: { value: null },
|
|
28
|
+
cameraNear: { value: 0 },
|
|
29
|
+
cameraFar: { value: 0 },
|
|
30
|
+
viewMatrix: { value: this._camera.matrixWorldInverse },
|
|
31
|
+
projectionViewMatrix: { value: new three_1.Matrix4() },
|
|
32
|
+
projectionMatrixInverse: { value: this._camera.projectionMatrixInverse },
|
|
33
|
+
cameraMatrixWorld: { value: this._camera.matrixWorld },
|
|
34
|
+
texSize: { value: new three_1.Vector2() },
|
|
35
|
+
blueNoiseTexture: { value: null },
|
|
36
|
+
blueNoiseRepeat: { value: new three_1.Vector2() },
|
|
37
|
+
aoDistance: { value: 0 },
|
|
38
|
+
distancePower: { value: 0 },
|
|
39
|
+
bias: { value: 0 },
|
|
40
|
+
thickness: { value: 0 },
|
|
41
|
+
power: { value: 0 },
|
|
42
|
+
frame: { value: 0 }
|
|
43
|
+
},
|
|
44
|
+
blending: three_1.NoBlending,
|
|
45
|
+
depthWrite: false,
|
|
46
|
+
depthTest: false,
|
|
47
|
+
toneMapped: false
|
|
48
|
+
});
|
|
49
|
+
this.fullscreenMaterial.uniforms.blueNoiseTexture.value = PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
|
|
50
|
+
}
|
|
51
|
+
// #endregion Constructors (1)
|
|
52
|
+
// #region Public Accessors (1)
|
|
53
|
+
get texture() {
|
|
54
|
+
return this.renderTarget.texture;
|
|
55
|
+
}
|
|
56
|
+
// #endregion Public Accessors (1)
|
|
57
|
+
// #region Public Methods (2)
|
|
58
|
+
render(renderer) {
|
|
59
|
+
const spp = +this.fullscreenMaterial.defines.spp;
|
|
60
|
+
this.fullscreenMaterial.uniforms.frame.value = (this.fullscreenMaterial.uniforms.frame.value + spp) % 65536;
|
|
61
|
+
this.fullscreenMaterial.uniforms.cameraNear.value = this._camera.near;
|
|
62
|
+
this.fullscreenMaterial.uniforms.cameraFar.value = this._camera.far;
|
|
63
|
+
this.fullscreenMaterial.uniforms.projectionViewMatrix.value.multiplyMatrices(this._camera.projectionMatrix, this._camera.matrixWorldInverse);
|
|
64
|
+
const noiseTexture = this.fullscreenMaterial.uniforms.blueNoiseTexture.value;
|
|
65
|
+
if (noiseTexture) {
|
|
66
|
+
const { width, height } = noiseTexture.source.data;
|
|
67
|
+
this.fullscreenMaterial.uniforms.blueNoiseRepeat.value.set(this.renderTarget.width / width, this.renderTarget.height / height);
|
|
68
|
+
}
|
|
69
|
+
renderer.setRenderTarget(this.renderTarget);
|
|
70
|
+
renderer.render(this.scene, this.camera);
|
|
71
|
+
}
|
|
72
|
+
setSize(width, height) {
|
|
73
|
+
this.renderTarget.setSize(width, height);
|
|
74
|
+
this.fullscreenMaterial.uniforms.texSize.value.set(this.renderTarget.width, this.renderTarget.height);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.AOPass = AOPass;
|
|
78
|
+
//# sourceMappingURL=AOPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AOPass.js","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/ao/AOPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const ao_compose = "\nuniform sampler2D inputTexture;\nuniform highp sampler2D depthTexture;\nuniform float power;\nuniform vec3 color;\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n float unpackedDepth = textureLod(depthTexture, uv, 0.).r;\n\n float ao = unpackedDepth > 0.9999 ? 1.0 : textureLod(inputTexture, uv, 0.0).a;\n ao = pow(ao, power);\n\n vec3 aoColor = mix(color, vec3(1.), ao);\n\n aoColor *= inputColor.rgb;\n\n outputColor = vec4(aoColor, inputColor.a);\n}\n";
|
|
2
|
+
//# sourceMappingURL=ao_compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ao_compose.d.ts","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/ao/shader/ao_compose.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,sgBAkBtB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ao_compose = void 0;
|
|
4
|
+
exports.ao_compose = `
|
|
5
|
+
uniform sampler2D inputTexture;
|
|
6
|
+
uniform highp sampler2D depthTexture;
|
|
7
|
+
uniform float power;
|
|
8
|
+
uniform vec3 color;
|
|
9
|
+
|
|
10
|
+
void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
|
|
11
|
+
float unpackedDepth = textureLod(depthTexture, uv, 0.).r;
|
|
12
|
+
|
|
13
|
+
float ao = unpackedDepth > 0.9999 ? 1.0 : textureLod(inputTexture, uv, 0.0).a;
|
|
14
|
+
ao = pow(ao, power);
|
|
15
|
+
|
|
16
|
+
vec3 aoColor = mix(color, vec3(1.), ao);
|
|
17
|
+
|
|
18
|
+
aoColor *= inputColor.rgb;
|
|
19
|
+
|
|
20
|
+
outputColor = vec4(aoColor, inputColor.a);
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
//# sourceMappingURL=ao_compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ao_compose.js","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/ao/shader/ao_compose.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;CAkBzB,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EffectComposer } from 'postprocessing';
|
|
2
|
+
import { Camera, Scene } from 'three';
|
|
3
|
+
import { AOEffect } from '../ao/AOEffect';
|
|
4
|
+
declare class HBAOEffect extends AOEffect {
|
|
5
|
+
lastSize: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
resolutionScale: number;
|
|
9
|
+
};
|
|
10
|
+
constructor(composer: EffectComposer, camera: Camera, scene: Scene, options?: {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export { HBAOEffect };
|
|
15
|
+
//# sourceMappingURL=HBAOEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HBAOEffect.d.ts","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/hbao/HBAOEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB1C,cAAM,UAAW,SAAQ,QAAQ;IAGzB,QAAQ;;;;MAA+C;gBAMlD,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAA4B;CASjI;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HBAOEffect = void 0;
|
|
4
|
+
const AOEffect_1 = require("../ao/AOEffect");
|
|
5
|
+
const AOPass_1 = require("../ao/AOPass");
|
|
6
|
+
const hbao_1 = require("./shader/hbao");
|
|
7
|
+
const hbao_utils_1 = require("./shader/hbao_utils");
|
|
8
|
+
const finalFragmentShader = hbao_1.hbao.replace('#include <hbao_utils>', hbao_utils_1.hbao_utils);
|
|
9
|
+
class HBAOPass extends AOPass_1.AOPass {
|
|
10
|
+
// #region Constructors (1)
|
|
11
|
+
constructor(camera, scene) {
|
|
12
|
+
super(camera, scene, finalFragmentShader);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
class HBAOEffect extends AOEffect_1.AOEffect {
|
|
16
|
+
// #endregion Properties (1)
|
|
17
|
+
// #region Constructors (1)
|
|
18
|
+
constructor(composer, camera, scene, options = AOEffect_1.AOEffect.DefaultOptions) {
|
|
19
|
+
super(composer, camera, scene, new HBAOPass(camera, scene), Object.assign(Object.assign(Object.assign({}, AOEffect_1.AOEffect.DefaultOptions), HBAOEffect.DefaultOptions), options));
|
|
20
|
+
// #region Properties (1)
|
|
21
|
+
this.lastSize = { width: 0, height: 0, resolutionScale: 0 };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.HBAOEffect = HBAOEffect;
|
|
25
|
+
//# sourceMappingURL=HBAOEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HBAOEffect.js","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/hbao/HBAOEffect.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAE1C,yCAAsC;AACtC,wCAAuD;AACvD,oDAAiD;AAEjD,MAAM,mBAAmB,GAAG,WAAc,CAAC,OAAO,CAAC,uBAAuB,EAAE,uBAAU,CAAC,CAAC;AAExF,MAAM,QAAS,SAAQ,eAAM;IAC5B,2BAA2B;IAE3B,YAAY,MAAc,EAAE,KAAY;QACvC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC3C,CAAC;CAGD;AAED,MAAM,UAAW,SAAQ,mBAAQ;IAKhC,4BAA4B;IAE5B,2BAA2B;IAE3B,YAAY,QAAwB,EAAE,MAAc,EAAE,KAAY,EAAE,UAAsC,mBAAQ,CAAC,cAAc;QAChI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,gDACtD,mBAAQ,CAAC,cAAc,GACvB,UAAU,CAAC,cAAc,GACzB,OAAO,EACT,CAAC;QAbJ,yBAAyB;QAElB,aAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IAY9D,CAAC;CAGD;AAEQ,gCAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const hbao = "\nvarying vec2 vUv;\n\nuniform highp sampler2D depthTexture;\n\nuniform mat4 projectionViewMatrix;\nuniform int frame;\n\nuniform sampler2D blueNoiseTexture;\nuniform vec2 blueNoiseRepeat;\nuniform vec2 texSize;\n\nuniform float aoDistance;\nuniform float distancePower;\nuniform float bias;\nuniform float thickness;\n\n#include <packing>\n// HBAO Utils\n#include <hbao_utils>\n\nfloat getOcclusion(const vec3 cameraPosition, const vec3 worldPos, const vec3 worldNormal, const float depth, const int seed, inout float totalWeight) {\n vec4 blueNoise = sampleBlueNoise(blueNoiseTexture, seed, blueNoiseRepeat, texSize);\n\n vec3 sampleWorldDir = cosineSampleHemisphere(worldNormal, blueNoise.rg);\n\n vec3 sampleWorldPos = worldPos + aoDistance * pow(blueNoise.b, distancePower + 1.0) * sampleWorldDir;\n\n // Project the sample position to screen space\n vec4 sampleUv = projectionViewMatrix * vec4(sampleWorldPos, 1.);\n sampleUv.xy /= sampleUv.w;\n sampleUv.xy = sampleUv.xy * 0.5 + 0.5;\n\n // Get the depth of the sample position\n float sampleDepth = textureLod(depthTexture, sampleUv.xy, 0.0).r;\n\n // Compute the horizon line\n float deltaDepth = depth - sampleDepth;\n\n // distance based bias\n float d = distance(sampleWorldPos, cameraPosition) / aoDistance;\n deltaDepth *= 0.001 * d * d;\n\n float th = thickness * 0.01;\n\n float theta = dot(worldNormal, sampleWorldDir);\n totalWeight += theta;\n\n if (deltaDepth < th) {\n float horizon = sampleDepth + deltaDepth * bias * 1000.;\n\n float occlusion = max(0.0, horizon - depth) * theta;\n\n float m = max(0., 1. - deltaDepth / th);\n occlusion = 10. * occlusion * m / d;\n\n occlusion = max(0.0, occlusion);\n occlusion = sqrt(occlusion);\n return occlusion;\n }\n\n return 0.;\n}\n\nvoid main() {\n float depth = textureLod(depthTexture, vUv, 0.0).r;\n\n // filter out background\n if (depth == 1.0) {\n discard;\n return;\n }\n\n vec4 cameraPosition = cameraMatrixWorld * vec4(0.0, 0.0, 0.0, 1.0);\n\n vec3 worldPos = getWorldPos(depth, vUv);\n vec3 worldNormal = getWorldNormal(vUv);\n\n float ao = 0.0, totalWeight = 0.0;\n\n for (int i = 0; i < spp; i++) {\n int seed = i;\n#ifdef animatedNoise\n seed += frame;\n#endif\n\n float occlusion = getOcclusion(cameraPosition.xyz, worldPos, worldNormal, depth, seed, totalWeight);\n ao += occlusion;\n }\n\n if (totalWeight > 0.) ao /= totalWeight;\n\n // clamp ao to [0, 1]\n ao = clamp(1. - ao, 0., 1.);\n\n gl_FragColor = vec4(worldNormal, ao);\n}\n";
|
|
2
|
+
//# sourceMappingURL=hbao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hbao.d.ts","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/hbao/shader/hbao.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,0mFAiGhB,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hbao = void 0;
|
|
4
|
+
exports.hbao = `
|
|
5
|
+
varying vec2 vUv;
|
|
6
|
+
|
|
7
|
+
uniform highp sampler2D depthTexture;
|
|
8
|
+
|
|
9
|
+
uniform mat4 projectionViewMatrix;
|
|
10
|
+
uniform int frame;
|
|
11
|
+
|
|
12
|
+
uniform sampler2D blueNoiseTexture;
|
|
13
|
+
uniform vec2 blueNoiseRepeat;
|
|
14
|
+
uniform vec2 texSize;
|
|
15
|
+
|
|
16
|
+
uniform float aoDistance;
|
|
17
|
+
uniform float distancePower;
|
|
18
|
+
uniform float bias;
|
|
19
|
+
uniform float thickness;
|
|
20
|
+
|
|
21
|
+
#include <packing>
|
|
22
|
+
// HBAO Utils
|
|
23
|
+
#include <hbao_utils>
|
|
24
|
+
|
|
25
|
+
float getOcclusion(const vec3 cameraPosition, const vec3 worldPos, const vec3 worldNormal, const float depth, const int seed, inout float totalWeight) {
|
|
26
|
+
vec4 blueNoise = sampleBlueNoise(blueNoiseTexture, seed, blueNoiseRepeat, texSize);
|
|
27
|
+
|
|
28
|
+
vec3 sampleWorldDir = cosineSampleHemisphere(worldNormal, blueNoise.rg);
|
|
29
|
+
|
|
30
|
+
vec3 sampleWorldPos = worldPos + aoDistance * pow(blueNoise.b, distancePower + 1.0) * sampleWorldDir;
|
|
31
|
+
|
|
32
|
+
// Project the sample position to screen space
|
|
33
|
+
vec4 sampleUv = projectionViewMatrix * vec4(sampleWorldPos, 1.);
|
|
34
|
+
sampleUv.xy /= sampleUv.w;
|
|
35
|
+
sampleUv.xy = sampleUv.xy * 0.5 + 0.5;
|
|
36
|
+
|
|
37
|
+
// Get the depth of the sample position
|
|
38
|
+
float sampleDepth = textureLod(depthTexture, sampleUv.xy, 0.0).r;
|
|
39
|
+
|
|
40
|
+
// Compute the horizon line
|
|
41
|
+
float deltaDepth = depth - sampleDepth;
|
|
42
|
+
|
|
43
|
+
// distance based bias
|
|
44
|
+
float d = distance(sampleWorldPos, cameraPosition) / aoDistance;
|
|
45
|
+
deltaDepth *= 0.001 * d * d;
|
|
46
|
+
|
|
47
|
+
float th = thickness * 0.01;
|
|
48
|
+
|
|
49
|
+
float theta = dot(worldNormal, sampleWorldDir);
|
|
50
|
+
totalWeight += theta;
|
|
51
|
+
|
|
52
|
+
if (deltaDepth < th) {
|
|
53
|
+
float horizon = sampleDepth + deltaDepth * bias * 1000.;
|
|
54
|
+
|
|
55
|
+
float occlusion = max(0.0, horizon - depth) * theta;
|
|
56
|
+
|
|
57
|
+
float m = max(0., 1. - deltaDepth / th);
|
|
58
|
+
occlusion = 10. * occlusion * m / d;
|
|
59
|
+
|
|
60
|
+
occlusion = max(0.0, occlusion);
|
|
61
|
+
occlusion = sqrt(occlusion);
|
|
62
|
+
return occlusion;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return 0.;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void main() {
|
|
69
|
+
float depth = textureLod(depthTexture, vUv, 0.0).r;
|
|
70
|
+
|
|
71
|
+
// filter out background
|
|
72
|
+
if (depth == 1.0) {
|
|
73
|
+
discard;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
vec4 cameraPosition = cameraMatrixWorld * vec4(0.0, 0.0, 0.0, 1.0);
|
|
78
|
+
|
|
79
|
+
vec3 worldPos = getWorldPos(depth, vUv);
|
|
80
|
+
vec3 worldNormal = getWorldNormal(vUv);
|
|
81
|
+
|
|
82
|
+
float ao = 0.0, totalWeight = 0.0;
|
|
83
|
+
|
|
84
|
+
for (int i = 0; i < spp; i++) {
|
|
85
|
+
int seed = i;
|
|
86
|
+
#ifdef animatedNoise
|
|
87
|
+
seed += frame;
|
|
88
|
+
#endif
|
|
89
|
+
|
|
90
|
+
float occlusion = getOcclusion(cameraPosition.xyz, worldPos, worldNormal, depth, seed, totalWeight);
|
|
91
|
+
ao += occlusion;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (totalWeight > 0.) ao /= totalWeight;
|
|
95
|
+
|
|
96
|
+
// clamp ao to [0, 1]
|
|
97
|
+
ao = clamp(1. - ao, 0., 1.);
|
|
98
|
+
|
|
99
|
+
gl_FragColor = vec4(worldNormal, ao);
|
|
100
|
+
}
|
|
101
|
+
`;
|
|
102
|
+
//# sourceMappingURL=hbao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hbao.js","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/hbao/shader/hbao.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGnB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const hbao_utils = "\n#include <sampleBlueNoise>\n\nuniform sampler2D normalTexture;\nuniform float cameraNear;\nuniform float cameraFar;\nuniform mat4 projectionMatrixInverse;\nuniform mat4 cameraMatrixWorld;\n\n// source: https://github.com/mrdoob/three.js/blob/342946c8392639028da439b6dc0597e58209c696/examples/js/shaders/SAOShader.js#L123\nfloat getViewZ(const float depth) {\n#ifdef PERSPECTIVE_CAMERA\n return perspectiveDepthToViewZ(depth, cameraNear, cameraFar);\n#else\n return orthographicDepthToViewZ(depth, cameraNear, cameraFar);\n#endif\n}\n\n// source: https://github.com/N8python/ssao/blob/master/EffectShader.js#L52\nvec3 getWorldPos(const float depth, const vec2 coord) {\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInverse * clipSpacePosition;\n\n // Perspective division\n vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n\n return worldSpacePosition.xyz;\n}\n\nvec3 slerp(const vec3 a, const vec3 b, const float t) {\n float cosAngle = dot(a, b);\n float angle = acos(cosAngle);\n\n if (abs(angle) < 0.001) {\n return mix(a, b, t);\n }\n\n float sinAngle = sin(angle);\n float t1 = sin((1.0 - t) * angle) / sinAngle;\n float t2 = sin(t * angle) / sinAngle;\n\n return (a * t1) + (b * t2);\n}\n\nvec3 computeWorldNormal() {\n vec2 size = vec2(textureSize(depthTexture, 0));\n ivec2 p = ivec2(vUv * size);\n float c0 = texelFetch(depthTexture, p, 0).x;\n float l2 = texelFetch(depthTexture, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(depthTexture, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(depthTexture, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(depthTexture, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(depthTexture, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(depthTexture, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(depthTexture, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(depthTexture, p + ivec2(0, 2), 0).x;\n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n vec3 ce = getWorldPos(c0, vUv).xyz;\n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / size.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / size.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / size.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / size.y))).xyz;\n return normalize(cross(dpdx, dpdy));\n}\n\nvec3 getWorldNormal(const vec2 uv) {\n#ifdef useNormalTexture\n vec3 worldNormal = unpackRGBToNormal(textureLod(normalTexture, uv, 0.).rgb);\n\n worldNormal = (vec4(worldNormal, 1.) * viewMatrix).xyz; // view-space to world-space\n return normalize(worldNormal);\n#else\n return computeWorldNormal(); // compute world normal from depth\n#endif\n}\n\n#define PI 3.14159265358979323846264338327950288\n\n// source: https://www.shadertoy.com/view/cll3R4\nvec3 cosineSampleHemisphere(const vec3 n, const vec2 u) {\n float r = sqrt(u.x);\n float theta = 2.0 * PI * u.y;\n\n vec3 b = normalize(cross(n, vec3(0.0, 1.0, 1.0)));\n vec3 t = cross(b, n);\n\n return normalize(r * sin(theta) * b + sqrt(1.0 - u.x) * n + r * cos(theta) * t);\n}\n\n";
|
|
2
|
+
//# sourceMappingURL=hbao_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hbao_utils.d.ts","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,84GA8FtB,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hbao_utils = void 0;
|
|
4
|
+
exports.hbao_utils = `
|
|
5
|
+
#include <sampleBlueNoise>
|
|
6
|
+
|
|
7
|
+
uniform sampler2D normalTexture;
|
|
8
|
+
uniform float cameraNear;
|
|
9
|
+
uniform float cameraFar;
|
|
10
|
+
uniform mat4 projectionMatrixInverse;
|
|
11
|
+
uniform mat4 cameraMatrixWorld;
|
|
12
|
+
|
|
13
|
+
// source: https://github.com/mrdoob/three.js/blob/342946c8392639028da439b6dc0597e58209c696/examples/js/shaders/SAOShader.js#L123
|
|
14
|
+
float getViewZ(const float depth) {
|
|
15
|
+
#ifdef PERSPECTIVE_CAMERA
|
|
16
|
+
return perspectiveDepthToViewZ(depth, cameraNear, cameraFar);
|
|
17
|
+
#else
|
|
18
|
+
return orthographicDepthToViewZ(depth, cameraNear, cameraFar);
|
|
19
|
+
#endif
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// source: https://github.com/N8python/ssao/blob/master/EffectShader.js#L52
|
|
23
|
+
vec3 getWorldPos(const float depth, const vec2 coord) {
|
|
24
|
+
float z = depth * 2.0 - 1.0;
|
|
25
|
+
vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
|
|
26
|
+
vec4 viewSpacePosition = projectionMatrixInverse * clipSpacePosition;
|
|
27
|
+
|
|
28
|
+
// Perspective division
|
|
29
|
+
vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
|
|
30
|
+
worldSpacePosition.xyz /= worldSpacePosition.w;
|
|
31
|
+
|
|
32
|
+
return worldSpacePosition.xyz;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
vec3 slerp(const vec3 a, const vec3 b, const float t) {
|
|
36
|
+
float cosAngle = dot(a, b);
|
|
37
|
+
float angle = acos(cosAngle);
|
|
38
|
+
|
|
39
|
+
if (abs(angle) < 0.001) {
|
|
40
|
+
return mix(a, b, t);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
float sinAngle = sin(angle);
|
|
44
|
+
float t1 = sin((1.0 - t) * angle) / sinAngle;
|
|
45
|
+
float t2 = sin(t * angle) / sinAngle;
|
|
46
|
+
|
|
47
|
+
return (a * t1) + (b * t2);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
vec3 computeWorldNormal() {
|
|
51
|
+
vec2 size = vec2(textureSize(depthTexture, 0));
|
|
52
|
+
ivec2 p = ivec2(vUv * size);
|
|
53
|
+
float c0 = texelFetch(depthTexture, p, 0).x;
|
|
54
|
+
float l2 = texelFetch(depthTexture, p - ivec2(2, 0), 0).x;
|
|
55
|
+
float l1 = texelFetch(depthTexture, p - ivec2(1, 0), 0).x;
|
|
56
|
+
float r1 = texelFetch(depthTexture, p + ivec2(1, 0), 0).x;
|
|
57
|
+
float r2 = texelFetch(depthTexture, p + ivec2(2, 0), 0).x;
|
|
58
|
+
float b2 = texelFetch(depthTexture, p - ivec2(0, 2), 0).x;
|
|
59
|
+
float b1 = texelFetch(depthTexture, p - ivec2(0, 1), 0).x;
|
|
60
|
+
float t1 = texelFetch(depthTexture, p + ivec2(0, 1), 0).x;
|
|
61
|
+
float t2 = texelFetch(depthTexture, p + ivec2(0, 2), 0).x;
|
|
62
|
+
float dl = abs((2.0 * l1 - l2) - c0);
|
|
63
|
+
float dr = abs((2.0 * r1 - r2) - c0);
|
|
64
|
+
float db = abs((2.0 * b1 - b2) - c0);
|
|
65
|
+
float dt = abs((2.0 * t1 - t2) - c0);
|
|
66
|
+
vec3 ce = getWorldPos(c0, vUv).xyz;
|
|
67
|
+
vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / size.x, 0.0))).xyz
|
|
68
|
+
: -ce + getWorldPos(r1, (vUv + vec2(1.0 / size.x, 0.0))).xyz;
|
|
69
|
+
vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / size.y))).xyz
|
|
70
|
+
: -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / size.y))).xyz;
|
|
71
|
+
return normalize(cross(dpdx, dpdy));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
vec3 getWorldNormal(const vec2 uv) {
|
|
75
|
+
#ifdef useNormalTexture
|
|
76
|
+
vec3 worldNormal = unpackRGBToNormal(textureLod(normalTexture, uv, 0.).rgb);
|
|
77
|
+
|
|
78
|
+
worldNormal = (vec4(worldNormal, 1.) * viewMatrix).xyz; // view-space to world-space
|
|
79
|
+
return normalize(worldNormal);
|
|
80
|
+
#else
|
|
81
|
+
return computeWorldNormal(); // compute world normal from depth
|
|
82
|
+
#endif
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#define PI 3.14159265358979323846264338327950288
|
|
86
|
+
|
|
87
|
+
// source: https://www.shadertoy.com/view/cll3R4
|
|
88
|
+
vec3 cosineSampleHemisphere(const vec3 n, const vec2 u) {
|
|
89
|
+
float r = sqrt(u.x);
|
|
90
|
+
float theta = 2.0 * PI * u.y;
|
|
91
|
+
|
|
92
|
+
vec3 b = normalize(cross(n, vec3(0.0, 1.0, 1.0)));
|
|
93
|
+
vec3 t = cross(b, n);
|
|
94
|
+
|
|
95
|
+
return normalize(r * sin(theta) * b + sqrt(1.0 - u.x) * n + r * cos(theta) * t);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
`;
|
|
99
|
+
//# sourceMappingURL=hbao_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hbao_utils.js","sourceRoot":"","sources":["../../../../../../src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FzB,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Pass } from 'postprocessing';
|
|
2
|
+
import { Camera, Texture, Vector2, WebGLRenderTarget, WebGLRenderer } from 'three';
|
|
3
|
+
export declare class PoissionDenoisePass extends Pass {
|
|
4
|
+
static DefaultOptions: {
|
|
5
|
+
iterations: number;
|
|
6
|
+
radius: number;
|
|
7
|
+
rings: number;
|
|
8
|
+
lumaPhi: number;
|
|
9
|
+
depthPhi: number;
|
|
10
|
+
normalPhi: number;
|
|
11
|
+
samples: number;
|
|
12
|
+
distance: number;
|
|
13
|
+
normalTexture: null;
|
|
14
|
+
};
|
|
15
|
+
static blueNoiseTextureImage: Promise<import("@shapediver/viewer.shared.services").HttpResponse<{
|
|
16
|
+
buffer: ArrayBuffer;
|
|
17
|
+
blob: Blob;
|
|
18
|
+
}>>;
|
|
19
|
+
static blueNoiseTexture: Texture;
|
|
20
|
+
index: number;
|
|
21
|
+
inputTexture: Texture;
|
|
22
|
+
iterations: number;
|
|
23
|
+
radius: number;
|
|
24
|
+
renderTargetA: WebGLRenderTarget;
|
|
25
|
+
renderTargetB: WebGLRenderTarget;
|
|
26
|
+
rings: number;
|
|
27
|
+
samples: number;
|
|
28
|
+
constructor(camera: Camera, inputTexture: Texture, depthTexture: Texture, options?: {
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
});
|
|
31
|
+
get texture(): Texture;
|
|
32
|
+
generateDenoiseSamples(numSamples: number, numRings: number, r: number, texelSize: Vector2): Vector2[];
|
|
33
|
+
generatePoissonDiskConstant(poissonDisk: Vector2[]): string;
|
|
34
|
+
render(renderer: WebGLRenderer): void;
|
|
35
|
+
setSize(width: number, height: number): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=PoissionDenoisePass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoissionDenoisePass.d.ts","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EACN,MAAM,EAON,OAAO,EAEP,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,MAAM,OAAO,CAAC;AAoBf,qBAAa,mBAAoB,SAAQ,IAAI;IAG5C,OAAc,cAAc;;;;;;;;;;MAA6B;IAEzD,OAAc,qBAAqB;;;QAA+F;IAClI,OAAc,gBAAgB,EAAE,OAAO,CAAC;IAEjC,KAAK,SAAK;IACV,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,SAAwC;IAClD,MAAM,SAAK;IACX,aAAa,EAAE,iBAAiB,CAAC;IACjC,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,SAAS;IACd,OAAO,SAAM;gBAMR,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAA8B;IAkFzI,IAAW,OAAO,YAEjB;IAMM,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IA4B1F,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE;IAqBlD,MAAM,CAAC,QAAQ,EAAE,aAAa;IA4B9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAsB5C"}
|