@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.10.0 → 3.11.1

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 (76) hide show
  1. package/dist/RenderingEngine.d.ts +12 -20
  2. package/dist/RenderingEngine.d.ts.map +1 -1
  3. package/dist/RenderingEngine.js +63 -477
  4. package/dist/RenderingEngine.js.map +1 -1
  5. package/dist/interfaces/IRenderingEngine.d.ts +1 -0
  6. package/dist/interfaces/IRenderingEngine.d.ts.map +1 -1
  7. package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -1
  8. package/dist/loaders/EnvironmentMapLoader.js +13 -3
  9. package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
  10. package/dist/loaders/GeometryLoader.d.ts.map +1 -1
  11. package/dist/loaders/GeometryLoader.js +2 -0
  12. package/dist/loaders/GeometryLoader.js.map +1 -1
  13. package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -1
  14. package/dist/loaders/HTMLElementAnchorLoader.js +4 -2
  15. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
  16. package/dist/loaders/MaterialLoader.d.ts +2 -2
  17. package/dist/loaders/MaterialLoader.d.ts.map +1 -1
  18. package/dist/loaders/MaterialLoader.js +13 -17
  19. package/dist/loaders/MaterialLoader.js.map +1 -1
  20. package/dist/managers/ARManager.d.ts +18 -0
  21. package/dist/managers/ARManager.d.ts.map +1 -0
  22. package/dist/managers/ARManager.js +129 -0
  23. package/dist/managers/ARManager.js.map +1 -0
  24. package/dist/managers/FlagManager.d.ts +20 -0
  25. package/dist/managers/FlagManager.d.ts.map +1 -0
  26. package/dist/managers/FlagManager.js +144 -0
  27. package/dist/managers/FlagManager.js.map +1 -0
  28. package/dist/managers/RenderingManager.d.ts.map +1 -1
  29. package/dist/managers/RenderingManager.js +5 -2
  30. package/dist/managers/RenderingManager.js.map +1 -1
  31. package/dist/managers/SceneTracingManager.d.ts +8 -0
  32. package/dist/managers/SceneTracingManager.d.ts.map +1 -1
  33. package/dist/managers/SceneTracingManager.js +13 -6
  34. package/dist/managers/SceneTracingManager.js.map +1 -1
  35. package/dist/managers/SceneTreeManager.d.ts +1 -7
  36. package/dist/managers/SceneTreeManager.d.ts.map +1 -1
  37. package/dist/managers/SceneTreeManager.js +40 -198
  38. package/dist/managers/SceneTreeManager.js.map +1 -1
  39. package/dist/managers/SettingsManager.d.ts +29 -0
  40. package/dist/managers/SettingsManager.d.ts.map +1 -0
  41. package/dist/managers/SettingsManager.js +285 -0
  42. package/dist/managers/SettingsManager.js.map +1 -0
  43. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +2 -2
  44. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
  45. package/dist/managers/sceneTree/SDTFUtils.d.ts +7 -0
  46. package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -0
  47. package/dist/managers/sceneTree/SDTFUtils.js +51 -0
  48. package/dist/managers/sceneTree/SDTFUtils.js.map +1 -0
  49. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +10 -0
  50. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -0
  51. package/dist/managers/sceneTree/SceenTreeManagerUtils.js +174 -0
  52. package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -0
  53. package/dist/shaders/PCSS.d.ts +1 -1
  54. package/dist/shaders/PCSS.d.ts.map +1 -1
  55. package/dist/shaders/PCSS.js +1 -1
  56. package/package.json +17 -17
  57. package/dist/managers/environmentGeometry/GroundProjection.d.ts +0 -19
  58. package/dist/managers/environmentGeometry/GroundProjection.d.ts.map +0 -1
  59. package/dist/managers/environmentGeometry/GroundProjection.js +0 -66
  60. package/dist/managers/environmentGeometry/GroundProjection.js.map +0 -1
  61. package/dist/managers/environmentGeometry/SkyBottom.d.ts +0 -1
  62. package/dist/managers/environmentGeometry/SkyBottom.d.ts.map +0 -1
  63. package/dist/managers/environmentGeometry/SkyBottom.js +0 -2
  64. package/dist/managers/environmentGeometry/SkyBottom.js.map +0 -1
  65. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +0 -2
  66. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +0 -1
  67. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +0 -99
  68. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +0 -1
  69. package/dist/managers/postprocessing/effects/ToneMappingEffect.d.ts +0 -1
  70. package/dist/managers/postprocessing/effects/ToneMappingEffect.d.ts.map +0 -1
  71. package/dist/managers/postprocessing/effects/ToneMappingEffect.js +0 -2
  72. package/dist/managers/postprocessing/effects/ToneMappingEffect.js.map +0 -1
  73. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.d.ts +0 -1
  74. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.d.ts.map +0 -1
  75. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.js +0 -160
  76. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.js.map +0 -1
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.assignBoundingBox = exports.updateMorphWeights = exports.removeData = exports.getBone = void 0;
27
+ const viewer_shared_math_1 = require("@shapediver/viewer.shared.math");
28
+ const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
29
+ const gl_matrix_1 = require("gl-matrix");
30
+ const THREE = __importStar(require("three"));
31
+ const SDData_1 = require("../../objects/SDData");
32
+ const ThreejsData_1 = require("../../types/ThreejsData");
33
+ const getBone = (mainNode, node) => {
34
+ let bone;
35
+ mainNode.traverse((o) => {
36
+ if (o.SDid === node.id)
37
+ bone = o;
38
+ });
39
+ return bone;
40
+ };
41
+ exports.getBone = getBone;
42
+ const removeData = (renderingEngine, dataObject) => {
43
+ if (dataObject.userData.removed === true)
44
+ return;
45
+ dataObject.userData.removed = true;
46
+ switch (true) {
47
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.GEOMETRY:
48
+ dataObject.traverse((o) => {
49
+ if (dataObject.id !== o.id && o.userData.removed === true)
50
+ return;
51
+ o.userData.removed = true;
52
+ if (o instanceof THREE.Mesh ||
53
+ o instanceof THREE.Line ||
54
+ o instanceof THREE.Points ||
55
+ o instanceof THREE.LineSegments ||
56
+ o instanceof THREE.LineLoop) {
57
+ renderingEngine.scene.remove(o);
58
+ renderingEngine.geometryLoader.removeFromGeometryCache(o.geometry.userData.cacheKey);
59
+ renderingEngine.materialLoader.removeFromMaterialCache(o.material.userData.cacheKey);
60
+ const texturesToRemove = [];
61
+ for (const t in o.material) {
62
+ if (o.material[t] instanceof THREE.Texture) {
63
+ o.material[t].name = t;
64
+ if (t !== "envMap") {
65
+ if (!texturesToRemove.includes(o.material[t]))
66
+ texturesToRemove.push(o.material[t]);
67
+ }
68
+ }
69
+ }
70
+ for (const texture of texturesToRemove) {
71
+ if (texture.userData.cacheKey) {
72
+ renderingEngine.materialLoader.threeJsTextureCache[texture.userData.cacheKey].usage--;
73
+ }
74
+ else {
75
+ if (texture.name === "sphericalNormalMap") {
76
+ renderingEngine.geometryLoader.removeFromGemSphericalMapsCache(o.geometry.userData.primitiveSDid +
77
+ "_" +
78
+ o.geometry.userData.primitiveSDversion);
79
+ texture.dispose();
80
+ }
81
+ else {
82
+ texture.dispose();
83
+ }
84
+ }
85
+ }
86
+ }
87
+ });
88
+ break;
89
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.THREEJS:
90
+ break;
91
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.MATERIAL:
92
+ break;
93
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.LIGHT:
94
+ dataObject.traverse((o) => {
95
+ if (o instanceof THREE.Light)
96
+ o.dispose();
97
+ });
98
+ break;
99
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.HTML_ELEMENT_ANCHOR:
100
+ renderingEngine.htmlElementAnchorLoader.removeData(dataObject.SDid, dataObject.SDversion);
101
+ break;
102
+ case dataObject.SDtype === SDData_1.SD_DATA_TYPE.ANIMATION:
103
+ break;
104
+ default:
105
+ // if there is no valid conversion here, call the convertData of the implementation
106
+ break;
107
+ }
108
+ };
109
+ exports.removeData = removeData;
110
+ const updateMorphWeights = (node, obj) => {
111
+ if (!node || !obj)
112
+ return;
113
+ for (let i = 0, len = node.data.length; i < len; i++) {
114
+ if (node.data[i] instanceof viewer_shared_types_1.GeometryData) {
115
+ const data = node.data[i];
116
+ const dataChild = (obj.children.find((oc) => oc.SDid === data.id &&
117
+ oc.SDversion === data.version));
118
+ if (dataChild)
119
+ dataChild.traverse((o) => {
120
+ if (o instanceof THREE.Points ||
121
+ o instanceof THREE.LineSegments ||
122
+ o instanceof THREE.LineLoop ||
123
+ o instanceof THREE.Line ||
124
+ o instanceof THREE.Mesh)
125
+ o.morphTargetInfluences = data.morphWeights;
126
+ });
127
+ }
128
+ }
129
+ for (let i = 0, len = node.children.length; i < len; i++) {
130
+ const nodeChild = node.children[i];
131
+ if (!nodeChild)
132
+ continue;
133
+ const objChild = (obj.children.find((oc) => oc.SDid === nodeChild.id));
134
+ if (objChild)
135
+ (0, exports.updateMorphWeights)(nodeChild, objChild);
136
+ }
137
+ };
138
+ exports.updateMorphWeights = updateMorphWeights;
139
+ const assignBoundingBox = (node, data, renderingEngineId, convertedObjectData, skeleton) => {
140
+ // assign the bb
141
+ if (data instanceof viewer_shared_types_1.GeometryData) {
142
+ const geometry = data;
143
+ let bb = new viewer_shared_math_1.Box();
144
+ if (skeleton) {
145
+ bb = geometry.primitive.computeBoundingBox(node.worldMatrix);
146
+ }
147
+ else {
148
+ const clone = convertedObjectData.clone();
149
+ clone.applyTransformation(node.worldMatrix);
150
+ const threeBox = new THREE.Box3().setFromObject(clone, true);
151
+ bb = new viewer_shared_math_1.Box(gl_matrix_1.vec3.fromValues(threeBox.min.x, threeBox.min.y, threeBox.min.z), gl_matrix_1.vec3.fromValues(threeBox.max.x, threeBox.max.y, threeBox.max.z));
152
+ }
153
+ // adjust the general BB
154
+ node.boundingBox.union(bb);
155
+ // create the specific BB if it doesn't exist yet
156
+ if (!node.boundingBoxViewport[renderingEngineId])
157
+ node.boundingBoxViewport[renderingEngineId] = new viewer_shared_math_1.Box();
158
+ // adjust the specific BB
159
+ node.boundingBoxViewport[renderingEngineId].union(bb);
160
+ }
161
+ else if (data instanceof ThreejsData_1.ThreejsData) {
162
+ const threejsData = data;
163
+ const bbThree = new THREE.Box3().setFromObject(threejsData.obj);
164
+ // adjust the general BB
165
+ node.boundingBox.union(new viewer_shared_math_1.Box(gl_matrix_1.vec3.fromValues(...bbThree.min.toArray()), gl_matrix_1.vec3.fromValues(...bbThree.max.toArray())));
166
+ // create the specific BB if it doesn't exist yet
167
+ if (!node.boundingBoxViewport[renderingEngineId])
168
+ node.boundingBoxViewport[renderingEngineId] = new viewer_shared_math_1.Box();
169
+ // adjust the specific BB
170
+ node.boundingBoxViewport[renderingEngineId].union(new viewer_shared_math_1.Box(gl_matrix_1.vec3.fromValues(...bbThree.min.toArray()), gl_matrix_1.vec3.fromValues(...bbThree.max.toArray())));
171
+ }
172
+ };
173
+ exports.assignBoundingBox = assignBoundingBox;
174
+ //# sourceMappingURL=SceenTreeManagerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceenTreeManagerUtils.js","sourceRoot":"","sources":["../../../src/managers/sceneTree/SceenTreeManagerUtils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export declare const main = "\n\nuniform float lightSizeUV;\nuniform float blending;\n\n#ifdef SHADOWMAP_TYPE_PCF\n\n#define NEAR_PLANE 0.1\n#define NUM_SAMPLES 20\n#define NUM_RINGS 11\n\nvec2 poissonDisk[NUM_SAMPLES];\n\nvoid initPoissonSamples( const in vec2 randomSeed ) {\n float ANGLE_STEP = PI2 * float(NUM_RINGS) / float(NUM_SAMPLES);\n float INV_NUM_SAMPLES = 1.0 / float(NUM_SAMPLES);\n\n // jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/\n float angle = rand(randomSeed) * PI2;\n float radius = INV_NUM_SAMPLES;\n float radiusStep = radius;\n\n for (int i = 0; i < int(NUM_SAMPLES); i++ ) {\n poissonDisk[i] = vec2(cos(angle), sin(angle)) * pow(radius, 0.75);\n radius += radiusStep;\n angle += ANGLE_STEP;\n }\n}\n\nfloat penumbraSize( const in float zReceiver, const in float zBlocker ) { // Parallel plane estimation\n return (zReceiver - zBlocker) / zBlocker;\n}\n\nfloat findBlocker(sampler2D shadowMap, const in vec2 uv, const in float zReceiver ) {\n // This uses similar triangles to compute what\n // area of the shadow map we should search\n float searchRadius = lightSizeUV * (zReceiver - NEAR_PLANE) / zReceiver;\n float blockerDepthSum = 0.0;\n int numBlockers = 0;\n\n for (int i = 0; i < int(NUM_SAMPLES); i++ ) {\n float shadowMapDepth = unpackRGBAToDepth(texture2D(shadowMap, uv + poissonDisk[i] * searchRadius));\n if (shadowMapDepth < zReceiver) {\n blockerDepthSum += shadowMapDepth;\n numBlockers++;\n }\n }\n\n if (numBlockers == 0) return -1.0;\n\n return blockerDepthSum / float(numBlockers);\n}\n\nfloat PCF_Filter(sampler2D shadowMap, vec2 uv, float zReceiver, float filterRadius) {\n float sum = 0.0;\n for (int i = 0; i < int(NUM_SAMPLES); i++ ) {\n float depth = unpackRGBAToDepth(texture2D(shadowMap, uv + poissonDisk[i] * filterRadius));\n if (zReceiver <= depth) sum += 1.0;\n }\n for (int i = 0; i < int(NUM_SAMPLES); i++ ) {\n float depth = unpackRGBAToDepth(texture2D(shadowMap, uv + -poissonDisk[i].yx * filterRadius));\n if (zReceiver <= depth) sum += 1.0;\n }\n return sum / (2.0 * float(NUM_SAMPLES));\n}\n\nfloat PCSS(sampler2D shadowMap, vec4 coords) {\n vec2 uv = coords.xy;\n float zReceiver = coords.z; // Assumed to be eye-space z in this code\n\n initPoissonSamples(uv);\n // STEP 1: blocker search\n float avgBlockerDepth = findBlocker(shadowMap, uv, zReceiver);\n\n //There are no occluders so early out (this saves filtering)\n if (avgBlockerDepth == -1.0) return 1.0;\n\n // STEP 2: penumbra size\n float penumbraRatio = penumbraSize(zReceiver, avgBlockerDepth);\n float filterRadius = penumbraRatio * lightSizeUV * NEAR_PLANE / zReceiver;\n\n // STEP 3: filtering\n //return avgBlockerDepth;\n return PCF_Filter(shadowMap, uv, zReceiver, filterRadius);\n}\n#endif\n";
2
- export declare const entry = "\n// PCSS implementation\nvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\nfloat dx = texelSize.x;\nfloat dy = texelSize.y;\nvec2 uv = shadowCoord.xy;\nvec2 f = fract( uv * shadowMapSize + 0.5 );\nuv -= f * texelSize;\nfloat shadow1 = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n) * ( 1.0 / 9.0 );\nfloat shadow2 = PCSS( shadowMap, shadowCoord );\nshadow = shadow1 * (1.0 - blending) + blending * shadow2;\n ";
2
+ export declare const entry = "\n// PCSS implementation\nvec2 texelSize = vec2( 1.0 / 1024.0 ); // Always use 1024 for consistency\nfloat dx = texelSize.x;\nfloat dy = texelSize.y;\nvec2 uv = shadowCoord.xy;\nvec2 f = fract( uv * shadowMapSize + 0.5 );\nuv -= f * texelSize;\nfloat shadow1 = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n) * ( 1.0 / 9.0 );\nfloat shadow2 = PCSS( shadowMap, shadowCoord );\nshadow = shadow1 * (1.0 - blending) + blending * shadow2;\n ";
3
3
  //# sourceMappingURL=PCSS.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PCSS.d.ts","sourceRoot":"","sources":["../../src/shaders/PCSS.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,82FAsFhB,CAAC;AAEF,eAAO,MAAM,KAAK,mwDAmCL,CAAC"}
