bevy/examples/3d
Robert Walter 041731b7e0
Drawing Primitives with Gizmos (#11072)
The PR is in a reviewable state now in the sense that the basic
implementations are there. There are still some ToDos that I'm aware of:

- [x] docs for all the new structs and traits
- [x] implement `Default` and derive other useful traits for the new
structs
- [x] Take a look at the notes again (Do this after a first round of
reviews)
- [x] Take care of the repetition in the circle drawing functions

---

# Objective

- TLDR: This PR enables us to quickly draw all the newly added
primitives from `bevy_math` in immediate mode with gizmos
- Addresses #10571

## Solution

- This implements the first design idea I had that covered everything
that was mentioned in the Issue
https://github.com/bevyengine/bevy/issues/10571#issuecomment-1863646197

--- 

## Caveats

- I added the `Primitive(2/3)d` impls for `Direction(2/3)d` to make them
work with the current solution. We could impose less strict requirements
for the gizmoable objects and remove the impls afterwards if the
community doesn't like the current approach.

---

## Changelog

- implement capabilities to draw ellipses on the gizmo in general (this
was required to have some code which is able to draw the ellipse
primitive)
- refactored circle drawing code to use the more general ellipse drawing
code to keep code duplication low
- implement `Primitive2d` for `Direction2d` and impl `Primitive3d` for
`Direction3d`
- implement trait to draw primitives with specialized details with
gizmos
  - `GizmoPrimitive2d` for all the 2D primitives
  - `GizmoPrimitive3d` for all the 3D primitives
- (question while writing this: Does it actually matter if we split this
in 2D and 3D? I guess it could be useful in the future if we do
something based on the main rendering mode even though atm it's kinda
useless)

---

---------

Co-authored-by: nothendev <borodinov.ilya@gmail.com>
2024-02-02 21:13:03 +00:00
..
3d_gizmos.rs Drawing Primitives with Gizmos (#11072) 2024-02-02 21:13:03 +00:00
3d_scene.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
3d_shapes.rs RenderAssetPersistencePolicy → RenderAssetUsages (#11399) 2024-01-30 13:22:10 +00:00
3d_viewport_to_world.rs Use Direction3d for gizmos.circle normal (#11422) 2024-01-21 18:03:26 +00:00
animated_material.rs simplify animated_material example (#11576) 2024-01-28 21:58:05 +00:00
anti_aliasing.rs RenderAssetPersistencePolicy → RenderAssetUsages (#11399) 2024-01-30 13:22:10 +00:00
atmospheric_fog.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
blend_modes.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
bloom_3d.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
deferred_rendering.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
deterministic.rs Cleanup deterministic example (#11416) 2024-01-19 06:08:19 +00:00
fog.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
generate_custom_mesh.rs RenderAssetPersistencePolicy → RenderAssetUsages (#11399) 2024-01-30 13:22:10 +00:00
lighting.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
lightmaps.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
lines.rs RenderAssetPersistencePolicy → RenderAssetUsages (#11399) 2024-01-30 13:22:10 +00:00
load_gltf.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
orthographic.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
parallax_mapping.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
parenting.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
pbr.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
reflection_probes.rs Implement minimal reflection probes (fixed macOS, iOS, and Android). (#11366) 2024-01-19 07:33:52 +00:00
render_to_texture.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
shadow_biases.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
shadow_caster_receiver.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
skybox.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
spherical_area_lights.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
split_screen.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
spotlight.rs Meshlet prep (#11442) 2024-01-22 15:28:33 +00:00
ssao.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
texture.rs Use impl Into<A> for Assets::add (#10878) 2024-01-08 22:14:43 +00:00
tonemapping.rs return Direction3d from Transform::up and friends (#11604) 2024-02-02 15:05:35 +00:00
transmission.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
transparency_3d.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
two_passes.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
update_gltf_scene.rs Meshlet prep (#11442) 2024-01-22 15:28:33 +00:00
vertex_colors.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00
wireframe.rs Exposure settings (adopted) (#11347) 2024-01-16 14:53:21 +00:00