bevy/crates
Torstein Grindvik 12f30f5667 Shaders can now have #else ifdef chains (#7431)
# Objective

Currently, shaders may only have syntax such as

```wgsl
#ifdef FOO
// foo code
#else
#ifdef BAR
// bar code
#else
#ifdef BAZ
// baz code
#else
// fallback code
#endif
#endif
#endif
```

This is hard to read and follow.
Add a way to allow writing `#else ifdef DEFINE` to reduce the number of scopes introduced and to increase readability.

## Solution

Refactor the current preprocessing a bit and add logic to allow `#else ifdef DEFINE`.
This includes per-scope tracking of whether a branch has been accepted.
Add a few tests for this feature.

With these changes we may now write:

```wgsl
#ifdef FOO
// foo code
#else ifdef BAR
// bar code
#else ifdef BAZ
// baz code
#else
// fallback code
#endif
```

instead.

---

## Changelog

- Add `#else ifdef` to shader preprocessing.
2023-02-04 15:29:35 +00:00
..
bevy_animation Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_app Remove App::add_sub_app (#7290) 2023-01-24 21:24:25 +00:00
bevy_asset update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_audio AudioOutput is actually a normal resource now, not a non-send resource (#7262) 2023-01-18 17:20:26 +00:00
bevy_core Increment FrameCount in CoreStage::Last. (#7477) 2023-02-02 21:06:29 +00:00
bevy_core_pipeline Extract component derive (#7399) 2023-01-30 18:12:16 +00:00
bevy_derive update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_diagnostic Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dylib Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dynamic_plugin
bevy_ecs Remove ExclusiveSystemParam::apply (#7489) 2023-02-04 00:25:09 +00:00
bevy_ecs_compile_fail_tests Fix clippy lints and failed test with Rust 1.66 (#6945) 2022-12-15 18:05:15 +00:00
bevy_encase_derive add helper for macro to get either bevy::x or bevy_x depending on how it was imported (#7164) 2023-01-11 21:12:02 +00:00
bevy_gilrs Gamepad events refactor (#6965) 2023-01-09 19:24:52 +00:00
bevy_gltf enum Visibility component (#6320) 2022-12-25 00:39:29 +00:00
bevy_hierarchy Add ReplaceChildren and ClearChildren EntityCommands (#6035) 2023-01-16 21:24:15 +00:00
bevy_input Reduce internal system order ambiguities, and add an example explaining them (#7383) 2023-01-31 01:47:00 +00:00
bevy_internal update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Update toml_edit to 0.18 (#7370) 2023-01-26 18:09:43 +00:00
bevy_math
bevy_mikktspace
bevy_pbr Reduce internal system order ambiguities, and add an example explaining them (#7383) 2023-01-31 01:47:00 +00:00
bevy_ptr Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_reflect Follow up on Todo in bevy_reflect_derive (#7461) 2023-02-02 04:37:32 +00:00
bevy_reflect_compile_fail_tests Enable deriving Reflect on structs with generic types (#7364) 2023-01-28 00:12:06 +00:00
bevy_render Shaders can now have #else ifdef chains (#7431) 2023-02-04 15:29:35 +00:00
bevy_scene bevy_ecs: ReflectComponentFns without World (#7206) 2023-02-03 05:53:58 +00:00
bevy_sprite Only compute sprite color once per quad (#7498) 2023-02-04 08:36:21 +00:00
bevy_tasks Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_text Allow users of Text/TextBundle to choose from glyph_brush_layout's BuiltInLineBreaker options. (#7283) 2023-01-21 00:17:11 +00:00
bevy_time re-enable tests on apple silicon (#7400) 2023-01-28 19:00:27 +00:00
bevy_transform Reduce internal system order ambiguities, and add an example explaining them (#7383) 2023-01-31 01:47:00 +00:00
bevy_ui change the default width and height of Size to Val::Auto (#7475) 2023-02-03 01:35:06 +00:00
bevy_utils Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_window update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_winit update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00