Skip to content

Commit a7cd227

Browse files
Replace nodes with render_features and new jobs framework. (#135)
1 parent bdebbcc commit a7cd227

File tree

214 files changed

+12282
-5114
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

214 files changed

+12282
-5114
lines changed

README.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,9 @@ This tool currently is only useful for packing assets.
188188
* Nearly all assets are data-driven from serializable and hashable structures rather than hard-coded.
189189
* Buffers and images are asynchronously uploaded on dedicated transfer queue when available
190190
* Multi-pass material abstraction with bindable parameters
191-
* Nodes/Render Jobs system - Inspired by the 2015 GDC talk "Destiny's Multithreaded Rendering Architecture."
191+
* Render Features and Jobs system - Inspired by the 2015 GDC talk "Destiny's Multithreaded Rendering Architecture."
192192
* A job system with extract, prepare, and write phases
193-
* Rendering is pipelined with simulation thread, and the job structure is intended to be highly parallel (not
194-
actually executed parallel yet)
193+
* Rendering is pipelined with simulation thread, and the job structure is parallelizable by the application
195194
* Handles multiple views and phases allowing advanced features like shadow mapping
196195
* Flexible sorting mechanism for interleaving and batching write commands from multiple rendering features
197196
* Visibility Region - Built on top of `rafx-visibility`

demo/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ ron = "0.6"
5454
puffin-imgui = { version = "0.7.0", optional = true }
5555
profiling = "1.0.1"
5656
stats_alloc = { version = "0.1.8", optional = true }
57+
bevy_tasks = "0.5.0"
5758

5859
[features]
5960
default = [

demo/src/assets/font/plugin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use crate::assets::font::FontAssetType;
22
use rafx::assets::distill_impl::AssetResource;
33
use rafx::assets::AssetManager;
44
use rafx::distill::daemon::AssetDaemon;
5-
use rafx::renderer::RendererPlugin;
5+
use rafx::renderer::RendererAssetPlugin;
66

77
pub struct FontAssetTypeRendererPlugin;
88

9-
impl RendererPlugin for FontAssetTypeRendererPlugin {
9+
impl RendererAssetPlugin for FontAssetTypeRendererPlugin {
1010
//
1111
fn configure_asset_daemon(
1212
&self,

demo/src/assets/gltf/plugin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use crate::assets::gltf::MeshAssetType;
22
use rafx::assets::distill_impl::AssetResource;
33
use rafx::assets::AssetManager;
44
use rafx::distill::daemon::AssetDaemon;
5-
use rafx::renderer::RendererPlugin;
5+
use rafx::renderer::RendererAssetPlugin;
66

77
pub struct GltfAssetTypeRendererPlugin;
88

9-
impl RendererPlugin for GltfAssetTypeRendererPlugin {
9+
impl RendererAssetPlugin for GltfAssetTypeRendererPlugin {
1010
//
1111
fn configure_asset_daemon(
1212
&self,

demo/src/assets/ldtk/plugin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use crate::assets::ldtk::LdtkAssetType;
22
use rafx::assets::distill_impl::AssetResource;
33
use rafx::assets::AssetManager;
44
use rafx::distill::daemon::AssetDaemon;
5-
use rafx::renderer::RendererPlugin;
5+
use rafx::renderer::RendererAssetPlugin;
66

77
pub struct LdtkAssetTypeRendererPlugin;
88

9-
impl RendererPlugin for LdtkAssetTypeRendererPlugin {
9+
impl RendererAssetPlugin for LdtkAssetTypeRendererPlugin {
1010
//
1111
fn configure_asset_daemon(
1212
&self,

demo/src/components.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
1-
use crate::features::mesh::MeshRenderNodeHandle;
2-
use crate::features::sprite::SpriteRenderNodeHandle;
31
use glam::f32::Vec3;
42
use glam::Quat;
53
use rafx::framework::visibility::VisibilityObjectArc;
4+
use rafx::render_features::RenderObjectHandle;
65
use rafx::visibility::ViewFrustumArc;
76

87
#[derive(Clone)]
98
pub struct MeshComponent {
10-
pub render_node: MeshRenderNodeHandle,
9+
pub render_object_handle: RenderObjectHandle,
1110
}
1211

1312
#[derive(Clone)]
1413
pub struct SpriteComponent {
15-
pub render_node: SpriteRenderNodeHandle,
14+
pub render_object_handle: RenderObjectHandle,
1615
}
1716

1817
#[derive(Clone)]
1918
pub struct VisibilityComponent {
20-
pub handle: VisibilityObjectArc,
19+
pub visibility_object_handle: VisibilityObjectArc,
2120
}
2221

2322
#[derive(Clone, Copy)]

demo/src/demo_plugin.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rafx::assets::distill_impl::AssetResource;
88
use rafx::assets::{AssetManager, ComputePipelineAsset, MaterialAsset};
99
use rafx::base::resource_map::ResourceMap;
1010
use rafx::distill::loader::handle::Handle;
11-
use rafx::nodes::{ExtractResources, RenderRegistryBuilder};
12-
use rafx::renderer::RendererPlugin;
11+
use rafx::render_features::{ExtractResources, RenderRegistryBuilder};
12+
use rafx::renderer::RendererAssetPlugin;
1313

1414
// A plugin that add demo-specific configuration
1515

@@ -22,15 +22,15 @@ pub struct DemoStaticResources {
2222

2323
pub struct DemoRendererPlugin;
2424

25-
impl RendererPlugin for DemoRendererPlugin {
25+
impl RendererAssetPlugin for DemoRendererPlugin {
2626
fn configure_render_registry(
2727
&self,
2828
render_registry_builder: RenderRegistryBuilder,
2929
) -> RenderRegistryBuilder {
3030
render_registry_builder
3131
.register_render_phase::<DepthPrepassRenderPhase>("DepthPrepass")
32-
.register_render_phase::<OpaqueRenderPhase>("Opaque")
3332
.register_render_phase::<ShadowMapRenderPhase>("ShadowMap")
33+
.register_render_phase::<OpaqueRenderPhase>("Opaque")
3434
.register_render_phase::<TransparentRenderPhase>("Transparent")
3535
.register_render_phase::<PostProcessRenderPhase>("PostProcess")
3636
.register_render_phase::<UiRenderPhase>("Ui")

0 commit comments

Comments
 (0)