diff --git a/crates/bevy_anti_aliasing/src/contrast_adaptive_sharpening/mod.rs b/crates/bevy_anti_aliasing/src/contrast_adaptive_sharpening/mod.rs index d1de3f4cead3c..d6201bc80489d 100644 --- a/crates/bevy_anti_aliasing/src/contrast_adaptive_sharpening/mod.rs +++ b/crates/bevy_anti_aliasing/src/contrast_adaptive_sharpening/mod.rs @@ -224,12 +224,12 @@ impl SpecializedRenderPipeline for CasPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_anti_aliasing/src/fxaa/mod.rs b/crates/bevy_anti_aliasing/src/fxaa/mod.rs index adc2a3d5a2706..386a666cad825 100644 --- a/crates/bevy_anti_aliasing/src/fxaa/mod.rs +++ b/crates/bevy_anti_aliasing/src/fxaa/mod.rs @@ -196,12 +196,12 @@ impl SpecializedRenderPipeline for FxaaPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_anti_aliasing/src/smaa/mod.rs b/crates/bevy_anti_aliasing/src/smaa/mod.rs index bb082c5a019a4..7a7f3acf27cca 100644 --- a/crates/bevy_anti_aliasing/src/smaa/mod.rs +++ b/crates/bevy_anti_aliasing/src/smaa/mod.rs @@ -485,6 +485,7 @@ impl SpecializedRenderPipeline for SmaaEdgeDetectionPipeline { shader_defs: shader_defs.clone(), entry_point: "edge_detection_vertex_main".into(), buffers: vec![], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -495,6 +496,7 @@ impl SpecializedRenderPipeline for SmaaEdgeDetectionPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), push_constant_ranges: vec![], primitive: PrimitiveState::default(), @@ -511,7 +513,6 @@ impl SpecializedRenderPipeline for SmaaEdgeDetectionPipeline { bias: default(), }), multisample: MultisampleState::default(), - zero_initialize_workgroup_memory: false, } } } @@ -545,6 +546,7 @@ impl SpecializedRenderPipeline for SmaaBlendingWeightCalculationPipeline { shader_defs: shader_defs.clone(), entry_point: "blending_weight_calculation_vertex_main".into(), buffers: vec![], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -555,6 +557,7 @@ impl SpecializedRenderPipeline for SmaaBlendingWeightCalculationPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), push_constant_ranges: vec![], primitive: PrimitiveState::default(), @@ -571,7 +574,6 @@ impl SpecializedRenderPipeline for SmaaBlendingWeightCalculationPipeline { bias: default(), }), multisample: MultisampleState::default(), - zero_initialize_workgroup_memory: false, } } } @@ -593,6 +595,7 @@ impl SpecializedRenderPipeline for SmaaNeighborhoodBlendingPipeline { shader_defs: shader_defs.clone(), entry_point: "neighborhood_blending_vertex_main".into(), buffers: vec![], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -603,12 +606,12 @@ impl SpecializedRenderPipeline for SmaaNeighborhoodBlendingPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), push_constant_ranges: vec![], primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_anti_aliasing/src/taa/mod.rs b/crates/bevy_anti_aliasing/src/taa/mod.rs index 6a00e9c0cf7b2..e7f80958b3684 100644 --- a/crates/bevy_anti_aliasing/src/taa/mod.rs +++ b/crates/bevy_anti_aliasing/src/taa/mod.rs @@ -333,12 +333,12 @@ impl SpecializedRenderPipeline for TaaPipeline { write_mask: ColorWrites::ALL, }), ], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/auto_exposure/pipeline.rs b/crates/bevy_core_pipeline/src/auto_exposure/pipeline.rs index 28ed6b4ee867c..d7c76c16bc7ea 100644 --- a/crates/bevy_core_pipeline/src/auto_exposure/pipeline.rs +++ b/crates/bevy_core_pipeline/src/auto_exposure/pipeline.rs @@ -87,7 +87,7 @@ impl SpecializedComputePipeline for AutoExposurePipeline { AutoExposurePass::Average => "compute_average".into(), }, push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } diff --git a/crates/bevy_core_pipeline/src/blit/mod.rs b/crates/bevy_core_pipeline/src/blit/mod.rs index 8dc655e91fc25..670f9e6b37936 100644 --- a/crates/bevy_core_pipeline/src/blit/mod.rs +++ b/crates/bevy_core_pipeline/src/blit/mod.rs @@ -92,6 +92,7 @@ impl SpecializedRenderPipeline for BlitPipeline { blend: key.blend_state, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, @@ -100,7 +101,6 @@ impl SpecializedRenderPipeline for BlitPipeline { ..Default::default() }, push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/bloom/downsampling_pipeline.rs b/crates/bevy_core_pipeline/src/bloom/downsampling_pipeline.rs index 201d5a6cbd496..2a9814418ec73 100644 --- a/crates/bevy_core_pipeline/src/bloom/downsampling_pipeline.rs +++ b/crates/bevy_core_pipeline/src/bloom/downsampling_pipeline.rs @@ -136,12 +136,12 @@ impl SpecializedRenderPipeline for BloomDownsamplingPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/bloom/upsampling_pipeline.rs b/crates/bevy_core_pipeline/src/bloom/upsampling_pipeline.rs index c49a9d5b16606..a10969f022483 100644 --- a/crates/bevy_core_pipeline/src/bloom/upsampling_pipeline.rs +++ b/crates/bevy_core_pipeline/src/bloom/upsampling_pipeline.rs @@ -129,12 +129,12 @@ impl SpecializedRenderPipeline for BloomUpsamplingPipeline { }), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs b/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs index 2cf44a4015458..24a1d41ce2dff 100644 --- a/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs +++ b/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs @@ -145,6 +145,7 @@ impl FromWorld for CopyDeferredLightingIdPipeline { shader_defs: vec![], entry_point: "fragment".into(), targets: vec![], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: Some(DepthStencilState { @@ -156,7 +157,6 @@ impl FromWorld for CopyDeferredLightingIdPipeline { }), multisample: MultisampleState::default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, }); Self { diff --git a/crates/bevy_core_pipeline/src/dof/mod.rs b/crates/bevy_core_pipeline/src/dof/mod.rs index 7e2f52e3fc5e0..1aa8260867690 100644 --- a/crates/bevy_core_pipeline/src/dof/mod.rs +++ b/crates/bevy_core_pipeline/src/dof/mod.rs @@ -815,8 +815,8 @@ impl SpecializedRenderPipeline for DepthOfFieldPipeline { DofPass::BokehPass1 => "bokeh_pass_1".into(), }, targets, + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/experimental/mip_generation/mod.rs b/crates/bevy_core_pipeline/src/experimental/mip_generation/mod.rs index 1223ed35ec4a7..b924badcf1e2b 100644 --- a/crates/bevy_core_pipeline/src/experimental/mip_generation/mod.rs +++ b/crates/bevy_core_pipeline/src/experimental/mip_generation/mod.rs @@ -497,7 +497,7 @@ impl SpecializedComputePipeline for DownsampleDepthPipeline { } else { "downsample_depth_first".into() }, - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } diff --git a/crates/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs b/crates/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs index de8aa856c9a36..1cd9183b86b2b 100644 --- a/crates/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs +++ b/crates/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs @@ -35,6 +35,7 @@ impl FullscreenShader { shader_defs: Vec::new(), entry_point: "fullscreen_vertex_shader".into(), buffers: Vec::new(), + compilation_options: Default::default(), } } } diff --git a/crates/bevy_core_pipeline/src/motion_blur/pipeline.rs b/crates/bevy_core_pipeline/src/motion_blur/pipeline.rs index 9e36e508dc164..4a0f56b09f75e 100644 --- a/crates/bevy_core_pipeline/src/motion_blur/pipeline.rs +++ b/crates/bevy_core_pipeline/src/motion_blur/pipeline.rs @@ -149,12 +149,12 @@ impl SpecializedRenderPipeline for MotionBlurPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/oit/resolve/mod.rs b/crates/bevy_core_pipeline/src/oit/resolve/mod.rs index 7067e5f83b19b..d869336932fe8 100644 --- a/crates/bevy_core_pipeline/src/oit/resolve/mod.rs +++ b/crates/bevy_core_pipeline/src/oit/resolve/mod.rs @@ -227,13 +227,13 @@ fn specialize_oit_resolve_pipeline( }), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), vertex: fullscreen_shader.to_vertex_state(), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } diff --git a/crates/bevy_core_pipeline/src/post_process/mod.rs b/crates/bevy_core_pipeline/src/post_process/mod.rs index f7d2501b416ce..a9d3f839457af 100644 --- a/crates/bevy_core_pipeline/src/post_process/mod.rs +++ b/crates/bevy_core_pipeline/src/post_process/mod.rs @@ -333,12 +333,12 @@ impl SpecializedRenderPipeline for PostProcessingPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: default(), depth_stencil: None, multisample: default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/skybox/mod.rs b/crates/bevy_core_pipeline/src/skybox/mod.rs index 51c6934ecec4a..5c5478e14d4f5 100644 --- a/crates/bevy_core_pipeline/src/skybox/mod.rs +++ b/crates/bevy_core_pipeline/src/skybox/mod.rs @@ -198,6 +198,7 @@ impl SpecializedRenderPipeline for SkyboxPipeline { shader_defs: Vec::new(), entry_point: "skybox_vertex".into(), buffers: Vec::new(), + compilation_options: Default::default(), }, primitive: PrimitiveState::default(), depth_stencil: Some(DepthStencilState { @@ -235,8 +236,8 @@ impl SpecializedRenderPipeline for SkyboxPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/skybox/prepass.rs b/crates/bevy_core_pipeline/src/skybox/prepass.rs index ad63339d05dc6..882c246f14cc6 100644 --- a/crates/bevy_core_pipeline/src/skybox/prepass.rs +++ b/crates/bevy_core_pipeline/src/skybox/prepass.rs @@ -107,8 +107,8 @@ impl SpecializedRenderPipeline for SkyboxPrepassPipeline { shader_defs: vec![], entry_point: "fragment".into(), targets: prepass_target_descriptors(key.normal_prepass, true, false), + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_core_pipeline/src/tonemapping/mod.rs b/crates/bevy_core_pipeline/src/tonemapping/mod.rs index 7453b2bf19869..b38d983c698b8 100644 --- a/crates/bevy_core_pipeline/src/tonemapping/mod.rs +++ b/crates/bevy_core_pipeline/src/tonemapping/mod.rs @@ -285,12 +285,12 @@ impl SpecializedRenderPipeline for TonemappingPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_gizmos/src/pipeline_2d.rs b/crates/bevy_gizmos/src/pipeline_2d.rs index a97071249d1a4..da8a3ce82e249 100644 --- a/crates/bevy_gizmos/src/pipeline_2d.rs +++ b/crates/bevy_gizmos/src/pipeline_2d.rs @@ -131,6 +131,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: line_gizmo_vertex_buffer_layouts(key.strip), + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -141,6 +142,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout, primitive: PrimitiveState::default(), @@ -167,7 +169,6 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { }, label: Some("LineGizmo Pipeline 2D".into()), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } @@ -234,6 +235,7 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { entry_point: entry_point.into(), shader_defs: shader_defs.clone(), buffers: line_joint_gizmo_vertex_buffer_layouts(), + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -244,6 +246,7 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout, primitive: PrimitiveState::default(), @@ -270,7 +273,6 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { }, label: Some("LineJointGizmo Pipeline 2D".into()), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_gizmos/src/pipeline_3d.rs b/crates/bevy_gizmos/src/pipeline_3d.rs index 1cc70c67cb313..b9521ed62a444 100644 --- a/crates/bevy_gizmos/src/pipeline_3d.rs +++ b/crates/bevy_gizmos/src/pipeline_3d.rs @@ -138,6 +138,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: line_gizmo_vertex_buffer_layouts(key.strip), + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -148,6 +149,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout, primitive: PrimitiveState::default(), @@ -165,7 +167,6 @@ impl SpecializedRenderPipeline for LineGizmoPipeline { }, label: Some("LineGizmo 3d Pipeline".into()), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } @@ -239,6 +240,7 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { entry_point: entry_point.into(), shader_defs: shader_defs.clone(), buffers: line_joint_gizmo_vertex_buffer_layouts(), + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -249,6 +251,7 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout, primitive: PrimitiveState::default(), @@ -266,7 +269,6 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline { }, label: Some("LineJointGizmo 3d Pipeline".into()), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_pbr/src/atmosphere/resources.rs b/crates/bevy_pbr/src/atmosphere/resources.rs index aa682fbb03bb2..5c07e0edb9477 100644 --- a/crates/bevy_pbr/src/atmosphere/resources.rs +++ b/crates/bevy_pbr/src/atmosphere/resources.rs @@ -279,7 +279,7 @@ impl FromWorld for AtmosphereLutPipelines { shader: load_embedded_asset!(world, "transmittance_lut.wgsl"), shader_defs: vec![], entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let multiscattering_lut = @@ -290,7 +290,7 @@ impl FromWorld for AtmosphereLutPipelines { shader: load_embedded_asset!(world, "multiscattering_lut.wgsl"), shader_defs: vec![], entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let sky_view_lut = pipeline_cache.queue_compute_pipeline(ComputePipelineDescriptor { @@ -300,7 +300,7 @@ impl FromWorld for AtmosphereLutPipelines { shader: load_embedded_asset!(world, "sky_view_lut.wgsl"), shader_defs: vec![], entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let aerial_view_lut = pipeline_cache.queue_compute_pipeline(ComputePipelineDescriptor { @@ -310,7 +310,7 @@ impl FromWorld for AtmosphereLutPipelines { shader: load_embedded_asset!(world, "aerial_view_lut.wgsl"), shader_defs: vec![], entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); Self { @@ -366,7 +366,6 @@ impl SpecializedRenderPipeline for RenderSkyBindGroupLayouts { mask: !0, alpha_to_coverage_enabled: false, }, - zero_initialize_workgroup_memory: false, fragment: Some(FragmentState { shader: self.fragment_shader.clone(), shader_defs, @@ -387,6 +386,7 @@ impl SpecializedRenderPipeline for RenderSkyBindGroupLayouts { }), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), } } diff --git a/crates/bevy_pbr/src/deferred/mod.rs b/crates/bevy_pbr/src/deferred/mod.rs index 28edd38c52fb0..d65db13983f1b 100644 --- a/crates/bevy_pbr/src/deferred/mod.rs +++ b/crates/bevy_pbr/src/deferred/mod.rs @@ -357,6 +357,7 @@ impl SpecializedRenderPipeline for DeferredLightingLayout { shader_defs: shader_defs.clone(), entry_point: "vertex".into(), buffers: Vec::new(), + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.deferred_lighting_shader.clone(), @@ -371,6 +372,7 @@ impl SpecializedRenderPipeline for DeferredLightingLayout { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), depth_stencil: Some(DepthStencilState { @@ -391,7 +393,6 @@ impl SpecializedRenderPipeline for DeferredLightingLayout { }), multisample: MultisampleState::default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_pbr/src/meshlet/material_pipeline_prepare.rs b/crates/bevy_pbr/src/meshlet/material_pipeline_prepare.rs index 57762bfc8a609..7ca60f7e2ef74 100644 --- a/crates/bevy_pbr/src/meshlet/material_pipeline_prepare.rs +++ b/crates/bevy_pbr/src/meshlet/material_pipeline_prepare.rs @@ -199,6 +199,7 @@ pub fn prepare_material_meshlet_meshes_main_opaque_pass( shader_defs: shader_defs.clone(), entry_point: material_pipeline_descriptor.vertex.entry_point, buffers: Vec::new(), + compilation_options: Default::default(), }, primitive: PrimitiveState::default(), depth_stencil: Some(DepthStencilState { @@ -218,8 +219,8 @@ pub fn prepare_material_meshlet_meshes_main_opaque_pass( shader_defs, entry_point: material_fragment.entry_point, targets: material_fragment.targets, + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }; let material_id = instance_manager.get_material_id(material_id.untyped()); diff --git a/crates/bevy_pbr/src/meshlet/pipelines.rs b/crates/bevy_pbr/src/meshlet/pipelines.rs index 243bbddf220ff..b22fb8dba2083 100644 --- a/crates/bevy_pbr/src/meshlet/pipelines.rs +++ b/crates/bevy_pbr/src/meshlet/pipelines.rs @@ -96,7 +96,7 @@ impl FromWorld for MeshletPipelines { shader: MESHLET_FILL_CLUSTER_BUFFERS_SHADER_HANDLE, shader_defs: vec!["MESHLET_FILL_CLUSTER_BUFFERS_PASS".into()], entry_point: "fill_cluster_buffers".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -111,7 +111,7 @@ impl FromWorld for MeshletPipelines { shader: MESHLET_CLEAR_VISIBILITY_BUFFER_SHADER_HANDLE, shader_defs: vec!["MESHLET_VISIBILITY_BUFFER_RASTER_PASS_OUTPUT".into()], entry_point: "clear_visibility_buffer".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -126,7 +126,7 @@ impl FromWorld for MeshletPipelines { shader: MESHLET_CLEAR_VISIBILITY_BUFFER_SHADER_HANDLE, shader_defs: vec![], entry_point: "clear_visibility_buffer".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -143,7 +143,7 @@ impl FromWorld for MeshletPipelines { "MESHLET_FIRST_CULLING_PASS".into(), ], entry_point: "cull_clusters".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }), cull_second: pipeline_cache.queue_compute_pipeline(ComputePipelineDescriptor { @@ -159,7 +159,7 @@ impl FromWorld for MeshletPipelines { "MESHLET_SECOND_CULLING_PASS".into(), ], entry_point: "cull_clusters".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }), downsample_depth_first: pipeline_cache.queue_compute_pipeline( @@ -176,7 +176,7 @@ impl FromWorld for MeshletPipelines { "MESHLET".into(), ], entry_point: "downsample_depth_first".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -194,7 +194,7 @@ impl FromWorld for MeshletPipelines { "MESHLET".into(), ], entry_point: "downsample_depth_second".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -209,7 +209,7 @@ impl FromWorld for MeshletPipelines { shader: DOWNSAMPLE_DEPTH_SHADER_HANDLE, shader_defs: vec!["MESHLET".into()], entry_point: "downsample_depth_first".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -224,7 +224,7 @@ impl FromWorld for MeshletPipelines { shader: DOWNSAMPLE_DEPTH_SHADER_HANDLE, shader_defs: vec!["MESHLET".into()], entry_point: "downsample_depth_second".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -245,7 +245,7 @@ impl FromWorld for MeshletPipelines { .into(), ], entry_point: "rasterize_cluster".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -267,7 +267,7 @@ impl FromWorld for MeshletPipelines { .into(), ], entry_point: "rasterize_cluster".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }, ), @@ -287,6 +287,7 @@ impl FromWorld for MeshletPipelines { ], entry_point: "vertex".into(), buffers: vec![], + compilation_options: Default::default(), }, primitive: PrimitiveState { topology: PrimitiveTopology::TriangleList, @@ -311,8 +312,8 @@ impl FromWorld for MeshletPipelines { blend: None, write_mask: ColorWrites::empty(), })], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }, ), @@ -331,6 +332,7 @@ impl FromWorld for MeshletPipelines { shader_defs: vec!["MESHLET_VISIBILITY_BUFFER_RASTER_PASS".into()], entry_point: "vertex".into(), buffers: vec![], + compilation_options: Default::default(), }, primitive: PrimitiveState { topology: PrimitiveTopology::TriangleList, @@ -352,8 +354,8 @@ impl FromWorld for MeshletPipelines { blend: None, write_mask: ColorWrites::empty(), })], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }, ), @@ -373,6 +375,7 @@ impl FromWorld for MeshletPipelines { shader_defs: vec!["MESHLET_VISIBILITY_BUFFER_RASTER_PASS".into()], entry_point: "vertex".into(), buffers: vec![], + compilation_options: Default::default(), }, primitive: PrimitiveState { topology: PrimitiveTopology::TriangleList, @@ -394,8 +397,8 @@ impl FromWorld for MeshletPipelines { blend: None, write_mask: ColorWrites::empty(), })], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }), resolve_depth: pipeline_cache.queue_render_pipeline(RenderPipelineDescriptor { @@ -417,8 +420,8 @@ impl FromWorld for MeshletPipelines { shader_defs: vec!["MESHLET_VISIBILITY_BUFFER_RASTER_PASS_OUTPUT".into()], entry_point: "resolve_depth".into(), targets: vec![], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }), resolve_depth_shadow_view: pipeline_cache.queue_render_pipeline( @@ -441,8 +444,8 @@ impl FromWorld for MeshletPipelines { shader_defs: vec![], entry_point: "resolve_depth".into(), targets: vec![], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }, ), @@ -466,8 +469,8 @@ impl FromWorld for MeshletPipelines { shader_defs: vec!["MESHLET_VISIBILITY_BUFFER_RASTER_PASS_OUTPUT".into()], entry_point: "resolve_material_depth".into(), targets: vec![], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, }, ), @@ -482,7 +485,7 @@ impl FromWorld for MeshletPipelines { shader: MESHLET_REMAP_1D_TO_2D_DISPATCH_SHADER_HANDLE, shader_defs: vec![], entry_point: "remap_dispatch".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }) }), } diff --git a/crates/bevy_pbr/src/prepass/mod.rs b/crates/bevy_pbr/src/prepass/mod.rs index aef2b74177b3e..104adad24d34a 100644 --- a/crates/bevy_pbr/src/prepass/mod.rs +++ b/crates/bevy_pbr/src/prepass/mod.rs @@ -598,6 +598,7 @@ impl PrepassPipelineInternal { entry_point: "fragment".into(), shader_defs: shader_defs.clone(), targets, + compilation_options: Default::default(), } }); @@ -619,6 +620,7 @@ impl PrepassPipelineInternal { entry_point: "vertex".into(), shader_defs, buffers: vec![vertex_buffer_layout], + compilation_options: Default::default(), }, fragment, layout: bind_group_layouts, @@ -654,7 +656,6 @@ impl PrepassPipelineInternal { }, push_constant_ranges: vec![], label: Some("prepass_pipeline".into()), - zero_initialize_workgroup_memory: false, }; Ok(descriptor) } diff --git a/crates/bevy_pbr/src/render/gpu_preprocess.rs b/crates/bevy_pbr/src/render/gpu_preprocess.rs index eaa7e857b7598..19c45b2a24302 100644 --- a/crates/bevy_pbr/src/render/gpu_preprocess.rs +++ b/crates/bevy_pbr/src/render/gpu_preprocess.rs @@ -1276,7 +1276,7 @@ impl SpecializedComputePipeline for PreprocessPipeline { shader: self.shader.clone(), shader_defs, entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } @@ -1641,7 +1641,7 @@ impl SpecializedComputePipeline for ResetIndirectBatchSetsPipeline { shader: self.shader.clone(), shader_defs: vec![], entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } @@ -1695,7 +1695,7 @@ impl SpecializedComputePipeline for BuildIndirectParametersPipeline { shader: self.shader.clone(), shader_defs, entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } diff --git a/crates/bevy_pbr/src/render/mesh.rs b/crates/bevy_pbr/src/render/mesh.rs index d8a3256b13460..6c1652d8829c2 100644 --- a/crates/bevy_pbr/src/render/mesh.rs +++ b/crates/bevy_pbr/src/render/mesh.rs @@ -2574,6 +2574,7 @@ impl SpecializedMeshPipeline for MeshPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_buffer_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -2584,6 +2585,7 @@ impl SpecializedMeshPipeline for MeshPipeline { blend, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: bind_group_layout, push_constant_ranges: vec![], @@ -2618,7 +2620,6 @@ impl SpecializedMeshPipeline for MeshPipeline { alpha_to_coverage_enabled, }, label: Some(label), - zero_initialize_workgroup_memory: false, }) } } diff --git a/crates/bevy_pbr/src/ssao/mod.rs b/crates/bevy_pbr/src/ssao/mod.rs index dc3ea865f23a6..58628106d908e 100644 --- a/crates/bevy_pbr/src/ssao/mod.rs +++ b/crates/bevy_pbr/src/ssao/mod.rs @@ -415,7 +415,7 @@ impl FromWorld for SsaoPipelines { shader: load_embedded_asset!(world, "preprocess_depth.wgsl"), shader_defs: Vec::new(), entry_point: "preprocess_depth".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let spatial_denoise_pipeline = @@ -429,7 +429,7 @@ impl FromWorld for SsaoPipelines { shader: load_embedded_asset!(world, "spatial_denoise.wgsl"), shader_defs: Vec::new(), entry_point: "spatial_denoise".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); Self { @@ -484,7 +484,7 @@ impl SpecializedComputePipeline for SsaoPipelines { shader: self.shader.clone(), shader_defs, entry_point: "ssao".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), } } } diff --git a/crates/bevy_pbr/src/ssr/mod.rs b/crates/bevy_pbr/src/ssr/mod.rs index 67ca025ce7764..abf263917958e 100644 --- a/crates/bevy_pbr/src/ssr/mod.rs +++ b/crates/bevy_pbr/src/ssr/mod.rs @@ -552,12 +552,12 @@ impl SpecializedRenderPipeline for ScreenSpaceReflectionsPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), push_constant_ranges: vec![], primitive: default(), depth_stencil: None, multisample: default(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_pbr/src/volumetric_fog/render.rs b/crates/bevy_pbr/src/volumetric_fog/render.rs index cf2989a980533..167a200ace99d 100644 --- a/crates/bevy_pbr/src/volumetric_fog/render.rs +++ b/crates/bevy_pbr/src/volumetric_fog/render.rs @@ -568,6 +568,7 @@ impl SpecializedRenderPipeline for VolumetricFogPipeline { shader_defs: shader_defs.clone(), entry_point: "vertex".into(), buffers: vec![vertex_format], + compilation_options: Default::default(), }, primitive: PrimitiveState { cull_mode: Some(Face::Back), @@ -602,8 +603,8 @@ impl SpecializedRenderPipeline for VolumetricFogPipeline { }), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_render/src/render_resource/mod.rs b/crates/bevy_render/src/render_resource/mod.rs index aecf27173d9bb..883f241b78fb1 100644 --- a/crates/bevy_render/src/render_resource/mod.rs +++ b/crates/bevy_render/src/render_resource/mod.rs @@ -50,7 +50,8 @@ pub use wgpu::{ CreateBlasDescriptor, CreateTlasDescriptor, DepthBiasState, DepthStencilState, DownlevelFlags, Extent3d, Face, Features as WgpuFeatures, FilterMode, FragmentState as RawFragmentState, FrontFace, ImageSubresourceRange, IndexFormat, Limits as WgpuLimits, LoadOp, Maintain, MapMode, - MultisampleState, Operations, Origin3d, PipelineCompilationOptions, PipelineLayout, + MultisampleState, Operations, Origin3d, + PipelineCompilationOptions as RawPipelineCompilationOptions, PipelineLayout, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange, RenderPassColorAttachment, RenderPassDepthStencilAttachment, RenderPassDescriptor, RenderPipelineDescriptor as RawRenderPipelineDescriptor, Sampler as WgpuSampler, diff --git a/crates/bevy_render/src/render_resource/pipeline.rs b/crates/bevy_render/src/render_resource/pipeline.rs index b76174cac38b3..9e6ee78262052 100644 --- a/crates/bevy_render/src/render_resource/pipeline.rs +++ b/crates/bevy_render/src/render_resource/pipeline.rs @@ -8,6 +8,7 @@ use alloc::borrow::Cow; use bevy_asset::Handle; use bevy_utils::WgpuWrapper; use core::ops::Deref; +use std::collections::HashMap; use wgpu::{ ColorTargetState, DepthStencilState, MultisampleState, PrimitiveState, PushConstantRange, }; @@ -107,12 +108,9 @@ pub struct RenderPipelineDescriptor { pub multisample: MultisampleState, /// The compiled fragment stage, its entry point, and the color targets. pub fragment: Option, - /// Whether to zero-initialize workgroup memory by default. If you're not sure, set this to true. - /// If this is false, reading from workgroup variables before writing to them will result in garbage values. - pub zero_initialize_workgroup_memory: bool, } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct VertexState { /// The compiled shader module for this stage. pub shader: Handle, @@ -122,10 +120,12 @@ pub struct VertexState { pub entry_point: Cow<'static, str>, /// The format of any vertex buffers used with this pipeline. pub buffers: Vec, + /// Advanced options for use when a pipeline is compiled + pub compilation_options: PipelineCompilationOptions, } /// Describes the fragment process in a render pipeline. -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq)] pub struct FragmentState { /// The compiled shader module for this stage. pub shader: Handle, @@ -135,6 +135,8 @@ pub struct FragmentState { pub entry_point: Cow<'static, str>, /// The color state of the render targets. pub targets: Vec>, + // Advanced options for use when a pipeline is compiled + pub compilation_options: PipelineCompilationOptions, } /// Describes a compute pipeline. @@ -149,7 +151,26 @@ pub struct ComputePipelineDescriptor { /// The name of the entry point in the compiled shader. There must be a /// function with this name in the shader. pub entry_point: Cow<'static, str>, - /// Whether to zero-initialize workgroup memory by default. If you're not sure, set this to true. - /// If this is false, reading from workgroup variables before writing to them will result in garbage values. + // Advanced options for use when a pipeline is compiled + pub compilation_options: PipelineCompilationOptions, +} + +#[derive(Clone, Debug, Default, PartialEq)] +/// Advanced options for use when a pipeline is compiled +/// +/// This implements `Default`, and for most users can be set to `Default::default()` +pub struct PipelineCompilationOptions { + /// Specifies the values of pipeline-overridable constants in the shader module. + /// + /// If an `@id` attribute was specified on the declaration, + /// the key must be the pipeline constant ID as a decimal ASCII number; if not, + /// the key must be the constant's identifier name. + /// + /// The value may represent any of WGSL's concrete scalar types. + pub constants: HashMap, + /// Whether workgroup scoped memory will be initialized with zero values for this stage. + /// + /// This is required by the WebGPU spec, but may have overhead which can be avoided + /// for cross-platform applications pub zero_initialize_workgroup_memory: bool, } diff --git a/crates/bevy_render/src/render_resource/pipeline_cache.rs b/crates/bevy_render/src/render_resource/pipeline_cache.rs index 9d658cf361abd..282cf4fbbaf8d 100644 --- a/crates/bevy_render/src/render_resource/pipeline_cache.rs +++ b/crates/bevy_render/src/render_resource/pipeline_cache.rs @@ -863,20 +863,6 @@ impl PipelineCache { }) .collect::>(); - let fragment_data = descriptor.fragment.as_ref().map(|fragment| { - ( - fragment_module.unwrap(), - fragment.entry_point.deref(), - fragment.targets.as_slice(), - ) - }); - - // TODO: Expose the rest of this somehow - let compilation_options = PipelineCompilationOptions { - constants: &default(), - zero_initialize_workgroup_memory: descriptor.zero_initialize_workgroup_memory, - }; - let descriptor = RawRenderPipelineDescriptor { multiview: None, depth_stencil: descriptor.depth_stencil.clone(), @@ -888,17 +874,27 @@ impl PipelineCache { buffers: &vertex_buffer_layouts, entry_point: Some(descriptor.vertex.entry_point.deref()), module: &vertex_module, - // TODO: Should this be the same as the fragment compilation options? - compilation_options: compilation_options.clone(), + compilation_options: RawPipelineCompilationOptions { + constants: &descriptor.vertex.compilation_options.constants, + zero_initialize_workgroup_memory: descriptor + .vertex + .compilation_options + .zero_initialize_workgroup_memory, + }, }, - fragment: fragment_data + fragment: descriptor + .fragment .as_ref() - .map(|(module, entry_point, targets)| RawFragmentState { - entry_point: Some(entry_point), - module, - targets, - // TODO: Should this be the same as the vertex compilation options? - compilation_options, + .map(|fragment_state| RawFragmentState { + entry_point: Some(&fragment_state.entry_point), + module: fragment_module.as_ref().unwrap(), + targets: fragment_state.targets.as_slice(), + compilation_options: RawPipelineCompilationOptions { + constants: &fragment_state.compilation_options.constants, + zero_initialize_workgroup_memory: fragment_state + .compilation_options + .zero_initialize_workgroup_memory, + }, }), cache: None, }; @@ -953,10 +949,11 @@ impl PipelineCache { layout: layout.as_ref().map(|layout| -> &PipelineLayout { layout }), module: &compute_module, entry_point: Some(&descriptor.entry_point), - // TODO: Expose the rest of this somehow compilation_options: PipelineCompilationOptions { - constants: &default(), + constants: &descriptor.compilation_options.constants, + zero_initialize_workgroup_memory: descriptor + .compilation_options .zero_initialize_workgroup_memory, }, cache: None, diff --git a/crates/bevy_render/src/view/window/screenshot.rs b/crates/bevy_render/src/view/window/screenshot.rs index 33b76d269d7b0..850106754604e 100644 --- a/crates/bevy_render/src/view/window/screenshot.rs +++ b/crates/bevy_render/src/view/window/screenshot.rs @@ -469,6 +469,7 @@ impl SpecializedRenderPipeline for ScreenshotToScreenPipeline { shader_defs: vec![], entry_point: Cow::Borrowed("vs_main"), shader: self.shader.clone(), + compilation_options: default(), }, primitive: wgpu::PrimitiveState { cull_mode: Some(wgpu::Face::Back), @@ -485,9 +486,9 @@ impl SpecializedRenderPipeline for ScreenshotToScreenPipeline { blend: None, write_mask: wgpu::ColorWrites::ALL, })], + compilation_options: default(), }), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_solari/src/pathtracer/node.rs b/crates/bevy_solari/src/pathtracer/node.rs index 30031c1d51d16..0e7bb9f706e41 100644 --- a/crates/bevy_solari/src/pathtracer/node.rs +++ b/crates/bevy_solari/src/pathtracer/node.rs @@ -123,7 +123,7 @@ impl FromWorld for PathtracerNode { shader: load_embedded_asset!(world, "pathtracer.wgsl"), shader_defs: vec![], entry_point: "pathtrace".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); Self { diff --git a/crates/bevy_solari/src/realtime/node.rs b/crates/bevy_solari/src/realtime/node.rs index 6060bb3c15217..19c838b4fadf4 100644 --- a/crates/bevy_solari/src/realtime/node.rs +++ b/crates/bevy_solari/src/realtime/node.rs @@ -171,7 +171,7 @@ impl FromWorld for SolariLightingNode { shader: load_embedded_asset!(world, "restir_di.wgsl"), shader_defs: vec![], entry_point: "initial_and_temporal".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let spatial_and_shade_pipeline = @@ -188,7 +188,7 @@ impl FromWorld for SolariLightingNode { shader: load_embedded_asset!(world, "restir_di.wgsl"), shader_defs: vec![], entry_point: "spatial_and_shade".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); Self { diff --git a/crates/bevy_sprite/src/mesh2d/mesh.rs b/crates/bevy_sprite/src/mesh2d/mesh.rs index 204dd85e2407a..99b29bd2bbfc9 100644 --- a/crates/bevy_sprite/src/mesh2d/mesh.rs +++ b/crates/bevy_sprite/src/mesh2d/mesh.rs @@ -655,6 +655,7 @@ impl SpecializedMeshPipeline for Mesh2dPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_buffer_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -665,6 +666,7 @@ impl SpecializedMeshPipeline for Mesh2dPipeline { blend, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone(), self.mesh_layout.clone()], push_constant_ranges: vec![], @@ -699,7 +701,6 @@ impl SpecializedMeshPipeline for Mesh2dPipeline { alpha_to_coverage_enabled: false, }, label: Some(label.into()), - zero_initialize_workgroup_memory: false, }) } } diff --git a/crates/bevy_sprite/src/render/mod.rs b/crates/bevy_sprite/src/render/mod.rs index 761e2c628abdc..a5bb62a64e815 100644 --- a/crates/bevy_sprite/src/render/mod.rs +++ b/crates/bevy_sprite/src/render/mod.rs @@ -273,6 +273,7 @@ impl SpecializedRenderPipeline for SpritePipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![instance_rate_vertex_buffer_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -283,6 +284,7 @@ impl SpecializedRenderPipeline for SpritePipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone(), self.material_layout.clone()], primitive: PrimitiveState { @@ -320,7 +322,6 @@ impl SpecializedRenderPipeline for SpritePipeline { }, label: Some("sprite_pipeline".into()), push_constant_ranges: Vec::new(), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_ui/src/render/box_shadow.rs b/crates/bevy_ui/src/render/box_shadow.rs index b6f3f3501e8b1..390936f4cf9a7 100644 --- a/crates/bevy_ui/src/render/box_shadow.rs +++ b/crates/bevy_ui/src/render/box_shadow.rs @@ -170,6 +170,7 @@ impl SpecializedRenderPipeline for BoxShadowPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -184,6 +185,7 @@ impl SpecializedRenderPipeline for BoxShadowPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone()], push_constant_ranges: Vec::new(), @@ -203,7 +205,6 @@ impl SpecializedRenderPipeline for BoxShadowPipeline { alpha_to_coverage_enabled: false, }, label: Some("box_shadow_pipeline".into()), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_ui/src/render/gradient.rs b/crates/bevy_ui/src/render/gradient.rs index e1c845d481d97..6084d2370b508 100644 --- a/crates/bevy_ui/src/render/gradient.rs +++ b/crates/bevy_ui/src/render/gradient.rs @@ -201,6 +201,7 @@ impl SpecializedRenderPipeline for GradientPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -215,6 +216,7 @@ impl SpecializedRenderPipeline for GradientPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone()], push_constant_ranges: Vec::new(), @@ -234,7 +236,6 @@ impl SpecializedRenderPipeline for GradientPipeline { alpha_to_coverage_enabled: false, }, label: Some("ui_gradient_pipeline".into()), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_ui/src/render/pipeline.rs b/crates/bevy_ui/src/render/pipeline.rs index c020e038fb6be..5e1ec742e5224 100644 --- a/crates/bevy_ui/src/render/pipeline.rs +++ b/crates/bevy_ui/src/render/pipeline.rs @@ -91,6 +91,7 @@ impl SpecializedRenderPipeline for UiPipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -105,6 +106,7 @@ impl SpecializedRenderPipeline for UiPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone(), self.image_layout.clone()], push_constant_ranges: Vec::new(), @@ -124,7 +126,6 @@ impl SpecializedRenderPipeline for UiPipeline { alpha_to_coverage_enabled: false, }, label: Some("ui_pipeline".into()), - zero_initialize_workgroup_memory: false, } } } diff --git a/crates/bevy_ui/src/render/ui_material_pipeline.rs b/crates/bevy_ui/src/render/ui_material_pipeline.rs index 5d2201e6090f3..49e38f2de9048 100644 --- a/crates/bevy_ui/src/render/ui_material_pipeline.rs +++ b/crates/bevy_ui/src/render/ui_material_pipeline.rs @@ -155,6 +155,7 @@ where entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.fragment_shader.clone(), @@ -169,6 +170,7 @@ where blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![], push_constant_ranges: Vec::new(), @@ -188,7 +190,6 @@ where alpha_to_coverage_enabled: false, }, label: Some("ui_material_pipeline".into()), - zero_initialize_workgroup_memory: false, }; descriptor.layout = vec![self.view_layout.clone(), self.ui_layout.clone()]; diff --git a/crates/bevy_ui/src/render/ui_texture_slice_pipeline.rs b/crates/bevy_ui/src/render/ui_texture_slice_pipeline.rs index 0e232ab1ccd91..a8362163ac9c8 100644 --- a/crates/bevy_ui/src/render/ui_texture_slice_pipeline.rs +++ b/crates/bevy_ui/src/render/ui_texture_slice_pipeline.rs @@ -178,6 +178,7 @@ impl SpecializedRenderPipeline for UiTextureSlicePipeline { entry_point: "vertex".into(), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -192,6 +193,7 @@ impl SpecializedRenderPipeline for UiTextureSlicePipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), layout: vec![self.view_layout.clone(), self.image_layout.clone()], push_constant_ranges: Vec::new(), @@ -211,7 +213,6 @@ impl SpecializedRenderPipeline for UiTextureSlicePipeline { alpha_to_coverage_enabled: false, }, label: Some("ui_texture_slice_pipeline".into()), - zero_initialize_workgroup_memory: false, } } } diff --git a/examples/2d/mesh2d_manual.rs b/examples/2d/mesh2d_manual.rs index 6354aa468c40d..fb73ae6b948a6 100644 --- a/examples/2d/mesh2d_manual.rs +++ b/examples/2d/mesh2d_manual.rs @@ -169,6 +169,7 @@ impl SpecializedRenderPipeline for ColoredMesh2dPipeline { shader_defs: vec![], // Use our custom vertex buffer buffers: vec![vertex_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { // Use our custom shader @@ -180,6 +181,7 @@ impl SpecializedRenderPipeline for ColoredMesh2dPipeline { blend: Some(BlendState::ALPHA_BLENDING), write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), // Use the two standard uniforms for 2d meshes layout: vec![ @@ -220,7 +222,6 @@ impl SpecializedRenderPipeline for ColoredMesh2dPipeline { alpha_to_coverage_enabled: false, }, label: Some("colored_mesh2d_pipeline".into()), - zero_initialize_workgroup_memory: false, } } } diff --git a/examples/shader/compute_shader_game_of_life.rs b/examples/shader/compute_shader_game_of_life.rs index cb7d283d1e337..ca92581ddffb3 100644 --- a/examples/shader/compute_shader_game_of_life.rs +++ b/examples/shader/compute_shader_game_of_life.rs @@ -179,7 +179,7 @@ impl FromWorld for GameOfLifePipeline { shader: shader.clone(), shader_defs: vec![], entry_point: Cow::from("init"), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); let update_pipeline = pipeline_cache.queue_compute_pipeline(ComputePipelineDescriptor { label: None, @@ -188,7 +188,7 @@ impl FromWorld for GameOfLifePipeline { shader, shader_defs: vec![], entry_point: Cow::from("update"), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); GameOfLifePipeline { diff --git a/examples/shader/custom_phase_item.rs b/examples/shader/custom_phase_item.rs index b363a7c27f213..321ad52a78c21 100644 --- a/examples/shader/custom_phase_item.rs +++ b/examples/shader/custom_phase_item.rs @@ -315,6 +315,7 @@ impl SpecializedRenderPipeline for CustomPhasePipeline { }, ], }], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader.clone(), @@ -328,6 +329,7 @@ impl SpecializedRenderPipeline for CustomPhasePipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState::default(), // Note that if your view has no depth buffer this will need to be @@ -344,7 +346,6 @@ impl SpecializedRenderPipeline for CustomPhasePipeline { mask: !0, alpha_to_coverage_enabled: false, }, - zero_initialize_workgroup_memory: false, } } } diff --git a/examples/shader/custom_post_processing.rs b/examples/shader/custom_post_processing.rs index 64bf312c03422..cab3e981b2d74 100644 --- a/examples/shader/custom_post_processing.rs +++ b/examples/shader/custom_post_processing.rs @@ -280,6 +280,7 @@ impl FromWorld for PostProcessPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), // All of the following properties are not important for this effect so just use the default values. // This struct doesn't have the Default trait implemented because not all fields can have a default value. @@ -287,7 +288,6 @@ impl FromWorld for PostProcessPipeline { depth_stencil: None, multisample: MultisampleState::default(), push_constant_ranges: vec![], - zero_initialize_workgroup_memory: false, }); Self { diff --git a/examples/shader/custom_render_phase.rs b/examples/shader/custom_render_phase.rs index 0f834e893a537..a6e3cdcf6fbc9 100644 --- a/examples/shader/custom_render_phase.rs +++ b/examples/shader/custom_render_phase.rs @@ -212,6 +212,7 @@ impl SpecializedMeshPipeline for StencilPipeline { shader_defs: vec![], entry_point: "vertex".into(), buffers: vec![vertex_buffer_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader_handle.clone(), @@ -222,6 +223,7 @@ impl SpecializedMeshPipeline for StencilPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState { topology: key.primitive_topology(), @@ -234,7 +236,6 @@ impl SpecializedMeshPipeline for StencilPipeline { // It's generally recommended to specialize your pipeline for MSAA, // but it's not always possible multisample: MultisampleState::default(), - zero_initialize_workgroup_memory: false, }) } } diff --git a/examples/shader/gpu_readback.rs b/examples/shader/gpu_readback.rs index 4db5795c89a05..b6ca296db5495 100644 --- a/examples/shader/gpu_readback.rs +++ b/examples/shader/gpu_readback.rs @@ -180,7 +180,7 @@ impl FromWorld for ComputePipeline { shader: shader.clone(), shader_defs: Vec::new(), entry_point: "main".into(), - zero_initialize_workgroup_memory: false, + compilation_options: Default::default(), }); ComputePipeline { layout, pipeline } } diff --git a/examples/shader/specialized_mesh_pipeline.rs b/examples/shader/specialized_mesh_pipeline.rs index 9a7a3fce96cc1..0b652b91fb879 100644 --- a/examples/shader/specialized_mesh_pipeline.rs +++ b/examples/shader/specialized_mesh_pipeline.rs @@ -227,6 +227,7 @@ impl SpecializedMeshPipeline for CustomMeshPipeline { entry_point: "vertex".into(), // Customize how to store the meshes' vertex attributes in the vertex buffer buffers: vec![vertex_buffer_layout], + compilation_options: Default::default(), }, fragment: Some(FragmentState { shader: self.shader_handle.clone(), @@ -245,6 +246,7 @@ impl SpecializedMeshPipeline for CustomMeshPipeline { blend: None, write_mask: ColorWrites::ALL, })], + compilation_options: Default::default(), }), primitive: PrimitiveState { topology: mesh_key.primitive_topology(), @@ -268,7 +270,6 @@ impl SpecializedMeshPipeline for CustomMeshPipeline { count: mesh_key.msaa_samples(), ..MultisampleState::default() }, - zero_initialize_workgroup_memory: false, }) } }