@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.16.8 → 3.16.9

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.
Files changed (185) hide show
  1. package/dist/RenderingEngine.d.ts +294 -294
  2. package/dist/RenderingEngine.js +987 -977
  3. package/dist/RenderingEngine.js.map +1 -1
  4. package/dist/index.d.ts +16 -16
  5. package/dist/index.js +57 -57
  6. package/dist/injectors/TextureUnifierInjector.d.ts +13 -13
  7. package/dist/injectors/TextureUnifierInjector.js +181 -171
  8. package/dist/injectors/TextureUnifierInjector.js.map +1 -1
  9. package/dist/interfaces/ILoader.d.ts +3 -3
  10. package/dist/interfaces/ILoader.js +2 -2
  11. package/dist/interfaces/IRenderingEngine.d.ts +45 -45
  12. package/dist/interfaces/IRenderingEngine.js +2 -2
  13. package/dist/loaders/EnvironmentMapLoader.d.ts +119 -119
  14. package/dist/loaders/EnvironmentMapLoader.js +512 -502
  15. package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
  16. package/dist/loaders/GeometryLoader.d.ts +39 -39
  17. package/dist/loaders/GeometryLoader.d.ts.map +1 -1
  18. package/dist/loaders/GeometryLoader.js +603 -593
  19. package/dist/loaders/GeometryLoader.js.map +1 -1
  20. package/dist/loaders/HTMLElementAnchorLoader.d.ts +15 -15
  21. package/dist/loaders/HTMLElementAnchorLoader.js +98 -98
  22. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
  23. package/dist/loaders/LightLoader.d.ts +19 -19
  24. package/dist/loaders/LightLoader.js +197 -187
  25. package/dist/loaders/LightLoader.js.map +1 -1
  26. package/dist/loaders/MaterialLoader.d.ts +115 -115
  27. package/dist/loaders/MaterialLoader.d.ts.map +1 -1
  28. package/dist/loaders/MaterialLoader.js +1612 -1602
  29. package/dist/loaders/MaterialLoader.js.map +1 -1
  30. package/dist/managers/ARManager.d.ts +17 -17
  31. package/dist/managers/ARManager.js +128 -128
  32. package/dist/managers/ARManager.js.map +1 -1
  33. package/dist/managers/CameraManager.d.ts +19 -19
  34. package/dist/managers/CameraManager.js +244 -234
  35. package/dist/managers/CameraManager.js.map +1 -1
  36. package/dist/managers/EnvironmentGeometryManager.d.ts +32 -32
  37. package/dist/managers/EnvironmentGeometryManager.js +114 -114
  38. package/dist/managers/EnvironmentGeometryManager.js.map +1 -1
  39. package/dist/managers/FlagManager.d.ts +19 -19
  40. package/dist/managers/FlagManager.js +143 -143
  41. package/dist/managers/FlagManager.js.map +1 -1
  42. package/dist/managers/PostProcessingManager.d.ts +1019 -1019
  43. package/dist/managers/PostProcessingManager.js +1306 -1296
  44. package/dist/managers/PostProcessingManager.js.map +1 -1
  45. package/dist/managers/RenderingManager.d.ts +84 -84
  46. package/dist/managers/RenderingManager.d.ts.map +1 -1
  47. package/dist/managers/RenderingManager.js +679 -669
  48. package/dist/managers/RenderingManager.js.map +1 -1
  49. package/dist/managers/SceneTracingManager.d.ts +28 -28
  50. package/dist/managers/SceneTracingManager.js +160 -150
  51. package/dist/managers/SceneTracingManager.js.map +1 -1
  52. package/dist/managers/SceneTreeManager.d.ts +81 -81
  53. package/dist/managers/SceneTreeManager.d.ts.map +1 -1
  54. package/dist/managers/SceneTreeManager.js +500 -490
  55. package/dist/managers/SceneTreeManager.js.map +1 -1
  56. package/dist/managers/SettingsManager.d.ts +28 -28
  57. package/dist/managers/SettingsManager.js +284 -284
  58. package/dist/managers/SettingsManager.js.map +1 -1
  59. package/dist/managers/environmentGeometry/ContactShadow.d.ts +42 -42
  60. package/dist/managers/environmentGeometry/ContactShadow.js +295 -285
  61. package/dist/managers/environmentGeometry/ContactShadow.js.map +1 -1
  62. package/dist/managers/environmentGeometry/Grid.d.ts +20 -20
  63. package/dist/managers/environmentGeometry/Grid.js +110 -100
  64. package/dist/managers/environmentGeometry/Grid.js.map +1 -1
  65. package/dist/managers/environmentGeometry/GroundPlane.d.ts +21 -21
  66. package/dist/managers/environmentGeometry/GroundPlane.js +105 -95
  67. package/dist/managers/environmentGeometry/GroundPlane.js.map +1 -1
  68. package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts +21 -21
  69. package/dist/managers/environmentGeometry/GroundPlaneShadow.js +96 -86
  70. package/dist/managers/environmentGeometry/GroundPlaneShadow.js.map +1 -1
  71. package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts +8 -8
  72. package/dist/managers/environmentGeometry/IEnvironmentGeometry.js +2 -2
  73. package/dist/managers/postprocessing/GodRaysManager.d.ts +12 -12
  74. package/dist/managers/postprocessing/GodRaysManager.js +73 -63
  75. package/dist/managers/postprocessing/GodRaysManager.js.map +1 -1
  76. package/dist/managers/postprocessing/OutlineManager.d.ts +15 -15
  77. package/dist/managers/postprocessing/OutlineManager.js +86 -76
  78. package/dist/managers/postprocessing/OutlineManager.js.map +1 -1
  79. package/dist/managers/postprocessing/SSAARenderPass.d.ts +53 -53
  80. package/dist/managers/postprocessing/SSAARenderPass.js +281 -281
  81. package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -1
  82. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +14 -14
  83. package/dist/managers/postprocessing/SelectiveBloomManager.js +76 -66
  84. package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -1
  85. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +46 -46
  86. package/dist/managers/postprocessing/ao/ao/AOEffect.js +142 -142
  87. package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -1
  88. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +12 -12
  89. package/dist/managers/postprocessing/ao/ao/AOPass.js +108 -108
  90. package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -1
  91. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +1 -1
  92. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +4 -4
  93. package/dist/managers/postprocessing/ao/ao/shader/ao_utils.d.ts +1 -1
  94. package/dist/managers/postprocessing/ao/ao/shader/ao_utils.js +4 -4
  95. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +14 -14
  96. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +24 -24
  97. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +1 -1
  98. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +4 -4
  99. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +33 -33
  100. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +211 -211
  101. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
  102. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +1 -1
  103. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +4 -4
  104. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +14 -14
  105. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +82 -82
  106. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -1
  107. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +1 -1
  108. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +4 -4
  109. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +1 -1
  110. package/dist/managers/postprocessing/ao/utils/shader/basic.js +4 -4
  111. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +1 -1
  112. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +4 -4
  113. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.d.ts +165 -165
  114. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js +299 -299
  115. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js.map +1 -1
  116. package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.d.ts +1 -1
  117. package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.js +4 -4
  118. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +37 -37
  119. package/dist/managers/postprocessing/utils/CopyMaterial.js +69 -69
  120. package/dist/managers/postprocessing/utils/CopyShader.d.ts +13 -13
  121. package/dist/managers/postprocessing/utils/CopyShader.js +12 -12
  122. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +9 -9
  123. package/dist/managers/postprocessing/utils/FullScreenQuad.js +28 -28
  124. package/dist/managers/postprocessing/utils/NormalPass.d.ts +87 -87
  125. package/dist/managers/postprocessing/utils/NormalPass.js +156 -156
  126. package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -1
  127. package/dist/managers/postprocessing/utils/RenderPass.d.ts +114 -114
  128. package/dist/managers/postprocessing/utils/RenderPass.js +259 -259
  129. package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -1
  130. package/dist/managers/sceneTree/SDTFUtils.d.ts +6 -6
  131. package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -1
  132. package/dist/managers/sceneTree/SDTFUtils.js +50 -50
  133. package/dist/managers/sceneTree/SDTFUtils.js.map +1 -1
  134. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +7 -7
  135. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -1
  136. package/dist/managers/sceneTree/SceenTreeManagerUtils.js +175 -165
  137. package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -1
  138. package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts +6 -6
  139. package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts.map +1 -1
  140. package/dist/managers/sceneTree/ThreeJsDataUtils.js +80 -70
  141. package/dist/managers/sceneTree/ThreeJsDataUtils.js.map +1 -1
  142. package/dist/materials/GemMaterial.d.ts +37 -37
  143. package/dist/materials/GemMaterial.js +262 -252
  144. package/dist/materials/GemMaterial.js.map +1 -1
  145. package/dist/materials/MeshUnlitMaterialParameters.d.ts +3 -3
  146. package/dist/materials/MeshUnlitMaterialParameters.js +2 -2
  147. package/dist/materials/MultiPointsMaterial.d.ts +93 -93
  148. package/dist/materials/MultiPointsMaterial.js +577 -567
  149. package/dist/materials/MultiPointsMaterial.js.map +1 -1
  150. package/dist/materials/SpecularGlossinessMaterial.d.ts +13 -13
  151. package/dist/materials/SpecularGlossinessMaterial.js +171 -161
  152. package/dist/materials/SpecularGlossinessMaterial.js.map +1 -1
  153. package/dist/objects/SDColor.d.ts +16 -16
  154. package/dist/objects/SDColor.js +52 -52
  155. package/dist/objects/SDColor.js.map +1 -1
  156. package/dist/objects/SDObject.d.ts +27 -27
  157. package/dist/objects/SDObject.js +112 -102
  158. package/dist/objects/SDObject.js.map +1 -1
  159. package/dist/shaders/PCSS.d.ts +2 -2
  160. package/dist/shaders/PCSS.js +5 -5
  161. package/dist/shaders/gem.d.ts +2 -2
  162. package/dist/shaders/gem.js +5 -5
  163. package/dist/shaders/multi_points.d.ts +2 -2
  164. package/dist/shaders/multi_points.js +5 -5
  165. package/dist/styling/viewport-css.d.ts +1 -1
  166. package/dist/styling/viewport-css.js +4 -4
  167. package/dist/three/CSS2DRenderer.d.ts +31 -31
  168. package/dist/three/CSS2DRenderer.d.ts.map +1 -1
  169. package/dist/three/CSS2DRenderer.js +152 -152
  170. package/dist/three/CSS2DRenderer.js.map +1 -1
  171. package/dist/three/geometries/TextGeometry.d.ts +21 -21
  172. package/dist/three/geometries/TextGeometry.js +45 -45
  173. package/dist/three/geometries/TextGeometry.js.map +1 -1
  174. package/dist/three/loaders/RGBELoader.d.ts +23 -23
  175. package/dist/three/loaders/RGBELoader.js +311 -311
  176. package/dist/three/loaders/RGBELoader.js.map +1 -1
  177. package/dist/types/IThreejsData.d.ts +6 -6
  178. package/dist/types/IThreejsData.js +2 -2
  179. package/dist/types/ThreejsData.d.ts +10 -10
  180. package/dist/types/ThreejsData.js +41 -41
  181. package/package.json +18 -18
  182. package/dist/managers/InstanceGroupManager.d.ts +0 -58
  183. package/dist/managers/InstanceGroupManager.d.ts.map +0 -1
  184. package/dist/managers/InstanceGroupManager.js +0 -372
  185. package/dist/managers/InstanceGroupManager.js.map +0 -1