1
+ {"version":3,"file":"PCSS.d.ts","sourceRoot":"","sources":["../../src/shaders/PCSS.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,82FAsFhB,CAAC;AAEF,eAAO,MAAM,KAAK,gyDAmCL,CAAC"}
@@ -90,7 +90,7 @@ float PCSS(sampler2D shadowMap, vec4 coords) {
90
90
  `;
91
91
  exports.entry = `
92
92
  // PCSS implementation
93
- vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
93
+ vec2 texelSize = vec2( 1.0 / 1024.0 ); // Always use 1024 for consistency
94
94
  float dx = texelSize.x;
95
95
  float dy = texelSize.y;
96
96
  vec2 uv = shadowCoord.xy;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.rendering-engine.rendering-engine-threejs",
3
- "version": "3.10.0",
3
+ "version": "3.11.1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -38,21 +38,21 @@
38
38
  "testEnvironment": "node"
39
39
  },
40
40
  "dependencies": {
41
- "@shapediver/viewer.data-engine.gltf-converter": "3.10.0",
42
- "@shapediver/viewer.data-engine.shared-types": "3.10.0",
43
- "@shapediver/viewer.data-engine.tag3d-engine": "3.10.0",
44
- "@shapediver/viewer.rendering-engine.animation-engine": "3.10.0",
45
- "@shapediver/viewer.rendering-engine.animation-frame-engine": "3.10.0",
46
- "@shapediver/viewer.rendering-engine.camera-engine": "3.10.0",
47
- "@shapediver/viewer.rendering-engine.canvas-engine": "3.10.0",
48
- "@shapediver/viewer.rendering-engine.intersection-engine": "3.10.0",
49
- "@shapediver/viewer.rendering-engine.light-engine": "3.10.0",
50
- "@shapediver/viewer.rendering-engine.rendering-engine": "3.10.0",
51
- "@shapediver/viewer.shared.global-access-objects": "3.10.0",
52
- "@shapediver/viewer.shared.math": "3.10.0",
53
- "@shapediver/viewer.shared.node-tree": "3.10.0",
54
- "@shapediver/viewer.shared.services": "3.10.0",
55
- "@shapediver/viewer.shared.types": "3.10.0",
41
+ "@shapediver/viewer.data-engine.gltf-converter": "3.11.1",
42
+ "@shapediver/viewer.data-engine.shared-types": "3.11.1",
43
+ "@shapediver/viewer.data-engine.tag3d-engine": "3.11.1",
44
+ "@shapediver/viewer.rendering-engine.animation-engine": "3.11.1",
45
+ "@shapediver/viewer.rendering-engine.animation-frame-engine": "3.11.1",
46
+ "@shapediver/viewer.rendering-engine.camera-engine": "3.11.1",
47
+ "@shapediver/viewer.rendering-engine.canvas-engine": "3.11.1",
48
+ "@shapediver/viewer.rendering-engine.intersection-engine": "3.11.1",
49
+ "@shapediver/viewer.rendering-engine.light-engine": "3.11.1",
50
+ "@shapediver/viewer.rendering-engine.rendering-engine": "3.11.1",
51
+ "@shapediver/viewer.shared.global-access-objects": "3.11.1",
52
+ "@shapediver/viewer.shared.math": "3.11.1",
53
+ "@shapediver/viewer.shared.node-tree": "3.11.1",
54
+ "@shapediver/viewer.shared.services": "3.11.1",
55
+ "@shapediver/viewer.shared.types": "3.11.1",
56
56
  "@tweenjs/tween.js": "^18.6.4",
57
57
  "@types/stats.js": "^0.17.0",
58
58
  "@types/three": "0.162.0",
@@ -61,5 +61,5 @@
61
61
  "stats.js": "^0.17.0",
62
62
  "three": "0.162.0"
63
63
  },
64
- "gitHead": "b0e185f7bc0ee8c5526e1da640078a448b6d6f56"
64
+ "gitHead": "8c6413861b13ac95e6f413cd9a93b3c9170f91f6"
65
65
  }
