bevyengine / bevyengine/bevy

Pipelined-rendering performance

Open
#3,052 9 comments 0 reactions 0 assignees View on GitHub
A-Rendering C-Bug C-Performance I-Regression O-MacOS
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## Bevy version

https://github.com/bevyengine/bevy/commit/c5af1335eb48f990c71082787ff566fc793aab33

## Operating system & version

macOS Catalina, 10.15.7
AdapterInfo { name: "AMD Radeon RX 5700 XT", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Metal }

## What you did

test file for old renderer:

```
use bevy::{
DefaultPlugins,
diagnostic::*,
app::prelude::*,
asset::prelude::*,
ecs::prelude::*,
math::prelude::*,
pbr::{*, prelude::*},
render::prelude::*,
transform::prelude::*};

pub fn setup(
mut commands: Commands,
mut meshes: ResMut>,
mut materials: ResMut>,
) {
let size = UVec3::new(20, 20, 20);
for x in 1..size[0] - 1 {
for y in 1..size[1] - 1 {
for z in 1..size[2] - 1 {
for p in 0..3 {
let material = materials.add(StandardMaterial {
unlit: true,
..Default::default()
});
commands
.spawn_bundle(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube {
size: 1.0,
})),
material: material.clone(),
transform: Transform {
translation: Vec3::new(
x as f32 + 0.5,
y as f32 + 0.5,
z as f32 + 0.5,
),
..Default::default()
},
..Default::default()
});
}
}
}
}
commands
.spawn_bundle(PerspectiveCameraBundle {
transform: Transform::from_translation(size.as_f32() * 1.1).looking_at(Vec3::ZERO, Vec3::Y),
..Default::default()
});
commands.insert_resource(AmbientLight {
color: Color::ORANGE_RED,
brightness: 0.02,
});
}

pub fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(LogDiagnosticsPlugin::default())
.add_plugin(FrameTimeDiagnosticsPlugin::default())
.add_startup_system(setup)
.run();
}
```

test file for new renderer:

```
use bevy::{
PipelinedDefaultPlugins,
app::prelude::*,
asset::prelude::*,
diagnostic::*,
ecs::prelude::*,
math::prelude::*,
pbr2::*,
render2::{camera::PerspectiveCameraBundle, color::Color, mesh::{Mesh, shape}},
transform::prelude::*
};

pub fn setup(
mut commands: Commands,
mut meshes: ResMut>,
mut materials: ResMut>,
) {
let size = UVec3::new(20, 20, 20);
for x in 1..size[0] - 1 {
for y in 1..size[1] - 1 {
for z in 1..size[2] - 1 {
for p in 0..3 {
let material = materials.add(StandardMaterial {
unlit: true,
..Default::default()
});
commands
.spawn_bundle(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube {
size: 1.0,
})),
material: material.clone(),
transform: Transform {
translation: Vec3::new(
x as f32 + 0.5,
y as f32 + 0.5,
z as f32 + 0.5,
),
..Default::default()
},
..Default::default()
});
}
}
}
}
commands
.spawn_bundle(PerspectiveCameraBundle {
transform: Transform::from_translation(size.as_f32() * 1.1).looking_at(Vec3::ZERO, Vec3::Y),
..Default::default()
});
commands.insert_resource(AmbientLight {
color: Color::ORANGE_RED,
brightness: 0.02,
});
}

pub fn main() {
App::new()
.add_plugins(PipelinedDefaultPlugins)
.add_plugin(LogDiagnosticsPlugin::default())
.add_plugin(FrameTimeDiagnosticsPlugin::default())
.add_startup_system(setup)
.run();
}
```

my results:
```
// 3*20^3
// Oct 30 13:52:58.313 INFO bevy diagnostic: fps : 7.408413 (avg 7.417044)
// 3*10^3
// Oct 30 13:53:54.464 INFO bevy diagnostic: fps : 60.049122 (avg 59.930744)
// rendering_test::main();

// 3*20^3
// Oct 30 13:52:14.582 INFO bevy diagnostic: fps : 4.563918 (avg 4.635602)
// 3*10^3
// Oct 30 13:54:40.295 INFO bevy diagnostic: fps : 5.064065 (avg 5.013634)
```
## What you expected to happen

new renderer to be faster

## What actually happened

new renderer is slower

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.