@@ -1,109 +1,109 @@
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 PoissionDenoisePass_1 = require("../poissionDenoise/PoissionDenoisePass");
7
- const basic_1 = require("../utils/shader/basic");
8
- const sampleBlueNoise_1 = require("../utils/shader/sampleBlueNoise");
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: {
33
- value: this._camera.projectionMatrixInverse,
34
- },
35
- cameraMatrixWorld: { value: this._camera.matrixWorld },
36
- texSize: { value: new three_1.Vector2() },
37
- blueNoiseTexture: { value: null },
38
- blueNoiseRepeat: { value: new three_1.Vector2() },
39
- aoDistance: { value: 0 },
40
- distancePower: { value: 0 },
41
- bias: { value: 0 },
42
- thickness: { value: 0 },
43
- power: { value: 0 },
44
- frame: { value: 0 },
45
- },
46
- blending: three_1.NoBlending,
47
- depthWrite: false,
48
- depthTest: false,
49
- toneMapped: false,
50
- });
51
- if (PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture) {
52
- this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
53
- PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
54
- }
55
- else {
56
- PoissionDenoisePass_1.PoissionDenoisePass.loadBlueNoiseTexture().then(() => {
57
- this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
58
- PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
59
- });
60
- }
61
- }
62
- // #endregion Constructors (1)
63
- // #region Public Accessors (1)
64
- get texture() {
65
- return this.renderTarget.texture;
66
- }
67
- // #endregion Public Accessors (1)
68
- // #region Public Methods (2)
69
- render(renderer) {
70
- const spp = +this.fullscreenMaterial.defines.spp;
71
- this.fullscreenMaterial.uniforms.frame.value =
72
- (this.fullscreenMaterial.uniforms.frame.value +
73
- spp) %
74
- 65536;
75
- this.fullscreenMaterial.uniforms.cameraNear.value =
76
- this._camera.near;
77
- this.fullscreenMaterial.uniforms.cameraFar.value =
78
- this._camera.far;
79
- this.fullscreenMaterial.uniforms.projectionViewMatrix.value.multiplyMatrices(this._camera.projectionMatrix, this._camera.matrixWorldInverse);
80
- const noiseTexture = this.fullscreenMaterial
81
- .uniforms.blueNoiseTexture.value;
82
- if (noiseTexture) {
83
- const { width, height } = noiseTexture.source.data;
84
- this.fullscreenMaterial.uniforms.blueNoiseRepeat.value.set(this.renderTarget.width / width, this.renderTarget.height / height);
85
- }
86
- else {
87
- if (PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture) {
88
- this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
89
- PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
90
- const { width, height } = PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture.source.data;
91
- this.fullscreenMaterial.uniforms.blueNoiseRepeat.value.set(this.renderTarget.width / width, this.renderTarget.height / height);
92
- }
93
- else {
94
- PoissionDenoisePass_1.PoissionDenoisePass.loadBlueNoiseTexture().then(() => {
95
- this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
96
- PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
97
- });
98
- }
99
- }
100
- renderer.setRenderTarget(this.renderTarget);
101
- renderer.render(this.scene, this.camera);
102
- }
103
- setSize(width, height) {
104
- this.renderTarget.setSize(width, height);
105
- this.fullscreenMaterial.uniforms.texSize.value.set(this.renderTarget.width, this.renderTarget.height);
106
- }
107
- }
108
- exports.AOPass = AOPass;
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 PoissionDenoisePass_1 = require("../poissionDenoise/PoissionDenoisePass");
7
+ const basic_1 = require("../utils/shader/basic");
8
+ const sampleBlueNoise_1 = require("../utils/shader/sampleBlueNoise");
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: {
33
+ value: this._camera.projectionMatrixInverse,
34
+ },
35
+ cameraMatrixWorld: { value: this._camera.matrixWorld },
36
+ texSize: { value: new three_1.Vector2() },
37
+ blueNoiseTexture: { value: null },
38
+ blueNoiseRepeat: { value: new three_1.Vector2() },
39
+ aoDistance: { value: 0 },
40
+ distancePower: { value: 0 },
41
+ bias: { value: 0 },
42
+ thickness: { value: 0 },
43
+ power: { value: 0 },
44
+ frame: { value: 0 },
45
+ },
46
+ blending: three_1.NoBlending,
47
+ depthWrite: false,
48
+ depthTest: false,
49
+ toneMapped: false,
50
+ });
51
+ if (PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture) {
52
+ this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
53
+ PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
54
+ }
55
+ else {
56
+ PoissionDenoisePass_1.PoissionDenoisePass.loadBlueNoiseTexture().then(() => {
57
+ this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
58
+ PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
59
+ });
60
+ }
61
+ }
62
+ // #endregion Constructors (1)
63
+ // #region Public Accessors (1)
64
+ get texture() {
65
+ return this.renderTarget.texture;
66
+ }
67
+ // #endregion Public Accessors (1)
68
+ // #region Public Methods (2)
69
+ render(renderer) {
70
+ const spp = +this.fullscreenMaterial.defines.spp;
71
+ this.fullscreenMaterial.uniforms.frame.value =
72
+ (this.fullscreenMaterial.uniforms.frame.value +
73
+ spp) %
74
+ 65536;
75
+ this.fullscreenMaterial.uniforms.cameraNear.value =
76
+ this._camera.near;
77
+ this.fullscreenMaterial.uniforms.cameraFar.value =
78
+ this._camera.far;
79
+ this.fullscreenMaterial.uniforms.projectionViewMatrix.value.multiplyMatrices(this._camera.projectionMatrix, this._camera.matrixWorldInverse);
80
+ const noiseTexture = this.fullscreenMaterial
81
+ .uniforms.blueNoiseTexture.value;
82
+ if (noiseTexture) {
83
+ const { width, height } = noiseTexture.source.data;
84
+ this.fullscreenMaterial.uniforms.blueNoiseRepeat.value.set(this.renderTarget.width / width, this.renderTarget.height / height);
85
+ }
86
+ else {
87
+ if (PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture) {
88
+ this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
89
+ PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
90
+ const { width, height } = PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture.source.data;
91
+ this.fullscreenMaterial.uniforms.blueNoiseRepeat.value.set(this.renderTarget.width / width, this.renderTarget.height / height);
92
+ }
93
+ else {
94
+ PoissionDenoisePass_1.PoissionDenoisePass.loadBlueNoiseTexture().then(() => {
95
+ this.fullscreenMaterial.uniforms.blueNoiseTexture.value =
96
+ PoissionDenoisePass_1.PoissionDenoisePass.blueNoiseTexture;
97
+ });
98
+ }
99
+ }
100
+ renderer.setRenderTarget(this.renderTarget);
101
+ renderer.render(this.scene, this.camera);
102
+ }
103
+ setSize(width, height) {
104
+ this.renderTarget.setSize(width, height);
105
+ this.fullscreenMaterial.uniforms.texSize.value.set(this.renderTarget.width, this.renderTarget.height);
106
+ }
107
+ }
108
+ exports.AOPass = AOPass;
109
109
  //# sourceMappingURL=AOPass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AOPass.js","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/ao/AOPass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AOPass.js","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/ao/ao/AOPass.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const ao_compose = "\nuniform highp 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.99975 ? 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";
