rend3_routine/
pre_cull.rs1use rend3::{
4 format_sso,
5 graph::{DataHandle, RenderGraph},
6 types::Material,
7};
8use wgpu::Buffer;
9
10use crate::{
11 common::{self, Sorting},
12 culling,
13};
14
15pub fn add_to_graph<'node, M: Material>(
17 graph: &mut RenderGraph<'node>,
18 key: u64,
19 sorting: Option<Sorting>,
20 name: &str,
21 pre_cull_data: DataHandle<Buffer>,
22) {
23 let mut builder = graph.add_node(format_sso!("pre-cull {:?}", name));
24 let data_handle = builder.add_data_output(pre_cull_data);
25
26 builder.build(move |_pt, renderer, _encoder_or_pass, _temps, _ready, graph_data| {
27 let objects = graph_data.object_manager.get_objects::<M>(key);
28 let objects = common::sort_objects(objects, graph_data.camera_manager, sorting);
29 let buffer = culling::build_gpu_cull_input(&renderer.device, &objects);
30 graph_data.set_data::<Buffer>(data_handle, Some(buffer));
31 });
32}