janusweb 1.5.41 → 1.5.43

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 (250) hide show
  1. package/CHANGELOG +23 -0
  2. package/css/janusweb.css +7 -2
  3. package/media/assets/webui/apps/buttons/buttons.js +17 -43
  4. package/media/assets/webui/apps/comms/chat.html +1 -0
  5. package/media/assets/webui/apps/comms/chat_message.html +1 -1
  6. package/media/assets/webui/apps/comms/comms.js +14 -7
  7. package/media/assets/webui/apps/comms/external/naf-shim.js +1 -1
  8. package/media/assets/webui/apps/comms/voip.css +32 -3
  9. package/media/assets/webui/apps/comms/voip.js +191 -12
  10. package/media/assets/webui/apps/editor/editor.css +1 -0
  11. package/media/assets/webui/apps/editor/editor.js +97 -20
  12. package/media/assets/webui/apps/inventory/inventory.css +2 -1
  13. package/media/assets/webui/apps/locomotion/teleporter.js +21 -10
  14. package/media/assets/webui/apps/xrmenu/images/audio-settings.png +0 -0
  15. package/media/assets/webui/apps/xrmenu/xrmenu-assets.json +2 -1
  16. package/media/assets/webui/apps/xrmenu/xrmenu.js +119 -32
  17. package/media/assets/webui/themes/default.css +42 -0
  18. package/media/lib/basis/basis_transcoder.js +8 -8
  19. package/media/lib/basis/basis_transcoder.wasm +0 -0
  20. package/media/lib/three-icosa/brushes/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e-v10.0-fragment.glsl +284 -0
  21. package/media/lib/three-icosa/brushes/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e-v10.0-vertex.glsl +60 -0
  22. package/media/lib/three-icosa/brushes/BlocksGem-232998f8-d357-47a2-993a-53415df9be10/BlocksGem-232998f8-d357-47a2-993a-53415df9be10-v10.0-fragment.glsl +334 -0
  23. package/media/lib/three-icosa/brushes/BlocksGem-232998f8-d357-47a2-993a-53415df9be10/BlocksGem-232998f8-d357-47a2-993a-53415df9be10-v10.0-vertex.glsl +46 -0
  24. package/media/lib/three-icosa/brushes/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7-v10.0-fragment.glsl +248 -0
  25. package/media/lib/three-icosa/brushes/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7-v10.0-vertex.glsl +60 -0
  26. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-MainTex.png +0 -0
  27. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-fragment.glsl +34 -0
  28. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-vertex.glsl +120 -0
  29. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-MainTex.png +0 -0
  30. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-fragment.glsl +89 -0
  31. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-vertex.glsl +60 -0
  32. package/media/lib/three-icosa/brushes/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816-v10.0-fragment.glsl +69 -0
  33. package/media/lib/three-icosa/brushes/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816-v10.0-vertex.glsl +60 -0
  34. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-MainTex.png +0 -0
  35. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-fragment.glsl +289 -0
  36. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-vertex.glsl +60 -0
  37. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-MainTex.png +0 -0
  38. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-fragment.glsl +292 -0
  39. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-vertex.glsl +60 -0
  40. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-AlphaMask.png +0 -0
  41. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-MainTex.png +0 -0
  42. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-fragment.glsl +65 -0
  43. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-vertex.glsl +60 -0
  44. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-MainTex.png +0 -0
  45. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-fragment.glsl +481 -0
  46. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-vertex.glsl +57 -0
  47. package/media/lib/three-icosa/brushes/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +290 -0
  48. package/media/lib/three-icosa/brushes/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +70 -0
  49. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-MainTex.png +0 -0
  50. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-fragment.glsl +113 -0
  51. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-vertex.glsl +60 -0
  52. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-MainTex.png +0 -0
  53. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-fragment.glsl +35 -0
  54. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-vertex.glsl +120 -0
  55. package/media/lib/three-icosa/brushes/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126-v10.0-fragment.glsl +286 -0
  56. package/media/lib/three-icosa/brushes/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126-v10.0-vertex.glsl +54 -0
  57. package/media/lib/three-icosa/brushes/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126-v10.0-fragment.glsl +81 -0
  58. package/media/lib/three-icosa/brushes/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126-v10.0-vertex.glsl +54 -0
  59. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-BumpMap.png +0 -0
  60. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-MainTex.png +0 -0
  61. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-fragment.glsl +376 -0
  62. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-vertex.glsl +60 -0
  63. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-BumpMap.png +0 -0
  64. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-MainTex.png +0 -0
  65. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-fragment.glsl +378 -0
  66. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-vertex.glsl +60 -0
  67. package/media/lib/three-icosa/brushes/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51-v10.0-fragment.glsl +50 -0
  68. package/media/lib/three-icosa/brushes/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51-v10.0-vertex.glsl +79 -0
  69. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-MainTex.png +0 -0
  70. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-fragment.glsl +32 -0
  71. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-vertex.glsl +152 -0
  72. package/media/lib/three-icosa/brushes/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7-v1.0-fragment.glsl +288 -0
  73. package/media/lib/three-icosa/brushes/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7-v1.0-vertex.glsl +47 -0
  74. package/media/lib/three-icosa/brushes/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b-v1.0-fragment.glsl +288 -0
  75. package/media/lib/three-icosa/brushes/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b-v1.0-vertex.glsl +50 -0
  76. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-MainTex.png +0 -0
  77. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-fragment.glsl +61 -0
  78. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-vertex.glsl +60 -0
  79. package/media/lib/three-icosa/brushes/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70-v10.0-fragment.glsl +285 -0
  80. package/media/lib/three-icosa/brushes/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70-v10.0-vertex.glsl +60 -0
  81. package/media/lib/three-icosa/brushes/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130-v10.0-fragment.glsl +286 -0
  82. package/media/lib/three-icosa/brushes/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130-v10.0-vertex.glsl +60 -0
  83. package/media/lib/three-icosa/brushes/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18-v10.0-fragment.glsl +285 -0
  84. package/media/lib/three-icosa/brushes/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18-v10.0-vertex.glsl +60 -0
  85. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-MainTex.png +0 -0
  86. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-fragment.glsl +40 -0
  87. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-vertex.glsl +60 -0
  88. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-MainTex.png +0 -0
  89. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-fragment.glsl +33 -0
  90. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-vertex.glsl +60 -0
  91. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-BumpMap.png +0 -0
  92. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-MainTex.png +0 -0
  93. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-fragment.glsl +386 -0
  94. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-vertex.glsl +60 -0
  95. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-BumpMap.png +0 -0
  96. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-MainTex.png +0 -0
  97. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-fragment.glsl +385 -0
  98. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-vertex.glsl +60 -0
  99. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-BumpMap.png +0 -0
  100. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-fragment.glsl +376 -0
  101. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-vertex.glsl +60 -0
  102. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-BumpMap.png +0 -0
  103. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-MainTex.png +0 -0
  104. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-fragment.glsl +376 -0
  105. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-vertex.glsl +60 -0
  106. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-BumpMap.png +0 -0
  107. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-MainTex.png +0 -0
  108. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-fragment.glsl +377 -0
  109. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-vertex.glsl +60 -0
  110. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-BumpMap.png +0 -0
  111. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-MainTex.png +0 -0
  112. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-fragment.glsl +319 -0
  113. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-vertex.glsl +60 -0
  114. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-MainTex.png +0 -0
  115. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-fragment.glsl +47 -0
  116. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-vertex.glsl +60 -0
  117. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-MainTex.png +0 -0
  118. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +330 -0
  119. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +64 -0
  120. package/media/lib/three-icosa/brushes/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda-v10.0-fragment.glsl +285 -0
  121. package/media/lib/three-icosa/brushes/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda-v10.0-vertex.glsl +60 -0
  122. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-MainTex.png +0 -0
  123. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-fragment.glsl +87 -0
  124. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-vertex.glsl +60 -0
  125. package/media/lib/three-icosa/brushes/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa-v10.0-fragment.glsl +285 -0
  126. package/media/lib/three-icosa/brushes/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa-v10.0-vertex.glsl +60 -0
  127. package/media/lib/three-icosa/brushes/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6-v10.0-fragment.glsl +267 -0
  128. package/media/lib/three-icosa/brushes/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6-v10.0-vertex.glsl +60 -0
  129. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-BumpMap.png +0 -0
  130. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-MainTex.png +0 -0
  131. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-fragment.glsl +377 -0
  132. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-vertex.glsl +60 -0
  133. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-BumpMap.png +0 -0
  134. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-MainTex.png +0 -0
  135. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-fragment.glsl +376 -0
  136. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-vertex.glsl +60 -0
  137. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-BumpMap.png +0 -0
  138. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-MainTex.png +0 -0
  139. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-fragment.glsl +377 -0
  140. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-vertex.glsl +60 -0
  141. package/media/lib/three-icosa/brushes/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0-v1.0-fragment.glsl +370 -0
  142. package/media/lib/three-icosa/brushes/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0-v1.0-vertex.glsl +48 -0
  143. package/media/lib/three-icosa/brushes/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf-v1.0-fragment.glsl +374 -0
  144. package/media/lib/three-icosa/brushes/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf-v1.0-vertex.glsl +48 -0
  145. package/media/lib/three-icosa/brushes/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc-v10.0-fragment.glsl +367 -0
  146. package/media/lib/three-icosa/brushes/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc-v10.0-vertex.glsl +60 -0
  147. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-MainTex.png +0 -0
  148. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-fragment.glsl +64 -0
  149. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-vertex.glsl +60 -0
  150. package/media/lib/three-icosa/brushes/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960-v10.0-fragment.glsl +70 -0
  151. package/media/lib/three-icosa/brushes/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960-v10.0-vertex.glsl +60 -0
  152. package/media/lib/three-icosa/brushes/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3-v10.0-fragment.glsl +367 -0
  153. package/media/lib/three-icosa/brushes/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3-v10.0-vertex.glsl +60 -0
  154. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-MainTex.png +0 -0
  155. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-fragment.glsl +30 -0
  156. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-vertex.glsl +125 -0
  157. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-MainTex.png +0 -0
  158. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-fragment.glsl +31 -0
  159. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-vertex.glsl +143 -0
  160. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-MainTex.png +0 -0
  161. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-fragment.glsl +34 -0
  162. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-vertex.glsl +60 -0
  163. package/media/lib/three-icosa/brushes/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa-v10.0-fragment.glsl +285 -0
  164. package/media/lib/three-icosa/brushes/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa-v10.0-vertex.glsl +60 -0
  165. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-MainTex.png +0 -0
  166. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-fragment.glsl +290 -0
  167. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-vertex.glsl +60 -0
  168. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-MainTex.png +0 -0
  169. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-fragment.glsl +291 -0
  170. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-vertex.glsl +60 -0
  171. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-MainTex.png +0 -0
  172. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-fragment.glsl +31 -0
  173. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-vertex.glsl +128 -0
  174. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-MainTex.png +0 -0
  175. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-fragment.glsl +63 -0
  176. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-vertex.glsl +60 -0
  177. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-MainTex.png +0 -0
  178. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-fragment.glsl +113 -0
  179. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-vertex.glsl +62 -0
  180. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-MainTex.png +0 -0
  181. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-fragment.glsl +292 -0
  182. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-vertex.glsl +60 -0
  183. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-MainTex.png +0 -0
  184. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-fragment.glsl +287 -0
  185. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-vertex.glsl +58 -0
  186. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-MainTex.png +0 -0
  187. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-fragment.glsl +113 -0
  188. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-vertex.glsl +60 -0
  189. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-MainTex.png +0 -0
  190. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-fragment.glsl +314 -0
  191. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-vertex.glsl +60 -0
  192. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-BumpMap.png +0 -0
  193. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-MainTex.png +0 -0
  194. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-fragment.glsl +378 -0
  195. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-vertex.glsl +60 -0
  196. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-BumpMap.png +0 -0
  197. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-MainTex.png +0 -0
  198. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-fragment.glsl +380 -0
  199. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-vertex.glsl +58 -0
  200. package/media/lib/three-icosa/brushes/Toon-4391385a-df73-4396-9e33-31e4e4930b27/Toon-4391385a-df73-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +85 -0
  201. package/media/lib/three-icosa/brushes/Toon-4391385a-df73-4396-9e33-31e4e4930b27/Toon-4391385a-df73-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +60 -0
  202. package/media/lib/three-icosa/brushes/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d-v10.0-fragment.glsl +81 -0
  203. package/media/lib/three-icosa/brushes/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d-v10.0-vertex.glsl +60 -0
  204. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-MainTex.png +0 -0
  205. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-fragment.glsl +80 -0
  206. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-vertex.glsl +60 -0
  207. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-MainTex.png +0 -0
  208. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-fragment.glsl +82 -0
  209. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-vertex.glsl +55 -0
  210. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-BumpMap.png +0 -0
  211. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-MainTex.png +0 -0
  212. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-fragment.glsl +376 -0
  213. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-vertex.glsl +60 -0
  214. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-BumpMap.png +0 -0
  215. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-MainTex.png +0 -0
  216. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-fragment.glsl +313 -0
  217. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-vertex.glsl +58 -0
  218. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-MainTex.png +0 -0
  219. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-fragment.glsl +377 -0
  220. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-vertex.glsl +60 -0
  221. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-MainTex.png +0 -0
  222. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-fragment.glsl +107 -0
  223. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-vertex.glsl +58 -0
  224. package/media/lib/three-icosa/brushes/Wire-4391385a-cf83-4396-9e33-31e4e4930b27/Wire-4391385a-cf83-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +75 -0
  225. package/media/lib/three-icosa/brushes/Wire-4391385a-cf83-4396-9e33-31e4e4930b27/Wire-4391385a-cf83-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +60 -0
  226. package/media/manifest.json +1 -1
  227. package/package.json +2 -2
  228. package/scripts/client.js +20 -3
  229. package/scripts/elements/outliner.js +182 -0
  230. package/scripts/external/JanusClientConnection.js +14 -8
  231. package/scripts/external/JanusFireboxParser.js +1 -1
  232. package/scripts/image.js +1 -1
  233. package/scripts/janusbase.js +40 -17
  234. package/scripts/janusghost.js +17 -6
  235. package/scripts/januslight.js +46 -4
  236. package/scripts/janusparticle.js +121 -15
  237. package/scripts/janusplayer.js +176 -92
  238. package/scripts/janusweb.js +9 -5
  239. package/scripts/janusxrplayer.js +152 -20
  240. package/scripts/multiplayermanager.js +4 -0
  241. package/scripts/object.js +83 -38
  242. package/scripts/parts.js +1 -1
  243. package/scripts/portal.js +13 -9
  244. package/scripts/remoteplayer.js +3 -2
  245. package/scripts/room.js +109 -32
  246. package/scripts/sound.js +8 -3
  247. package/scripts/text.js +9 -2
  248. package/scripts/tracking.js +1 -1
  249. package/scripts/ui/main.js +6 -2
  250. package/scripts/websurface.js +3 -3