1
+ export declare const ao_compose = "\nuniform highp 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.99975 ? 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
2
  //# sourceMappingURL=ao_compose.d.ts.map
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ao_compose = void 0;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ao_compose = void 0;
4
4
  exports.ao_compose = `
5
5
  uniform highp sampler2D inputTexture;
6
6
  uniform highp sampler2D depthTexture;
@@ -19,5 +19,5 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
19
19
 
20
20
  outputColor = vec4(aoColor, inputColor.a);
21
21
  }
22
- `;
22
+ `;
23
23
  //# sourceMappingURL=ao_compose.js.map
@@ -1,2 +1,2 @@
1
- export declare const ao_utils = "\nuniform mat4 projectionMatrixInverse;\nuniform sampler2D normalTexture;\n\nin mat4 viewMatrixInverse;\n\nvec3 computeWorldPosition(float depth, vec2 coord) {\n // Convert screen coordinates to normalized device coordinates (NDC)\n vec2 ndc = coord * 2.0 - 1.0;\n\n // Convert depth to clip space z\n float z = depth * 2.0 - 1.0;\n\n // Create clip space position\n vec4 clipSpacePosition = vec4(ndc, z, 1.0);\n\n // Transform to view space\n vec4 viewSpacePosition = projectionMatrixInverse * clipSpacePosition;\n\n // Perspective division\n viewSpacePosition /= viewSpacePosition.w;\n\n // Transform to world space using the full inverse view matrix\n vec4 worldSpacePosition = viewMatrixInverse * viewSpacePosition;\n\n return worldSpacePosition.xyz;\n}\n\nvec3 computeNormal(vec2 vUv) {\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 = computeWorldPosition(c0, vUv).xyz;\n vec3 dpdx = (dl < dr) ? ce - computeWorldPosition(l1, (vUv - vec2(1.0 / size.x, 0.0))).xyz\n : -ce + computeWorldPosition(r1, (vUv + vec2(1.0 / size.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - computeWorldPosition(b1, (vUv - vec2(0.0, 1.0 / size.y))).xyz\n : -ce + computeWorldPosition(t1, (vUv + vec2(0.0, 1.0 / size.y))).xyz;\n return normalize(cross(dpdx, dpdy));\n}\n\nbool areDepthsOnSamePlane(\n float depth1, \n float depth2, \n vec2 coord1, \n vec2 coord2,\n vec3 planeNormalScreenSpace, \n float epsilon\n) {\n // Reconstruct world positions\n vec3 worldPos1 = computeWorldPosition(depth1, coord1);\n vec3 worldPos2 = computeWorldPosition(depth2, coord2);\n\n // Compute the vector between the two positions\n vec3 pointVector = worldPos2 - worldPos1;\n\n if (length(pointVector) < 1e-6) {\n return true; // Indicates invalid inputs\n }\n\n // Compute the normal in world space\n vec3 planeNormal = mat3(viewMatrixInverse) * planeNormalScreenSpace;\n\n // Check if the vector is orthogonal to the plane normal\n return abs(dot(pointVector, planeNormal)) < epsilon;\n}\n\nvec3 getUnpackedNormal(vec2 uv) {\n return normalize(textureLod(normalTexture, uv, 0.).xyz * 2.0 - 1.0);\n}\n";
1
+ export declare const ao_utils = "\nuniform mat4 projectionMatrixInverse;\nuniform sampler2D normalTexture;\n\nin mat4 viewMatrixInverse;\n\nvec3 computeWorldPosition(float depth, vec2 coord) {\n // Convert screen coordinates to normalized device coordinates (NDC)\n vec2 ndc = coord * 2.0 - 1.0;\n\n // Convert depth to clip space z\n float z = depth * 2.0 - 1.0;\n\n // Create clip space position\n vec4 clipSpacePosition = vec4(ndc, z, 1.0);\n\n // Transform to view space\n vec4 viewSpacePosition = projectionMatrixInverse * clipSpacePosition;\n\n // Perspective division\n viewSpacePosition /= viewSpacePosition.w;\n\n // Transform to world space using the full inverse view matrix\n vec4 worldSpacePosition = viewMatrixInverse * viewSpacePosition;\n\n return worldSpacePosition.xyz;\n}\n\nvec3 computeNormal(vec2 vUv) {\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 = computeWorldPosition(c0, vUv).xyz;\n vec3 dpdx = (dl < dr) ? ce - computeWorldPosition(l1, (vUv - vec2(1.0 / size.x, 0.0))).xyz\n : -ce + computeWorldPosition(r1, (vUv + vec2(1.0 / size.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - computeWorldPosition(b1, (vUv - vec2(0.0, 1.0 / size.y))).xyz\n : -ce + computeWorldPosition(t1, (vUv + vec2(0.0, 1.0 / size.y))).xyz;\n return normalize(cross(dpdx, dpdy));\n}\n\nbool areDepthsOnSamePlane(\n float depth1, \n float depth2, \n vec2 coord1, \n vec2 coord2,\n vec3 planeNormalScreenSpace, \n float epsilon\n) {\n // Reconstruct world positions\n vec3 worldPos1 = computeWorldPosition(depth1, coord1);\n vec3 worldPos2 = computeWorldPosition(depth2, coord2);\n\n // Compute the vector between the two positions\n vec3 pointVector = worldPos2 - worldPos1;\n\n if (length(pointVector) < 1e-6) {\n return true; // Indicates invalid inputs\n }\n\n // Compute the normal in world space\n vec3 planeNormal = mat3(viewMatrixInverse) * planeNormalScreenSpace;\n\n // Check if the vector is orthogonal to the plane normal\n return abs(dot(pointVector, planeNormal)) < epsilon;\n}\n\nvec3 getUnpackedNormal(vec2 uv) {\n return normalize(textureLod(normalTexture, uv, 0.).xyz * 2.0 - 1.0);\n}\n";
2
2
  //# sourceMappingURL=ao_utils.d.ts.map
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ao_utils = void 0;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ao_utils = void 0;
4
4
  exports.ao_utils = `
