three-stdlib 2.35.3 → 2.35.4

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 (514) hide show
  1. package/_polyfill/CapsuleGeometry.cjs +20 -17
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +20 -17
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +722 -715
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +723 -716
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +2 -1
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +3 -2
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +2 -1
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +3 -2
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +2 -1
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +3 -2
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +133 -122
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +23 -21
  68. package/exporters/DRACOExporter.js +133 -122
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +170 -167
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +170 -167
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +524 -515
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +524 -515
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +2 -1
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +3 -2
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +441 -435
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +441 -435
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +2 -1
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +3 -2
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +377 -374
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +377 -374
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +5 -4
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +6 -5
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +46 -43
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +46 -43
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1694 -1688
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1694 -1688
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +53 -50
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +53 -50
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +271 -268
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +272 -269
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +2 -1
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +3 -2
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +209 -206
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +209 -206
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +154 -146
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +154 -146
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +183 -180
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +183 -180
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +164 -161
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +164 -161
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +35 -32
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +100 -6
  258. package/objects/Sky.js +35 -32
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +2 -1
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +3 -2
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +143 -140
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +143 -140
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +267 -264
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +267 -264
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +253 -250
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +253 -250
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +379 -376
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +379 -376
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +205 -202
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +205 -202
  284. package/postprocessing/UnrealBloomPass.js.map +1 -1
  285. package/renderers/CSS2DRenderer.cjs +5 -5
  286. package/renderers/CSS2DRenderer.cjs.map +1 -1
  287. package/renderers/CSS2DRenderer.js +5 -5
  288. package/renderers/CSS2DRenderer.js.map +1 -1
  289. package/renderers/CSS3DRenderer.cjs +5 -5
  290. package/renderers/CSS3DRenderer.cjs.map +1 -1
  291. package/renderers/CSS3DRenderer.js +6 -6
  292. package/renderers/CSS3DRenderer.js.map +1 -1
  293. package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +71 -46
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +41 -22
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +41 -22
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +20 -6
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +20 -6
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +46 -26
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +46 -26
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +33 -19
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +33 -19
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +117 -90
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +117 -90
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +333 -232
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +333 -232
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +38 -22
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +38 -22
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +35 -21
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +35 -21
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +34 -19
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +34 -19
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +43 -24
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +43 -24
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +30 -16
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +30 -16
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +38 -21
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +38 -21
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +98 -69
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +98 -69
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +70 -59
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +70 -59
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +49 -28
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +49 -28
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1098 -1089
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1098 -1089
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +57 -29
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +57 -29
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +70 -43
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +70 -43
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +74 -53
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +74 -53
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +55 -35
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +55 -35
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +33 -19
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +33 -19
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +193 -116
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +193 -116
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +270 -192
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +270 -192
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +43 -27
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +43 -27
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +47 -31
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +47 -31
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +37 -24
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +37 -24
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +43 -24
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +43 -24
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +34 -17
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +34 -17
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +39 -26
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +39 -26
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +36 -21
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +36 -21
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +147 -97
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +147 -97
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +31 -18
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +31 -18
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +33 -20
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +33 -20
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +154 -117
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +154 -117
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +358 -270
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +358 -270
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +236 -142
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +236 -142
  440. package/shaders/SSAOShader.js.map +1 -1
  441. package/shaders/SSRShader.cjs +4 -4
  442. package/shaders/SSRShader.cjs.map +1 -1
  443. package/shaders/SSRShader.js +4 -4
  444. package/shaders/SSRShader.js.map +1 -1
  445. package/shaders/SepiaShader.cjs +36 -20
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +36 -20
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +64 -37
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +64 -37
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +29 -16
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +29 -16
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +55 -35
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +55 -35
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +275 -165
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +275 -165
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +50 -27
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +50 -27
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +32 -17
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +32 -17
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +43 -27
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +43 -27
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +43 -27
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +43 -27
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +264 -213
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +264 -213
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +63 -35
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +63 -35
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +2 -1
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +3 -2
  492. package/utils/GeometryCompressionUtils.js.map +1 -1
  493. package/utils/RoughnessMipmapper.cjs +3 -3
  494. package/utils/RoughnessMipmapper.cjs.map +1 -1
  495. package/utils/RoughnessMipmapper.js +4 -4
  496. package/utils/RoughnessMipmapper.js.map +1 -1
  497. package/webxr/ARButton.cjs +109 -106
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +4 -3
  500. package/webxr/ARButton.js +109 -106
  501. package/webxr/ARButton.js.map +1 -1
  502. package/webxr/OculusHandPointerModel.cjs +2 -2
  503. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  504. package/webxr/OculusHandPointerModel.js +2 -2
  505. package/webxr/OculusHandPointerModel.js.map +1 -1
  506. package/webxr/VRButton.cjs +98 -95
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +6 -5
  509. package/webxr/VRButton.js +98 -95
  510. package/webxr/VRButton.js.map +1 -1
  511. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  512. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  513. package/webxr/XRHandPrimitiveModel.js +3 -3
  514. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -17,118 +17,168 @@ const ParallaxShader = {
17
17
  parallaxMinLayers: { value: null },
18
18
  parallaxMaxLayers: { value: null }
19
19
  },
