Commit Graph

9274 Commits

Author SHA1 Message Date
MevLyshkin
f86512dbfe
Merge branch 'main' into proper-json-schema 2025-07-07 17:33:21 +02:00
Piotr Siuszko
bbe9798846 Remove some of the feature specific types, simplify the code 2025-07-07 17:14:53 +02:00
atlv
cb227b1e03
make optional crates for mesh, camera, and light (#19997)
# Objective

- nice bevy::camera bevy::mesh bevy::light imports
- skip bevy_light in 2d

## Solution

- add optional crates to internal
- make light only included when building pbr

## Testing

- 3d_scene
2025-07-07 07:35:32 +00:00
atlv
1fb5a62297
fix meshlets with charlotte (#19996)
# Objective

- fix meshlets not finding entrypoint and crashing

# Solution

- remove faulty ifdefs
2025-07-07 03:47:14 +00:00
Connor Dalrymple
905965b842
Skip allocation of zero size meshes (#19938)
# Objective

Fixes #16525
Fixes #19710

## Solution

Not allocating a mesh if it is empty.

## Testing

I tested using the following minimum repro from #16525
```rust
use bevy::{asset::RenderAssetUsages, prelude::*, render::mesh::PrimitiveTopology};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<ColorMaterial>>,
) {
    commands.spawn(Camera2d);

    let mesh = Mesh::new(
        PrimitiveTopology::TriangleList,
        RenderAssetUsages::default(),
    );

    commands.spawn((
        Mesh2d(meshes.add(mesh)),
        MeshMaterial2d(materials.add(Color::hsl(180.0, 0.95, 0.7))),
    ));
}
```
I was able to test on webgl2 and windows native and the issue seems to
be resolved. I am not familiar with how mesh rendering works and feel
like just skipping meshes should cause issues but I did not notice any.
2025-07-07 02:32:51 +00:00
andriyDev
2c6cf9a597
Run RenderStartup in/before extract instead of after it. (#19926)
# Objective

- Fixes #19910.

## Solution

- First, allow extraction function to be FnMut instead of Fn. FnMut is a
superset of Fn anyway, and we only ever call this function once at a
time (we would never call this in parallel for different pairs of worlds
or something).
- Run the `RenderStartup` schedule in the extract function with a flag
to only do it once.
- Remove all the `MainRender` stuff.

One sad part here is that now the `RenderStartup` blocks extraction. So
for pipelined rendering, our simulation will be blocked on the first
frame while we set up all the rendering resources. I don't see this as a
big loss though since A) that is fundamentally what we want here -
extraction **has to** run after `RenderStartup`, and the only way to do
better is to somehow run `RenderStartup` in parallel with the first
simulation frame, and B) without `RenderStartup` the **entire** app was
blocked on initializing render resources during Plugin construction - so
we're not really losing anything here.

## Testing

- I ran the `custom_post_processing` example (which was ported to use
`RenderStartup` in #19886) and it still works.
2025-07-07 01:31:40 +00:00
atlv
b6250439dd
remove fast_sqrt in favor of sqrt (#19995)
# Objective

- the fast inverse sqrt trick hasnt been useful on modern hardware for
over a decade now

## Solution

- just use sqrt, modern hardware has a dedicated instruction which will
outperform approximations both in efficiency and accuracy

## Testing

- ran `atmosphere`
2025-07-07 01:13:02 +00:00
atlv
537adcc3f7
bevy_light (#19991)
# Objective

- make lights usable without bevy_render

## Solution

- make a new crate for lights to live in

## Testing

- 3d_scene, lighting, volumetric_fog, ssr, transmission, pcss,
light_textures

Note: no breaking changes because of re-exports, except for light
textures, which were introduced this cycle so it doesn't matter anyways
2025-07-07 00:07:38 +00:00
atlv
a1139c23c6
fix percentage signs in SMAA (#19987)
# Objective

- fix typo
2025-07-06 22:24:26 +00:00
Piotr Siuszko
06c4a96c0d Ref type means no schema type 2025-07-06 22:39:57 +02:00
MevLyshkin
08f17bb337
Merge branch 'main' into proper-json-schema 2025-07-06 22:34:35 +02:00
Piotr Siuszko
84bcdb9651 More logic in trait, start removing old code 2025-07-06 22:34:15 +02:00
atlv
5b38989ac4
dont hard code clustering limits on cpu side so they can be informed by Limits later (#19985)
# Objective

- prepare bevy_light for split
- make limits more dynamically configurable

## Solution

- use settings struct

## Testing

- 3d_scene, lighting
2025-07-06 19:36:58 +00:00
atlv
baa88b98a3
fix variable-termination loop gradients by sampling specific lod (#19988)
# Objective

- Calculating gradients in variable-termination loop is bad, and we dont
need to here

## Solution

- Sample mip 0 always

## Testing

- volumetric_fog example
2025-07-06 19:13:10 +00:00
atlv
1579256709
Rename light visibility class (#19986)
# Objective

- prepare bevy_light for split
- make struct named better
- put it where it belongs

## Solution

- do those things

## Testing

- 3d_scene, lighting

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
2025-07-06 19:04:30 +00:00
Giacomo Stevanato
8e89511e47
Remove Bundle::register_required_components (#19967)
# Objective

- `Bundle::register_required_components` is not used anywhere, let's
remove it
2025-07-06 18:15:28 +00:00
atlv
b5cefe2b5d
extract cluster extract to a separate module (#19973)
# Objective

- prepare bevy_light for split

## Solution

- split render world extract related cluster code from main world ecs
stuff

re-exports make this not breaking
2025-07-06 17:19:36 +00:00
Piotr Siuszko
b6d55b5b2c Move more logic into trait for TypeRegistry, better defs id generation 2025-07-06 18:48:12 +02:00
MevLyshkin
02ed81c75f
Merge branch 'main' into proper-json-schema 2025-07-06 11:30:54 +02:00
Piotr Siuszko
64807b0d38 Reworked building type dependencies list 2025-07-06 11:30:34 +02:00
atlv
c5fe7f0975
consistently dont use smallvec default features (#19972)
# Objective

- for smallvec some crates specify default features false, other dont.
turns out we dont need them

## Solution

- remove

## Testing

- 3d_scene
2025-07-06 04:25:26 +00:00
atlv
dd57db44d9
prepare bevy_light for split (#19965)
# Objective

- prepare bevy_light for split

## Solution

- extract cascade module (this is not strictly necessary for bevy_light)
- clean up imports to be less globby and tangled
- move light specific stuff into light modules
- move light system and type init from pbr into new LightPlugin

## Testing

- 3d_scene, lighting

NOTE TO REVIEWERS: it may help to review commits independently.
2025-07-06 04:11:46 +00:00
atlv
0b771d9f59
move ClusteredDecal to cluster module (#19959)
# Objective

- Make bevy_light possible by making it possible to split out
clusterable into bevy_camera

## Solution

- move ClusteredDecal to cluster module
- Depends on #19957 (because of the imports shuffling around) (draft
until thats merged)

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 19:31:59 +00:00
atlv
7aaf4bbd94
fix a couple typos in CubemapLayout (#19964)
# Objective

- Rob pointed out a couple typos in #19960 (i just did a copy paste, but
the original had an issue)

## Solution

- Fix
2025-07-05 17:05:56 +00:00
atlv
6ab8e0d9c7
move ShadowsEnabled to material (#19963)
# Objective

- Make bevy_light possible

## Solution

- Move non-light stuff out of light module (its a marker for whether a
material should cast shadows: thats a material property not a light
property)

## Testing

- 3d_scene runs
2025-07-05 17:05:14 +00:00
atlv
ced36021d0
move light stuff out of decal cluster (#19962)
# Objective

- Make bevy_light possible

## Solution

- Move light stuff into light module

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 17:04:21 +00:00
atlv
47e99c8285
move Cubemap stuff alongside CubemapFrusta in bevy_camera::primitives (#19955)
# Objective

- Make bevy_light possible

## Solution

- Move some stuff it needs out of somewhere it cant depend on. Plus it
makes sense, cubemap stuff goes next to cubemap stuff.

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 14:40:59 +00:00
atlv
59e8702a65
move calculate_cluster_factors to cluster assign (#19958)
# Objective

- Make bevy_light possible by making it possible to split out
clusterable into bevy_camera

## Solution

- Move some stuff so i can split it out cleanly.

## Testing

- 3d_scene runs
2025-07-05 14:40:33 +00:00
atlv
f987920bbd
Move CubemapLayout out of decal code (#19960)
# Objective

- Make bevy_light possible by making it possible to split out
clusterable into bevy_camera

## Solution

- Move cubemap stuff next to cubemap stuff.

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 14:40:28 +00:00
theotherphil
a869383cda
Minor code readability improvement in enum_utility.access_field (#19961)
Small cleanup copied from https://github.com/bevyengine/bevy/pull/16250
2025-07-05 14:40:23 +00:00
atlv
bdb39cf723
move spot light function into spot light file (#19956)
# Objective

- Make bevy_light possible

## Solution

- Move some stuff it needs out of somewhere it cant depend on. Plus it
makes sense, spotlight stuff goes in spotlight file.

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 14:40:06 +00:00
atlv
d0896bf10a
make cluster assign not depend on RenderAdapter/RenderDevice (#19957)
# Objective

- Make bevy_light possible by making it possible to split out
clusterable into bevy_camera

## Solution

- Use a resource to store cluster settings instead of recalculating it
every time from the render adapter/device

## Testing

- 3d_scene runs
2025-07-05 14:39:41 +00:00
atlv
1b09c4051e
Move Camera3d/2d to bevy_camera (#19953)
# Objective

- define scenes without bevy_render

## Solution

- Move Camera2d/3d components out of bevy_core_pipeline

## Testing

- 3d_scene runs fine

Note: no breaking changes thanks to re-exports
2025-07-05 13:24:28 +00:00
atlv
bfbc6c3d11
move some Visibility stuff to bevy_camera::visibility (#19954)
# Objective

- Make bevy_light possible

## Solution

- Move some stuff it needs out of somewhere it cant depend on. Plus it
makes sense, visibility stuff goes in visibility.

## Testing

- 3d_scene runs

Note: no breaking changes thanks to re-exports
2025-07-05 13:24:20 +00:00
Piotr Siuszko
0ff3201c3c Missing definitions handling 2025-07-05 13:15:06 +02:00
Piotr Siuszko
23ca435e73 Cleanup, support for Cow<str> 2025-07-05 12:05:33 +02:00
MevLyshkin
22eae74a38
Merge branch 'main' into proper-json-schema 2025-07-05 11:48:53 +02:00
Piotr Siuszko
a58f697363 Add helper trait for registering schema types 2025-07-05 11:43:27 +02:00
Piotr Siuszko
daf03b5b3a Restore a as a f32 field, add separate unsigned field in test struct 2025-07-05 09:46:01 +02:00
Piotr Siuszko
4b8d0064ef Fixes for NonZero types, store typepath for primitive types 2025-07-05 09:07:40 +02:00
Piotr Siuszko
0b375625e0 Basic support for NonZero types with not field 2025-07-05 08:22:40 +02:00
Piotr Siuszko
492ad8be31 Remove id field 2025-07-05 07:53:22 +02:00
andriyDev
29779e1e18
Use RenderStartup in bevy_ui. (#19901)
# Objective

- Progress towards #19887.

## Solution

- Convert `FromWorld` impls into systems that run in `RenderStartup`.
- Move `UiPipeline` init to `build_ui_render` instead of doing it
separately in `finish`.

Note: I am making several of these systems pub so that users could order
their systems relative to them. This is to match the fact that these
types previously were FromWorld so users could initialize them.

## Testing

- Ran `ui_material`, `ui_texture_slice`, `box_shadow`, and `gradients`
examples and it still worked.
2025-07-05 04:07:23 +00:00
atlv
bd5f924290
Split bevy_camera out of bevy_render (#19949)
# Objective

- get closer to being able to load gltfs without using bevy_render

## Solution

- Split bevy_camera out of bevy_render
- Builds on #19943
- Im sorry for the big diff, i tried to minimize it as much as i can by
using re-exports. This also prevents most breaking changes, but there
are still a couple.

## Testing

- 3d_scene looks good
2025-07-04 23:31:16 +00:00
Daniel Skates
560429ebd9
Observer trigger refactor (#19935)
# Objective

- The usage of ComponentId is quite confusing: events are not
components. By newtyping this, we can prevent stupid mistakes, avoid
leaking internal details and make the code clearer for users and engine
devs reading it.
- Adopts https://github.com/bevyengine/bevy/pull/19755

---------

Co-authored-by: oscar-benderstone <oscarbenderstone@gmail.com>
Co-authored-by: Oscar Bender-Stone <88625129+oscar-benderstone@users.noreply.github.com>
2025-07-04 16:27:21 +00:00
atlv
1380a3b7f2
add must_use to register_component_hooks (#19945)
# Objective

- I accidentally left a `register_component_hooks` without actually
adding a hook and didnt notice

## Solution

- mark it must_use so it doesnt happen to other people (maybe this is
just skill issue on me though)
2025-07-04 16:24:46 +00:00
atlv
58feca9b32
refactor(mesh): move Mesh3d and Mesh2d into bevy_mesh (#19943)
# Objective

- another step towards splitting out bevy_camera, this is needed by
visibility systems

## Solution

- move mesh stuff into mesh place

## Testing

- 3d_scene looks fine

No migration needed because of the re-export, that can be another PR
after i split bevy_camera
2025-07-04 16:24:21 +00:00
Piotr Siuszko
714d56e1ed Use oneOf for Option types, use jsonschema for testing schemas 2025-07-04 17:24:59 +02:00
MevLyshkin
efec7d192f
Merge branch 'main' into proper-json-schema 2025-07-04 09:32:07 +02:00
Piotr Siuszko
15125a3de5 Docs fix 2025-07-04 09:31:26 +02:00