@roomle/web-sdk 2.44.0-alpha.1 → 2.44.0-alpha.3

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 (225) hide show
  1. package/.releaserc.json +55 -58
  2. package/README.md +3 -0
  3. package/lib/{banana-for-scale-c9b91436.nomodule.js → banana-for-scale-97a65f2f.nomodule.js} +2 -2
  4. package/lib/{banana-for-scale-c9b91436.nomodule.js.map → banana-for-scale-97a65f2f.nomodule.js.map} +1 -1
  5. package/lib/{banana-for-scale-1f350acc.js → banana-for-scale-e8876cf0.js} +2 -2
  6. package/lib/{banana-for-scale-1f350acc.js.map → banana-for-scale-e8876cf0.js.map} +1 -1
  7. package/lib/{budgeteer-measure-1e85a5b9.js → budgeteer-measure-23a42ba1.js} +2 -2
  8. package/lib/budgeteer-measure-23a42ba1.js.map +1 -0
  9. package/lib/budgeteer-measure.nomodule.js +1 -1
  10. package/lib/budgeteer-measure.nomodule.js.map +1 -1
  11. package/lib/{component-dimensioning-8b90144f.js → component-dimensioning-c495efe5.js} +2 -2
  12. package/lib/component-dimensioning-c495efe5.js.map +1 -0
  13. package/lib/{component-dimensioning-11e334e6.nomodule.js → component-dimensioning-c9877d28.nomodule.js} +2 -2
  14. package/lib/component-dimensioning-c9877d28.nomodule.js.map +1 -0
  15. package/lib/{component-raycast-helper-d34cf336.js → component-raycast-helper-23393bb6.js} +2 -2
  16. package/lib/component-raycast-helper-23393bb6.js.map +1 -0
  17. package/lib/{component-raycast-helper-917c5fce.nomodule.js → component-raycast-helper-3ec360cf.nomodule.js} +2 -2
  18. package/lib/component-raycast-helper-3ec360cf.nomodule.js.map +1 -0
  19. package/lib/{configurator-74c366d0.nomodule.js → configurator-6e17bbb4.nomodule.js} +2 -2
  20. package/lib/configurator-6e17bbb4.nomodule.js.map +1 -0
  21. package/lib/{configurator-fb2e05ef.js → configurator-a0113de7.js} +2 -2
  22. package/lib/configurator-a0113de7.js.map +1 -0
  23. package/lib/configurator-dummy-app.js.map +1 -1
  24. package/lib/configurator-dummy.html +167 -79
  25. package/lib/configurator-main-10fa7f9b.js +2 -0
  26. package/lib/configurator-main-10fa7f9b.js.map +1 -0
  27. package/lib/configurator-main.nomodule.js +1 -1
  28. package/lib/{default-light-setting-43be6138.js → default-light-setting-408ac1bd.js} +2 -2
  29. package/lib/default-light-setting-408ac1bd.js.map +1 -0
  30. package/lib/{default-light-setting-e2fe40ee.nomodule.js → default-light-setting-f72c0eb6.nomodule.js} +2 -2
  31. package/lib/default-light-setting-f72c0eb6.nomodule.js.map +1 -0
  32. package/lib/definitions/common-core/src/lightsetting/dynamic-light-setting-loader.d.ts +1 -1
  33. package/lib/definitions/common-core/src/main.d.ts +3 -4
  34. package/lib/definitions/common-core/src/utils/shims.d.ts +2 -2
  35. package/lib/definitions/configurator-core/src/roomle-configurator.d.ts +70 -70
  36. package/lib/definitions/configurator-core/src/services/configurator-ui-callback.d.ts +5 -5
  37. package/lib/definitions/glb-viewer-core/src/roomle-glb-viewer.d.ts +2 -2
  38. package/lib/definitions/material-viewer/src/roomle-material-viewer.d.ts +2 -2
  39. package/lib/definitions/planner-core/src/roomle-planner-ui-callback.d.ts +1 -0
  40. package/lib/{dimensioning-helper-439a1eab.js → dimensioning-helper-be971abb.js} +2 -2
  41. package/lib/{dimensioning-helper-439a1eab.js.map → dimensioning-helper-be971abb.js.map} +1 -1
  42. package/lib/{dimensioning-helper-5d68f7b8.nomodule.js → dimensioning-helper-d1ca3c93.nomodule.js} +2 -2
  43. package/lib/dimensioning-helper-d1ca3c93.nomodule.js.map +1 -0
  44. package/lib/embedding-dummy.html +122 -94
  45. package/lib/{glb-viewer-d2d45ce4.js → glb-viewer-1c3b5760.js} +2 -2
  46. package/lib/{glb-viewer-d2d45ce4.js.map → glb-viewer-1c3b5760.js.map} +1 -1
  47. package/lib/{glb-viewer-185f0c5b.nomodule.js → glb-viewer-21871044.nomodule.js} +2 -2
  48. package/lib/{glb-viewer-185f0c5b.nomodule.js.map → glb-viewer-21871044.nomodule.js.map} +1 -1
  49. package/lib/glb-viewer-dummy-app.js.map +1 -1
  50. package/lib/glb-viewer-dummy.html +44 -30
  51. package/lib/glb-viewer-main-76258bd6.js +2 -0
  52. package/lib/glb-viewer-main-76258bd6.js.map +1 -0
  53. package/lib/glb-viewer-main.nomodule.js +1 -1
  54. package/lib/legacy/{banana-for-scale-35cca9b6.legacy.js → banana-for-scale-5bbe2474.legacy.js} +2 -2
  55. package/lib/legacy/{banana-for-scale-35cca9b6.legacy.js.map → banana-for-scale-5bbe2474.legacy.js.map} +1 -1
  56. package/lib/legacy/budgeteer-measure.legacy.js +1 -1
  57. package/lib/legacy/budgeteer-measure.legacy.js.map +1 -1
  58. package/lib/legacy/{component-dimensioning-9aeb85f3.legacy.js → component-dimensioning-19219632.legacy.js} +2 -2
  59. package/lib/legacy/component-dimensioning-19219632.legacy.js.map +1 -0
  60. package/lib/legacy/{component-raycast-helper-c9e6fa8a.legacy.js → component-raycast-helper-8f7251fb.legacy.js} +2 -2
  61. package/lib/legacy/component-raycast-helper-8f7251fb.legacy.js.map +1 -0
  62. package/lib/legacy/{configurator-0dc9d32c.legacy.js → configurator-25fd6957.legacy.js} +2 -2
  63. package/lib/legacy/configurator-25fd6957.legacy.js.map +1 -0
  64. package/lib/legacy/configurator-main.legacy.js +1 -1
  65. package/lib/legacy/{default-light-setting-bb797007.legacy.js → default-light-setting-fc14e161.legacy.js} +2 -2
  66. package/lib/legacy/default-light-setting-fc14e161.legacy.js.map +1 -0
  67. package/lib/legacy/{dimensioning-helper-9d5a7b3c.legacy.js → dimensioning-helper-3703ce6f.legacy.js} +2 -2
  68. package/lib/legacy/dimensioning-helper-3703ce6f.legacy.js.map +1 -0
  69. package/lib/legacy/{glb-viewer-069756aa.legacy.js → glb-viewer-750198d1.legacy.js} +2 -2
  70. package/lib/legacy/{glb-viewer-069756aa.legacy.js.map → glb-viewer-750198d1.legacy.js.map} +1 -1
  71. package/lib/legacy/glb-viewer-main.legacy.js +1 -1
  72. package/lib/legacy/{main-thread-to-worker-f535fe2c.legacy.js → main-thread-to-worker-cc24f989.legacy.js} +1 -1
  73. package/lib/legacy/main-thread-to-worker-cc24f989.legacy.js.map +1 -0
  74. package/lib/legacy/{material-viewer-a96582f6.legacy.js → material-viewer-85314524.legacy.js} +2 -2
  75. package/lib/legacy/material-viewer-85314524.legacy.js.map +1 -0
  76. package/lib/legacy/material-viewer-main.legacy.js +1 -1
  77. package/lib/legacy/{pixotron-4d1c8db2.legacy.js → pixotron-fe363849.legacy.js} +2 -2
  78. package/lib/legacy/{pixotron-4d1c8db2.legacy.js.map → pixotron-fe363849.legacy.js.map} +1 -1
  79. package/lib/legacy/planner-a422d4e7.legacy.js +2 -0
  80. package/lib/legacy/{planner-3334d9c4.legacy.js.map → planner-a422d4e7.legacy.js.map} +1 -1
  81. package/lib/legacy/planner-main.legacy.js +1 -1
  82. package/lib/legacy/{roomle-configurator-cd107a29.legacy.js → roomle-configurator-4ac0dbee.legacy.js} +2 -2
  83. package/lib/legacy/{roomle-configurator-cd107a29.legacy.js.map → roomle-configurator-4ac0dbee.legacy.js.map} +1 -1
  84. package/lib/legacy/roomle-dependency-injection-c859bb7b.legacy.js +16 -0
  85. package/lib/legacy/{roomle-dependency-injection-aa414f84.legacy.js.map → roomle-dependency-injection-c859bb7b.legacy.js.map} +1 -1
  86. package/lib/legacy/roomle-sdk.legacy.js +1 -1
  87. package/lib/legacy/{script-loader-37d724e7.legacy.js → script-loader-e0a57fb9.legacy.js} +2 -2
  88. package/lib/legacy/script-loader-e0a57fb9.legacy.js.map +1 -0
  89. package/lib/legacy/static/DepthShadowGenerator-a3a9d85ff2c3d24c.js +266 -0
  90. package/lib/legacy/static/Tween-5ebfb82307807fdc.js +767 -0
  91. package/lib/legacy/static/{asset-loader.worker-7fdd71efd75f50d4.js → asset-loader.worker-caa87aba0f76ce49.js} +1 -1
  92. package/lib/legacy/static/{budgeteer.sw-6e3fb7e14289ed96.js → budgeteer.sw-0a8d4e36e18346a5.js} +1 -1
  93. package/lib/legacy/static/camera-05824b47cdb951e4.json +39 -0
  94. package/lib/legacy/static/dat.gui.min-24a0d861d5534d62.js +2447 -0
  95. package/lib/legacy/static/rubik_regular-bc008a7de2daee79.json +3535 -0
  96. package/lib/legacy/static/rubik_regular_sub-2dd2d5cca49018c5.json +168 -0
  97. package/lib/{static/shaders-af852933f81878aa.json → legacy/static/shaders-219b62c099a8555a.json} +1 -1
  98. package/lib/legacy/{stats-helper-358f1fcc.legacy.js → stats-helper-301dc461.legacy.js} +2 -2
  99. package/lib/legacy/{stats-helper-358f1fcc.legacy.js.map → stats-helper-301dc461.legacy.js.map} +1 -1
  100. package/lib/legacy/{tools-core-f3b4d22c.legacy.js → tools-core-762555af.legacy.js} +2 -2
  101. package/lib/legacy/tools-core-762555af.legacy.js.map +1 -0
  102. package/lib/{main-thread-to-worker-31ec8d3a.nomodule.js → main-thread-to-worker-6a4eb1ee.nomodule.js} +1 -1
  103. package/lib/main-thread-to-worker-6a4eb1ee.nomodule.js.map +1 -0
  104. package/lib/{main-thread-to-worker-e9986fa8.js → main-thread-to-worker-88f74244.js} +1 -1
  105. package/lib/main-thread-to-worker-88f74244.js.map +1 -0
  106. package/lib/{material-viewer-e7514f95.js → material-viewer-4c7564b3.js} +2 -2
  107. package/lib/material-viewer-4c7564b3.js.map +1 -0
  108. package/lib/{material-viewer-2db93afe.nomodule.js → material-viewer-5591d60a.nomodule.js} +2 -2
  109. package/lib/material-viewer-5591d60a.nomodule.js.map +1 -0
  110. package/lib/material-viewer-dummy-app.js.map +1 -1
  111. package/lib/material-viewer-dummy.html +39 -22
  112. package/lib/material-viewer-main-16e395e9.js +2 -0
  113. package/lib/material-viewer-main-16e395e9.js.map +1 -0
  114. package/lib/material-viewer-main.nomodule.js +1 -1
  115. package/lib/measure.html +27 -34
  116. package/lib/{pixotron-e1f44e21.js → pixotron-5905d47b.js} +2 -2
  117. package/lib/{pixotron-e1f44e21.js.map → pixotron-5905d47b.js.map} +1 -1
  118. package/lib/{pixotron-11d8ecf1.nomodule.js → pixotron-9fe87cf0.nomodule.js} +2 -2
  119. package/lib/{pixotron-11d8ecf1.nomodule.js.map → pixotron-9fe87cf0.nomodule.js.map} +1 -1
  120. package/lib/planner-85bd03e6.nomodule.js +2 -0
  121. package/lib/{planner-2fb083b9.nomodule.js.map → planner-85bd03e6.nomodule.js.map} +1 -1
  122. package/lib/planner-dummy-app.js.map +1 -1
  123. package/lib/planner-dummy.html +64 -43
  124. package/lib/planner-e72d2ec5.js +2 -0
  125. package/lib/{planner-b9697b33.js.map → planner-e72d2ec5.js.map} +1 -1
  126. package/lib/planner-main-0d79120f.js +2 -0
  127. package/lib/planner-main-0d79120f.js.map +1 -0
  128. package/lib/planner-main.nomodule.js +1 -1
  129. package/lib/{roomle-configurator-3bc0f646.js → roomle-configurator-43aab7fd.js} +2 -2
  130. package/lib/{roomle-configurator-3bc0f646.js.map → roomle-configurator-43aab7fd.js.map} +1 -1
  131. package/lib/{roomle-configurator-e2cafe97.nomodule.js → roomle-configurator-e72d373d.nomodule.js} +2 -2
  132. package/lib/{roomle-configurator-e2cafe97.nomodule.js.map → roomle-configurator-e72d373d.nomodule.js.map} +1 -1
  133. package/lib/roomle-dependency-injection-0464676f.js +16 -0
  134. package/lib/{roomle-dependency-injection-244ed68c.js.map → roomle-dependency-injection-0464676f.js.map} +1 -1
  135. package/lib/roomle-dependency-injection-07615f35.nomodule.js +16 -0
  136. package/lib/{roomle-dependency-injection-4c51790a.nomodule.js.map → roomle-dependency-injection-07615f35.nomodule.js.map} +1 -1
  137. package/lib/{roomle-sdk-9cc773d7.js → roomle-sdk-dd5cc592.js} +2 -2
  138. package/lib/roomle-sdk-dd5cc592.js.map +1 -0
  139. package/lib/roomle-sdk.nomodule.js +1 -1
  140. package/lib/{script-loader-584a0480.js → script-loader-394f7657.js} +2 -2
  141. package/lib/script-loader-394f7657.js.map +1 -0
  142. package/lib/{script-loader-ff5cfb68.nomodule.js → script-loader-8efb6055.nomodule.js} +2 -2
  143. package/lib/script-loader-8efb6055.nomodule.js.map +1 -0
  144. package/lib/static/{DepthShadowGenerator-4c4b06f0801c4034.js → DepthShadowGenerator-a3a9d85ff2c3d24c.js} +0 -0
  145. package/lib/static/DepthShadowGenerator-a3a9d85ff2c3d24c.js.map +1 -0
  146. package/lib/static/{Tween-d024b02fe34f25ab.js → Tween-5ebfb82307807fdc.js} +0 -0
  147. package/lib/static/Tween-5ebfb82307807fdc.js.map +1 -0
  148. package/lib/static/{asset-loader.worker-7fdd71efd75f50d4.js → asset-loader.worker-caa87aba0f76ce49.js} +1 -1
  149. package/lib/static/{asset-loader.worker-7fdd71efd75f50d4.js.map → asset-loader.worker-caa87aba0f76ce49.js.map} +0 -0
  150. package/lib/static/asset-loader.worker.js +1 -1
  151. package/lib/static/{budgeteer.sw-6e3fb7e14289ed96.js → budgeteer.sw-0a8d4e36e18346a5.js} +1 -1
  152. package/lib/static/{budgeteer.sw-6e3fb7e14289ed96.js.map → budgeteer.sw-0a8d4e36e18346a5.js.map} +0 -0
  153. package/lib/static/budgeteer.sw.js +1 -1
  154. package/lib/static/camera-05824b47cdb951e4.json +39 -0
  155. package/lib/static/{dat.gui.min-b5cbb61e5c62f0bf.js → dat.gui.min-24a0d861d5534d62.js} +0 -0
  156. package/lib/static/dat.gui.min-24a0d861d5534d62.js.map +1 -0
  157. package/lib/static/rubik_regular-bc008a7de2daee79.json +3535 -0
  158. package/lib/static/rubik_regular_sub-2dd2d5cca49018c5.json +168 -0
  159. package/lib/{legacy/static/shaders-af852933f81878aa.json → static/shaders-219b62c099a8555a.json} +1 -1
  160. package/lib/static/worker-to-main-thread-3ad1cee7.js +1 -0
  161. package/lib/static/worker-to-main-thread-3ad1cee7.js.map +1 -0
  162. package/lib/{stats-helper-bd19ced2.nomodule.js → stats-helper-13e6116f.nomodule.js} +2 -2
  163. package/lib/{stats-helper-bd19ced2.nomodule.js.map → stats-helper-13e6116f.nomodule.js.map} +1 -1
  164. package/lib/{stats-helper-a6263360.js → stats-helper-ab16facc.js} +2 -2
  165. package/lib/{stats-helper-a6263360.js.map → stats-helper-ab16facc.js.map} +1 -1
  166. package/lib/{tools-core-4f0c9377.js → tools-core-bef60f9d.js} +2 -2
  167. package/lib/tools-core-bef60f9d.js.map +1 -0
  168. package/lib/{tools-core-f609446a.nomodule.js → tools-core-c6126068.nomodule.js} +2 -2
  169. package/lib/tools-core-c6126068.nomodule.js.map +1 -0
  170. package/package.json +2 -2
  171. package/scripts/copy-assets-sdk.js +66 -54
  172. package/lib/budgeteer-measure-1e85a5b9.js.map +0 -1
  173. package/lib/component-dimensioning-11e334e6.nomodule.js.map +0 -1
  174. package/lib/component-dimensioning-8b90144f.js.map +0 -1
  175. package/lib/component-raycast-helper-917c5fce.nomodule.js.map +0 -1
  176. package/lib/component-raycast-helper-d34cf336.js.map +0 -1
  177. package/lib/configurator-74c366d0.nomodule.js.map +0 -1
  178. package/lib/configurator-fb2e05ef.js.map +0 -1
  179. package/lib/configurator-main-082f03f0.js +0 -2
  180. package/lib/configurator-main-082f03f0.js.map +0 -1
  181. package/lib/default-light-setting-43be6138.js.map +0 -1
  182. package/lib/default-light-setting-e2fe40ee.nomodule.js.map +0 -1
  183. package/lib/dimensioning-helper-5d68f7b8.nomodule.js.map +0 -1
  184. package/lib/glb-viewer-main-e2508ced.js +0 -2
  185. package/lib/glb-viewer-main-e2508ced.js.map +0 -1
  186. package/lib/legacy/component-dimensioning-9aeb85f3.legacy.js.map +0 -1
  187. package/lib/legacy/component-raycast-helper-c9e6fa8a.legacy.js.map +0 -1
  188. package/lib/legacy/configurator-0dc9d32c.legacy.js.map +0 -1
  189. package/lib/legacy/default-light-setting-bb797007.legacy.js.map +0 -1
  190. package/lib/legacy/dimensioning-helper-9d5a7b3c.legacy.js.map +0 -1
  191. package/lib/legacy/main-thread-to-worker-f535fe2c.legacy.js.map +0 -1
  192. package/lib/legacy/material-viewer-a96582f6.legacy.js.map +0 -1
  193. package/lib/legacy/planner-3334d9c4.legacy.js +0 -2
  194. package/lib/legacy/roomle-dependency-injection-aa414f84.legacy.js +0 -16
  195. package/lib/legacy/script-loader-37d724e7.legacy.js.map +0 -1
  196. package/lib/legacy/static/DepthShadowGenerator-4c4b06f0801c4034.js +0 -262
  197. package/lib/legacy/static/Tween-d024b02fe34f25ab.js +0 -913
  198. package/lib/legacy/static/camera-f4cef679615485dc.json +0 -39
  199. package/lib/legacy/static/dat.gui.min-b5cbb61e5c62f0bf.js +0 -13
  200. package/lib/legacy/static/rubik_regular-75bd7bb699e9e39d.json +0 -1
  201. package/lib/legacy/static/rubik_regular_sub-eb3f3b61078695cc.json +0 -1
  202. package/lib/legacy/tools-core-f3b4d22c.legacy.js.map +0 -1
  203. package/lib/main-thread-to-worker-31ec8d3a.nomodule.js.map +0 -1
  204. package/lib/main-thread-to-worker-e9986fa8.js.map +0 -1
  205. package/lib/material-viewer-2db93afe.nomodule.js.map +0 -1
  206. package/lib/material-viewer-e7514f95.js.map +0 -1
  207. package/lib/material-viewer-main-50c85f10.js +0 -2
  208. package/lib/material-viewer-main-50c85f10.js.map +0 -1
  209. package/lib/planner-2fb083b9.nomodule.js +0 -2
  210. package/lib/planner-b9697b33.js +0 -2
  211. package/lib/planner-main-ac348208.js +0 -2
  212. package/lib/planner-main-ac348208.js.map +0 -1
  213. package/lib/roomle-dependency-injection-244ed68c.js +0 -16
  214. package/lib/roomle-dependency-injection-4c51790a.nomodule.js +0 -16
  215. package/lib/roomle-sdk-9cc773d7.js.map +0 -1
  216. package/lib/script-loader-584a0480.js.map +0 -1
  217. package/lib/script-loader-ff5cfb68.nomodule.js.map +0 -1
  218. package/lib/static/DepthShadowGenerator-4c4b06f0801c4034.js.map +0 -1
  219. package/lib/static/Tween-d024b02fe34f25ab.js.map +0 -1
  220. package/lib/static/camera-f4cef679615485dc.json +0 -39
  221. package/lib/static/dat.gui.min-b5cbb61e5c62f0bf.js.map +0 -1
  222. package/lib/static/rubik_regular-75bd7bb699e9e39d.json +0 -1
  223. package/lib/static/rubik_regular_sub-eb3f3b61078695cc.json +0 -1
  224. package/lib/tools-core-4f0c9377.js.map +0 -1
  225. package/lib/tools-core-f609446a.nomodule.js.map +0 -1