20
- vertexShader: [
21
- "varying vec2 vUv;",
22
- "varying vec3 vViewPosition;",
23
- "varying vec3 vNormal;",
24
- "void main() {",
25
- " vUv = uv;",
26
- " vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
27
- " vViewPosition = -mvPosition.xyz;",
28
- " vNormal = normalize( normalMatrix * normal );",
29
- " gl_Position = projectionMatrix * mvPosition;",
30
- "}"
31
- ].join("\n"),
32
- fragmentShader: [
33
- "uniform sampler2D bumpMap;",
34
- "uniform sampler2D map;",
35
- "uniform float parallaxScale;",
36
- "uniform float parallaxMinLayers;",
37
- "uniform float parallaxMaxLayers;",
38
- "varying vec2 vUv;",
39
- "varying vec3 vViewPosition;",
40
- "varying vec3 vNormal;",
41
- "#ifdef USE_BASIC_PARALLAX",
42
- " vec2 parallaxMap( in vec3 V ) {",
43
- " float initialHeight = texture2D( bumpMap, vUv ).r;",
20
+ vertexShader: (
21
+ /* glsl */
22
+ `
23
+ varying vec2 vUv;
24
+ varying vec3 vViewPosition;
25
+ varying vec3 vNormal;
26
+
27
+ void main() {
28
+
29
+ vUv = uv;
30
+ vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
31
+ vViewPosition = -mvPosition.xyz;
32
+ vNormal = normalize( normalMatrix * normal );
33
+ gl_Position = projectionMatrix * mvPosition;
34
+
35
+ }
36
+ `
37
+ ),
38
+ fragmentShader: (
39
+ /* glsl */
40
+ `
41
+ uniform sampler2D bumpMap;
42
+ uniform sampler2D map;
43
+
44
+ uniform float parallaxScale;
45
+ uniform float parallaxMinLayers;
46
+ uniform float parallaxMaxLayers;
47
+
48
+ varying vec2 vUv;
49
+ varying vec3 vViewPosition;
50
+ varying vec3 vNormal;
51
+
52
+ #ifdef USE_BASIC_PARALLAX
53
+
54
+ vec2 parallaxMap( in vec3 V ) {
55
+
56
+ float initialHeight = texture2D( bumpMap, vUv ).r;
57
+
44
58
  // No Offset Limitting: messy, floating output at grazing angles.
45
59
  //"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;",
60
+
46
61
  // Offset Limiting
47
- " vec2 texCoordOffset = parallaxScale * V.xy * initialHeight;",
48
- " return vUv - texCoordOffset;",
49
- " }",
50
- "#else",
51
- " vec2 parallaxMap( in vec3 V ) {",
62
+ vec2 texCoordOffset = parallaxScale * V.xy * initialHeight;
63
+ return vUv - texCoordOffset;
64
+
65
+ }
66
+
67
+ #else
68
+
69
+ vec2 parallaxMap( in vec3 V ) {
70
+
52
71
  // Determine number of layers from angle between V and N
53
- " float numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );",
54
- " float layerHeight = 1.0 / numLayers;",
55
- " float currentLayerHeight = 0.0;",
72
+ float numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );
73
+
74
+ float layerHeight = 1.0 / numLayers;
75
+ float currentLayerHeight = 0.0;
56
76
  // Shift of texture coordinates for each iteration
57
- " vec2 dtex = parallaxScale * V.xy / V.z / numLayers;",
58
- " vec2 currentTextureCoords = vUv;",
59
- " float heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
77
+ vec2 dtex = parallaxScale * V.xy / V.z / numLayers;
78
+
79
+ vec2 currentTextureCoords = vUv;
80
+
81
+ float heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
82
+
60
83
  // while ( heightFromTexture > currentLayerHeight )
61
84
  // Infinite loops are not well supported. Do a "large" finite
62
85
  // loop, but not too large, as it slows down some compilers.
63
- " for ( int i = 0; i < 30; i += 1 ) {",
64
- " if ( heightFromTexture <= currentLayerHeight ) {",
65
- " break;",
66
- " }",
67
- " currentLayerHeight += layerHeight;",
86
+ for ( int i = 0; i < 30; i += 1 ) {
87
+ if ( heightFromTexture <= currentLayerHeight ) {
88
+ break;
89
+ }
90
+ currentLayerHeight += layerHeight;
68
91
  // Shift texture coordinates along vector V
69
- " currentTextureCoords -= dtex;",
70
- " heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
71
- " }",
72
- " #ifdef USE_STEEP_PARALLAX",
73
- " return currentTextureCoords;",
74
- " #elif defined( USE_RELIEF_PARALLAX )",
75
- " vec2 deltaTexCoord = dtex / 2.0;",
76
- " float deltaHeight = layerHeight / 2.0;",
92
+ currentTextureCoords -= dtex;
93
+ heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
94
+ }
95
+
96
+ #ifdef USE_STEEP_PARALLAX
97
+
98
+ return currentTextureCoords;
99
+
100
+ #elif defined( USE_RELIEF_PARALLAX )
101
+
102
+ vec2 deltaTexCoord = dtex / 2.0;
103
+ float deltaHeight = layerHeight / 2.0;
104
+
77
105
  // Return to the mid point of previous layer
78
- " currentTextureCoords += deltaTexCoord;",
79
- " currentLayerHeight -= deltaHeight;",
106
+ currentTextureCoords += deltaTexCoord;
107
+ currentLayerHeight -= deltaHeight;
108
+
80
109
  // Binary search to increase precision of Steep Parallax Mapping
81
- " const int numSearches = 5;",
82
- " for ( int i = 0; i < numSearches; i += 1 ) {",
83
- " deltaTexCoord /= 2.0;",
84
- " deltaHeight /= 2.0;",
85
- " heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
110
+ const int numSearches = 5;
111
+ for ( int i = 0; i < numSearches; i += 1 ) {
112
+
113
+ deltaTexCoord /= 2.0;
114
+ deltaHeight /= 2.0;
115
+ heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
86
116
  // Shift along or against vector V
87
- " if( heightFromTexture > currentLayerHeight ) {",
88
- // Below the surface
89
- " currentTextureCoords -= deltaTexCoord;",
90
- " currentLayerHeight += deltaHeight;",
91
- " } else {",
92
- // above the surface
93
- " currentTextureCoords += deltaTexCoord;",
94
- " currentLayerHeight -= deltaHeight;",
95
- " }",
96
- " }",
97
- " return currentTextureCoords;",
98
- " #elif defined( USE_OCLUSION_PARALLAX )",
99
- " vec2 prevTCoords = currentTextureCoords + dtex;",
117
+ if( heightFromTexture > currentLayerHeight ) { // Below the surface
118
+
119
+ currentTextureCoords -= deltaTexCoord;
120
+ currentLayerHeight += deltaHeight;
121
+
122
+ } else { // above the surface
123
+
124
+ currentTextureCoords += deltaTexCoord;
125
+ currentLayerHeight -= deltaHeight;
126
+
127
+ }
128
+
129
+ }
130
+ return currentTextureCoords;
131
+
132
+ #elif defined( USE_OCLUSION_PARALLAX )
133
+
134
+ vec2 prevTCoords = currentTextureCoords + dtex;
135
+
100
136
  // Heights for linear interpolation
101
- " float nextH = heightFromTexture - currentLayerHeight;",
102
- " float prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;",
137
+ float nextH = heightFromTexture - currentLayerHeight;
138
+ float prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;
139
+
103
140
  // Proportions for linear interpolation
104
- " float weight = nextH / ( nextH - prevH );",
141
+ float weight = nextH / ( nextH - prevH );
142
+
105
143
  // Interpolation of texture coordinates
106
- " return prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );",
107
- " #else",
108
- // NO_PARALLAX
109
- " return vUv;",
110
- " #endif",
111
- " }",
112
- "#endif",
113
- "vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {",
114
- " vec2 texDx = dFdx( vUv );",
115
- " vec2 texDy = dFdy( vUv );",
116
- " vec3 vSigmaX = dFdx( surfPosition );",
117
- " vec3 vSigmaY = dFdy( surfPosition );",
118
- " vec3 vR1 = cross( vSigmaY, surfNormal );",
119
- " vec3 vR2 = cross( surfNormal, vSigmaX );",
120
- " float fDet = dot( vSigmaX, vR1 );",
121
- " vec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );",
122
- " vec3 vProjVtex;",
123
- " vProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;",
124
- " vProjVtex.z = dot( surfNormal, viewPosition );",
125
- " return parallaxMap( vProjVtex );",
126
- "}",
127
- "void main() {",
128
- " vec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );",
129
- " gl_FragColor = texture2D( map, mapUv );",
130
- "}"
131
- ].join("\n")
144
+ return prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );
145
+
146
+ #else // NO_PARALLAX
147
+
148
+ return vUv;
149
+
150
+ #endif
151
+
152
+ }
153
+ #endif
154
+
155
+ vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {
156
+
157
+ vec2 texDx = dFdx( vUv );
158
+ vec2 texDy = dFdy( vUv );
159
+
160
+ vec3 vSigmaX = dFdx( surfPosition );
161
+ vec3 vSigmaY = dFdy( surfPosition );
162
+ vec3 vR1 = cross( vSigmaY, surfNormal );
163
+ vec3 vR2 = cross( surfNormal, vSigmaX );
164
+ float fDet = dot( vSigmaX, vR1 );
165
+
166
+ vec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );
167
+ vec3 vProjVtex;
168
+ vProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;
169
+ vProjVtex.z = dot( surfNormal, viewPosition );
170
+
171
+ return parallaxMap( vProjVtex );
172
+ }
173
+
174
+ void main() {
175
+
176
+ vec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );
177
+ gl_FragColor = texture2D( map, mapUv );
178
+
179
+ }
180
+ `
181
+ )
132
182
  };