@@ -0,0 +1,60 @@
1
+ #version 300 es
2
+ // Copyright 2020 The Tilt Brush Authors
3
+ // Updated to OpenGL ES 3.0 by the Icosa Gallery Authors
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ // Copyright 2020 The Tilt Brush Authors
18
+ //
19
+ // Licensed under the Apache License, Version 2.0 (the "License");
20
+ // you may not use this file except in compliance with the License.
21
+ // You may obtain a copy of the License at
22
+ //
23
+ // http://www.apache.org/licenses/LICENSE-2.0
24
+ //
25
+ // Unless required by applicable law or agreed to in writing, software
26
+ // distributed under the License is distributed on an "AS IS" BASIS,
27
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
+ // See the License for the specific language governing permissions and
29
+ // limitations under the License.
30
+
31
+ // DefaultVS.glsl
32
+ in vec4 a_position;
33
+ in vec3 a_normal;
34
+ in vec4 a_color;
35
+ in vec2 a_texcoord0;
36
+
37
+ out vec4 v_color;
38
+ out vec3 v_normal; // Camera-space normal.
39
+ out vec3 v_position; // Camera-space position.
40
+ out vec2 v_texcoord0;
41
+ out vec3 v_light_dir_0; // Camera-space light direction, main light.
42
+ out vec3 v_light_dir_1; // Camera-space light direction, other light.
43
+ out float f_fog_coord;
44
+
45
+ uniform mat4 modelViewMatrix;
46
+ uniform mat4 projectionMatrix;
47
+ uniform mat3 normalMatrix;
48
+ uniform mat4 u_SceneLight_0_matrix;
49
+ uniform mat4 u_SceneLight_1_matrix;
50
+
51
+ void main() {
52
+ gl_Position = projectionMatrix * modelViewMatrix * a_position;
53
+ f_fog_coord = gl_Position.z;
54
+ v_normal = normalMatrix * a_normal;
55
+ v_position = (modelViewMatrix * a_position).xyz;
56
+ v_light_dir_0 = mat3(u_SceneLight_0_matrix) * vec3(0, 0, 1);
57
+ v_light_dir_1 = mat3(u_SceneLight_1_matrix) * vec3(0, 0, 1);
58
+ v_color = a_color;
59
+ v_texcoord0 = a_texcoord0;
60
+ }
@@ -0,0 +1,65 @@
1
+ #version 300 es
2
+ // Copyright 2020 The Tilt Brush Authors
3
+ // Updated to OpenGL ES 3.0 by the Icosa Gallery Authors
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ precision mediump float;
18
+
19
+ out vec4 fragColor;
20
+
21
+ uniform float u_Speed;
22
+ uniform float u_EmissionGain;
23
+ uniform sampler2D u_MainTex;
24
+ uniform sampler2D u_AlphaMask;
25
+ uniform vec4 u_AlphaMask_TexelSize;
26
+ uniform vec4 u_time;
27
+
28
+ in vec4 v_color;
29
+ in vec2 v_texcoord0;
30
+
31
+ void main() {
32
+ // Set up some staggered scrolling for "fire" effect
33
+ float time = u_time.y * -u_Speed;
34
+ vec2 scrollUV = v_texcoord0;
35
+ vec2 scrollUV2 = v_texcoord0;
36
+ vec2 scrollUV3 = v_texcoord0;
37
+ scrollUV.y += time; // a little twisting motion
38
+ scrollUV.x += time;
39
+ scrollUV2.x += time * 1.5;
40
+ scrollUV3.x += time * 0.5;
41
+
42
+ // Each channel has its own tileable pattern which we want to scroll against one another
43
+ // at different rates. We pack 'em into channels because it's more performant than
44
+ // using 3 different texture lookups.
45
+ float r = texture(u_MainTex, scrollUV).r;
46
+ float g = texture(u_MainTex, scrollUV2).g;
47
+ float b = texture(u_MainTex, scrollUV3).b;
48
+
49
+ // Combine all channels
50
+ float gradient_lookup_value = (r + g + b) / 3.0;
51
+ // Rescales the lookup value from start to finish.
52
+ gradient_lookup_value *= (1.0 - v_texcoord0.x);
53
+ gradient_lookup_value = (pow(gradient_lookup_value, 2.0) + 0.125) * 3.0;
54
+
55
+ float falloff = max((0.2 - v_texcoord0.x) * 5.0, 0.0);
56
+ // TODO: this shouldn't be necessary, but it seems the WebGL texture wrap mode doesn't
57
+ // match Unity texture wrap mode.
58
+ float gutter = u_AlphaMask_TexelSize.x * .5;
59
+ float u = clamp(gradient_lookup_value + falloff, 0.0 + gutter, 1.0 - gutter);
60
+ vec4 tex = texture(u_AlphaMask, vec2(u, 0.0));
61
+
62
+ fragColor.rgb = (tex * v_color).rgb;
63
+ fragColor.a = 1.0;
64
+ }
65
+
@@ -0,0 +1,60 @@
1
+ #version 300 es
2
+ // Copyright 2020 The Tilt Brush Authors
3
+ // Updated to OpenGL ES 3.0 by the Icosa Gallery Authors
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ // Copyright 2020 The Tilt Brush Authors
18
+ //
19
+ // Licensed under the Apache License, Version 2.0 (the "License");
20
+ // you may not use this file except in compliance with the License.
21
+ // You may obtain a copy of the License at
22
+ //
23
+ // http://www.apache.org/licenses/LICENSE-2.0
24
+ //
25
+ // Unless required by applicable law or agreed to in writing, software
26
+ // distributed under the License is distributed on an "AS IS" BASIS,
27
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
+ // See the License for the specific language governing permissions and
29
+ // limitations under the License.
30
+
31
+ // DefaultVS.glsl
32
+ in vec4 a_position;
33
+ in vec3 a_normal;
34
+ in vec4 a_color;
35
+ in vec2 a_texcoord0;
36
+
37
+ out vec4 v_color;
38
+ out vec3 v_normal; // Camera-space normal.
39
+ out vec3 v_position; // Camera-space position.
40
+ out vec2 v_texcoord0;
41
+ out vec3 v_light_dir_0; // Camera-space light direction, main light.
42
+ out vec3 v_light_dir_1; // Camera-space light direction, other light.
43
+ out float f_fog_coord;
44
+
45
+ uniform mat4 modelViewMatrix;
46
+ uniform mat4 projectionMatrix;
47
+ uniform mat3 normalMatrix;
48
+ uniform mat4 u_SceneLight_0_matrix;
49
+ uniform mat4 u_SceneLight_1_matrix;
50
+
51
+ void main() {
52
+ gl_Position = projectionMatrix * modelViewMatrix * a_position;
53
+ f_fog_coord = gl_Position.z;
54
+ v_normal = normalMatrix * a_normal;
55
+ v_position = (modelViewMatrix * a_position).xyz;
56
+ v_light_dir_0 = mat3(u_SceneLight_0_matrix) * vec3(0, 0, 1);
57
+ v_light_dir_1 = mat3(u_SceneLight_1_matrix) * vec3(0, 0, 1);
58
+ v_color = a_color;
59
+ v_texcoord0 = a_texcoord0;
60
+ }
@@ -0,0 +1,481 @@
1
+ #version 300 es
2
+ // Copyright 2020 The Tilt Brush Authors
3
+ // Updated to OpenGL ES 3.0 by the Icosa Gallery Authors
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ // Auto-copied from Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-fragment.glsl
18
+
19
+ // Brush-specific shader for GlTF web preview, based on General generator
20
+ // with parameters lit=1, a=0.5.
21
+
22
+ precision mediump float;
23
+
24
+ out vec4 fragColor;
25
+
26
+ uniform vec4 u_time;
27
+ uniform vec4 u_ambient_light_color;
28
+ uniform vec4 u_SceneLight_0_color;
29
+ uniform vec4 u_SceneLight_1_color;
30
+
31
+ uniform sampler2D u_MainTex;
32
+
33
+ // From three.js
34
+ uniform vec3 cameraPosition;
35
+
36
+ in vec4 v_color;
37
+ in vec3 v_normal; // Camera-space.
38
+ in vec3 v_worldNormal; // World-space.
39
+ in vec3 v_position; // Camera-space.
40
+ in vec3 v_worldPosition; // World-space.
41
+ in vec3 v_light_dir_0;
42
+ in vec3 v_light_dir_1;
43
+ in vec2 v_texcoord0;
44
+
45
+ float dispAmount = .0025;
46
+
47
+ // Copyright 2020 The Tilt Brush Authors
48
+ //
49
+ // Licensed under the Apache License, Version 2.0 (the "License");
50
+ // you may not use this file except in compliance with the License.
51
+ // You may obtain a copy of the License at
52
+ //
53
+ // http://www.apache.org/licenses/LICENSE-2.0
54
+ //
55
+ // Unless required by applicable law or agreed to in writing, software
56
+ // distributed under the License is distributed on an "AS IS" BASIS,
57
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
58
+ // See the License for the specific language governing permissions and
59
+ // limitations under the License.
60
+
61
+ // Fogging support
62
+ uniform vec3 u_fogColor;
63
+ uniform float u_fogDensity;
64
+ in float f_fog_coord;
65
+
66
+ // This fog function emulates the exponential fog used in Tilt Brush
67
+ //
68
+ // Details:
69
+ // * For exponential fog, Unity defines u_density = density / ln(2) on the CPU, sp that they can
70
+ // convert the base from e to 2 and use exp2 rather than exp. We might as well do the same.
71
+ // * The fog on Plya does not precisely match that in Unity, though it's very close. Two known
72
+ // reasons for this are
73
+ // 1) Clipping plans on Poly are different than in Tilt Brush. Poly is .1:2000, Tilt
74
+ // Brush is .5:10000.
75
+ // 2) Poly applies post processing (vignettes, etc...) that can subtly change the look
76
+ // of the fog.
77
+ // * Finally, Tilt Brush uses "decimeters" for legacy reasons.
78
+ // In order to convert Density values from TB to Poly, we multiply by 10.0 in order to
79
+ // convert decimeters to meters.
80
+ //
81
+
82
+ vec3 ApplyFog(vec3 color) {
83
+ // Per the top comment, we must modify the density value by Unity's ln(2) modification as well as
84
+ // a decimeter conversion
85
+ float density = (u_fogDensity / .693147) * 10.;
86
+
87
+ // This exponential fog function is copied directly from unity (see UnityCG.inc).
88
+ float fogFactor = f_fog_coord * density;
89
+ fogFactor = exp2(-fogFactor);
90
+ fogFactor = clamp( fogFactor, 0.0, 1.0 );
91
+ return mix(u_fogColor, color.xyz, fogFactor);
92
+ }
93
+ // Copyright 2020 The Tilt Brush Authors
94
+ //
95
+ // Licensed under the Apache License, Version 2.0 (the "License");
96
+ // you may not use this file except in compliance with the License.
97
+ // You may obtain a copy of the License at
98
+ //
99
+ // http://www.apache.org/licenses/LICENSE-2.0
100
+ //
101
+ // Unless required by applicable law or agreed to in writing, software
102
+ // distributed under the License is distributed on an "AS IS" BASIS,
103
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
104
+ // See the License for the specific language governing permissions and
105
+ // limitations under the License.
106
+
107
+ // Requires a global constant "float dispAmount"
108
+ // TODO: turn it into a parameter!
109
+
110
+ // ---------------------------------------------------------------------------------------------- //
111
+ // Tangent-less normal maps (derivative maps)
112
+ // ---------------------------------------------------------------------------------------------- //
113
+ uniform sampler2D u_BumpMap;
114
+ uniform vec4 u_BumpMap_TexelSize;
115
+
116
+ // HACK: Workaround for GPUs which struggle with vec3/vec2 derivatives.
117
+ vec3 xxx_dFdx3(vec3 v) {
118
+ return vec3(dFdx(v.x), dFdx(v.y), dFdx(v.z));
119
+ }
120
+ vec3 xxx_dFdy3(vec3 v) {
121
+ return vec3(dFdy(v.x), dFdy(v.y), dFdy(v.z));
122
+ }
123
+ vec2 xxx_dFdx2(vec2 v) {
124
+ return vec2(dFdx(v.x), dFdx(v.y));
125
+ }
126
+ vec2 xxx_dFdy2(vec2 v) {
127
+ return vec2(dFdy(v.x), dFdy(v.y));
128
+ }
129
+ // </HACK>
130
+
131
+ vec3 PerturbNormal(vec3 position, vec3 normal, vec2 uv)
132
+ {
133
+ // Bump Mapping Unparametrized Surfaces on the GPU
134
+ // by Morten S. Mikkelsen
135
+ // https://goo.gl/O3JiVq
136
+
137
+ highp vec3 vSigmaS = xxx_dFdx3(position);
138
+ highp vec3 vSigmaT = xxx_dFdy3(position);
139
+ highp vec3 vN = normal;
140
+ highp vec3 vR1 = cross(vSigmaT, vN);
141
+ highp vec3 vR2 = cross(vN, vSigmaS);
142
+ float fDet = dot(vSigmaS, vR1);
143
+
144
+ vec2 texDx = xxx_dFdx2(uv);
145
+ vec2 texDy = xxx_dFdy2(uv);
146
+
147
+ float resolution = max(u_BumpMap_TexelSize.z, u_BumpMap_TexelSize.w);
148
+ highp float d = min(1., (0.5 / resolution) / max(length(texDx), length(texDy)));
149
+
150
+ vec2 STll = uv;
151
+ vec2 STlr = uv + d * texDx;
152
+ vec2 STul = uv + d * texDy;
153
+
154
+ highp float Hll = texture(u_BumpMap, STll).x;
155
+ highp float Hlr = texture(u_BumpMap, STlr).x;
156
+ highp float Hul = texture(u_BumpMap, STul).x;
157
+
158
+ Hll = mix(Hll, 1. - Hll, float(!gl_FrontFacing)) * dispAmount;
159
+ Hlr = mix(Hlr, 1. - Hlr, float(!gl_FrontFacing)) * dispAmount;
160
+ Hul = mix(Hul, 1. - Hul, float(!gl_FrontFacing)) * dispAmount;
161
+
162
+ highp float dBs = (Hlr - Hll) / d;
163
+ highp float dBt = (Hul - Hll) / d;
164
+
165
+ highp vec3 vSurfGrad = sign(fDet) * (dBs * vR1 + dBt * vR2);
166
+ return normalize(abs(fDet) * vN - vSurfGrad);
167
+ }
168
+ // Copyright 2020 The Tilt Brush Authors
169
+ //
170
+ // Licensed under the Apache License, Version 2.0 (the "License");
171
+ // you may not use this file except in compliance with the License.
172
+ // You may obtain a copy of the License at
173
+ //
174
+ // http://www.apache.org/licenses/LICENSE-2.0
175
+ //
176
+ // Unless required by applicable law or agreed to in writing, software
177
+ // distributed under the License is distributed on an "AS IS" BASIS,
178
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
179
+ // See the License for the specific language governing permissions and
180
+ // limitations under the License.
181
+
182
+ //
183
+ // Standard BRDF Lighting
184
+ //
185
+
186
+ const float PI = 3.141592654;
187
+ const float INV_PI = 0.318309886;
188
+ const vec3 GAMMA_DIELECTRIC_SPEC = vec3(0.220916301, 0.220916301, 0.220916301);
189
+ const float GAMMA_ONE_MINUS_DIELECTRIC = (1.0 - 0.220916301);
190
+
191
+ // The following functions are based on similar ones in the Unity Standard BRDF
192
+ // with minor changes for GLSL and unused #ifdef pruning.
193
+
194
+ float Pow5(float x) {
195
+ return x * x * x * x * x;
196
+ }
197
+
198
+ // https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf
199
+ float DisneyDiffuseTerm(float NdotV, float NdotL, float LdotH,
200
+ float perceptualRoughness) {
201
+ float fd90 = 0.5 + 2.0 * LdotH * LdotH * perceptualRoughness;
202
+ float lightScatter = 1.0 + (fd90 - 1.0) * Pow5(1.0 - NdotL);
203
+ float viewScatter = 1.0 + (fd90 - 1.0) * Pow5(1.0 - NdotV);
204
+ return lightScatter * viewScatter;
205
+ }
206
+
207
+ float SmithJointVisibilityTerm(float NdotL, float NdotV, float roughness) {
208
+ float lambdaV = NdotL * mix(NdotV, 1.0, roughness);
209
+ float lambdaL = NdotV * mix(NdotL, 1.0, roughness);
210
+ return 0.5 / (lambdaV + lambdaL + 1e-5);
211
+ }
212
+
213
+ float GgxDistributionTerm(float NdotH, float roughness) {
214
+ float a2 = roughness * roughness;
215
+ float d = (NdotH * a2 - NdotH) * NdotH + 1.0;
216
+ return INV_PI * a2 / (d * d + 1e-7);
217
+ }
218
+
219
+ // Implements Schlick's approximation to Fresnel. IoR is implied by
220
+ // F0, which contains minimum reflectance values (per RGB color).
221
+ vec3 FresnelTerm (vec3 F0, float cosA) {
222
+ float t = Pow5(1.0 - cosA);
223
+ return F0 + (vec3(1.0) - F0) * t;
224
+ }
225
+
226
+ vec3 SurfaceShaderInternal(
227
+ vec3 normal, // Unit surface normal.
228
+ vec3 lightDir, // Unit vector from shading point to light.
229
+ vec3 eyeDir, // Unit vector from shading point to camera.
230
+ vec3 lightColor, // RGB color of the light.
231
+ vec3 diffuseColor, // Surface diffuse color.
232
+ vec3 specularColor, // Surface specular color, also drives Fresnel.
233
+ float perceptualRoughness) { // Unity's perceptual Roughness, in [0.0, 1.0].
234
+ float NdotL = clamp(dot(normal, lightDir), 0.0, 1.0);
235
+ float NdotV = abs(dot(normal, eyeDir));
236
+
237
+ vec3 halfVector = normalize(lightDir + eyeDir);
238
+ float NdotH = clamp(dot(normal, halfVector), 0.0, 1.0);
239
+ float LdotH = clamp(dot(lightDir, halfVector), 0.0, 1.0);
240
+
241
+ float diffuseTerm = NdotL *
242
+ DisneyDiffuseTerm(NdotV, NdotL, LdotH, perceptualRoughness);
243
+
244
+ if (length(specularColor) < 1e-5) {
245
+ return diffuseColor * (lightColor * diffuseTerm);
246
+ }
247
+
248
+ float roughness = perceptualRoughness * perceptualRoughness;
249
+
250
+ // The V term includes both the traditional G term and the BRDF divisors.
251
+ float V = GgxDistributionTerm(NdotH, roughness);
252
+ float D = SmithJointVisibilityTerm(NdotL, NdotV, roughness);
253
+ float specularTerm = V * D * PI; // RGB-based Fresnel terms applied below.
254
+
255
+ specularTerm = sqrt(max(1e-4, specularTerm)); // For Gamma-space rendering.
256
+ specularTerm *= NdotL;
257
+
258
+ // Treats specularColor as spectral F0 components of Schlick's formula.
259
+ vec3 fresnelColor = FresnelTerm(specularColor, LdotH);
260
+
261
+ return lightColor *
262
+ (diffuseTerm * diffuseColor + specularTerm * fresnelColor);
263
+ }
264
+
265
+ // An emulation of Unity 5.5's Surface shader, minus the global
266
+ // illumination part. Returns a per-light color contribution to the
267
+ // shaded surface. Ambient illumination needs to be added separately.
268
+ vec3 SurfaceShaderSpecularGloss(
269
+ vec3 normal, // Unit surface normal.
270
+ vec3 lightDir, // Unit vector from shading point to light.
271
+ vec3 eyeDir, // Unit vector from shading point to camera.
272
+ vec3 lightColor, // RGB color of the light.
273
+ vec3 albedoColor, // Surface albedo color.
274
+ vec3 specularColor, // Surface specular color, also drives Fresnel.
275
+ float gloss) { // Unity's perceptual smoothness, in [0.0, 1.0].
276
+ float oneMinusSpecularIntensity =
277
+ 1.0 - clamp(max(max(specularColor.r, specularColor.g), specularColor.b), 0., 1.);
278
+ vec3 diffuseColor = albedoColor * oneMinusSpecularIntensity;
279
+ float perceptualRoughness = 1.0 - gloss;
280
+
281
+ return SurfaceShaderInternal(
282
+ normal, lightDir, eyeDir, lightColor, diffuseColor, specularColor, perceptualRoughness);
283
+ }
284
+
285
+ // An emulation of Unity 5.5's Surface shader using MetallicSetup(), minus the global
286
+ // illumination part. Returns a per-light color contribution to the
287
+ // shaded surface. Ambient illumination needs to be added separately.
288
+ vec3 SurfaceShaderMetallicRoughness(
289
+ vec3 normal, // Unit surface normal.
290
+ vec3 lightDir, // Unit vector from shading point to light.
291
+ vec3 eyeDir, // Unit vector from shading point to camera.
292
+ vec3 lightColor, // RGB color of the light.
293
+ vec3 albedoColor, // Surface albedo color.
294
+ float metallic, // Surface metallic value, drives specular color and reflectivity.
295
+ float perceptualRoughness) { // Unity's perceptual Roughness, in [0.0, 1.0], sqrt of roughness.
296
+ vec3 specularColor = mix(GAMMA_DIELECTRIC_SPEC, albedoColor, metallic);
297
+ float oneMinusReflectivity = GAMMA_ONE_MINUS_DIELECTRIC - metallic * GAMMA_ONE_MINUS_DIELECTRIC;
298
+ vec3 diffuseColor = albedoColor * oneMinusReflectivity;
299
+
300
+ return SurfaceShaderInternal(
301
+ normal, lightDir, eyeDir, lightColor, diffuseColor, specularColor, perceptualRoughness);
302
+ }
303
+
304
+ //
305
+ // An Approximation of Unity SH Lighting
306
+ //
307
+
308
+ // SH lighting needs to emulate Unity's SH light behavior.
309
+ // -Diffuse contribution should be roughly 1/2
310
+ // -Specularity should "subtract" from the diffuse contribution becuase
311
+ // the SH Lights in unity are not energy preserving.
312
+
313
+ vec3 ShShaderWithSpec(
314
+ vec3 normal, // Unit surface normal.
315
+ vec3 lightDir, // Unit vector from shading point to light.
316
+ vec3 lightColor, // RGB color of the light.
317
+ vec3 diffuseColor, // Surface diffuse color, i.e. albedo.
318
+ vec3 specularColor) { // Specular color. Used to replicate broken SH lighting
319
+ // in unity which is not energy preserving
320
+ float specularGrayscale = dot(specularColor, vec3(0.3, 0.59, 0.11));
321
+ float NdotL = clamp(dot(normal, lightDir), 0.0, 1.0);
322
+ // Compensate for missing specular contribution
323
+ float shIntensityMultiplier = 1. - specularGrayscale;
324
+ shIntensityMultiplier *= shIntensityMultiplier;
325
+ return diffuseColor * lightColor * NdotL * shIntensityMultiplier;
326
+ }
327
+
328
+ vec3 ShShader(
329
+ vec3 normal, // Unit surface normal.
330
+ vec3 lightDir, // Unit vector from shading point to light.
331
+ vec3 lightColor, // RGB color of the light.
332
+ vec3 diffuseColor) { // Surface diffuse color, i.e. albedo
333
+ return ShShaderWithSpec(normal, lightDir, lightColor, diffuseColor, vec3(0.,0.,0.));
334
+ }
335
+
336
+ //
337
+ // Lambert Lighting
338
+ //
339
+ vec3 LambertShader(
340
+ vec3 normal, // Unit surface normal.
341
+ vec3 lightDir, // Unit vector from shading point to light.
342
+ vec3 lightColor, // RGB color of the light.
343
+ vec3 diffuseColor) { // Surface diffuse color, i.e. albedo.
344
+ float NdotL = clamp(dot(normal, lightDir), 0.0, 1.0);
345
+ return diffuseColor * lightColor * NdotL;
346
+ }
347
+
348
+ // Amplitude reflection coefficient (s-polarized)
349
+ float rs(float n1, float n2, float cosI, float cosT) {
350
+ return (n1 * cosI - n2 * cosT) / (n1 * cosI + n2 * cosT);
351
+ }
352
+
353
+ // Amplitude reflection coefficient (p-polarized)
354
+ float rp(float n1, float n2, float cosI, float cosT) {
355
+ return (n2 * cosI - n1 * cosT) / (n1 * cosT + n2 * cosI);
356
+ }
357
+
358
+ // Amplitude transmission coefficient (s-polarized)
359
+ float ts(float n1, float n2, float cosI, float cosT) {
360
+ return 2.0 * n1 * cosI / (n1 * cosI + n2 * cosT);
361
+ }
362
+
363
+ // Amplitude transmission coefficient (p-polarized)
364
+ float tp(float n1, float n2, float cosI, float cosT) {
365
+ return 2.0 * n1 * cosI / (n1 * cosT + n2 * cosI);
366
+ }
367
+
368
+ float thinFilmReflectance(float cos0, float lambda, float thickness, float n0, float n1, float n2) {
369
+ float PI = 3.1415926536;
370
+
371
+ // Phase change terms.
372
+ float d10 = mix(PI, 0.0, float(n1 > n0));
373
+ float d12 = mix(PI, 0.0, float(n1 > n2));
374
+ float delta = d10 + d12;
375
+
376
+ // Cosine of the reflected angle.
377
+ float sin1 = pow(n0 / n1, 2.0) * (1.0 - pow(cos0, 2.0));
378
+
379
+ // Total internal reflection.
380
+ if (sin1 > 1.0) return 1.0;
381
+ float cos1 = sqrt(1.0 - sin1);
382
+
383
+ // Cosine of the final transmitted angle, i.e. cos(theta_2)
384
+ // This angle is for the Fresnel term at the bottom interface.
385
+ float sin2 = pow(n0 / n2, 2.0) * (1.0 - pow(cos0, 2.0));
386
+
387
+ // Total internal reflection.
388
+ if (sin2 > 1.0) return 1.0;
389
+
390
+ float cos2 = sqrt(1.0 - sin2);
391
+
392
+ // Reflection transmission amplitude Fresnel coefficients.
393
+ // rho_10 * rho_12 (s-polarized)
394
+ float alpha_s = rs(n1, n0, cos1, cos0) * rs(n1, n2, cos1, cos2);
395
+ // rho_10 * rho_12 (p-polarized)
396
+ float alpha_p = rp(n1, n0, cos1, cos0) * rp(n1, n2, cos1, cos2);
397
+
398
+ // tau_01 * tau_12 (s-polarized)
399
+ float beta_s = ts(n0, n1, cos0, cos1) * ts(n1, n2, cos1, cos2);
400
+ // tau_01 * tau_12 (p-polarized)
401
+ float beta_p = tp(n0, n1, cos0, cos1) * tp(n1, n2, cos1, cos2);
402
+
403
+ // Compute the phase term (phi).
404
+ float phi = (2.0 * PI / lambda) * (2.0 * n1 * thickness * cos1) + delta;
405
+
406
+ // Evaluate the transmitted intensity for the two possible polarizations.
407
+ float ts = pow(beta_s, 2.0) / (pow(alpha_s, 2.0) - 2.0 * alpha_s * cos(phi) + 1.0);
408
+ float tp = pow(beta_p, 2.0) / (pow(alpha_p, 2.0) - 2.0 * alpha_p * cos(phi) + 1.0);
409
+
410
+ // Take into account conservation of energy for transmission.
411
+ float beamRatio = (n2 * cos2) / (n0 * cos0);
412
+
413
+ // Calculate the average transmitted intensity (polarization distribution of the
414
+ // light source here. If unknown, 50%/50% average is generally used)
415
+ float t = beamRatio * (ts + tp) / 2.0;
416
+
417
+ // Derive the reflected intensity.
418
+ return 1.0 - t;
419
+ }
420
+
421
+ vec3 GetDiffraction(vec3 thickTex, vec3 I, vec3 N) {
422
+ const float thicknessMin = 250.0;
423
+ const float thicknessMax = 400.0;
424
+ const float nmedium = 1.0;
425
+ const float nfilm = 1.3;
426
+ const float ninternal = 1.0;
427
+
428
+ float cos0 = abs(dot(I, N));
429
+
430
+ float t = (thickTex[0] + thickTex[1] + thickTex[2]) / 3.0;
431
+ float thick = thicknessMin*(1.0 - t) + thicknessMax*t;
432
+
433
+ float red = thinFilmReflectance(cos0, 650.0, thick, nmedium, nfilm, ninternal);
434
+ float green = thinFilmReflectance(cos0, 510.0, thick, nmedium, nfilm, ninternal);
435
+ float blue = thinFilmReflectance(cos0, 475.0, thick, nmedium, nfilm, ninternal);
436
+
437
+ return vec3(red, green, blue);
438
+ }
439
+
440
+ vec3 computeLighting(vec3 normal, vec3 albedo, vec3 specColor, float shininess) {
441
+ if (!gl_FrontFacing) {
442
+ // Always use front-facing normal for double-sided surfaces.
443
+ normal *= -1.0;
444
+ }
445
+ vec3 lightDir0 = normalize(v_light_dir_0);
446
+ vec3 lightDir1 = normalize(v_light_dir_1);
447
+ vec3 eyeDir = -normalize(v_position);
448
+
449
+ vec3 lightOut0 = SurfaceShaderSpecularGloss(normal, lightDir0, eyeDir, u_SceneLight_0_color.rgb,
450
+ albedo, specColor, shininess);
451
+ vec3 lightOut1 = ShShaderWithSpec(normal, lightDir1, u_SceneLight_1_color.rgb, albedo, specColor);
452
+ vec3 ambientOut = albedo * u_ambient_light_color.rgb;
453
+
454
+ return (lightOut0 + lightOut1 + ambientOut);
455
+ }
456
+
457
+ void main() {
458
+ // Hardcode some shiny specular values
459
+ float shininess = .8;
460
+ vec3 albedo = v_color.rgb * .2;
461
+
462
+ // Calculate rim
463
+ vec3 viewDir = normalize(cameraPosition - v_worldPosition);
464
+ vec3 normal = v_normal;
465
+
466
+ float rim = 1.0 - abs(dot(normalize(viewDir), v_worldNormal));
467
+ rim *= 1.0 - pow(rim, 5.0);
468
+
469
+ rim = mix(rim, 150.0,
470
+ 1.0 - clamp(abs(dot(normalize(viewDir), v_worldNormal)) / .1, 0.0, 1.0));
471
+
472
+ vec3 diffraction = texture(u_MainTex, vec2(rim + u_time.x * .3 + normal.x, rim + normal.y)).xyz;
473
+ diffraction = GetDiffraction(diffraction, normal, normalize(viewDir));
474
+
475
+ vec3 emission = rim * v_color.rgb * diffraction * .5 + rim * diffraction * .25;
476
+ vec3 specColor = v_color.rgb * clamp(diffraction, 0.0, 1.0);
477
+
478
+ fragColor.rgb = computeLighting(v_normal, albedo, specColor, shininess) + emission;
479
+ fragColor.a = 1.0;
480
+ }
481
+