cvkg_render_gpu/passes/
gi.rs1use crate::kvasir::nodes::PassId;
5use crate::kvasir::{ExecutionContext, KvasirNode, ResourceId};
6
7#[derive(Debug, Clone)]
9pub struct IrradianceVolume {
10 pub origin: glam::Vec3,
12 pub spacing: glam::Vec3,
14 pub dimensions: [u32; 3],
16}
17
18#[derive(Debug, Clone)]
20pub struct EnvironmentProbe {
21 pub center: glam::Vec3,
23 pub bounds_half_size: glam::Vec3,
25}
26
27pub struct GlobalIlluminationNode {
29 pub volume: IrradianceVolume,
31 pub environment_probes: Vec<EnvironmentProbe>,
33 pub lightmap: Option<ResourceId>,
35}
36
37impl KvasirNode for GlobalIlluminationNode {
38 fn label(&self) -> &'static str {
39 "GlobalIlluminationPass"
40 }
41
42 fn inputs(&self) -> &[ResourceId] {
43 &[]
44 }
45
46 fn outputs(&self) -> &[ResourceId] {
47 &[]
48 }
49
50 fn pass_id(&self) -> PassId {
51 PassId::Opaque3d
52 }
53
54 fn execute(&self, _ctx: &mut ExecutionContext) {
55 tracing::debug!(
56 "GlobalIlluminationNode::execute - Sampling baked GI inputs: grid dimensions: {:?}, active probes: {}",
57 self.volume.dimensions,
58 self.environment_probes.len()
59 );
60 }
62}