133
183
  exports.ParallaxShader = ParallaxShader;
134
184
  //# sourceMappingURL=ParallaxShader.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxShader.cjs","sources":["../../src/shaders/ParallaxShader.ts"],"sourcesContent":["// Parallax Occlusion shaders from\n// http://sunandblackcat.com/tipFullView.php?topicid=28\n// No tangent-space transforms logic based on\n// http://mmikkelsen3d.blogspot.sk/2012/02/parallaxpoc-mapping-and-no-tangent.html\n\nexport const ParallaxShader = {\n // Ordered from fastest to best quality.\n modes: {\n none: 'NO_PARALLAX',\n basic: 'USE_BASIC_PARALLAX',\n steep: 'USE_STEEP_PARALLAX',\n occlusion: 'USE_OCLUSION_PARALLAX', // a.k.a. POM\n relief: 'USE_RELIEF_PARALLAX',\n },\n\n uniforms: {\n bumpMap: { value: null },\n map: { value: null },\n parallaxScale: { value: null },\n parallaxMinLayers: { value: null },\n parallaxMaxLayers: { value: null },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n 'varying vec3 vViewPosition;',\n 'varying vec3 vNormal;',\n\n 'void main() {',\n\n '\tvUv = uv;',\n '\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );',\n '\tvViewPosition = -mvPosition.xyz;',\n '\tvNormal = normalize( normalMatrix * normal );',\n '\tgl_Position = projectionMatrix * mvPosition;',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D bumpMap;',\n 'uniform sampler2D map;',\n\n 'uniform float parallaxScale;',\n 'uniform float parallaxMinLayers;',\n 'uniform float parallaxMaxLayers;',\n\n 'varying vec2 vUv;',\n 'varying vec3 vViewPosition;',\n 'varying vec3 vNormal;',\n\n '#ifdef USE_BASIC_PARALLAX',\n\n '\tvec2 parallaxMap( in vec3 V ) {',\n\n '\t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;',\n\n // No Offset Limitting: messy, floating output at grazing angles.\n //\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n\n // Offset Limiting\n '\t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;',\n '\t\treturn vUv - texCoordOffset;',\n\n '\t}',\n\n '#else',\n\n '\tvec2 parallaxMap( in vec3 V ) {',\n\n // Determine number of layers from angle between V and N\n '\t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );',\n\n '\t\tfloat layerHeight = 1.0 / numLayers;',\n '\t\tfloat currentLayerHeight = 0.0;',\n // Shift of texture coordinates for each iteration\n '\t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;',\n\n '\t\tvec2 currentTextureCoords = vUv;',\n\n '\t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n\n // while ( heightFromTexture > currentLayerHeight )\n // Infinite loops are not well supported. Do a \"large\" finite\n // loop, but not too large, as it slows down some compilers.\n '\t\tfor ( int i = 0; i < 30; i += 1 ) {',\n '\t\t\tif ( heightFromTexture <= currentLayerHeight ) {',\n '\t\t\t\tbreak;',\n '\t\t\t}',\n '\t\t\tcurrentLayerHeight += layerHeight;',\n // Shift texture coordinates along vector V\n '\t\t\tcurrentTextureCoords -= dtex;',\n '\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n '\t\t}',\n\n '\t\t#ifdef USE_STEEP_PARALLAX',\n\n '\t\t\treturn currentTextureCoords;',\n\n '\t\t#elif defined( USE_RELIEF_PARALLAX )',\n\n '\t\t\tvec2 deltaTexCoord = dtex / 2.0;',\n '\t\t\tfloat deltaHeight = layerHeight / 2.0;',\n\n // Return to the mid point of previous layer\n '\t\t\tcurrentTextureCoords += deltaTexCoord;',\n '\t\t\tcurrentLayerHeight -= deltaHeight;',\n\n // Binary search to increase precision of Steep Parallax Mapping\n '\t\t\tconst int numSearches = 5;',\n '\t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {',\n\n '\t\t\t\tdeltaTexCoord /= 2.0;',\n '\t\t\t\tdeltaHeight /= 2.0;',\n '\t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n // Shift along or against vector V\n '\t\t\t\tif( heightFromTexture > currentLayerHeight ) {', // Below the surface\n\n '\t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;',\n '\t\t\t\t\tcurrentLayerHeight += deltaHeight;',\n\n '\t\t\t\t} else {', // above the surface\n\n '\t\t\t\t\tcurrentTextureCoords += deltaTexCoord;',\n '\t\t\t\t\tcurrentLayerHeight -= deltaHeight;',\n\n '\t\t\t\t}',\n\n '\t\t\t}',\n '\t\t\treturn currentTextureCoords;',\n\n '\t\t#elif defined( USE_OCLUSION_PARALLAX )',\n\n '\t\t\tvec2 prevTCoords = currentTextureCoords + dtex;',\n\n // Heights for linear interpolation\n '\t\t\tfloat nextH = heightFromTexture - currentLayerHeight;',\n '\t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;',\n\n // Proportions for linear interpolation\n '\t\t\tfloat weight = nextH / ( nextH - prevH );',\n\n // Interpolation of texture coordinates\n '\t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );',\n\n '\t\t#else', // NO_PARALLAX\n\n '\t\t\treturn vUv;',\n\n '\t\t#endif',\n\n '\t}',\n '#endif',\n\n 'vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {',\n\n '\tvec2 texDx = dFdx( vUv );',\n '\tvec2 texDy = dFdy( vUv );',\n\n '\tvec3 vSigmaX = dFdx( surfPosition );',\n '\tvec3 vSigmaY = dFdy( surfPosition );',\n '\tvec3 vR1 = cross( vSigmaY, surfNormal );',\n '\tvec3 vR2 = cross( surfNormal, vSigmaX );',\n '\tfloat fDet = dot( vSigmaX, vR1 );',\n\n '\tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );',\n '\tvec3 vProjVtex;',\n '\tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;',\n '\tvProjVtex.z = dot( surfNormal, viewPosition );',\n\n '\treturn parallaxMap( vProjVtex );',\n '}',\n\n 'void main() {',\n\n '\tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );',\n '\tgl_FragColor = texture2D( map, mapUv );',\n\n '}',\n ].join('\\n'),\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA;AAAA,EAE5B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EAEA,UAAU;AAAA,IACR,SAAS,EAAE,OAAO,KAAK;AAAA,IACvB,KAAK,EAAE,OAAO,KAAK;AAAA,IACnB,eAAe,EAAE,OAAO,KAAK;AAAA,IAC7B,mBAAmB,EAAE,OAAO,KAAK;AAAA,IACjC,mBAAmB,EAAE,OAAO,KAAK;AAAA,EACnC;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;;"}
