Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 9d11f1f

Browse files
committedMay 12, 2021
Replace nodes_api_design with renderer_triangle example.
This example builds on the `asset_triangle` example to show how to use `rafx-renderer` and a `RenderFeaturePlugin` to drive rendering.
1 parent cfeae1a commit 9d11f1f

Some content is hidden

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

41 files changed

+1253
-939
lines changed
 

‎rafx/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ no-render-thread = [
6666
#
6767

6868
[[example]]
69-
name = "nodes_api_design"
70-
path = "../rafx/examples/nodes_api_design/nodes_api_design.rs"
71-
required-features = ["framework"]
69+
name = "renderer_triangle"
70+
path = "../rafx/examples/renderer_triangle/renderer_triangle.rs"
71+
required-features = ["renderer"]
7272

7373
[[example]]
7474
name = "api_triangle"

‎rafx/examples/asset_triangle/asset_triangle.rs

+18-9
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ use rafx::api::*;
44
use rafx::assets::distill_impl::AssetResource;
55
use rafx::assets::MaterialAsset;
66
use rafx::distill::loader::{storage::DefaultIndirectionResolver, Loader, RpcIO};
7-
use rafx::framework::{DescriptorSetBindings, VertexDataLayout};
7+
use rafx::framework::render_features::{RenderJobWriteContext, SubmitNodeBlocks};
8+
use rafx::framework::{DescriptorSetBindings, RenderResources, VertexDataLayout};
89
use rafx::graph::{
910
PreparedRenderGraph, RenderGraphBuilder, RenderGraphImageConstraint, RenderGraphImageExtents,
1011
RenderGraphImageSpecification, RenderGraphQueue, SwapchainSurfaceInfo,
1112
};
12-
use rafx::nodes::RenderPhaseIndex;
13-
use rafx::nodes::SubmitNode;
14-
use rafx::nodes::{PreparedRenderData, RenderPhase};
13+
use rafx::render_features::RenderFeatureSubmitNode;
14+
use rafx::render_features::RenderPhaseIndex;
15+
use rafx::render_features::{PreparedRenderData, RenderPhase};
1516
use std::sync::Arc;
1617

1718
const WINDOW_WIDTH: u32 = 900;
@@ -109,7 +110,7 @@ fn run() -> RafxResult<()> {
109110
// (Multiple "features" can render in a single "phase". Sorting behavior for draw calls
110111
// across those features is defined by the phase)
111112
//
112-
let render_registry = rafx::nodes::RenderRegistryBuilder::default()
113+
let render_registry = rafx::render_features::RenderRegistryBuilder::default()
113114
.register_render_phase::<OpaqueRenderPhase>("Opaque")
114115
.build();
115116

@@ -422,12 +423,22 @@ fn run() -> RafxResult<()> {
422423
&swapchain_surface_info,
423424
)?;
424425

426+
let submit_node_blocks = SubmitNodeBlocks::default();
427+
428+
let render_resources = RenderResources::default();
429+
430+
let write_context =
431+
RenderJobWriteContext::new(resource_context.clone(), &render_resources);
432+
433+
let prepared_render_data =
434+
PreparedRenderData::new(&submit_node_blocks, Vec::default(), write_context);
435+
425436
//
426437
// Execute the graph. This will write out command buffer(s). This demo doesn't use the
427438
// job system, so pass an empty PreparedRenderData
428439
//
429440
let command_buffers =
430-
prepared_graph.execute_graph(PreparedRenderData::empty(), &graphics_queue)?;
441+
prepared_graph.execute_graph(prepared_render_data, &graphics_queue)?;
431442

432443
//
433444
// Submit the command buffers to the GPU
@@ -464,15 +475,13 @@ rafx::declare_render_phase!(
464475
);
465476

466477
#[profiling::function]
467-
fn opaque_render_phase_sort_submit_nodes(mut submit_nodes: Vec<SubmitNode>) -> Vec<SubmitNode> {
478+
fn opaque_render_phase_sort_submit_nodes(submit_nodes: &mut Vec<RenderFeatureSubmitNode>) {
468479
// Sort by feature
469480
log::trace!(
470481
"Sort phase {}",
471482
OpaqueRenderPhase::render_phase_debug_name()
472483
);
473484
submit_nodes.sort_unstable_by(|a, b| a.feature_index().cmp(&b.feature_index()));
474-
475-
submit_nodes
476485
}
477486

478487
//

0 commit comments

Comments
 (0)
Please sign in to comment.