Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
TheButlah authored Sep 24, 2023
1 parent e82da3c commit 8a62bd2
Showing 1 changed file with 61 additions and 33 deletions.
94 changes: 61 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,52 +30,78 @@ Legend:
- 📋 = Planned
- ❌ = Blocked

Feel free to add to the following lists:
Additionally, **skills marked with 🫵 are easy for beginners**.
**skills marked 🥺 are pretty hard** 👉👈

### Skill List
### Skills
These are technical features are needed for a Social VR game. They are written as tiny demos of a single *thing*.

-[Single textured 3d cube](skills/cube)
- 📋 Flycam camera controller
- 📋 First person camera controller (for desktop users)
- 🚧 [World-space UI](skills/worldspace-ui) (with egui)
#### General
The skills in this section are general and often can be accomplished by piecing together existing
plugins/example code on the internet.

- 🫵 📋 Flycam camera controller
- 🫵 ✅ [Single textured 3d cube](skills/cube)
- 📋 Entity inspector (`bevy_inspector_egui`)
- 📋 Custom vertex and fragment shader in WGSL + bevy
-[Render a GLTF/VRM model (standard shader)](skills/ik)
-[Import a GLTF/VRM model (standard shader)](skills/ik)
-[Animate a skinned mesh with IK and FK](skills/ik)
- 🚧 [Mirror](skills/xr-ik-mirror)
- 🚧 [VR Inverse Kinematics](skills/xr-ik-mirror)
- 📋 Prove that custom vertex and fragment shaders on skinned meshes is possible
- 📋 MToon shader implemented in WGSL + bevy
- 📋 Render to side-by-side texture
- 📋 Display side-by-side textures as OpenVR overlay or stereokit window.
This is probably laggy, but allows use of VR before OpenXR is ready in bevy.
- 📋 Spatial audio
- 📋 Animate a skinned mesh with blendshapes/morph targets
- 📋 Non-deformable physics
- 📋 Jiggle physics/Dynamic bones
- 📋 Cloth or hair physics
- 📋 Hot reload shaders (no lag spike)
- 📋 Hot reload skinned meshes (no lag spike)
- 📋 Hot reload scene (no lag spike)
- 📋 Dynamic scaling of resolution
- 📋 Touch controls for flat in-game surfaces
- 📋 Dynamic foveated rendering
- 📋 Get tracked positions from SlimeVR/SolarXR
- 📋 Laser pointers
- 📋 First person camera controller (for desktop users)
- ❌ Hot reload scene (no lag spike) (blocked on bevy supporting hot reload for assets)
- ❌ Hot reload avatar and shaders (no lag spike) (blocked, see above)

#### UI/UX Design
The skills in this section are related to playing with UI/UX designs. VR is typically not required for working on these.

- 📋 Friends list menu
- 📋 Avatar list menu
- 📋 Active game worlds
- 📋 Invite notification and Invite accept
- 🫵 📋 Laser pointer visuals (you can work on this without VR)
- 🫵 📋 World-space gizmos for resizing, rotating, and moving objects and viewing bounding box
-[Rotating and resize flatscreen](skills/flatscreen-manipulation)
- 📋 Friends list ( Social Feature )
- 📋 Avatar list ( Social Feature )
- 📋 Active game worlds ( Social Feature )
- 📋 Invite and Invite accept ( Social Feature )
- 🥺 📋 Input scheme useful for social VR games that abstracts over mouse & keyboard, gamepad, VR Controllers,
and hand tracking (likely a superset of `bevy_mod_picking`).

#### Needs VR
The skills in this section are vr-specific and distinct from a regular flatscreen game. You will likely
need VR to work on these

-[OpenXR 6dof headset and controller tracking](skills/openxr-6dof)
- 📋 OpenXR Vive trackers (`XR_HTCX_vive_tracker_interaction`)
- 📋 Plugin to animate transform using 6dof data from OpenXR Vive trackers (`XR_HTCX_vive_tracker_interaction`)
- 📋 Plugin to animate transform using 6dof data from SlimeVR/SolarXR
- 📋 Add VR controllers as input method to `bevy_mod_picking`

#### Rendering
The skills in this section are all related to 3D rendering and go a bit deeper than just
using an existing plugin. VR is not necessary.

- 🥺 🚧 [World-space UI](skills/worldspace-ui) (with egui)
- 🫵 📋 Custom vertex and fragment shader in WGSL + bevy
- 🥺 🚧 [Mirror](skills/xr-ik-mirror)
- 🥺 📋 Plugin for MToon shaders implemented in WGSL + bevy
- 📋 Dynamic foveated rendering
- 📋 Dynamic scaling of resolution


#### Math, Physics, Animation
The skills in this section are all focused on math heavy parts of 3D game engines. VR is not necessary.

- 🚧 [VR Inverse Kinematics](skills/xr-ik-mirror)
- 📋 Jiggle physics/Dynamic bones
- 📋 Animate blendshapes/morph targets on a skinned mesh
- 🫵 📋 Non-deformable collision physics
- 🥺 ❌ Cloth or hair physics (blocked on a physics engine that does this)

#### Audio
- 🫵 📋 Spatial audio (bevy already supports this, just show how to use it)

### Demo List

- 📋 Comparison of different bevy networking libraries for shared state
- 📋 Create a VOIP API, abstract it over transport, and compare latency
of different web-compatible transports (probably WebRTC, WebTransport, WebSocket)
- 📋 Explore auto atlasing, shader merging, shader registry (is it possible?)
- [Leapmotion blocks] physics demo with interactions

## First time setup

Expand Down Expand Up @@ -116,3 +142,5 @@ at your option. This means you can select the license you prefer!
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, shall be dual licensed as above, without any
additional terms or conditions.

[Leapmotion blocks]: https://www.youtube.com/watch?v=oZ_53T2jBGg&pp=ygURbGVhcG1vdGlvbiBibG9ja3M%3D

0 comments on commit 8a62bd2

Please sign in to comment.