1
+ {"version":3,"file":"ParallaxShader.cjs","sources":["../../src/shaders/ParallaxShader.ts"],"sourcesContent":["// Parallax Occlusion shaders from\n// http://sunandblackcat.com/tipFullView.php?topicid=28\n// No tangent-space transforms logic based on\n// http://mmikkelsen3d.blogspot.sk/2012/02/parallaxpoc-mapping-and-no-tangent.html\n\nexport const ParallaxShader = {\n // Ordered from fastest to best quality.\n modes: {\n none: 'NO_PARALLAX',\n basic: 'USE_BASIC_PARALLAX',\n steep: 'USE_STEEP_PARALLAX',\n occlusion: 'USE_OCLUSION_PARALLAX', // a.k.a. POM\n relief: 'USE_RELIEF_PARALLAX',\n },\n\n uniforms: {\n bumpMap: { value: null },\n map: { value: null },\n parallaxScale: { value: null },\n parallaxMinLayers: { value: null },\n parallaxMaxLayers: { value: null },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n varying vec3 vViewPosition;\n varying vec3 vNormal;\n\n void main() {\n\n \tvUv = uv;\n \tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n \tvViewPosition = -mvPosition.xyz;\n \tvNormal = normalize( normalMatrix * normal );\n \tgl_Position = projectionMatrix * mvPosition;\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform sampler2D bumpMap;\n uniform sampler2D map;\n\n uniform float parallaxScale;\n uniform float parallaxMinLayers;\n uniform float parallaxMaxLayers;\n\n varying vec2 vUv;\n varying vec3 vViewPosition;\n varying vec3 vNormal;\n\n #ifdef USE_BASIC_PARALLAX\n\n \tvec2 parallaxMap( in vec3 V ) {\n\n \t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;\n\n // No Offset Limitting: messy, floating output at grazing angles.\n //\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n\n // Offset Limiting\n \t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;\n \t\treturn vUv - texCoordOffset;\n\n \t}\n\n #else\n\n \tvec2 parallaxMap( in vec3 V ) {\n\n // Determine number of layers from angle between V and N\n \t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );\n\n \t\tfloat layerHeight = 1.0 / numLayers;\n \t\tfloat currentLayerHeight = 0.0;\n // Shift of texture coordinates for each iteration\n \t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;\n\n \t\tvec2 currentTextureCoords = vUv;\n\n \t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n\n // while ( heightFromTexture > currentLayerHeight )\n // Infinite loops are not well supported. Do a \"large\" finite\n // loop, but not too large, as it slows down some compilers.\n \t\tfor ( int i = 0; i < 30; i += 1 ) {\n \t\t\tif ( heightFromTexture <= currentLayerHeight ) {\n \t\t\t\tbreak;\n \t\t\t}\n \t\t\tcurrentLayerHeight += layerHeight;\n // Shift texture coordinates along vector V\n \t\t\tcurrentTextureCoords -= dtex;\n \t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n \t\t}\n\n \t\t#ifdef USE_STEEP_PARALLAX\n\n \t\t\treturn currentTextureCoords;\n\n \t\t#elif defined( USE_RELIEF_PARALLAX )\n\n \t\t\tvec2 deltaTexCoord = dtex / 2.0;\n \t\t\tfloat deltaHeight = layerHeight / 2.0;\n\n // Return to the mid point of previous layer\n \t\t\tcurrentTextureCoords += deltaTexCoord;\n \t\t\tcurrentLayerHeight -= deltaHeight;\n\n // Binary search to increase precision of Steep Parallax Mapping\n \t\t\tconst int numSearches = 5;\n \t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {\n\n \t\t\t\tdeltaTexCoord /= 2.0;\n \t\t\t\tdeltaHeight /= 2.0;\n \t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n // Shift along or against vector V\n \t\t\t\tif( heightFromTexture > currentLayerHeight ) { // Below the surface\n\n \t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;\n \t\t\t\t\tcurrentLayerHeight += deltaHeight;\n\n \t\t\t\t} else { // above the surface\n\n \t\t\t\t\tcurrentTextureCoords += deltaTexCoord;\n \t\t\t\t\tcurrentLayerHeight -= deltaHeight;\n\n \t\t\t\t}\n\n \t\t\t}\n \t\t\treturn currentTextureCoords;\n\n \t\t#elif defined( USE_OCLUSION_PARALLAX )\n\n \t\t\tvec2 prevTCoords = currentTextureCoords + dtex;\n\n // Heights for linear interpolation\n \t\t\tfloat nextH = heightFromTexture - currentLayerHeight;\n \t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;\n\n // Proportions for linear interpolation\n \t\t\tfloat weight = nextH / ( nextH - prevH );\n\n // Interpolation of texture coordinates\n \t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );\n\n \t\t#else // NO_PARALLAX\n\n \t\t\treturn vUv;\n\n \t\t#endif\n\n \t}\n #endif\n\n vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {\n\n \tvec2 texDx = dFdx( vUv );\n \tvec2 texDy = dFdy( vUv );\n\n \tvec3 vSigmaX = dFdx( surfPosition );\n \tvec3 vSigmaY = dFdy( surfPosition );\n \tvec3 vR1 = cross( vSigmaY, surfNormal );\n \tvec3 vR2 = cross( surfNormal, vSigmaX );\n \tfloat fDet = dot( vSigmaX, vR1 );\n\n \tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );\n \tvec3 vProjVtex;\n \tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;\n \tvProjVtex.z = dot( surfNormal, viewPosition );\n\n \treturn parallaxMap( vProjVtex );\n }\n\n void main() {\n\n \tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );\n \tgl_FragColor = texture2D( map, mapUv );\n\n }\n `,\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA;AAAA,EAE5B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EAEA,UAAU;AAAA,IACR,SAAS,EAAE,OAAO,KAAK;AAAA,IACvB,KAAK,EAAE,OAAO,KAAK;AAAA,IACnB,eAAe,EAAE,OAAO,KAAK;AAAA,IAC7B,mBAAmB,EAAE,OAAO,KAAK;AAAA,IACjC,mBAAmB,EAAE,OAAO,KAAK;AAAA,EACnC;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBzB;AAAA;AAAA,IAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6I7B;;"}
@@ -15,118 +15,168 @@ const ParallaxShader = {
15
15
  parallaxMinLayers: { value: null },
16
16
  parallaxMaxLayers: { value: null }
17
17
  },
18
- vertexShader: [
19
- "varying vec2 vUv;",
20
- "varying vec3 vViewPosition;",
21
- "varying vec3 vNormal;",
22
- "void main() {",
23
- " vUv = uv;",
24
- " vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
25
- " vViewPosition = -mvPosition.xyz;",
26
- " vNormal = normalize( normalMatrix * normal );",
27
- " gl_Position = projectionMatrix * mvPosition;",
28
- "}"
29
- ].join("\n"),
30
- fragmentShader: [
31
- "uniform sampler2D bumpMap;",
32
- "uniform sampler2D map;",
33
- "uniform float parallaxScale;",
34
- "uniform float parallaxMinLayers;",
35
- "uniform float parallaxMaxLayers;",
36
- "varying vec2 vUv;",
37
- "varying vec3 vViewPosition;",
38
- "varying vec3 vNormal;",
39
- "#ifdef USE_BASIC_PARALLAX",
40
- " vec2 parallaxMap( in vec3 V ) {",
41
- " float initialHeight = texture2D( bumpMap, vUv ).r;",
18
+ vertexShader: (
19
+ /* glsl */
20
+ `
21
+ varying vec2 vUv;
22
+ varying vec3 vViewPosition;
23
+ varying vec3 vNormal;
24
+
25
+ void main() {
26
+
27
+ vUv = uv;
28
+ vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
29
+ vViewPosition = -mvPosition.xyz;
30
+ vNormal = normalize( normalMatrix * normal );
31
+ gl_Position = projectionMatrix * mvPosition;
32
+
33
+ }
34
+ `
35
+ ),
36
+ fragmentShader: (
37
+ /* glsl */
38
+ `
39
+ uniform sampler2D bumpMap;
40
+ uniform sampler2D map;
41
+
42
+ uniform float parallaxScale;
43
+ uniform float parallaxMinLayers;
44
+ uniform float parallaxMaxLayers;
45
+
46
+ varying vec2 vUv;
47
+ varying vec3 vViewPosition;
48
+ varying vec3 vNormal;
49
+
50
+ #ifdef USE_BASIC_PARALLAX
51
+
52
+ vec2 parallaxMap( in vec3 V ) {
53
+
54
+ float initialHeight = texture2D( bumpMap, vUv ).r;
55
+
42
56
  // No Offset Limitting: messy, floating output at grazing angles.
43
57
  //"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;",
58
+
44
59
  // Offset Limiting
45
- " vec2 texCoordOffset = parallaxScale * V.xy * initialHeight;",
46
- " return vUv - texCoordOffset;",
47
- " }",
48
- "#else",
49
- " vec2 parallaxMap( in vec3 V ) {",
60
+ vec2 texCoordOffset = parallaxScale * V.xy * initialHeight;
61
+ return vUv - texCoordOffset;
62
+
63
+ }
64
+
65
+ #else
66
+
67
+ vec2 parallaxMap( in vec3 V ) {
68
+
50
69
  // Determine number of layers from angle between V and N
51
- " float numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );",
52
- " float layerHeight = 1.0 / numLayers;",
53
- " float currentLayerHeight = 0.0;",
70
+ float numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );
71
+
72
+ float layerHeight = 1.0 / numLayers;
73
+ float currentLayerHeight = 0.0;
54
74
  // Shift of texture coordinates for each iteration
55
- " vec2 dtex = parallaxScale * V.xy / V.z / numLayers;",
56
- " vec2 currentTextureCoords = vUv;",
57
- " float heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
75
+ vec2 dtex = parallaxScale * V.xy / V.z / numLayers;
76
+
77
+ vec2 currentTextureCoords = vUv;
78
+
79
+ float heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
80
+
58
81
  // while ( heightFromTexture > currentLayerHeight )
59
82
  // Infinite loops are not well supported. Do a "large" finite
60
83
  // loop, but not too large, as it slows down some compilers.
61
- " for ( int i = 0; i < 30; i += 1 ) {",
62
- " if ( heightFromTexture <= currentLayerHeight ) {",
63
- " break;",
64
- " }",
65
- " currentLayerHeight += layerHeight;",
84
+ for ( int i = 0; i < 30; i += 1 ) {
85
+ if ( heightFromTexture <= currentLayerHeight ) {
86
+ break;
87
+ }
88
+ currentLayerHeight += layerHeight;
66
89
  // Shift texture coordinates along vector V
67
- " currentTextureCoords -= dtex;",
68
- " heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
69
- " }",
70
- " #ifdef USE_STEEP_PARALLAX",
71
- " return currentTextureCoords;",
72
- " #elif defined( USE_RELIEF_PARALLAX )",
73
- " vec2 deltaTexCoord = dtex / 2.0;",
74
- " float deltaHeight = layerHeight / 2.0;",
90
+ currentTextureCoords -= dtex;
91
+ heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
92
+ }
93
+
94
+ #ifdef USE_STEEP_PARALLAX
95
+
96
+ return currentTextureCoords;
97
+
98
+ #elif defined( USE_RELIEF_PARALLAX )
99
+
100
+ vec2 deltaTexCoord = dtex / 2.0;
101
+ float deltaHeight = layerHeight / 2.0;
102
+
75
103
  // Return to the mid point of previous layer
76
- " currentTextureCoords += deltaTexCoord;",
77
- " currentLayerHeight -= deltaHeight;",
104
+ currentTextureCoords += deltaTexCoord;
105
+ currentLayerHeight -= deltaHeight;
106
+
78
107
  // Binary search to increase precision of Steep Parallax Mapping
79
- " const int numSearches = 5;",
80
- " for ( int i = 0; i < numSearches; i += 1 ) {",
81
- " deltaTexCoord /= 2.0;",
82
- " deltaHeight /= 2.0;",
83
- " heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;",
108
+ const int numSearches = 5;
109
+ for ( int i = 0; i < numSearches; i += 1 ) {
110
+
111
+ deltaTexCoord /= 2.0;
112
+ deltaHeight /= 2.0;
113
+ heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;
84
114
  // Shift along or against vector V
85
- " if( heightFromTexture > currentLayerHeight ) {",
86
- // Below the surface
87
- " currentTextureCoords -= deltaTexCoord;",
88
- " currentLayerHeight += deltaHeight;",
89
- " } else {",
90
- // above the surface
91
- " currentTextureCoords += deltaTexCoord;",
92
- " currentLayerHeight -= deltaHeight;",
93
- " }",
94
- " }",
95
- " return currentTextureCoords;",
96
- " #elif defined( USE_OCLUSION_PARALLAX )",
97
- " vec2 prevTCoords = currentTextureCoords + dtex;",
115
+ if( heightFromTexture > currentLayerHeight ) { // Below the surface
116
+
117
+ currentTextureCoords -= deltaTexCoord;
118
+ currentLayerHeight += deltaHeight;
119
+
120
+ } else { // above the surface
121
+
122
+ currentTextureCoords += deltaTexCoord;
123
+ currentLayerHeight -= deltaHeight;
124
+
125
+ }
126
+
127
+ }
128
+ return currentTextureCoords;
129
+
130
+ #elif defined( USE_OCLUSION_PARALLAX )
131
+
132
+ vec2 prevTCoords = currentTextureCoords + dtex;
133
+
98
134
  // Heights for linear interpolation
99
- " float nextH = heightFromTexture - currentLayerHeight;",
100
- " float prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;",
135
+ float nextH = heightFromTexture - currentLayerHeight;
136
+ float prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;
137
+
101
138
  // Proportions for linear interpolation
102
- " float weight = nextH / ( nextH - prevH );",
139
+ float weight = nextH / ( nextH - prevH );
140
+
103
141
  // Interpolation of texture coordinates
104
- " return prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );",
105
- " #else",
106
- // NO_PARALLAX
107
- " return vUv;",
108
- " #endif",
109
- " }",
110
- "#endif",
111
- "vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {",
112
- " vec2 texDx = dFdx( vUv );",
113
- " vec2 texDy = dFdy( vUv );",
114
- " vec3 vSigmaX = dFdx( surfPosition );",
115
- " vec3 vSigmaY = dFdy( surfPosition );",
116
- " vec3 vR1 = cross( vSigmaY, surfNormal );",
117
- " vec3 vR2 = cross( surfNormal, vSigmaX );",
118
- " float fDet = dot( vSigmaX, vR1 );",
119
- " vec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );",
120
- " vec3 vProjVtex;",
121
- " vProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;",
122
- " vProjVtex.z = dot( surfNormal, viewPosition );",
123
- " return parallaxMap( vProjVtex );",
124
- "}",
125
- "void main() {",
126
- " vec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );",
127
- " gl_FragColor = texture2D( map, mapUv );",
128
- "}"
129
- ].join("\n")
142
+ return prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );
143
+
144
+ #else // NO_PARALLAX
145
+
146
+ return vUv;
147
+
148
+ #endif
149
+
150
+ }
151
+ #endif
152
+
153
+ vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {
154
+
155
+ vec2 texDx = dFdx( vUv );
156
+ vec2 texDy = dFdy( vUv );
157
+
158
+ vec3 vSigmaX = dFdx( surfPosition );
159
+ vec3 vSigmaY = dFdy( surfPosition );
160
+ vec3 vR1 = cross( vSigmaY, surfNormal );
161
+ vec3 vR2 = cross( surfNormal, vSigmaX );
162
+ float fDet = dot( vSigmaX, vR1 );
163
+
164
+ vec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );
165
+ vec3 vProjVtex;
166
+ vProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;
167
+ vProjVtex.z = dot( surfNormal, viewPosition );
168
+
169
+ return parallaxMap( vProjVtex );
170
+ }
171
+
172
+ void main() {
173
+
174
+ vec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );
175
+ gl_FragColor = texture2D( map, mapUv );
176
+
177
+ }
178
+ `
179
+ )
130
180
  };
131
181
  export {
132
182
  ParallaxShader
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxShader.js","sources":["../../src/shaders/ParallaxShader.ts"],"sourcesContent":["// Parallax Occlusion shaders from\n// http://sunandblackcat.com/tipFullView.php?topicid=28\n// No tangent-space transforms logic based on\n// http://mmikkelsen3d.blogspot.sk/2012/02/parallaxpoc-mapping-and-no-tangent.html\n\nexport const ParallaxShader = {\n // Ordered from fastest to best quality.\n modes: {\n none: 'NO_PARALLAX',\n basic: 'USE_BASIC_PARALLAX',\n steep: 'USE_STEEP_PARALLAX',\n occlusion: 'USE_OCLUSION_PARALLAX', // a.k.a. POM\n relief: 'USE_RELIEF_PARALLAX',\n },\n\n uniforms: {\n bumpMap: { value: null },\n map: { value: null },\n parallaxScale: { value: null },\n parallaxMinLayers: { value: null },\n parallaxMaxLayers: { value: null },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n 'varying vec3 vViewPosition;',\n 'varying vec3 vNormal;',\n\n 'void main() {',\n\n '\tvUv = uv;',\n '\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );',\n '\tvViewPosition = -mvPosition.xyz;',\n '\tvNormal = normalize( normalMatrix * normal );',\n '\tgl_Position = projectionMatrix * mvPosition;',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D bumpMap;',\n 'uniform sampler2D map;',\n\n 'uniform float parallaxScale;',\n 'uniform float parallaxMinLayers;',\n 'uniform float parallaxMaxLayers;',\n\n 'varying vec2 vUv;',\n 'varying vec3 vViewPosition;',\n 'varying vec3 vNormal;',\n\n '#ifdef USE_BASIC_PARALLAX',\n\n '\tvec2 parallaxMap( in vec3 V ) {',\n\n '\t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;',\n\n // No Offset Limitting: messy, floating output at grazing angles.\n //\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n\n // Offset Limiting\n '\t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;',\n '\t\treturn vUv - texCoordOffset;',\n\n '\t}',\n\n '#else',\n\n '\tvec2 parallaxMap( in vec3 V ) {',\n\n // Determine number of layers from angle between V and N\n '\t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );',\n\n '\t\tfloat layerHeight = 1.0 / numLayers;',\n '\t\tfloat currentLayerHeight = 0.0;',\n // Shift of texture coordinates for each iteration\n '\t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;',\n\n '\t\tvec2 currentTextureCoords = vUv;',\n\n '\t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n\n // while ( heightFromTexture > currentLayerHeight )\n // Infinite loops are not well supported. Do a \"large\" finite\n // loop, but not too large, as it slows down some compilers.\n '\t\tfor ( int i = 0; i < 30; i += 1 ) {',\n '\t\t\tif ( heightFromTexture <= currentLayerHeight ) {',\n '\t\t\t\tbreak;',\n '\t\t\t}',\n '\t\t\tcurrentLayerHeight += layerHeight;',\n // Shift texture coordinates along vector V\n '\t\t\tcurrentTextureCoords -= dtex;',\n '\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n '\t\t}',\n\n '\t\t#ifdef USE_STEEP_PARALLAX',\n\n '\t\t\treturn currentTextureCoords;',\n\n '\t\t#elif defined( USE_RELIEF_PARALLAX )',\n\n '\t\t\tvec2 deltaTexCoord = dtex / 2.0;',\n '\t\t\tfloat deltaHeight = layerHeight / 2.0;',\n\n // Return to the mid point of previous layer\n '\t\t\tcurrentTextureCoords += deltaTexCoord;',\n '\t\t\tcurrentLayerHeight -= deltaHeight;',\n\n // Binary search to increase precision of Steep Parallax Mapping\n '\t\t\tconst int numSearches = 5;',\n '\t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {',\n\n '\t\t\t\tdeltaTexCoord /= 2.0;',\n '\t\t\t\tdeltaHeight /= 2.0;',\n '\t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;',\n // Shift along or against vector V\n '\t\t\t\tif( heightFromTexture > currentLayerHeight ) {', // Below the surface\n\n '\t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;',\n '\t\t\t\t\tcurrentLayerHeight += deltaHeight;',\n\n '\t\t\t\t} else {', // above the surface\n\n '\t\t\t\t\tcurrentTextureCoords += deltaTexCoord;',\n '\t\t\t\t\tcurrentLayerHeight -= deltaHeight;',\n\n '\t\t\t\t}',\n\n '\t\t\t}',\n '\t\t\treturn currentTextureCoords;',\n\n '\t\t#elif defined( USE_OCLUSION_PARALLAX )',\n\n '\t\t\tvec2 prevTCoords = currentTextureCoords + dtex;',\n\n // Heights for linear interpolation\n '\t\t\tfloat nextH = heightFromTexture - currentLayerHeight;',\n '\t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;',\n\n // Proportions for linear interpolation\n '\t\t\tfloat weight = nextH / ( nextH - prevH );',\n\n // Interpolation of texture coordinates\n '\t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );',\n\n '\t\t#else', // NO_PARALLAX\n\n '\t\t\treturn vUv;',\n\n '\t\t#endif',\n\n '\t}',\n '#endif',\n\n 'vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {',\n\n '\tvec2 texDx = dFdx( vUv );',\n '\tvec2 texDy = dFdy( vUv );',\n\n '\tvec3 vSigmaX = dFdx( surfPosition );',\n '\tvec3 vSigmaY = dFdy( surfPosition );',\n '\tvec3 vR1 = cross( vSigmaY, surfNormal );',\n '\tvec3 vR2 = cross( surfNormal, vSigmaX );',\n '\tfloat fDet = dot( vSigmaX, vR1 );',\n\n '\tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );',\n '\tvec3 vProjVtex;',\n '\tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;',\n '\tvProjVtex.z = dot( surfNormal, viewPosition );',\n\n '\treturn parallaxMap( vProjVtex );',\n '}',\n\n 'void main() {',\n\n '\tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );',\n '\tgl_FragColor = texture2D( map, mapUv );',\n\n '}',\n ].join('\\n'),\n}\n"],"names":[],"mappings":"AAKO,MAAM,iBAAiB;AAAA;AAAA,EAE5B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EAEA,UAAU;AAAA,IACR,SAAS,EAAE,OAAO,KAAK;AAAA,IACvB,KAAK,EAAE,OAAO,KAAK;AAAA,IACnB,eAAe,EAAE,OAAO,KAAK;AAAA,IAC7B,mBAAmB,EAAE,OAAO,KAAK;AAAA,IACjC,mBAAmB,EAAE,OAAO,KAAK;AAAA,EACnC;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;"}
1
+ {"version":3,"file":"ParallaxShader.js","sources":["../../src/shaders/ParallaxShader.ts"],"sourcesContent":["// Parallax Occlusion shaders from\n// http://sunandblackcat.com/tipFullView.php?topicid=28\n// No tangent-space transforms logic based on\n// http://mmikkelsen3d.blogspot.sk/2012/02/parallaxpoc-mapping-and-no-tangent.html\n\nexport const ParallaxShader = {\n // Ordered from fastest to best quality.\n modes: {\n none: 'NO_PARALLAX',\n basic: 'USE_BASIC_PARALLAX',\n steep: 'USE_STEEP_PARALLAX',\n occlusion: 'USE_OCLUSION_PARALLAX', // a.k.a. POM\n relief: 'USE_RELIEF_PARALLAX',\n },\n\n uniforms: {\n bumpMap: { value: null },\n map: { value: null },\n parallaxScale: { value: null },\n parallaxMinLayers: { value: null },\n parallaxMaxLayers: { value: null },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n varying vec3 vViewPosition;\n varying vec3 vNormal;\n\n void main() {\n\n \tvUv = uv;\n \tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n \tvViewPosition = -mvPosition.xyz;\n \tvNormal = normalize( normalMatrix * normal );\n \tgl_Position = projectionMatrix * mvPosition;\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform sampler2D bumpMap;\n uniform sampler2D map;\n\n uniform float parallaxScale;\n uniform float parallaxMinLayers;\n uniform float parallaxMaxLayers;\n\n varying vec2 vUv;\n varying vec3 vViewPosition;\n varying vec3 vNormal;\n\n #ifdef USE_BASIC_PARALLAX\n\n \tvec2 parallaxMap( in vec3 V ) {\n\n \t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;\n\n // No Offset Limitting: messy, floating output at grazing angles.\n //\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n\n // Offset Limiting\n \t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;\n \t\treturn vUv - texCoordOffset;\n\n \t}\n\n #else\n\n \tvec2 parallaxMap( in vec3 V ) {\n\n // Determine number of layers from angle between V and N\n \t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );\n\n \t\tfloat layerHeight = 1.0 / numLayers;\n \t\tfloat currentLayerHeight = 0.0;\n // Shift of texture coordinates for each iteration\n \t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;\n\n \t\tvec2 currentTextureCoords = vUv;\n\n \t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n\n // while ( heightFromTexture > currentLayerHeight )\n // Infinite loops are not well supported. Do a \"large\" finite\n // loop, but not too large, as it slows down some compilers.\n \t\tfor ( int i = 0; i < 30; i += 1 ) {\n \t\t\tif ( heightFromTexture <= currentLayerHeight ) {\n \t\t\t\tbreak;\n \t\t\t}\n \t\t\tcurrentLayerHeight += layerHeight;\n // Shift texture coordinates along vector V\n \t\t\tcurrentTextureCoords -= dtex;\n \t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n \t\t}\n\n \t\t#ifdef USE_STEEP_PARALLAX\n\n \t\t\treturn currentTextureCoords;\n\n \t\t#elif defined( USE_RELIEF_PARALLAX )\n\n \t\t\tvec2 deltaTexCoord = dtex / 2.0;\n \t\t\tfloat deltaHeight = layerHeight / 2.0;\n\n // Return to the mid point of previous layer\n \t\t\tcurrentTextureCoords += deltaTexCoord;\n \t\t\tcurrentLayerHeight -= deltaHeight;\n\n // Binary search to increase precision of Steep Parallax Mapping\n \t\t\tconst int numSearches = 5;\n \t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {\n\n \t\t\t\tdeltaTexCoord /= 2.0;\n \t\t\t\tdeltaHeight /= 2.0;\n \t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\n // Shift along or against vector V\n \t\t\t\tif( heightFromTexture > currentLayerHeight ) { // Below the surface\n\n \t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;\n \t\t\t\t\tcurrentLayerHeight += deltaHeight;\n\n \t\t\t\t} else { // above the surface\n\n \t\t\t\t\tcurrentTextureCoords += deltaTexCoord;\n \t\t\t\t\tcurrentLayerHeight -= deltaHeight;\n\n \t\t\t\t}\n\n \t\t\t}\n \t\t\treturn currentTextureCoords;\n\n \t\t#elif defined( USE_OCLUSION_PARALLAX )\n\n \t\t\tvec2 prevTCoords = currentTextureCoords + dtex;\n\n // Heights for linear interpolation\n \t\t\tfloat nextH = heightFromTexture - currentLayerHeight;\n \t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;\n\n // Proportions for linear interpolation\n \t\t\tfloat weight = nextH / ( nextH - prevH );\n\n // Interpolation of texture coordinates\n \t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );\n\n \t\t#else // NO_PARALLAX\n\n \t\t\treturn vUv;\n\n \t\t#endif\n\n \t}\n #endif\n\n vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {\n\n \tvec2 texDx = dFdx( vUv );\n \tvec2 texDy = dFdy( vUv );\n\n \tvec3 vSigmaX = dFdx( surfPosition );\n \tvec3 vSigmaY = dFdy( surfPosition );\n \tvec3 vR1 = cross( vSigmaY, surfNormal );\n \tvec3 vR2 = cross( surfNormal, vSigmaX );\n \tfloat fDet = dot( vSigmaX, vR1 );\n\n \tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );\n \tvec3 vProjVtex;\n \tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;\n \tvProjVtex.z = dot( surfNormal, viewPosition );\n\n \treturn parallaxMap( vProjVtex );\n }\n\n void main() {\n\n \tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );\n \tgl_FragColor = texture2D( map, mapUv );\n\n }\n `,\n}\n"],"names":[],"mappings":"AAKO,MAAM,iBAAiB;AAAA;AAAA,EAE5B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EAEA,UAAU;AAAA,IACR,SAAS,EAAE,OAAO,KAAK;AAAA,IACvB,KAAK,EAAE,OAAO,KAAK;AAAA,IACnB,eAAe,EAAE,OAAO,KAAK;AAAA,IAC7B,mBAAmB,EAAE,OAAO,KAAK;AAAA,IACjC,mBAAmB,EAAE,OAAO,KAAK;AAAA,EACnC;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBzB;AAAA;AAAA,IAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6I7B;"}