bevy/crates/bevy_sprite/src
Robert Swain b333386271 Add reusable shader functions for transforming position/normal/tangent (#4901)
# Objective

- Add reusable shader functions for transforming positions / normals / tangents between local and world / clip space for 2D and 3D so that they are done in a simple and correct way
- The next step in #3969 so check there for more details.

## Solution

- Add `bevy_pbr::mesh_functions` and `bevy_sprite::mesh2d_functions` shader imports
  - These contain `mesh_` and `mesh2d_` versions of the following functions:
    - `mesh_position_local_to_world`
    - `mesh_position_world_to_clip`
    - `mesh_position_local_to_clip`
    - `mesh_normal_local_to_world`
    - `mesh_tangent_local_to_world`
- Use them everywhere where it is appropriate
  - Notably not in the sprite and UI shaders where `mesh2d_position_world_to_clip` could have been used, but including all the functions depends on the mesh binding so I chose to not use the function there
- NOTE: The `mesh_` and `mesh2d_` functions are currently identical. However, if I had defined only `bevy_pbr::mesh_functions` and used that in bevy_sprite, then bevy_sprite would have a runtime dependency on bevy_pbr, which seems undesirable. I also expect that when we have a proper 2D rendering API, these functions will diverge between 2D and 3D.

---

## Changelog

- Added: `bevy_pbr::mesh_functions` and `bevy_sprite::mesh2d_functions` shader imports containing `mesh_` and `mesh2d_` versions of the following functions:
  - `mesh_position_local_to_world`
  - `mesh_position_world_to_clip`
  - `mesh_position_local_to_clip`
  - `mesh_normal_local_to_world`
  - `mesh_tangent_local_to_world`

## Migration Guide

- The `skin_tangents` function from the `bevy_pbr::skinning` shader import has been replaced with the `mesh_tangent_local_to_world` function from the `bevy_pbr::mesh_functions` shader import
2022-06-14 00:32:33 +00:00
..
mesh2d Add reusable shader functions for transforming position/normal/tangent (#4901) 2022-06-14 00:32:33 +00:00
render Add reusable shader functions for transforming position/normal/tangent (#4901) 2022-06-14 00:32:33 +00:00
bundle.rs Add 2d meshes and materials (#3460) 2022-01-08 01:29:08 +00:00
collide_aabb.rs Add the Inside version to the Collision enum (#2489) 2022-02-01 22:40:25 +00:00
dynamic_texture_atlas_builder.rs Replace old renderer with new renderer (#3312) 2021-12-14 03:58:23 +00:00
lib.rs Camera Driven Rendering (#4745) 2022-06-02 00:12:17 +00:00
rect.rs Implement the Overflow::Hidden style property for UI (#3296) 2021-12-19 05:44:28 +00:00
sprite.rs can specify an anchor for a sprite (#3463) 2022-04-04 22:09:59 +00:00
texture_atlas_builder.rs small and mostly pointless refactoring (#2934) 2022-02-13 22:33:55 +00:00
texture_atlas.rs Added offset parameter to TextureAtlas::from_grid_with_padding (#4836) 2022-05-30 19:58:16 +00:00