@@ -0,0 +1,266 @@
1
+ THREE.DepthShadowGenerator = {
2
+ clamp01: function (num) {
3
+ return num <= 0 ? 0 : num >= 1 ? 1 : num;
4
+ },
5
+
6
+ idealPowerOfTwoSize: function (num) {
7
+ // 2,4,8,16,32,64,128,256,512,1024
8
+ if (num > 800) {
9
+ return 1024;
10
+ } else if (num > 400) {
11
+ return 512;
12
+ } else if (num > 200) {
13
+ return 256;
14
+ } else if (num > 100) {
15
+ return 128;
16
+ } else if (num > 50) {
17
+ return 64;
18
+ } else if (num > 25) {
19
+ return 32;
20
+ } else {
21
+ return 16;
22
+ }
23
+ },
24
+
25
+ blurTexture: function (
26
+ data,
27
+ textureFormat,
28
+ shadowRenderRes,
29
+ blurRadiusRelative
30
+ ) {
31
+ var pixelSize = textureFormat === THREE.RGBFormat ? 3 : 4;
32
+
33
+ var shadowRes = blurRadiusRelative
34
+ .clone()
35
+ .multiplyScalar(2)
36
+ .addScalar(1)
37
+ .multiply(shadowRenderRes)
38
+ .multiply(blurRadiusRelative)
39
+ .multiplyScalar(2);
40
+ shadowRes.x = this.idealPowerOfTwoSize(shadowRes.x);
41
+ shadowRes.y = this.idealPowerOfTwoSize(shadowRes.y);
42
+
43
+ var shadowDataLength = shadowRes.x * shadowRes.y;
44
+ var shadowData = new Uint8Array(shadowDataLength);
45
+
46
+ for (var sx = 0; sx < shadowRes.x; sx++) {
47
+ var x = sx / (shadowRes.x - 1);
48
+
49
+ // xr is negative and above 1.0 when outside of objecgt bounding-box
50
+ var xr = (x - 0.5) * (1 + 2 * blurRadiusRelative.x) + 0.5;
51
+
52
+ var srcPosXmin = Math.round(
53
+ (xr - blurRadiusRelative.x) * shadowRenderRes.x
54
+ );
55
+ var srcPosXmax = Math.round(
56
+ (xr + blurRadiusRelative.x) * shadowRenderRes.x
57
+ );
58
+
59
+ for (var sy = 0; sy < shadowRes.y; sy++) {
60
+ var i = sy * shadowRes.x;
61
+
62
+ var y = sy / (shadowRes.y - 1);
63
+
64
+ // xr is negative and above 1.0 when outside of objecgt bounding-box
65
+ var yr = (y - 0.5) * (1 + 2 * blurRadiusRelative.y) + 0.5;
66
+
67
+ var srcPosYmin = Math.round(
68
+ (yr - blurRadiusRelative.y) * shadowRenderRes.y
69
+ );
70
+ var srcPosYmax = Math.round(
71
+ (yr + blurRadiusRelative.y) * shadowRenderRes.y
72
+ );
73
+
74
+ var value = 0;
75
+ var count = 0;
76
+
77
+ var xHalfRange = (srcPosXmax - srcPosXmin) / 2.0;
78
+ if (xHalfRange == 0) {
79
+ xHalfRange = 1;
80
+ }
81
+ var xCenter = (srcPosXmax + srcPosXmin) / 2.0;
82
+
83
+ var yHalfRange = (srcPosYmax - srcPosYmin) / 2.0;
84
+ if (yHalfRange == 0) {
85
+ yHalfRange = 1;
86
+ }
87
+ var yCenter = (srcPosYmax + srcPosYmin) / 2.0;
88
+
89
+ for (var dx = srcPosXmin; dx <= srcPosXmax; dx++) {
90
+ var xWeight = Math.abs(dx - xCenter) / xHalfRange;
91
+
92
+ for (var dy = srcPosYmin; dy <= srcPosYmax; dy++) {
93
+ var yWeight = Math.abs(dy - yCenter) / yHalfRange;
94
+
95
+ // weight = normalized distance to center (radius) inverted
96
+ var weight = 1 - Math.sqrt(xWeight * xWeight + yWeight * yWeight);
97
+
98
+ if (weight < 0.01) {
99
+ continue;
100
+ }
101
+
102
+ var newValue = 0;
103
+ if (
104
+ dx < 0 ||
105
+ dx >= shadowRenderRes.x ||
106
+ dy < 0 ||
107
+ dy >= shadowRenderRes.y
108
+ ) {
109
+ newValue = 1;
110
+ } else {
111
+ var srcPos = dx + dy * shadowRenderRes.x;
112
+ // sample red color value from source texture (is monochrome anyways)
113
+ newValue = data[srcPos * pixelSize] / 255.0;
114
+ }
115
+ value += 1 - (1 - newValue) * weight;
116
+ count++;
117
+ }
118
+ }
119
+
120
+ value = value / count;
121
+ value = Math.pow(value, 0.5);
122
+ value = 255 * value;
123
+
124
+ // sample original value for visual debug purpose
125
+ /*
126
+ var original = 255;
127
+ if(xr>=0 && xr<=1 && yr>=0 && yr<=1 ) {
128
+ var srcPos = Math.floor( xr * shadowRenderRes.x ) + Math.floor( yr * shadowRenderRes.y ) * shadowRenderRes.x;
129
+ original = data[srcPos*pixelSize];
130
+ }
131
+ //*/
132
+ var destIndex = i + sx;
133
+ shadowData[destIndex] = value;
134
+ }
135
+ }
136
+
137
+ rampTex = new THREE.DataTexture(
138
+ shadowData,
139
+ shadowRes.x,
140
+ shadowRes.y,
141
+ THREE.LuminanceFormat,
142
+ THREE.UnsignedByteType,
143
+ THREE.UVMapping,
144
+ THREE.ClampToEdgeWrapping,
145
+ THREE.ClampToEdgeWrapping,
146
+ THREE.LinearFilter,
147
+ THREE.LinearMipMapLinearFilter
148
+ );
149
+
150
+ return rampTex;
151
+ },
152
+
153
+ createShadowPlane: function (renderer, scene, objectSize3d, layers) {
154
+ var renderppm = 200; // pixel per meter render resolution
155
+ var blurRadius = 0.1; // meter
156
+ // blurRadius = 0;
157
+ var ppm = renderppm * 0.5; // pixel per meter final resolution
158
+
159
+ var objectSize = new THREE.Vector2(objectSize3d.x, objectSize3d.z);
160
+
161
+ var shadowRenderRes = objectSize.clone().multiplyScalar(renderppm);
162
+
163
+ shadowRenderRes.x = this.idealPowerOfTwoSize(shadowRenderRes.x);
164
+ shadowRenderRes.y = this.idealPowerOfTwoSize(shadowRenderRes.y);
165
+
166
+ var textureFormat = THREE.RGBAFormat;
167
+
168
+ // Create the texture that will store our result
169
+ var bufferTexture = new THREE.WebGLRenderTarget(
170
+ shadowRenderRes.x,
171
+ shadowRenderRes.y,
172
+ {
173
+ format: textureFormat,
174
+ minFilter: THREE.LinearFilter,
175
+ magFilter: THREE.NearestFilter,
176
+ }
177
+ );
178
+
179
+ var depthMaterial = new THREE.MeshDepthMaterial();
180
+ // var depthMaterial = new THREE.MeshBasicMaterial();
181
+ // depthMaterial.color = new THREE.Color(0,1,0);
182
+
183
+ var shadowCamera = new THREE.OrthographicCamera(
184
+ objectSize.x / -2,
185
+ objectSize.x / 2,
186
+ objectSize.y / -2,
187
+ objectSize.y / 2,
188
+ 0.01,
189
+ 1
190
+ );
191
+
192
+ shadowCamera.layers.set(layers);
193
+ shadowCamera.position.y = -0.011;
194
+ shadowCamera.rotation.x = Math.PI / 2;
195
+
196
+ var planeMaterial = new THREE.MeshBasicMaterial({
197
+ map: bufferTexture,
198
+ transparent: true,
199
+ blending: THREE.MultiplyBlending,
200
+ });
201
+
202
+ var planeSize = objectSize.clone().addScalar(blurRadius * 2);
203
+
204
+ var planeGeometry = new THREE.PlaneGeometry(planeSize.x, planeSize.y, 1);
205
+ var shadowPlaneObject = new THREE.Mesh(planeGeometry, planeMaterial);
206
+ shadowPlaneObject.rotation.x = -Math.PI / 2;
207
+ shadowPlaneObject.name = 'ShadowPlane';
208
+
209
+ renderer.setClearColor(new THREE.Color(1, 1, 1), 1);
210
+
211
+ scene.overrideMaterial = depthMaterial;
212
+
213
+ renderer.clearTarget(bufferTexture, true, true, true);
214
+
215
+ renderer.render(scene, shadowCamera, bufferTexture);
216
+
217
+ var dataLength = shadowRenderRes.x * shadowRenderRes.y;
218
+ var pixelSize = textureFormat === THREE.RGBFormat ? 3 : 4;
219
+ var data = new Uint8Array(dataLength * pixelSize);
220
+ renderer.readRenderTargetPixels(
221
+ bufferTexture,
222
+ 0,
223
+ 0,
224
+ shadowRenderRes.x,
225
+ shadowRenderRes.y,
226
+ data
227
+ );
228
+
229
+ var blurRadiusRelative = new THREE.Vector2(
230
+ blurRadius / objectSize.x,
231
+ blurRadius / objectSize.y
232
+ );
233
+
234
+ var rampTex = this.blurTexture(
235
+ data,
236
+ textureFormat,
237
+ shadowRenderRes,
238
+ blurRadiusRelative
239
+ );
240
+
241
+ // show original render target texture
242
+ /*
243
+ rampTex = new THREE.DataTexture(
244
+ data,
245
+ shadowRenderRes.x,
246
+ shadowRenderRes.y,
247
+ textureFormat,
248
+ THREE.UnsignedByteType,
249
+ THREE.UVMapping,
250
+ THREE.ClampToEdgeWrapping,
251
+ THREE.ClampToEdgeWrapping,
252
+ THREE.LinearFilter,
253
+ THREE.LinearMipMapLinearFilter
254
+ );
255
+ //*/
256
+
257
+ rampTex.generateMipmaps = true;
258
+ rampTex.needsUpdate = true;
259
+
260
+ planeMaterial.map = rampTex;
261
+
262
+ scene.overrideMaterial = null;
263
+
264
+ return shadowPlaneObject;
265
+ },
266
+ };