@dcl-regenesislabs/bevy-explorer-web 0.1.0-18229784557.commit-ef374b9

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 (277) hide show
  1. package/asset_loader.js +31 -0
  2. package/assets/animations/Dance_Female.glb +0 -0
  3. package/assets/animations/Dance_Male.glb +0 -0
  4. package/assets/animations/F_FistPump.glb +0 -0
  5. package/assets/animations/F_RobotDance.glb +0 -0
  6. package/assets/animations/Hands_Air.glb +0 -0
  7. package/assets/animations/M_FistPump.glb +0 -0
  8. package/assets/animations/M_RobotDance.glb +0 -0
  9. package/assets/animations/Raise_Hand.glb +0 -0
  10. package/assets/animations/Throw Money-Emote.glb +0 -0
  11. package/assets/animations/Wave_Female.glb +0 -0
  12. package/assets/animations/Wave_Male.glb +0 -0
  13. package/assets/animations/clap.glb +0 -0
  14. package/assets/animations/disco_dance.glb +0 -0
  15. package/assets/animations/dont_wanna_see.glb +0 -0
  16. package/assets/animations/f_head_explode.glb +0 -0
  17. package/assets/animations/idle.glb +0 -0
  18. package/assets/animations/jump2.glb +0 -0
  19. package/assets/animations/kiss.glb +0 -0
  20. package/assets/animations/m_head_explode.glb +0 -0
  21. package/assets/animations/mchammer-dance.glb +0 -0
  22. package/assets/animations/run.glb +0 -0
  23. package/assets/animations/shrug.glb +0 -0
  24. package/assets/animations/tektonik-dance.glb +0 -0
  25. package/assets/animations/thumbnails/clap.png +0 -0
  26. package/assets/animations/thumbnails/dance.png +0 -0
  27. package/assets/animations/thumbnails/disco.png +0 -0
  28. package/assets/animations/thumbnails/dontsee.png +0 -0
  29. package/assets/animations/thumbnails/fistpump.png +0 -0
  30. package/assets/animations/thumbnails/hammer.png +0 -0
  31. package/assets/animations/thumbnails/handsair.png +0 -0
  32. package/assets/animations/thumbnails/headexplode.png +0 -0
  33. package/assets/animations/thumbnails/kiss.png +0 -0
  34. package/assets/animations/thumbnails/money.png +0 -0
  35. package/assets/animations/thumbnails/raisehand.png +0 -0
  36. package/assets/animations/thumbnails/robot.png +0 -0
  37. package/assets/animations/thumbnails/shrug.png +0 -0
  38. package/assets/animations/thumbnails/tektonik.png +0 -0
  39. package/assets/animations/thumbnails/tik.png +0 -0
  40. package/assets/animations/thumbnails/wave.png +0 -0
  41. package/assets/animations/tik-tok-dance.glb +0 -0
  42. package/assets/animations/walk.glb +0 -0
  43. package/assets/fonts/NotoSans-Bold.ttf +0 -0
  44. package/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
  45. package/assets/fonts/NotoSans-Italic.ttf +0 -0
  46. package/assets/fonts/NotoSans-Regular.ttf +0 -0
  47. package/assets/fonts/NotoSansMono-Bold.ttf +0 -0
  48. package/assets/fonts/NotoSansMono-Regular.ttf +0 -0
  49. package/assets/fonts/NotoSerif-Bold.ttf +0 -0
  50. package/assets/fonts/NotoSerif-BoldItalic.ttf +0 -0
  51. package/assets/fonts/NotoSerif-Italic.ttf +0 -0
  52. package/assets/fonts/NotoSerif-Regular.ttf +0 -0
  53. package/assets/fonts/OFL.txt +93 -0
  54. package/assets/images/FriendsIcon.png +0 -0
  55. package/assets/images/ask.png +0 -0
  56. package/assets/images/backpack/Background.jpeg +0 -0
  57. package/assets/images/backpack/empty.png +0 -0
  58. package/assets/images/backpack/item_bg.png +0 -0
  59. package/assets/images/backpack/wearable_categories/body_shape.png +0 -0
  60. package/assets/images/backpack/wearable_categories/earring.png +0 -0
  61. package/assets/images/backpack/wearable_categories/eyebrows.png +0 -0
  62. package/assets/images/backpack/wearable_categories/eyes.png +0 -0
  63. package/assets/images/backpack/wearable_categories/eyewear.png +0 -0
  64. package/assets/images/backpack/wearable_categories/facial_hair.png +0 -0
  65. package/assets/images/backpack/wearable_categories/feet.png +0 -0
  66. package/assets/images/backpack/wearable_categories/hair.png +0 -0
  67. package/assets/images/backpack/wearable_categories/hands_wear.png +0 -0
  68. package/assets/images/backpack/wearable_categories/hat.png +0 -0
  69. package/assets/images/backpack/wearable_categories/helmet.png +0 -0
  70. package/assets/images/backpack/wearable_categories/lower_body.png +0 -0
  71. package/assets/images/backpack/wearable_categories/mask.png +0 -0
  72. package/assets/images/backpack/wearable_categories/mouth.png +0 -0
  73. package/assets/images/backpack/wearable_categories/skin.png +0 -0
  74. package/assets/images/backpack/wearable_categories/tiara.png +0 -0
  75. package/assets/images/backpack/wearable_categories/top_head.png +0 -0
  76. package/assets/images/backpack/wearable_categories/upper_body.png +0 -0
  77. package/assets/images/button copy.png +0 -0
  78. package/assets/images/button.png +0 -0
  79. package/assets/images/button_base.png +0 -0
  80. package/assets/images/chat_button.png +0 -0
  81. package/assets/images/copy.png +0 -0
  82. package/assets/images/crosshair.png +0 -0
  83. package/assets/images/cursor.png +0 -0
  84. package/assets/images/dao_small.png +0 -0
  85. package/assets/images/dcl-godot-bevy.png +0 -0
  86. package/assets/images/discover/art.png +0 -0
  87. package/assets/images/discover/business.png +0 -0
  88. package/assets/images/discover/casino.png +0 -0
  89. package/assets/images/discover/crypto.png +0 -0
  90. package/assets/images/discover/education.png +0 -0
  91. package/assets/images/discover/eye.png +0 -0
  92. package/assets/images/discover/fashion.png +0 -0
  93. package/assets/images/discover/featured.png +0 -0
  94. package/assets/images/discover/game.png +0 -0
  95. package/assets/images/discover/icons.png +0 -0
  96. package/assets/images/discover/music.png +0 -0
  97. package/assets/images/discover/point of interest.png +0 -0
  98. package/assets/images/discover/shop.png +0 -0
  99. package/assets/images/discover/social.png +0 -0
  100. package/assets/images/discover/sports.png +0 -0
  101. package/assets/images/discover/thumbsup.png +0 -0
  102. package/assets/images/emote-button-background.png +0 -0
  103. package/assets/images/emote_button.png +0 -0
  104. package/assets/images/genesis_tx.png +0 -0
  105. package/assets/images/grid.png +0 -0
  106. package/assets/images/grip.png +0 -0
  107. package/assets/images/left-arrow.png +0 -0
  108. package/assets/images/line.png +0 -0
  109. package/assets/images/mic_button_inactive.png +0 -0
  110. package/assets/images/mic_button_off.png +0 -0
  111. package/assets/images/mic_button_on.png +0 -0
  112. package/assets/images/next.png +0 -0
  113. package/assets/images/person.png +0 -0
  114. package/assets/images/person_button.png +0 -0
  115. package/assets/images/profile_button.png +0 -0
  116. package/assets/images/redx.png +0 -0
  117. package/assets/images/right-arrow.png +0 -0
  118. package/assets/images/screenshots/montage.png +0 -0
  119. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_1.png.png +0 -0
  120. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_2.png.png +0 -0
  121. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_3.png.png +0 -0
  122. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_4.png.png +0 -0
  123. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_gltfcontainer_avocado.png.png +0 -0
  124. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_gltfcontainer_hev.png.png +0 -0
  125. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_01.png.png +0 -0
  126. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_02.png.png +0 -0
  127. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_03.png.png +0 -0
  128. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_04.png.png +0 -0
  129. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_05.png.png +0 -0
  130. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_06.png.png +0 -0
  131. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_07.png.png +0 -0
  132. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_08.png.png +0 -0
  133. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_09.png.png +0 -0
  134. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_10.png.png +0 -0
  135. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_11.png.png +0 -0
  136. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_12.png.png +0 -0
  137. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_13.png.png +0 -0
  138. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_14.png.png +0 -0
  139. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_box.png.png +0 -0
  140. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_cylinder.png.png +0 -0
  141. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_plane.png.png +0 -0
  142. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_sphere.png.png +0 -0
  143. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_1.png.png +0 -0
  144. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_2.png.png +0 -0
  145. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_3.png.png +0 -0
  146. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_4.png.png +0 -0
  147. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_5.png.png +0 -0
  148. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_6.png.png +0 -0
  149. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_green.png.png +0 -0
  150. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_red.png.png +0 -0
  151. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_rocks.png.png +0 -0
  152. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_text_1.png.png +0 -0
  153. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_text_2.png.png +0 -0
  154. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_1.png.png +0 -0
  155. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_2.png.png +0 -0
  156. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_3.png.png +0 -0
  157. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_4.png.png +0 -0
  158. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_visibility_false.png.png +0 -0
  159. package/assets/images/screenshots/screenshot%2Fbevy_snapshot_visibility_true.png.png +0 -0
  160. package/assets/images/skybox/skybox_cubemap.png +0 -0
  161. package/assets/images/skybox/skybox_cubemap_original.png +0 -0
  162. package/assets/images/spinner.png +0 -0
  163. package/assets/images/spinner_atlas.png +0 -0
  164. package/assets/images/tick.png +0 -0
  165. package/assets/images/toggle-off.png +0 -0
  166. package/assets/images/toggle-on.png +0 -0
  167. package/assets/images/unknown_person.png +0 -0
  168. package/assets/images/you_are_here.png +0 -0
  169. package/assets/nft_shapes/Baroque_Ornament.glb +0 -0
  170. package/assets/nft_shapes/Blocky.glb +0 -0
  171. package/assets/nft_shapes/Canvas.glb +0 -0
  172. package/assets/nft_shapes/Classic.glb +0 -0
  173. package/assets/nft_shapes/Diamond_Ornament.glb +0 -0
  174. package/assets/nft_shapes/Floor_Wood01.png +0 -0
  175. package/assets/nft_shapes/Genesis_TX.png +0 -0
  176. package/assets/nft_shapes/Gold_Carved.glb +0 -0
  177. package/assets/nft_shapes/Gold_Edges.glb +0 -0
  178. package/assets/nft_shapes/Gold_Rounded.glb +0 -0
  179. package/assets/nft_shapes/Gold_Wide.glb +0 -0
  180. package/assets/nft_shapes/Metal_Medium.glb +0 -0
  181. package/assets/nft_shapes/Metal_Rounded.glb +0 -0
  182. package/assets/nft_shapes/Metal_Slim.glb +0 -0
  183. package/assets/nft_shapes/Metal_Wide.glb +0 -0
  184. package/assets/nft_shapes/Minimal_Black.glb +0 -0
  185. package/assets/nft_shapes/Minimal_Grey.glb +0 -0
  186. package/assets/nft_shapes/Minimal_White.glb +0 -0
  187. package/assets/nft_shapes/Minimal_Wide.glb +0 -0
  188. package/assets/nft_shapes/MulticolorDotsLoading.png +0 -0
  189. package/assets/nft_shapes/NFTIcon.png +0 -0
  190. package/assets/nft_shapes/NoneIcon.png +0 -0
  191. package/assets/nft_shapes/Pins.glb +0 -0
  192. package/assets/nft_shapes/Tape.glb +0 -0
  193. package/assets/nft_shapes/Wood_Slim.glb +0 -0
  194. package/assets/nft_shapes/Wood_Twigs.glb +0 -0
  195. package/assets/nft_shapes/Wood_Wide.glb +0 -0
  196. package/assets/shaders/bound_material.wgsl +183 -0
  197. package/assets/shaders/bound_material_baker.wgsl +145 -0
  198. package/assets/shaders/bound_node.wgsl +57 -0
  199. package/assets/shaders/bound_prepass.wgsl +160 -0
  200. package/assets/shaders/floor_bake.wgsl +30 -0
  201. package/assets/shaders/floor_fragment.wgsl +74 -0
  202. package/assets/shaders/floor_vertex.wgsl +47 -0
  203. package/assets/shaders/loading.wgsl +35 -0
  204. package/assets/shaders/mask_material.wgsl +117 -0
  205. package/assets/shaders/nineslice_material.wgsl +47 -0
  206. package/assets/shaders/nishita_cloud.wgsl +378 -0
  207. package/assets/shaders/outline.wgsl +69 -0
  208. package/assets/shaders/simplex.wgsl +77 -0
  209. package/assets/shaders/stretch_uv_material.wgsl +79 -0
  210. package/assets/shaders/text_quad_vertex.wgsl +78 -0
  211. package/assets/sounds/avatar/avatar_footstep_jump01.wav +0 -0
  212. package/assets/sounds/avatar/avatar_footstep_jump02.wav +0 -0
  213. package/assets/sounds/avatar/avatar_footstep_jump03.wav +0 -0
  214. package/assets/sounds/avatar/avatar_footstep_land01.wav +0 -0
  215. package/assets/sounds/avatar/avatar_footstep_land02.wav +0 -0
  216. package/assets/sounds/avatar/avatar_footstep_run01.wav +0 -0
  217. package/assets/sounds/avatar/avatar_footstep_run02.wav +0 -0
  218. package/assets/sounds/avatar/avatar_footstep_run03.wav +0 -0
  219. package/assets/sounds/avatar/avatar_footstep_run04.wav +0 -0
  220. package/assets/sounds/avatar/avatar_footstep_run05.wav +0 -0
  221. package/assets/sounds/avatar/avatar_footstep_run06.wav +0 -0
  222. package/assets/sounds/avatar/avatar_footstep_run07.wav +0 -0
  223. package/assets/sounds/avatar/avatar_footstep_run08.wav +0 -0
  224. package/assets/sounds/avatar/avatar_footstep_walk01.wav +0 -0
  225. package/assets/sounds/avatar/avatar_footstep_walk02.wav +0 -0
  226. package/assets/sounds/avatar/avatar_footstep_walk03.wav +0 -0
  227. package/assets/sounds/avatar/avatar_footstep_walk04.wav +0 -0
  228. package/assets/sounds/avatar/avatar_footstep_walk05.wav +0 -0
  229. package/assets/sounds/avatar/avatar_footstep_walk06.wav +0 -0
  230. package/assets/sounds/avatar/avatar_footstep_walk07.wav +0 -0
  231. package/assets/sounds/avatar/avatar_footstep_walk08.wav +0 -0
  232. package/assets/sounds/ui/generic_button_hover.wav +0 -0
  233. package/assets/sounds/ui/generic_button_press.wav +0 -0
  234. package/assets/sounds/ui/mainmenu_widget_open.wav +0 -0
  235. package/assets/sounds/ui/toggle_disable.wav +0 -0
  236. package/assets/sounds/ui/toggle_enable.wav +0 -0
  237. package/assets/sounds/ui/voice_chat_mic_off.wav +0 -0
  238. package/assets/sounds/ui/voice_chat_mic_on.wav +0 -0
  239. package/assets/sounds/ui/widget_chat_message_private_send.wav +0 -0
  240. package/assets/sounds/ui/widget_emotes_close.wav +0 -0
  241. package/assets/sounds/ui/widget_emotes_highlight.wav +0 -0
  242. package/assets/sounds/ui/widget_emotes_open.wav +0 -0
  243. package/assets/ui/app_settings.dui +91 -0
  244. package/assets/ui/avatar.dui +18 -0
  245. package/assets/ui/button.dui +78 -0
  246. package/assets/ui/change-realm.dui +46 -0
  247. package/assets/ui/chat.dui +182 -0
  248. package/assets/ui/combo.dui +23 -0
  249. package/assets/ui/dialog.dui +46 -0
  250. package/assets/ui/discover.dui +139 -0
  251. package/assets/ui/emote-select.dui +45 -0
  252. package/assets/ui/emote.dui +116 -0
  253. package/assets/ui/foreign-profile-dialog.dui +18 -0
  254. package/assets/ui/fullscreen-block.dui +12 -0
  255. package/assets/ui/login.dui +72 -0
  256. package/assets/ui/map.dui +8 -0
  257. package/assets/ui/minimap.dui +16 -0
  258. package/assets/ui/motd.dui +25 -0
  259. package/assets/ui/nft-dialog.dui +29 -0
  260. package/assets/ui/oow.dui +41 -0
  261. package/assets/ui/permissions-dialog.dui +39 -0
  262. package/assets/ui/permissions.dui +54 -0
  263. package/assets/ui/profile-detail.dui +24 -0
  264. package/assets/ui/profile.dui +29 -0
  265. package/assets/ui/spinner.dui +3 -0
  266. package/assets/ui/toast.dui +27 -0
  267. package/assets/ui/tracker.dui +21 -0
  268. package/assets/ui/update.dui +16 -0
  269. package/assets/ui/utils.dui +40 -0
  270. package/assets/ui/wearables.dui +134 -0
  271. package/gpu_cache.js +302 -0
  272. package/index.html +134 -0
  273. package/main.js +284 -0
  274. package/package.json +9 -0
  275. package/sandbox_worker.js +394 -0
  276. package/serve.json +21 -0
  277. package/service_worker.js +93 -0
