Skip to content

Commit

Permalink
merged RenderCommand and Draw
Browse files Browse the repository at this point in the history
  • Loading branch information
kurtkuehnert committed Jan 13, 2023
1 parent feac2c2 commit 6d8a3dd
Show file tree
Hide file tree
Showing 15 changed files with 297 additions and 393 deletions.
10 changes: 5 additions & 5 deletions crates/bevy_core_pipeline/src/core_2d/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ use bevy_render::{
render_graph::{EmptyNode, RenderGraph, SlotInfo, SlotType},
render_phase::{
batch_phase_system, sort_phase_system, BatchedPhaseItem, CachedRenderPipelinePhaseItem,
DrawFunctionId, DrawFunctions, PhaseItem, RenderPhase,
PhaseItem, RenderCommandId, RenderCommands, RenderPhase,
},
render_resource::CachedRenderPipelineId,
Extract, RenderApp, RenderStage,
Expand All @@ -50,7 +50,7 @@ impl Plugin for Core2dPlugin {
};

render_app
.init_resource::<DrawFunctions<Transparent2d>>()
.init_resource::<RenderCommands<Transparent2d>>()
.add_system_to_stage(RenderStage::Extract, extract_core_2d_camera_phases)
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Transparent2d>)
.add_system_to_stage(
Expand Down Expand Up @@ -107,7 +107,7 @@ pub struct Transparent2d {
pub sort_key: FloatOrd,
pub entity: Entity,
pub pipeline: CachedRenderPipelineId,
pub draw_function: DrawFunctionId,
pub render_command: RenderCommandId,
/// Range in the vertex buffer of this item
pub batch_range: Option<Range<u32>>,
}
Expand All @@ -126,8 +126,8 @@ impl PhaseItem for Transparent2d {
}

#[inline]
fn draw_function(&self) -> DrawFunctionId {
self.draw_function
fn render_command(&self) -> RenderCommandId {
self.render_command
}

#[inline]
Expand Down
28 changes: 14 additions & 14 deletions crates/bevy_core_pipeline/src/core_3d/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ use bevy_render::{
prelude::Msaa,
render_graph::{EmptyNode, RenderGraph, SlotInfo, SlotType},
render_phase::{
sort_phase_system, CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions, PhaseItem,
RenderPhase,
sort_phase_system, CachedRenderPipelinePhaseItem, PhaseItem, RenderCommandId,
RenderCommands, RenderPhase,
},
render_resource::{
CachedRenderPipelineId, Extent3d, TextureDescriptor, TextureDimension, TextureFormat,
Expand Down Expand Up @@ -59,9 +59,9 @@ impl Plugin for Core3dPlugin {
};

render_app
.init_resource::<DrawFunctions<Opaque3d>>()
.init_resource::<DrawFunctions<AlphaMask3d>>()
.init_resource::<DrawFunctions<Transparent3d>>()
.init_resource::<RenderCommands<Opaque3d>>()
.init_resource::<RenderCommands<AlphaMask3d>>()
.init_resource::<RenderCommands<Transparent3d>>()
.add_system_to_stage(RenderStage::Extract, extract_core_3d_camera_phases)
.add_system_to_stage(RenderStage::Prepare, prepare_core_3d_depth_textures)
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Opaque3d>)
Expand Down Expand Up @@ -117,7 +117,7 @@ pub struct Opaque3d {
pub distance: f32,
pub pipeline: CachedRenderPipelineId,
pub entity: Entity,
pub draw_function: DrawFunctionId,
pub render_command: RenderCommandId,
}

impl PhaseItem for Opaque3d {
Expand All @@ -135,8 +135,8 @@ impl PhaseItem for Opaque3d {
}

#[inline]
fn draw_function(&self) -> DrawFunctionId {
self.draw_function
fn render_command(&self) -> RenderCommandId {
self.render_command
}

#[inline]
Expand All @@ -157,7 +157,7 @@ pub struct AlphaMask3d {
pub distance: f32,
pub pipeline: CachedRenderPipelineId,
pub entity: Entity,
pub draw_function: DrawFunctionId,
pub render_command: RenderCommandId,
}

impl PhaseItem for AlphaMask3d {
Expand All @@ -175,8 +175,8 @@ impl PhaseItem for AlphaMask3d {
}

#[inline]
fn draw_function(&self) -> DrawFunctionId {
self.draw_function
fn render_command(&self) -> RenderCommandId {
self.render_command
}

#[inline]
Expand All @@ -197,7 +197,7 @@ pub struct Transparent3d {
pub distance: f32,
pub pipeline: CachedRenderPipelineId,
pub entity: Entity,
pub draw_function: DrawFunctionId,
pub render_command: RenderCommandId,
}

impl PhaseItem for Transparent3d {
Expand All @@ -215,8 +215,8 @@ impl PhaseItem for Transparent3d {
}

#[inline]
fn draw_function(&self) -> DrawFunctionId {
self.draw_function
fn render_command(&self) -> RenderCommandId {
self.render_command
}

#[inline]
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_pbr/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ use bevy_render::{
extract_resource::ExtractResourcePlugin,
prelude::Color,
render_graph::RenderGraph,
render_phase::{sort_phase_system, AddRenderCommand, DrawFunctions},
render_phase::{sort_phase_system, AddRenderCommand, RenderCommands},
render_resource::{Shader, SpecializedMeshPipelines},
view::VisibilitySystems,
RenderApp, RenderStage,
Expand Down Expand Up @@ -243,7 +243,7 @@ impl Plugin for PbrPlugin {
.add_system_to_stage(RenderStage::Queue, render::queue_shadow_view_bind_group)
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Shadow>)
.init_resource::<ShadowPipeline>()
.init_resource::<DrawFunctions<Shadow>>()
.init_resource::<RenderCommands<Shadow>>()
.init_resource::<LightMeta>()
.init_resource::<GlobalLightMeta>()
.init_resource::<SpecializedMeshPipelines<ShadowPipeline>>();
Expand Down
20 changes: 10 additions & 10 deletions crates/bevy_pbr/src/material.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use bevy_render::{
prelude::Image,
render_asset::{PrepareAssetLabel, RenderAssets},
render_phase::{
AddRenderCommand, DrawFunctions, PhaseItem, RenderCommand, RenderCommandResult,
AddRenderCommand, PhaseItem, RenderCommand, RenderCommandResult, RenderCommands,
RenderPhase, SetItemPipeline, TrackedRenderPass,
},
render_resource::{
Expand Down Expand Up @@ -316,9 +316,9 @@ impl<P: PhaseItem, M: Material, const I: usize> RenderCommand<P> for SetMaterial

#[allow(clippy::too_many_arguments)]
pub fn queue_material_meshes<M: Material>(
opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3d>>,
transparent_draw_functions: Res<DrawFunctions<Transparent3d>>,
opaque_render_commands: Res<RenderCommands<Opaque3d>>,
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3d>>,
transparent_render_commands: Res<RenderCommands<Transparent3d>>,
material_pipeline: Res<MaterialPipeline<M>>,
mut pipelines: ResMut<SpecializedMeshPipelines<MaterialPipeline<M>>>,
mut pipeline_cache: ResMut<PipelineCache>,
Expand Down Expand Up @@ -346,9 +346,9 @@ pub fn queue_material_meshes<M: Material>(
mut transparent_phase,
) in &mut views
{
let draw_opaque_pbr = opaque_draw_functions.read().id::<DrawMaterial<M>>();
let draw_alpha_mask_pbr = alpha_mask_draw_functions.read().id::<DrawMaterial<M>>();
let draw_transparent_pbr = transparent_draw_functions.read().id::<DrawMaterial<M>>();
let draw_opaque_pbr = opaque_render_commands.id::<DrawMaterial<M>>();
let draw_alpha_mask_pbr = alpha_mask_render_commands.id::<DrawMaterial<M>>();
let draw_transparent_pbr = transparent_render_commands.id::<DrawMaterial<M>>();

let mut view_key =
MeshPipelineKey::from_msaa_samples(msaa.samples) | MeshPipelineKey::from_hdr(view.hdr);
Expand Down Expand Up @@ -401,23 +401,23 @@ pub fn queue_material_meshes<M: Material>(
AlphaMode::Opaque => {
opaque_phase.add(Opaque3d {
entity: *visible_entity,
draw_function: draw_opaque_pbr,
render_command: draw_opaque_pbr,
pipeline: pipeline_id,
distance,
});
}
AlphaMode::Mask(_) => {
alpha_mask_phase.add(AlphaMask3d {
entity: *visible_entity,
draw_function: draw_alpha_mask_pbr,
render_command: draw_alpha_mask_pbr,
pipeline: pipeline_id,
distance,
});
}
AlphaMode::Blend => {
transparent_phase.add(Transparent3d {
entity: *visible_entity,
draw_function: draw_transparent_pbr,
render_command: draw_transparent_pbr,
pipeline: pipeline_id,
distance,
});
Expand Down
16 changes: 8 additions & 8 deletions crates/bevy_pbr/src/render/light.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ use bevy_render::{
render_asset::RenderAssets,
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
render_phase::{
CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions, PhaseItem, RenderCommand,
RenderCommandResult, RenderPhase, SetItemPipeline, TrackedRenderPass,
CachedRenderPipelinePhaseItem, PhaseItem, RenderCommand, RenderCommandId,
RenderCommandResult, RenderCommands, RenderPhase, SetItemPipeline, TrackedRenderPass,
},
render_resource::*,
renderer::{RenderContext, RenderDevice, RenderQueue},
Expand Down Expand Up @@ -1621,7 +1621,7 @@ pub fn queue_shadow_view_bind_group(

#[allow(clippy::too_many_arguments)]
pub fn queue_shadows(
shadow_draw_functions: Res<DrawFunctions<Shadow>>,
shadow_render_commands: Res<RenderCommands<Shadow>>,
shadow_pipeline: Res<ShadowPipeline>,
casting_meshes: Query<&Handle<Mesh>, Without<NotShadowCaster>>,
render_meshes: Res<RenderAssets<Mesh>>,
Expand All @@ -1634,7 +1634,7 @@ pub fn queue_shadows(
spot_light_entities: Query<&VisibleEntities, With<ExtractedPointLight>>,
) {
for view_lights in &view_lights {
let draw_shadow_mesh = shadow_draw_functions.read().id::<DrawShadowMesh>();
let draw_shadow_mesh = shadow_render_commands.id::<DrawShadowMesh>();
for view_light_entity in view_lights.lights.iter().copied() {
let (light_entity, mut shadow_phase) =
view_light_shadow_phases.get_mut(view_light_entity).unwrap();
Expand Down Expand Up @@ -1676,7 +1676,7 @@ pub fn queue_shadows(
};

shadow_phase.add(Shadow {
draw_function: draw_shadow_mesh,
render_command: draw_shadow_mesh,
pipeline: pipeline_id,
entity,
distance: 0.0, // TODO: sort back-to-front
Expand All @@ -1692,7 +1692,7 @@ pub struct Shadow {
pub distance: f32,
pub entity: Entity,
pub pipeline: CachedRenderPipelineId,
pub draw_function: DrawFunctionId,
pub render_command: RenderCommandId,
}

impl PhaseItem for Shadow {
Expand All @@ -1709,8 +1709,8 @@ impl PhaseItem for Shadow {
}

#[inline]
fn draw_function(&self) -> DrawFunctionId {
self.draw_function
fn render_command(&self) -> RenderCommandId {
self.render_command
}

#[inline]
Expand Down
8 changes: 4 additions & 4 deletions crates/bevy_pbr/src/wireframe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use bevy_render::{
extract_resource::{ExtractResource, ExtractResourcePlugin},
mesh::{Mesh, MeshVertexBufferLayout},
render_asset::RenderAssets,
render_phase::{AddRenderCommand, DrawFunctions, RenderPhase, SetItemPipeline},
render_phase::{AddRenderCommand, RenderCommands, RenderPhase, SetItemPipeline},
render_resource::{
PipelineCache, PolygonMode, RenderPipelineDescriptor, Shader, SpecializedMeshPipeline,
SpecializedMeshPipelineError, SpecializedMeshPipelines,
Expand Down Expand Up @@ -103,7 +103,7 @@ impl SpecializedMeshPipeline for WireframePipeline {

#[allow(clippy::too_many_arguments)]
fn queue_wireframes(
opaque_3d_draw_functions: Res<DrawFunctions<Opaque3d>>,
opaque_3d_render_commands: Res<RenderCommands<Opaque3d>>,
render_meshes: Res<RenderAssets<Mesh>>,
wireframe_config: Res<WireframeConfig>,
wireframe_pipeline: Res<WireframePipeline>,
Expand All @@ -116,7 +116,7 @@ fn queue_wireframes(
)>,
mut views: Query<(&ExtractedView, &VisibleEntities, &mut RenderPhase<Opaque3d>)>,
) {
let draw_custom = opaque_3d_draw_functions.read().id::<DrawWireframes>();
let draw_custom = opaque_3d_render_commands.id::<DrawWireframes>();
let msaa_key = MeshPipelineKey::from_msaa_samples(msaa.samples);
for (view, visible_entities, mut opaque_phase) in &mut views {
let rangefinder = view.rangefinder3d();
Expand All @@ -143,7 +143,7 @@ fn queue_wireframes(
opaque_phase.add(Opaque3d {
entity,
pipeline: pipeline_id,
draw_function: draw_custom,
render_command: draw_custom,
distance: rangefinder.distance(&mesh_uniform.transform),
});
}
Expand Down
Loading

0 comments on commit 6d8a3dd

Please sign in to comment.