@@ -1,19 +0,0 @@
1
- import { vec3 } from "gl-matrix";
2
- import { SDObject } from "../../objects/SDObject";
3
- import { RenderingEngine } from "../../RenderingEngine";
4
- import { IEnvironmentGeometry } from "./IEnvironmentGeometry";
5
- export declare class GroundProjection implements IEnvironmentGeometry {
6
- private readonly _renderingEngine;
7
- private readonly _parent;
8
- private readonly _eventEngine;
9
- private _groundProjectionObject;
10
- private _groundedSkyBox?;
11
- private _visible;
12
- constructor(_renderingEngine: RenderingEngine, _parent: SDObject);
13
- get visible(): boolean;
14
- set visible(value: boolean);
15
- changeSceneExtents(position: vec3, divisions: number, gridExtents: number): void;
16
- updatePosition(position: vec3): void;
17
- private createGroundProjection;
18
- }
19
- //# sourceMappingURL=GroundProjection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroundProjection.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/GroundProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO9D,qBAAa,gBAAiB,YAAW,oBAAoB;IAc7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXxF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAErD,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAkB;gBAML,gBAAgB,EAAE,eAAe,EAAmB,OAAO,EAAE,QAAQ;IAiBlG,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAGhC;IAMM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhF,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAO3C,OAAO,CAAC,sBAAsB;CAiBjC"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroundProjection = void 0;
4
- const SDData_1 = require("../../objects/SDData");
5
- const GroundedSkyBox_1 = require("three/examples/jsm/objects/GroundedSkyBox");
6
- const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
7
- const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
8
- class GroundProjection {
9
- // #endregion Properties (2)
10
- // #region Constructors (1)
11
- constructor(_renderingEngine, _parent) {
12
- this._renderingEngine = _renderingEngine;
13
- this._parent = _parent;
14
- // #region Properties (2)
15
- this._eventEngine = viewer_shared_services_1.EventEngine.instance;
16
- this._visible = false;
17
- this._groundProjectionObject = new SDData_1.SDData('grid', '');
18
- this.createGroundProjection(this._renderingEngine.environmentMapLoader.environmentMap);
19
- this._parent.add(this._groundProjectionObject);
20
- this._eventEngine.addListener(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, (e) => {
21
- const taskEvent = e;
22
- if (taskEvent.type === viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING) {
23
- this.createGroundProjection(this._renderingEngine.environmentMapLoader.environmentMap);
24
- }
25
- });
26
- }
27
- // #endregion Constructors (1)
28
- // #region Public Getters And Setters (2)
29
- get visible() {
30
- return this._visible;
31
- }
32
- set visible(value) {
33
- this._visible = value;
34
- this._groundProjectionObject.visible = value;
35
- }
36
- // #endregion Public Getters And Setters (2)
37
- // #region Public Methods (2)
38
- changeSceneExtents(position, divisions, gridExtents) {
39
- this.createGroundProjection(this._renderingEngine.environmentMapLoader.environmentMap);
40
- if (this._groundedSkyBox)
41
- this._groundedSkyBox.position.set(position[0], position[1], position[2]);
42
- }
43
- updatePosition(position) {
44
- if (this._groundedSkyBox)
45
- this._groundedSkyBox.position.set(position[0], position[1], position[2]);
46
- }
47
- // #endregion Public Methods (2)
48
- createGroundProjection(map) {
49
- if (this._groundedSkyBox) {
50
- this._groundedSkyBox.geometry.dispose();
51
- this._groundedSkyBox.material.dispose();
52
- }
53
- if (!map) {
54
- if (this._groundedSkyBox)
55
- this._groundProjectionObject.remove(this._groundedSkyBox);
56
- }
57
- else {
58
- this._groundedSkyBox = new GroundedSkyBox_1.GroundedSkybox(map, 0.1, 100);
59
- this._groundedSkyBox.rotateX(Math.PI / 2);
60
- this._groundProjectionObject.add(this._groundedSkyBox);
61
- }
62
- this._groundProjectionObject.visible = this._visible;
63
- }
64
- }
65
- exports.GroundProjection = GroundProjection;
66
- //# sourceMappingURL=GroundProjection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroundProjection.js","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/GroundProjection.ts"],"names":[],"mappings":";;;AACA,iDAA8C;AAI9C,8EAA2E;AAE3E,+EAAoF;AACpF,yEAAwE;AAGxE,MAAa,gBAAgB;IAUzB,4BAA4B;IAE5B,2BAA2B;IAE3B,YAA6B,gBAAiC,EAAmB,OAAiB;QAArE,qBAAgB,GAAhB,gBAAgB,CAAiB;QAAmB,YAAO,GAAP,OAAO,CAAU;QAblG,yBAAyB;QAER,iBAAY,GAAG,oCAAW,CAAC,QAAQ,CAAC;QAK7C,aAAQ,GAAY,KAAK,CAAC;QAO9B,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,kCAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE;YACjE,MAAM,SAAS,GAAG,CAAe,CAAC;YAClC,IAAG,SAAS,CAAC,IAAI,KAAK,+BAAS,CAAC,uBAAuB,EAAE;gBACrD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;aAC1F;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAA8B;IAE9B,yCAAyC;IAEzC,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,uBAAuB,CAAC,OAAO,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,4CAA4C;IAE5C,6BAA6B;IAEtB,kBAAkB,CAAC,QAAc,EAAE,SAAiB,EAAE,WAAmB;QAC5E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvF,IAAG,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAEM,cAAc,CAAC,QAAc;QAChC,IAAG,IAAI,CAAC,eAAe;YACnB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,gCAAgC;IAExB,sBAAsB,CAAC,GAA6C;QACxE,IAAG,IAAI,CAAC,eAAe,EAAC;YACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SAC3C;QAED,IAAG,CAAC,GAAG,EAAE;YACL,IAAG,IAAI,CAAC,eAAe;gBACnB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACjE;aAAM;YACH,IAAI,CAAC,eAAe,GAAG,IAAI,+BAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzD,CAAC;CACJ;AAzED,4CAyEC"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=SkyBottom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkyBottom.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/SkyBottom.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=SkyBottom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkyBottom.js","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/SkyBottom.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,99 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=ToneMappingEffect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToneMappingEffect.d.ts","sourceRoot":"","sources":["../../../../src/managers/postprocessing/effects/ToneMappingEffect.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=ToneMappingEffect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToneMappingEffect.js","sourceRoot":"","sources":["../../../../src/managers/postprocessing/effects/ToneMappingEffect.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=ToneMappingPass.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToneMappingPass.d.ts","sourceRoot":"","sources":["../../../../../src/managers/postprocessing/effects/tone-mapping/ToneMappingPass.ts"],"names":[],"mappings":""}