Skip to content

Commit 56bd026

Browse files
committed
HACK merge transparent pass into opaque pass
1 parent dfe28d6 commit 56bd026

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

crates/bevy_core_pipeline/src/core_3d/main_opaque_pass_3d_node.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::{
2-
core_3d::Opaque3d,
2+
core_3d::{Opaque3d, Transparent3d, ViewSortedRenderPhases},
33
skybox::{SkyboxBindGroup, SkyboxPipelineId},
44
};
55
use bevy_ecs::{entity::Entity, prelude::World, query::QueryItem};
@@ -48,23 +48,24 @@ impl ViewNode for MainOpaquePass3dNode {
4848
): QueryItem<'w, Self::ViewQuery>,
4949
world: &'w World,
5050
) -> Result<(), NodeRunError> {
51-
let (Some(opaque_phases), Some(alpha_mask_phases)) = (
51+
let (Some(opaque_phases), Some(alpha_mask_phases), Some(transparent_phases)) = (
5252
world.get_resource::<ViewBinnedRenderPhases<Opaque3d>>(),
5353
world.get_resource::<ViewBinnedRenderPhases<AlphaMask3d>>(),
54+
world.get_resource::<ViewSortedRenderPhases<Transparent3d>>(),
5455
) else {
5556
return Ok(());
5657
};
5758

58-
let (Some(opaque_phase), Some(alpha_mask_phase)) =
59-
(opaque_phases.get(&view), alpha_mask_phases.get(&view))
59+
let (Some(opaque_phase), Some(alpha_mask_phase), Some(transparent_phase)) =
60+
(opaque_phases.get(&view), alpha_mask_phases.get(&view), transparent_phases.get(&view))
6061
else {
6162
return Ok(());
6263
};
6364

6465
let diagnostics = render_context.diagnostic_recorder();
6566

6667
let color_attachments = [Some(target.get_color_attachment())];
67-
let depth_stencil_attachment = Some(depth.get_attachment(StoreOp::Store));
68+
let depth_stencil_attachment = Some(depth.get_attachment(StoreOp::Discard));
6869

6970
let view_entity = graph.view_entity();
7071
render_context.add_command_buffer_generation_task(move |render_device| {
@@ -110,6 +111,15 @@ impl ViewNode for MainOpaquePass3dNode {
110111
}
111112
}
112113

114+
// Alpha draws
115+
if !transparent_phase.items.is_empty() {
116+
#[cfg(feature = "trace")]
117+
let _transparent_main_pass_3d_span = info_span!("transparent_main_pass_3d").entered();
118+
if let Err(err) = transparent_phase.render(&mut render_pass, world, view_entity) {
119+
error!("Error encountered while rendering the alpha mask phase {err:?}");
120+
}
121+
}
122+
113123
// Skybox draw using a fullscreen triangle
114124
if let (Some(skybox_pipeline), Some(SkyboxBindGroup(skybox_bind_group))) =
115125
(skybox_pipeline, skybox_bind_group)

crates/bevy_core_pipeline/src/core_3d/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,10 @@ impl Plugin for Core3dPlugin {
181181
Core3d,
182182
Node3d::MainTransmissivePass,
183183
)
184-
.add_render_graph_node::<ViewNodeRunner<MainTransparentPass3dNode>>(
185-
Core3d,
186-
Node3d::MainTransparentPass,
187-
)
184+
// .add_render_graph_node::<ViewNodeRunner<MainTransparentPass3dNode>>(
185+
// Core3d,
186+
// Node3d::MainTransparentPass,
187+
// )
188188
.add_render_graph_node::<EmptyNode>(Core3d, Node3d::EndMainPass)
189189
.add_render_graph_node::<ViewNodeRunner<DepthOfFieldNode>>(Core3d, Node3d::DepthOfField)
190190
.add_render_graph_node::<ViewNodeRunner<TonemappingNode>>(Core3d, Node3d::Tonemapping)
@@ -200,7 +200,7 @@ impl Plugin for Core3dPlugin {
200200
Node3d::StartMainPass,
201201
Node3d::MainOpaquePass,
202202
Node3d::MainTransmissivePass,
203-
Node3d::MainTransparentPass,
203+
// Node3d::MainTransparentPass,
204204
Node3d::EndMainPass,
205205
Node3d::Tonemapping,
206206
Node3d::EndMainPassPostProcessing,

crates/bevy_core_pipeline/src/oit/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ impl Plugin for OrderIndependentTransparencyPlugin {
129129
.add_render_graph_edges(
130130
Core3d,
131131
(
132-
Node3d::MainTransparentPass,
132+
Node3d::MainTransmissivePass,
133133
OitResolvePass,
134134
Node3d::EndMainPass,
135135
),

crates/bevy_render/src/texture/texture_attachment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ impl ColorAttachment {
4646
(Some(clear_color), true) => LoadOp::Clear(clear_color.into()),
4747
(None, _) | (Some(_), false) => LoadOp::Load,
4848
},
49-
store: StoreOp::Store,
49+
store: StoreOp::Discard, // HACK
5050
},
5151
}
5252
} else {

0 commit comments

Comments
 (0)