@@ -153,7 +153,6 @@ impl Plugin for Core3dPlugin {
153153 render_app
154154 . init_resource :: < DrawFunctions < Opaque3d > > ( )
155155 . init_resource :: < DrawFunctions < AlphaMask3d > > ( )
156- . init_resource :: < DrawFunctions < Transmissive3d > > ( )
157156 . init_resource :: < DrawFunctions < Transparent3d > > ( )
158157 . init_resource :: < DrawFunctions < Opaque3dPrepass > > ( )
159158 . init_resource :: < DrawFunctions < AlphaMask3dPrepass > > ( )
@@ -165,14 +164,12 @@ impl Plugin for Core3dPlugin {
165164 . init_resource :: < ViewBinnedRenderPhases < AlphaMask3dPrepass > > ( )
166165 . init_resource :: < ViewBinnedRenderPhases < Opaque3dDeferred > > ( )
167166 . init_resource :: < ViewBinnedRenderPhases < AlphaMask3dDeferred > > ( )
168- . init_resource :: < ViewSortedRenderPhases < Transmissive3d > > ( )
169167 . init_resource :: < ViewSortedRenderPhases < Transparent3d > > ( )
170168 . add_systems ( ExtractSchedule , extract_core_3d_camera_phases)
171169 . add_systems ( ExtractSchedule , extract_camera_prepass_phase)
172170 . add_systems (
173171 Render ,
174172 (
175- sort_phase_system :: < Transmissive3d > . in_set ( RenderSystems :: PhaseSort ) ,
176173 sort_phase_system :: < Transparent3d > . in_set ( RenderSystems :: PhaseSort ) ,
177174 configure_occlusion_culling_view_targets
178175 . after ( prepare_view_targets)
@@ -448,93 +445,6 @@ impl CachedRenderPipelinePhaseItem for AlphaMask3d {
448445 }
449446}
450447
451- pub struct Transmissive3d {
452- pub distance : f32 ,
453- pub pipeline : CachedRenderPipelineId ,
454- pub entity : ( Entity , MainEntity ) ,
455- pub draw_function : DrawFunctionId ,
456- pub batch_range : Range < u32 > ,
457- pub extra_index : PhaseItemExtraIndex ,
458- /// Whether the mesh in question is indexed (uses an index buffer in
459- /// addition to its vertex buffer).
460- pub indexed : bool ,
461- }
462-
463- impl PhaseItem for Transmissive3d {
464- /// For now, automatic batching is disabled for transmissive items because their rendering is
465- /// split into multiple steps depending on `ScreenSpaceTransmission::screen_space_specular_transmission_steps`,
466- /// which the batching system doesn't currently know about.
467- ///
468- /// Having batching enabled would cause the same item to be drawn multiple times across different
469- /// steps, whenever the batching range crossed a step boundary.
470- ///
471- /// Eventually, we could add support for this by having the batching system break up the batch ranges
472- /// using the same logic as the transmissive pass, but for now it's simpler to just disable batching.
473- const AUTOMATIC_BATCHING : bool = false ;
474-
475- #[ inline]
476- fn entity ( & self ) -> Entity {
477- self . entity . 0
478- }
479-
480- #[ inline]
481- fn main_entity ( & self ) -> MainEntity {
482- self . entity . 1
483- }
484-
485- #[ inline]
486- fn draw_function ( & self ) -> DrawFunctionId {
487- self . draw_function
488- }
489-
490- #[ inline]
491- fn batch_range ( & self ) -> & Range < u32 > {
492- & self . batch_range
493- }
494-
495- #[ inline]
496- fn batch_range_mut ( & mut self ) -> & mut Range < u32 > {
497- & mut self . batch_range
498- }
499-
500- #[ inline]
501- fn extra_index ( & self ) -> PhaseItemExtraIndex {
502- self . extra_index . clone ( )
503- }
504-
505- #[ inline]
506- fn batch_range_and_extra_index_mut ( & mut self ) -> ( & mut Range < u32 > , & mut PhaseItemExtraIndex ) {
507- ( & mut self . batch_range , & mut self . extra_index )
508- }
509- }
510-
511- impl SortedPhaseItem for Transmissive3d {
512- // NOTE: Values increase towards the camera. Back-to-front ordering for transmissive means we need an ascending sort.
513- type SortKey = FloatOrd ;
514-
515- #[ inline]
516- fn sort_key ( & self ) -> Self :: SortKey {
517- FloatOrd ( self . distance )
518- }
519-
520- #[ inline]
521- fn sort ( items : & mut [ Self ] ) {
522- radsort:: sort_by_key ( items, |item| item. distance ) ;
523- }
524-
525- #[ inline]
526- fn indexed ( & self ) -> bool {
527- self . indexed
528- }
529- }
530-
531- impl CachedRenderPipelinePhaseItem for Transmissive3d {
532- #[ inline]
533- fn cached_pipeline ( & self ) -> CachedRenderPipelineId {
534- self . pipeline
535- }
536- }
537-
538448pub struct Transparent3d {
539449 pub distance : f32 ,
540450 pub pipeline : CachedRenderPipelineId ,
@@ -613,7 +523,6 @@ impl CachedRenderPipelinePhaseItem for Transparent3d {
613523pub fn extract_core_3d_camera_phases (
614524 mut opaque_3d_phases : ResMut < ViewBinnedRenderPhases < Opaque3d > > ,
615525 mut alpha_mask_3d_phases : ResMut < ViewBinnedRenderPhases < AlphaMask3d > > ,
616- mut transmissive_3d_phases : ResMut < ViewSortedRenderPhases < Transmissive3d > > ,
617526 mut transparent_3d_phases : ResMut < ViewSortedRenderPhases < Transparent3d > > ,
618527 cameras_3d : Extract < Query < ( Entity , & Camera , Has < NoIndirectDrawing > ) , With < Camera3d > > > ,
619528 mut live_entities : Local < HashSet < RetainedViewEntity > > ,
@@ -639,15 +548,13 @@ pub fn extract_core_3d_camera_phases(
639548
640549 opaque_3d_phases. prepare_for_new_frame ( retained_view_entity, gpu_preprocessing_mode) ;
641550 alpha_mask_3d_phases. prepare_for_new_frame ( retained_view_entity, gpu_preprocessing_mode) ;
642- transmissive_3d_phases. insert_or_clear ( retained_view_entity) ;
643551 transparent_3d_phases. insert_or_clear ( retained_view_entity) ;
644552
645553 live_entities. insert ( retained_view_entity) ;
646554 }
647555
648556 opaque_3d_phases. retain ( |view_entity, _| live_entities. contains ( view_entity) ) ;
649557 alpha_mask_3d_phases. retain ( |view_entity, _| live_entities. contains ( view_entity) ) ;
650- transmissive_3d_phases. retain ( |view_entity, _| live_entities. contains ( view_entity) ) ;
651558 transparent_3d_phases. retain ( |view_entity, _| live_entities. contains ( view_entity) ) ;
652559}
653560
@@ -785,7 +692,6 @@ pub fn prepare_core_3d_depth_textures(
785692 render_device : Res < RenderDevice > ,
786693 opaque_3d_phases : Res < ViewBinnedRenderPhases < Opaque3d > > ,
787694 alpha_mask_3d_phases : Res < ViewBinnedRenderPhases < AlphaMask3d > > ,
788- transmissive_3d_phases : Res < ViewSortedRenderPhases < Transmissive3d > > ,
789695 transparent_3d_phases : Res < ViewSortedRenderPhases < Transparent3d > > ,
790696 views_3d : Query < (
791697 Entity ,
@@ -800,7 +706,6 @@ pub fn prepare_core_3d_depth_textures(
800706 for ( _, camera, extracted_view, depth_prepass, camera_3d, _msaa) in & views_3d {
801707 if !opaque_3d_phases. contains_key ( & extracted_view. retained_view_entity )
802708 || !alpha_mask_3d_phases. contains_key ( & extracted_view. retained_view_entity )
803- || !transmissive_3d_phases. contains_key ( & extracted_view. retained_view_entity )
804709 || !transparent_3d_phases. contains_key ( & extracted_view. retained_view_entity )
805710 {
806711 continue ;
0 commit comments