@@ -0,0 +1,77 @@
1
+ // simplex noise
2
+ fn simplex_noise_3d(v: vec3<f32>) -> f32 {
3
+ let C = vec2(1. / 6., 1. / 3.);
4
+ let D = vec4(0., 0.5, 1., 2.);
5
+
6
+ // first corner
7
+ var i = floor(v + dot(v, C.yyy));
8
+ let x0 = v - i + dot(i, C.xxx);
9
+
10
+ // other corners
11
+ let g = step(x0.yzx, x0.xyz);
12
+ let l = 1. - g;
13
+ let i1 = min(g.xyz, l.zxy);
14
+ let i2 = max(g.xyz, l.zxy);
15
+
16
+ // x0 = x0 - 0. + 0. * C
17
+ let x1 = x0 - i1 + 1. * C.xxx;
18
+ let x2 = x0 - i2 + 2. * C.xxx;
19
+ let x3 = x0 - 1. + 3. * C.xxx;
20
+
21
+ // permutations
22
+ i = i % vec3(289.);
23
+ let p = permute_4_(permute_4_(permute_4_(
24
+ i.z + vec4(0., i1.z, i2.z, 1.)) +
25
+ i.y + vec4(0., i1.y, i2.y, 1.)) +
26
+ i.x + vec4(0., i1.x, i2.x, 1.)
27
+ );
28
+
29
+ // gradients (NxN points uniformly over a square, mapped onto an octahedron)
30
+ let n_ = 1. / 7.; // N=7
31
+ let ns = n_ * D.wyz - D.xzx;
32
+
33
+ let j = p - 49. * floor(p * ns.z * ns.z); // mod(p, N*N)
34
+
35
+ let x_ = floor(j * ns.z);
36
+ let y_ = floor(j - 7. * x_); // mod(j, N)
37
+
38
+ let x = x_ * ns.x + ns.yyyy;
39
+ let y = y_ * ns.x + ns.yyyy;
40
+ let h = 1. - abs(x) - abs(y);
41
+
42
+ let b0 = vec4(x.xy, y.xy);
43
+ let b1 = vec4(x.zw, y.zw);
44
+
45
+ let s0 = floor(b0) * 2. + 1.;
46
+ let s1 = floor(b1) * 2. + 1.;
47
+ let sh = -step(h, vec4(0.));
48
+
49
+ let a0 = b0.xzyw + s0.xzyw * sh.xxyy;
50
+ let a1 = b1.xzyw + s1.xzyw * sh.zzww;
51
+
52
+ var p0 = vec3(a0.xy, h.x);
53
+ var p1 = vec3(a0.zw, h.y);
54
+ var p2 = vec3(a1.xy, h.z);
55
+ var p3 = vec3(a1.zw, h.w);
56
+
57
+ // normalize gradients
58
+ let norm = taylor_inv_sqrt_4_(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
59
+ p0 = p0 * norm.x;
60
+ p1 = p1 * norm.y;
61
+ p2 = p2 * norm.z;
62
+ p3 = p3 * norm.w;
63
+
64
+ // mix final noise value
65
+ var m = 0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3));
66
+ m = max(m, vec4(0.));
67
+ m *= m;
68
+ return 42. * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
69
+ }
70
+
71
+ fn permute_4_(x: vec4<f32>) -> vec4<f32> {
72
+ return ((x * 34. + 1.) * x) % vec4<f32>(289.);
73
+ }
74
+
75
+ fn taylor_inv_sqrt_4_(r: vec4<f32>) -> vec4<f32> {
76
+ return 1.79284291400159 - 0.85373472095314 * r;
77
+ }
@@ -0,0 +1,79 @@
1
+ #import bevy_ui::ui_vertex_output::UiVertexOutput
2
+
3
+ @group(1) @binding(0) var image_texture: texture_2d<f32>;
4
+ @group(1) @binding(1) var image_sampler: sampler;
5
+ @group(1) @binding(2) var<uniform> uvs: array<vec4<f32>,2>;
6
+ @group(1) @binding(3) var<uniform> color: vec4<f32>;
7
+
8
+ fn sd_rounded_box(point: vec2<f32>, size: vec2<f32>, corner_radii: vec4<f32>) -> f32 {
9
+ // If 0.0 < y then select bottom left (w) and bottom right corner radius (z).
10
+ // Else select top left (x) and top right corner radius (y).
11
+ let rs = select(corner_radii.xy, corner_radii.wz, 0.0 < point.y);
12
+ // w and z are swapped above so that both pairs are in left to right order, otherwise this second
13
+ // select statement would return the incorrect value for the bottom pair.
14
+ let radius = select(rs.x, rs.y, 0.0 < point.x);
15
+ // Vector from the corner closest to the point, to the point.
16
+ let corner_to_point = abs(point) - 0.5 * size;
17
+ // Vector from the center of the radius circle to the point.
18
+ let q = corner_to_point + radius;
19
+ // Length from center of the radius circle to the point, zeros a component if the point is not
20
+ // within the quadrant of the radius circle that is part of the curved corner.
21
+ let l = length(max(q, vec2(0.0)));
22
+ let m = min(max(q.x, q.y), 0.0);
23
+ return l + m - radius;
24
+ }
25
+
26
+ fn sd_inset_rounded_box(point: vec2<f32>, size: vec2<f32>, radius: vec4<f32>, inset: vec4<f32>) -> f32 {
27
+ let inner_size = size - inset.xy - inset.zw;
28
+ let inner_center = inset.xy + 0.5 * inner_size - 0.5 * size;
29
+ let inner_point = point - inner_center;
30
+
31
+ var r = radius;
32
+
33
+ // Top left corner.
34
+ r.x = r.x - max(inset.x, inset.y);
35
+
36
+ // Top right corner.
37
+ r.y = r.y - max(inset.z, inset.y);
38
+
39
+ // Bottom right corner.
40
+ r.z = r.z - max(inset.z, inset.w);
41
+
42
+ // Bottom left corner.
43
+ r.w = r.w - max(inset.x, inset.w);
44
+
45
+ let half_size = inner_size * 0.5;
46
+ let min_size = min(half_size.x, half_size.y);
47
+
48
+ r = min(max(r, vec4(0.0)), vec4<f32>(min_size));
49
+
50
+ return sd_rounded_box(inner_point, inner_size, r);
51
+ }
52
+
53
+ fn draw(in: UiVertexOutput, color: vec4<f32>) -> vec4<f32> {
54
+ // Signed distances. The magnitude is the distance of the point from the edge of the shape.
55
+ // * Negative values indicate that the point is inside the shape.
56
+ // * Zero values indicate the point is on the edge of the shape.
57
+ // * Positive values indicate the point is outside the shape.
58
+
59
+ let point = (in.uv - vec2<f32>(0.5)) * in.size;
60
+
61
+ // Signed distance from the border's internal edge (the signed distance is negative if the point
62
+ // is inside the rect but not on the border).
63
+ // If the border size is set to zero, this is the same as the external distance.
64
+ let internal_distance = -sd_inset_rounded_box(point, in.size, in.border_radius, in.border_widths);
65
+
66
+ let t = saturate(internal_distance + 1.0);
67
+
68
+ return vec4(color.rgb, saturate(color.a * t));
69
+ }
70
+
71
+ @fragment
72
+ fn fragment(in: UiVertexOutput) -> @location(0) vec4<f32> {
73
+ // this is a bit lazy; really we should find a way to push the uvs directly into the vertex buffer
74
+ let uv = mix(mix(uvs[0].xy, uvs[1].zw, in.uv.x), mix(uvs[0].zw, uvs[1].xy, in.uv.x), 1.0 - in.uv.y) * vec2<f32>(1.0, -1.0) + vec2<f32>(0.0, 1.0);
75
+
76
+ let texture_color = textureSample(image_texture, image_sampler, uv) * color;
77
+ return draw(in, texture_color);
78
+ // return texture_color;
79
+ }
@@ -0,0 +1,78 @@
1
+ #import bevy_pbr::{
2
+ mesh_functions,
3
+ view_transformations::position_world_to_clip,
4
+ pbr_bindings::base_color_texture,
5
+ mesh_view_bindings::view,
6
+ }
7
+ #import bevy_render::instance_index::get_instance_index
8
+
9
+ #ifdef PREPASS_PIPELINE
10
+ #import bevy_pbr::prepass_io::{Vertex, VertexOutput};
11
+ #else
12
+ #import bevy_pbr::forward_io::{Vertex, VertexOutput};
13
+ #endif
14
+
15
+ struct TextQuadData {
16
+ uvs: vec4<f32>,
17
+ valign: f32,
18
+ halign: f32,
19
+ pix_per_m: f32,
20
+ add_y_pix: f32,
21
+ vertex_billboard: u32,
22
+ }
23
+
24
+ @group(2) @binding(200)
25
+ var<uniform> quad_data: TextQuadData;
26
+
27
+ @vertex
28
+ fn vertex(vertex_no_morph: Vertex) -> VertexOutput {
29
+ var out: VertexOutput;
30
+ var vertex = vertex_no_morph;
31
+
32
+ // Use vertex_no_morph.instance_index instead of vertex.instance_index to work around a wgpu dx12 bug.
33
+ // See https://github.com/gfx-rs/naga/issues/2416 .
34
+ var model = mesh_functions::get_world_from_local(vertex_no_morph.instance_index);
35
+
36
+ // we assume a quad with [-0.5, 0.5] bounds in x,y and 0 in z
37
+ // then we take the pixels per meter and texture size to determine where the vertices should lie
38
+ let tex_dims = textureDimensions(base_color_texture);
39
+ let region_dims = quad_data.uvs.zw - quad_data.uvs.xy;
40
+ let modified_vertex_position = vec3<f32>(
41
+ (vertex.position.x + quad_data.halign) * f32(region_dims.x) / quad_data.pix_per_m,
42
+ ((vertex.position.y + quad_data.valign) * f32(region_dims.y) + quad_data.add_y_pix) / quad_data.pix_per_m,
43
+ 0.0
44
+ );
45
+
46
+ if (quad_data.vertex_billboard == 1u) {
47
+ out.world_position = mesh_functions::mesh_position_local_to_world(
48
+ mat4x4<f32>(
49
+ vec4<f32>(view.world_from_view[0].xyz, 0.0),
50
+ vec4<f32>(view.world_from_view[1].xyz, 0.0),
51
+ vec4<f32>(view.world_from_view[2].xyz, 0.0),
52
+ vec4<f32>(model[3].xyz, 1.0)
53
+ ),
54
+ vec4<f32>(modified_vertex_position, 1.0)
55
+ );
56
+ } else {
57
+ out.world_position = mesh_functions::mesh_position_local_to_world(model, vec4<f32>(modified_vertex_position, 1.0));
58
+ }
59
+ out.position = position_world_to_clip(out.world_position.xyz);
60
+
61
+ out.uv = mix(quad_data.uvs.xy, quad_data.uvs.zw, vertex.uv) / vec2<f32>(tex_dims.xy);
62
+
63
+ // Use vertex_no_morph.instance_index instead of vertex.instance_index to work around a wgpu dx12 bug.
64
+ // See https://github.com/gfx-rs/naga/issues/2416
65
+ out.instance_index = vertex_no_morph.instance_index;
66
+
67
+
68
+ #ifdef NORMAL_PREPASS_OR_DEFERRED_PREPASS
69
+ out.world_normal = mesh_functions::mesh_normal_local_to_world(
70
+ vertex.normal,
71
+ // Use vertex_no_morph.instance_index instead of vertex.instance_index to work around a wgpu dx12 bug.
72
+ // See https://github.com/gfx-rs/naga/issues/2416
73
+ vertex_no_morph.instance_index
74
+ );
75
+ #endif // NORMAL_PREPASS_OR_DEFERRED_PREPASS
76
+
77
+ return out;
78
+ }
@@ -0,0 +1,91 @@
1
+ <define-template id="settings-tab">
2
+ <div style="position-type: absolute; width: 100%; height: 100%; flex-grow: 1; flex-direction: row;">
3
+ <div style="flex-direction: column; width: 70%; height: 100%">
4
+ <vscroll>
5
+ <div id="settings" style="width: 100%; flex-direction: column; margin: 0px 2vmin 0px 0px;" />
6
+ </vscroll>
7
+ </div>
8
+ <div style="width: 30%; height: 100%; flex-direction: column;">
9
+ <hr />
10
+ <large-text text="Setting Info" />
11
+ <hr-thin />
12
+ <vscroll>
13
+ <div style="margin: 1vmin">
14
+ <med-text text="Hover a setting to show a description" id="settings-description" style="color: black" />
15
+ </div>
16
+ </vscroll>
17
+ </div>
18
+ </div>
19
+ </define-template>
20
+
21
+ <define-template id="enum-setting">
22
+ <div style="width: 100%; flex-direction: row; align-items: center;" interact="true">
23
+ <div style="flex-direction: column; align-items: flex-end; width: 50%; margin: 0px 2vmin 0px 0px;">
24
+ <large-text text="@title" style="color: black" />
25
+ </div>
26
+ <div style="width: 50%; flex-direction: row; align-items: center; margin: 1vmin">
27
+ <div><button img="images/left-arrow.png" onclick="@prev" image-width="5vmin" image-height="5vmin" /></div>
28
+ <bounds
29
+ style="flex-grow: 1; padding: 1vmin; justify-content: center;"
30
+ corner-size="2vmin"
31
+ blend-size="0.5vmin"
32
+ border-size="1vmin"
33
+ border-color="#7f569e"
34
+ color="#b2a1bf"
35
+ focus="block"
36
+ >
37
+ <large-text id="setting-label" text="@label-initial" style="color: #222222;" />
38
+ </bounds>
39
+ <div><button img="images/right-arrow.png" onclick="@next" image-width="5vmin" image-height="5vmin" /></div>
40
+ </div>
41
+ </div>
42
+ </define-template>
43
+
44
+ <define-template id="int-setting">
45
+ <div style="width: 100%; flex-direction: row; align-items: center;" interact="true">
46
+ <div style="flex-direction: column; align-items: flex-end; width: 50%; margin: 0px 2vmin 0px 0px;">
47
+ <large-text text="@title" style="color: black" />
48
+ </div>
49
+ <div style="width: 50%; flex-direction: row; align-items: center; margin: 1vmin">
50
+ <div><button img="images/left-arrow.png" onclickrepeat="@prev" image-width="5vmin" image-height="5vmin" /></div>
51
+ <div style="flex-direction: column; flex-grow: 1; align-items: center;">
52
+ <med-text text="@label-initial" id="setting-label" />
53
+ <div style="flex-direction: row; width: 100%;">
54
+ <bounds
55
+ id="container"
56
+ style="flex-grow: 1; margin: 1vmin; padding: 1vmin; height: 3vmin; justify-content: center; align-items: center;"
57
+ corner-size="2vmin"
58
+ blend-size="0.5vmin"
59
+ border-size="1vmin"
60
+ border-color="#7f569e"
61
+ color="#b2a1bf"
62
+ interact="true"
63
+ focus="block"
64
+ >
65
+
66
+ <div id="marker" style="position-type: absolute; max-width: 0px; max-height: 0px; align-items: center; justify-content: center; left: '@initial-offset'">
67
+ <bounds id="grip" style="position-type: absolute; width: 4vmin; height: 4vmin;"
68
+ corner-size="2vmin"
69
+ blend-size="2vmin"
70
+ border-size="1vmin"
71
+ border-color="#7f569e"
72
+ color="#b2a1bf"
73
+ >
74
+ <bounded style="width: 100%; height: 100%" bound-image="images/grip.png" />
75
+ </bounds>
76
+ </div>
77
+ </bounds>
78
+ </div>
79
+ </div>
80
+ <div><button img="images/right-arrow.png" onclickrepeat="@next" image-width="5vmin" image-height="5vmin" /></div>
81
+ </div>
82
+ </div>
83
+ </define-template>
84
+
85
+ <define-template id="settings-header">
86
+ <div style="width: 100%; flex-direction: column; margin: 0vmin 1vmin 1vmin 1vmin;">
87
+ <hr />
88
+ <large-text text="@label" />
89
+ <hr-thin />
90
+ </div>
91
+ </define-template>
@@ -0,0 +1,18 @@
1
+ <define-template id="avatar-nametag">
2
+ <div>
3
+ <div style="margin: 5px;">
4
+ <bounds
5
+ style="position-type: absolute; width: 100%; height: 100%;"
6
+ corner-size="1.5vmin"
7
+ blend-size="0vmin"
8
+ border-size="0.75vmin"
9
+ border-color="#eeeeee"
10
+ color="#446134"
11
+ >
12
+ </bounds>
13
+ <div style="margin: 5px; padding: 3px;">
14
+ <med-text text="@name" style="text-align: center;" wrap="false"/>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </define-template>
@@ -0,0 +1,78 @@
1
+ <!-- don't use directly, use "button" template from button.rs-->
2
+ <define-template id="button-base-text">
3
+ <div id="button-node" style="
4
+ flex-direction: column;
5
+ align-self: stretch;
6
+ align-items: center;
7
+ justify-content: center;
8
+ margin: 0.35vmin 0.7vmin 0.35vmin 0.7vmin;
9
+ ">
10
+ <bounds id="button-background"
11
+ style="position-type: absolute; width: 100%; height: 100%;"
12
+ corner-size="1.5vmin"
13
+ blend-size="0.125vmin"
14
+ border-size="0.75vmin"
15
+ border-color="#9c73af"
16
+ styles="active: #ccccff; inactive: #7f569e; hover: #e2d1ff; disabled: #555555;"
17
+ sounds="hover: 'generic_button_hover.wav'; press: 'generic_button_press.wav'"
18
+ />
19
+ <div style="
20
+ margin: 1vmin;
21
+ align-self: stretch;
22
+ align-items: center;
23
+ justify-content: center;
24
+ ">
25
+ <med-text id="label" text="@label" style="
26
+ text-align: center;
27
+ color: black;
28
+ " />
29
+ </div>
30
+ </div>
31
+ </define-template>
32
+
33
+ <!-- don't use directly, use "button" template from button.rs-->
34
+ <define-template id="button-base-notext">
35
+ <div id="button-node" style="
36
+ flex-direction: column;
37
+ align-self: stretch;
38
+ align-items: center;
39
+ justify-content: center;
40
+ margin: 0.35vmin 0.7vmin 0.35vmin 0.7vmin;
41
+ padding: 1vmin;
42
+ ">
43
+ <bounds id="button-background"
44
+ style="position-type: absolute; width: 100%; height: 100%;"
45
+ corner-size="1.5vmin"
46
+ blend-size="0.125vmin"
47
+ border-size="0.75vmin"
48
+ border-color="#9c73af"
49
+ styles="active: #ccccff; inactive: #7f569e; hover: #e2d1ff; disabled: #555555;"
50
+ sounds="hover: 'generic_button_hover.wav'; press: 'generic_button_press.wav'"
51
+ />
52
+ </div>
53
+ </define-template>
54
+
55
+ <!-- don't use directly, use "button" template from button.rs-->
56
+ <define-template id="button-base-image">
57
+ <div id="button-node" style="
58
+ flex-direction: column;
59
+ align-self: stretch;
60
+ align-items: center;
61
+ justify-content: center;
62
+ margin: 0.35vmin 0.7vmin 0.35vmin 0.7vmin;
63
+ width: '@width';
64
+ height: '@height';
65
+ ">
66
+ <bounds id="button-background"
67
+ style="position-type: absolute; width: 100%; height: 100%;"
68
+ corner-size="1.5vmin"
69
+ blend-size="0.125vmin"
70
+ border-size="0.75vmin"
71
+ border-color="#9c73af"
72
+ bound-image="@img"
73
+ styles="active: #ccccff; inactive: #7f569e; hover: #e2d1ff; disabled: #555555;"
74
+ sounds="hover: 'generic_button_hover.wav'; press: 'generic_button_press.wav'"
75
+ >
76
+ </bounds>
77
+ </div>
78
+ </define-template>
@@ -0,0 +1,46 @@
1
+ <define-template id="change-realm">
2
+ <dialog title="Select a new realm" buttons="@buttons">
3
+ <div style="flex-direction: column">
4
+ <div>
5
+ <large-text style="color: black;" text="Current realm: " />
6
+ <large-text style="color: black;" id="current-realm" text="@realm" />
7
+ </div>
8
+ </div>
9
+ <hr />
10
+ <div style="flex-direction: column; width: 100%">
11
+ <bounds
12
+ style="flex-grow: 1; justify-content: center; width: 95%;"
13
+ corner-size="2vmin"
14
+ blend-size="0.5vmin"
15
+ border-size="1vmin"
16
+ border-color="#00000000"
17
+ color="#00000000"
18
+ >
19
+ <med-text text="Realm" style="margin: 1.4vmin; color: black; width: 33%" />
20
+ <med-text text="Users Online" style="margin: 1.4vmin; color: black; width: 33%" />
21
+ <div style="width: 33%;" />
22
+ </bounds>
23
+ </div>
24
+ <hr />
25
+ <vscroll>
26
+ <div id="server-list" style="flex-direction: column; width: 95%">
27
+ <div style="align-items: center; justify-content: center;"><spinner /></div>
28
+ </div>
29
+ </vscroll>
30
+ </dialog>
31
+ </define-template>
32
+
33
+ <define-template id="server-item">
34
+ <bounds
35
+ style="flex-grow: 1; justify-content: center;"
36
+ corner-size="2vmin"
37
+ blend-size="0.5vmin"
38
+ border-size="1vmin"
39
+ border-color="#7f569e"
40
+ color="#b2a1bf"
41
+ >
42
+ <med-text text="@name" style="margin: 1.4vmin; color: black; width: 33%" />
43
+ <med-text text="@users" style="margin: 1.4vmin; color: black; width: 33%" />
44
+ <div style="width: 33%; justify-content: flex-end;"><button label="warp in" onclick="@onclick" enabled="@enabled" /></div>
45
+ </bounds>
46
+ </define-template>