5
5
  uniform mat4 projectionMatrixInverse;
6
6
  uniform sampler2D normalTexture;
@@ -82,5 +82,5 @@ bool areDepthsOnSamePlane(
82
82
  vec3 getUnpackedNormal(vec2 uv) {
83
83
  return normalize(textureLod(normalTexture, uv, 0.).xyz * 2.0 - 1.0);
84
84
  }
85
- `;
85
+ `;
86
86
  //# sourceMappingURL=ao_utils.js.map
@@ -1,15 +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 };
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
15
  //# sourceMappingURL=HBAOEffect.d.ts.map
@@ -1,25 +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 ao_utils_1 = require("../ao/shader/ao_utils");
7
- const hbao_1 = require("./shader/hbao");
8
- const finalFragmentShader = hbao_1.hbao.replace("#include <ao_utils>", ao_utils_1.ao_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;
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 ao_utils_1 = require("../ao/shader/ao_utils");
7
+ const hbao_1 = require("./shader/hbao");
8
+ const finalFragmentShader = hbao_1.hbao.replace("#include <ao_utils>", ao_utils_1.ao_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
25
  //# sourceMappingURL=HBAOEffect.js.map
@@ -1,2 +1,2 @@
1
- export declare const hbao = "\n#define PI 3.14159265358979323846264338327950288\n\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#include <sampleBlueNoise>\n\nuniform float cameraNear;\nuniform float cameraFar;\nuniform mat4 cameraMatrixWorld;\n\n#include <ao_utils>\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\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\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\nvoid main() {\n float depth = textureLod(depthTexture, vUv, 0.0).r;\n vec3 normal = computeNormal(vUv);\n\n // filter out background\n if (depth == 1.0) {\n gl_FragColor = vec4(normal, 1.0);\n return;\n }\n\n vec4 cameraPosition = cameraMatrixWorld * vec4(0.0, 0.0, 0.0, 1.0);\n\n vec3 worldPos = computeWorldPosition(depth, vUv);\n vec3 screenSpaceNormal = getUnpackedNormal(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 vec4 blueNoise = sampleBlueNoise(blueNoiseTexture, seed, blueNoiseRepeat, texSize);\n\n vec3 sampleWorldDir = cosineSampleHemisphere(normal, 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 if(sampleDepth < 1.0) {\n vec3 sampleNormal = getUnpackedNormal(sampleUv.xy);\n\n // Compute the horizon line\n float deltaDepth = depth - sampleDepth;\n\n // distance based bias\n float d = distance(sampleWorldPos, cameraPosition.xyz) / aoDistance;\n deltaDepth *= 0.001 * d * d;\n\n float th = thickness * 0.01;\n\n float theta = dot(normal, sampleWorldDir);\n totalWeight += theta;\n\n if (deltaDepth < th) {\n\n\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 \n // check if the normals are in the same direction\n float dotProduct = dot(screenSpaceNormal, sampleNormal);\n if (dotProduct < 0.9999) {\n \n occlusion = sqrt(occlusion);\n ao += occlusion;\n } else {\n if(areDepthsOnSamePlane(depth, sampleDepth, vUv, sampleUv.xy, screenSpaceNormal, 0.1)) {\n // occluded += 0.0;\n // totalWeight += 1.0;\n } else {\n \n occlusion = sqrt(occlusion);\n ao += occlusion;\n }\n }\n }\n }\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(normal, ao);\n}\n";
1
+ export declare const hbao = "\n#define PI 3.14159265358979323846264338327950288\n\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#include <sampleBlueNoise>\n\nuniform float cameraNear;\nuniform float cameraFar;\nuniform mat4 cameraMatrixWorld;\n\n#include <ao_utils>\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\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\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\nvoid main() {\n float depth = textureLod(depthTexture, vUv, 0.0).r;\n vec3 normal = computeNormal(vUv);\n\n // filter out background\n if (depth == 1.0) {\n gl_FragColor = vec4(normal, 1.0);\n return;\n }\n\n vec4 cameraPosition = cameraMatrixWorld * vec4(0.0, 0.0, 0.0, 1.0);\n\n vec3 worldPos = computeWorldPosition(depth, vUv);\n vec3 screenSpaceNormal = getUnpackedNormal(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 vec4 blueNoise = sampleBlueNoise(blueNoiseTexture, seed, blueNoiseRepeat, texSize);\n\n vec3 sampleWorldDir = cosineSampleHemisphere(normal, 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 if(sampleDepth < 1.0) {\n vec3 sampleNormal = getUnpackedNormal(sampleUv.xy);\n\n // Compute the horizon line\n float deltaDepth = depth - sampleDepth;\n\n // distance based bias\n float d = distance(sampleWorldPos, cameraPosition.xyz) / aoDistance;\n deltaDepth *= 0.001 * d * d;\n\n float th = thickness * 0.01;\n\n float theta = dot(normal, sampleWorldDir);\n totalWeight += theta;\n\n if (deltaDepth < th) {\n\n\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 \n // check if the normals are in the same direction\n float dotProduct = dot(screenSpaceNormal, sampleNormal);\n if (dotProduct < 0.9999) {\n \n occlusion = sqrt(occlusion);\n ao += occlusion;\n } else {\n if(areDepthsOnSamePlane(depth, sampleDepth, vUv, sampleUv.xy, screenSpaceNormal, 0.1)) {\n // occluded += 0.0;\n // totalWeight += 1.0;\n } else {\n \n occlusion = sqrt(occlusion);\n ao += occlusion;\n }\n }\n }\n }\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(normal, ao);\n}\n";
2
2
  //# sourceMappingURL=hbao.d.ts.map
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hbao = void 0;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hbao = void 0;
4
4
  exports.hbao = `
5
5
  #define PI 3.14159265358979323846264338327950288
6
6
 
@@ -155,5 +155,5 @@ void main() {
155
155
 
156
156
  gl_FragColor = vec4(normal, ao);
157
157
  }
158
- `;
158
+ `;
159
159
  //# sourceMappingURL=hbao.js.map
@@ -1,34 +1,34 @@
1
- import { Pass } from "postprocessing";
2
- import { Camera, Texture, Vector2, WebGLRenderer, WebGLRenderTarget } 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 blueNoiseTexture?: Texture;
16
- index: number;
17
- inputTexture: Texture;
18
- iterations: number;
19
- radius: number;
20
- renderTargetA: WebGLRenderTarget;
21
- renderTargetB: WebGLRenderTarget;
22
- rings: number;
23
- samples: number;
24
- constructor(camera: Camera, inputTexture: Texture, depthTexture: Texture, options?: {
25
- [key: string]: unknown;
26
- });
27
- static loadBlueNoiseTexture(): Promise<void>;
28
- get texture(): Texture;
29
- generateDenoiseSamples(numSamples: number, numRings: number, r: number, texelSize: Vector2): Vector2[];
30
- generatePoissonDiskConstant(poissonDisk: Vector2[]): string;
31
- render(renderer: WebGLRenderer): void;
32
- setSize(width: number, height: number): void;
33
- }
1
+ import { Pass } from "postprocessing";
2
+ import { Camera, Texture, Vector2, WebGLRenderer, WebGLRenderTarget } 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 blueNoiseTexture?: Texture;
16
+ index: number;
17
+ inputTexture: Texture;
18
+ iterations: number;
19
+ radius: number;
20
+ renderTargetA: WebGLRenderTarget;
21
+ renderTargetB: WebGLRenderTarget;
22
+ rings: number;
23
+ samples: number;
24
+ constructor(camera: Camera, inputTexture: Texture, depthTexture: Texture, options?: {
25
+ [key: string]: unknown;
26
+ });
27
+ static loadBlueNoiseTexture(): Promise<void>;
28
+ get texture(): Texture;
29
+ generateDenoiseSamples(numSamples: number, numRings: number, r: number, texelSize: Vector2): Vector2[];
30
+ generatePoissonDiskConstant(poissonDisk: Vector2[]): string;
31
+ render(renderer: WebGLRenderer): void;
32
+ setSize(width: number, height: number): void;
33
+ }
34
34
  //# sourceMappingURL=PoissionDenoisePass.d.ts.map