bevy/examples/shader
James Liu 2d727afaf7 Flatten render commands (#6885)
# Objective
Speed up the render phase of rendering. Simplify the trait structure for render commands.

## Solution

 - Merge `EntityPhaseItem` into `PhaseItem` (`EntityPhaseItem::entity` -> `PhaseItem::entity`)
 - Merge `EntityRenderCommand` into `RenderCommand`.
 - Add two associated types to `RenderCommand`: `RenderCommand::ViewWorldQuery` and `RenderCommand::WorldQuery`.
 - Use the new associated types to construct two `QueryStates`s for `RenderCommandState`.
 - Hoist any `SQuery<T>` fetches in `EntityRenderCommand`s into the aformentioned two queries. Batch fetch them all at once.

## Performance
`main_opaque_pass_3d` is slightly faster on `many_foxes` (427.52us -> 401.15us)

![image](https://user-images.githubusercontent.com/3137680/206359804-9928b20a-7d92-41f8-bf7d-6e8c5cc802f0.png)

The shadow pass node is also slightly faster (344.52 -> 338.24us)

![image](https://user-images.githubusercontent.com/3137680/206359977-1212198d-f933-49a0-80f1-62ff88eb5727.png)

## Future Work

 - Can we hoist the view level queries out of the core loop?

---

## Changelog
Added: `PhaseItem::entity`
Added: `RenderCommand::ViewWorldQuery` associated type.
Added: `RenderCommand::ItemorldQuery` associated type.
Added: `Draw<T>::prepare` optional trait function.
Removed: `EntityPhaseItem` trait

## Migration Guide
TODO
2023-01-04 01:13:30 +00:00
..
animate_shader.rs add globals to mesh view bind group (#5409) 2022-09-28 04:20:27 +00:00
array_texture.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
compute_shader_game_of_life.rs Add try_* to add_slot_edge, add_node_edge (#6720) 2022-11-21 21:58:39 +00:00
custom_vertex_attribute.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
post_processing.rs Rename camera "priority" to "order" (#6908) 2022-12-25 00:39:30 +00:00
shader_defs.rs Shader defs can now have a value (#5900) 2022-11-21 22:38:29 +00:00
shader_instancing.rs Flatten render commands (#6885) 2023-01-04 01:13:30 +00:00
shader_material_glsl.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
shader_material_screenspace_texture.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
shader_material.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00