@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.
- package/asset_loader.js +31 -0
- package/assets/animations/Dance_Female.glb +0 -0
- package/assets/animations/Dance_Male.glb +0 -0
- package/assets/animations/F_FistPump.glb +0 -0
- package/assets/animations/F_RobotDance.glb +0 -0
- package/assets/animations/Hands_Air.glb +0 -0
- package/assets/animations/M_FistPump.glb +0 -0
- package/assets/animations/M_RobotDance.glb +0 -0
- package/assets/animations/Raise_Hand.glb +0 -0
- package/assets/animations/Throw Money-Emote.glb +0 -0
- package/assets/animations/Wave_Female.glb +0 -0
- package/assets/animations/Wave_Male.glb +0 -0
- package/assets/animations/clap.glb +0 -0
- package/assets/animations/disco_dance.glb +0 -0
- package/assets/animations/dont_wanna_see.glb +0 -0
- package/assets/animations/f_head_explode.glb +0 -0
- package/assets/animations/idle.glb +0 -0
- package/assets/animations/jump2.glb +0 -0
- package/assets/animations/kiss.glb +0 -0
- package/assets/animations/m_head_explode.glb +0 -0
- package/assets/animations/mchammer-dance.glb +0 -0
- package/assets/animations/run.glb +0 -0
- package/assets/animations/shrug.glb +0 -0
- package/assets/animations/tektonik-dance.glb +0 -0
- package/assets/animations/thumbnails/clap.png +0 -0
- package/assets/animations/thumbnails/dance.png +0 -0
- package/assets/animations/thumbnails/disco.png +0 -0
- package/assets/animations/thumbnails/dontsee.png +0 -0
- package/assets/animations/thumbnails/fistpump.png +0 -0
- package/assets/animations/thumbnails/hammer.png +0 -0
- package/assets/animations/thumbnails/handsair.png +0 -0
- package/assets/animations/thumbnails/headexplode.png +0 -0
- package/assets/animations/thumbnails/kiss.png +0 -0
- package/assets/animations/thumbnails/money.png +0 -0
- package/assets/animations/thumbnails/raisehand.png +0 -0
- package/assets/animations/thumbnails/robot.png +0 -0
- package/assets/animations/thumbnails/shrug.png +0 -0
- package/assets/animations/thumbnails/tektonik.png +0 -0
- package/assets/animations/thumbnails/tik.png +0 -0
- package/assets/animations/thumbnails/wave.png +0 -0
- package/assets/animations/tik-tok-dance.glb +0 -0
- package/assets/animations/walk.glb +0 -0
- package/assets/fonts/NotoSans-Bold.ttf +0 -0
- package/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
- package/assets/fonts/NotoSans-Italic.ttf +0 -0
- package/assets/fonts/NotoSans-Regular.ttf +0 -0
- package/assets/fonts/NotoSansMono-Bold.ttf +0 -0
- package/assets/fonts/NotoSansMono-Regular.ttf +0 -0
- package/assets/fonts/NotoSerif-Bold.ttf +0 -0
- package/assets/fonts/NotoSerif-BoldItalic.ttf +0 -0
- package/assets/fonts/NotoSerif-Italic.ttf +0 -0
- package/assets/fonts/NotoSerif-Regular.ttf +0 -0
- package/assets/fonts/OFL.txt +93 -0
- package/assets/images/FriendsIcon.png +0 -0
- package/assets/images/ask.png +0 -0
- package/assets/images/backpack/Background.jpeg +0 -0
- package/assets/images/backpack/empty.png +0 -0
- package/assets/images/backpack/item_bg.png +0 -0
- package/assets/images/backpack/wearable_categories/body_shape.png +0 -0
- package/assets/images/backpack/wearable_categories/earring.png +0 -0
- package/assets/images/backpack/wearable_categories/eyebrows.png +0 -0
- package/assets/images/backpack/wearable_categories/eyes.png +0 -0
- package/assets/images/backpack/wearable_categories/eyewear.png +0 -0
- package/assets/images/backpack/wearable_categories/facial_hair.png +0 -0
- package/assets/images/backpack/wearable_categories/feet.png +0 -0
- package/assets/images/backpack/wearable_categories/hair.png +0 -0
- package/assets/images/backpack/wearable_categories/hands_wear.png +0 -0
- package/assets/images/backpack/wearable_categories/hat.png +0 -0
- package/assets/images/backpack/wearable_categories/helmet.png +0 -0
- package/assets/images/backpack/wearable_categories/lower_body.png +0 -0
- package/assets/images/backpack/wearable_categories/mask.png +0 -0
- package/assets/images/backpack/wearable_categories/mouth.png +0 -0
- package/assets/images/backpack/wearable_categories/skin.png +0 -0
- package/assets/images/backpack/wearable_categories/tiara.png +0 -0
- package/assets/images/backpack/wearable_categories/top_head.png +0 -0
- package/assets/images/backpack/wearable_categories/upper_body.png +0 -0
- package/assets/images/button copy.png +0 -0
- package/assets/images/button.png +0 -0
- package/assets/images/button_base.png +0 -0
- package/assets/images/chat_button.png +0 -0
- package/assets/images/copy.png +0 -0
- package/assets/images/crosshair.png +0 -0
- package/assets/images/cursor.png +0 -0
- package/assets/images/dao_small.png +0 -0
- package/assets/images/dcl-godot-bevy.png +0 -0
- package/assets/images/discover/art.png +0 -0
- package/assets/images/discover/business.png +0 -0
- package/assets/images/discover/casino.png +0 -0
- package/assets/images/discover/crypto.png +0 -0
- package/assets/images/discover/education.png +0 -0
- package/assets/images/discover/eye.png +0 -0
- package/assets/images/discover/fashion.png +0 -0
- package/assets/images/discover/featured.png +0 -0
- package/assets/images/discover/game.png +0 -0
- package/assets/images/discover/icons.png +0 -0
- package/assets/images/discover/music.png +0 -0
- package/assets/images/discover/point of interest.png +0 -0
- package/assets/images/discover/shop.png +0 -0
- package/assets/images/discover/social.png +0 -0
- package/assets/images/discover/sports.png +0 -0
- package/assets/images/discover/thumbsup.png +0 -0
- package/assets/images/emote-button-background.png +0 -0
- package/assets/images/emote_button.png +0 -0
- package/assets/images/genesis_tx.png +0 -0
- package/assets/images/grid.png +0 -0
- package/assets/images/grip.png +0 -0
- package/assets/images/left-arrow.png +0 -0
- package/assets/images/line.png +0 -0
- package/assets/images/mic_button_inactive.png +0 -0
- package/assets/images/mic_button_off.png +0 -0
- package/assets/images/mic_button_on.png +0 -0
- package/assets/images/next.png +0 -0
- package/assets/images/person.png +0 -0
- package/assets/images/person_button.png +0 -0
- package/assets/images/profile_button.png +0 -0
- package/assets/images/redx.png +0 -0
- package/assets/images/right-arrow.png +0 -0
- package/assets/images/screenshots/montage.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_1.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_2.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_3.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_avatar_attach_4.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_gltfcontainer_avocado.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_gltfcontainer_hev.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_01.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_02.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_03.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_04.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_05.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_06.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_07.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_08.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_09.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_10.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_11.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_12.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_13.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_material_14.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_box.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_cylinder.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_plane.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_mesh_renderer_sphere.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_1.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_2.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_3.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_4.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_5.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_text_shape_6.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_green.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_red.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_background_all_screen_rocks.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_text_1.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_ui_text_2.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_1.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_2.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_3.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_video_player_4.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_visibility_false.png.png +0 -0
- package/assets/images/screenshots/screenshot%2Fbevy_snapshot_visibility_true.png.png +0 -0
- package/assets/images/skybox/skybox_cubemap.png +0 -0
- package/assets/images/skybox/skybox_cubemap_original.png +0 -0
- package/assets/images/spinner.png +0 -0
- package/assets/images/spinner_atlas.png +0 -0
- package/assets/images/tick.png +0 -0
- package/assets/images/toggle-off.png +0 -0
- package/assets/images/toggle-on.png +0 -0
- package/assets/images/unknown_person.png +0 -0
- package/assets/images/you_are_here.png +0 -0
- package/assets/nft_shapes/Baroque_Ornament.glb +0 -0
- package/assets/nft_shapes/Blocky.glb +0 -0
- package/assets/nft_shapes/Canvas.glb +0 -0
- package/assets/nft_shapes/Classic.glb +0 -0
- package/assets/nft_shapes/Diamond_Ornament.glb +0 -0
- package/assets/nft_shapes/Floor_Wood01.png +0 -0
- package/assets/nft_shapes/Genesis_TX.png +0 -0
- package/assets/nft_shapes/Gold_Carved.glb +0 -0
- package/assets/nft_shapes/Gold_Edges.glb +0 -0
- package/assets/nft_shapes/Gold_Rounded.glb +0 -0
- package/assets/nft_shapes/Gold_Wide.glb +0 -0
- package/assets/nft_shapes/Metal_Medium.glb +0 -0
- package/assets/nft_shapes/Metal_Rounded.glb +0 -0
- package/assets/nft_shapes/Metal_Slim.glb +0 -0
- package/assets/nft_shapes/Metal_Wide.glb +0 -0
- package/assets/nft_shapes/Minimal_Black.glb +0 -0
- package/assets/nft_shapes/Minimal_Grey.glb +0 -0
- package/assets/nft_shapes/Minimal_White.glb +0 -0
- package/assets/nft_shapes/Minimal_Wide.glb +0 -0
- package/assets/nft_shapes/MulticolorDotsLoading.png +0 -0
- package/assets/nft_shapes/NFTIcon.png +0 -0
- package/assets/nft_shapes/NoneIcon.png +0 -0
- package/assets/nft_shapes/Pins.glb +0 -0
- package/assets/nft_shapes/Tape.glb +0 -0
- package/assets/nft_shapes/Wood_Slim.glb +0 -0
- package/assets/nft_shapes/Wood_Twigs.glb +0 -0
- package/assets/nft_shapes/Wood_Wide.glb +0 -0
- package/assets/shaders/bound_material.wgsl +183 -0
- package/assets/shaders/bound_material_baker.wgsl +145 -0
- package/assets/shaders/bound_node.wgsl +57 -0
- package/assets/shaders/bound_prepass.wgsl +160 -0
- package/assets/shaders/floor_bake.wgsl +30 -0
- package/assets/shaders/floor_fragment.wgsl +74 -0
- package/assets/shaders/floor_vertex.wgsl +47 -0
- package/assets/shaders/loading.wgsl +35 -0
- package/assets/shaders/mask_material.wgsl +117 -0
- package/assets/shaders/nineslice_material.wgsl +47 -0
- package/assets/shaders/nishita_cloud.wgsl +378 -0
- package/assets/shaders/outline.wgsl +69 -0
- package/assets/shaders/simplex.wgsl +77 -0
- package/assets/shaders/stretch_uv_material.wgsl +79 -0
- package/assets/shaders/text_quad_vertex.wgsl +78 -0
- package/assets/sounds/avatar/avatar_footstep_jump01.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_jump02.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_jump03.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_land01.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_land02.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run01.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run02.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run03.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run04.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run05.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run06.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run07.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_run08.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk01.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk02.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk03.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk04.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk05.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk06.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk07.wav +0 -0
- package/assets/sounds/avatar/avatar_footstep_walk08.wav +0 -0
- package/assets/sounds/ui/generic_button_hover.wav +0 -0
- package/assets/sounds/ui/generic_button_press.wav +0 -0
- package/assets/sounds/ui/mainmenu_widget_open.wav +0 -0
- package/assets/sounds/ui/toggle_disable.wav +0 -0
- package/assets/sounds/ui/toggle_enable.wav +0 -0
- package/assets/sounds/ui/voice_chat_mic_off.wav +0 -0
- package/assets/sounds/ui/voice_chat_mic_on.wav +0 -0
- package/assets/sounds/ui/widget_chat_message_private_send.wav +0 -0
- package/assets/sounds/ui/widget_emotes_close.wav +0 -0
- package/assets/sounds/ui/widget_emotes_highlight.wav +0 -0
- package/assets/sounds/ui/widget_emotes_open.wav +0 -0
- package/assets/ui/app_settings.dui +91 -0
- package/assets/ui/avatar.dui +18 -0
- package/assets/ui/button.dui +78 -0
- package/assets/ui/change-realm.dui +46 -0
- package/assets/ui/chat.dui +182 -0
- package/assets/ui/combo.dui +23 -0
- package/assets/ui/dialog.dui +46 -0
- package/assets/ui/discover.dui +139 -0
- package/assets/ui/emote-select.dui +45 -0
- package/assets/ui/emote.dui +116 -0
- package/assets/ui/foreign-profile-dialog.dui +18 -0
- package/assets/ui/fullscreen-block.dui +12 -0
- package/assets/ui/login.dui +72 -0
- package/assets/ui/map.dui +8 -0
- package/assets/ui/minimap.dui +16 -0
- package/assets/ui/motd.dui +25 -0
- package/assets/ui/nft-dialog.dui +29 -0
- package/assets/ui/oow.dui +41 -0
- package/assets/ui/permissions-dialog.dui +39 -0
- package/assets/ui/permissions.dui +54 -0
- package/assets/ui/profile-detail.dui +24 -0
- package/assets/ui/profile.dui +29 -0
- package/assets/ui/spinner.dui +3 -0
- package/assets/ui/toast.dui +27 -0
- package/assets/ui/tracker.dui +21 -0
- package/assets/ui/update.dui +16 -0
- package/assets/ui/utils.dui +40 -0
- package/assets/ui/wearables.dui +134 -0
- package/gpu_cache.js +302 -0
- package/index.html +134 -0
- package/main.js +284 -0
- package/package.json +9 -0
- package/sandbox_worker.js +394 -0
- package/serve.json +21 -0
- 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
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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>
|