Remove Shader weak_handles from bevy_gizmos. (#19394)
# Objective - Related to #19024 ## Solution - Use the new `load_shader_library` macro for the shader libraries and `embedded_asset`/`load_embedded_asset` for the "shader binaries" in `bevy_gizmos`. ## Testing - `2d_gizmos` example still works. - `3d_gizmos` example still works. P.S. I don't think this needs a migration guide. Technically users could be using the `pub` weak handles, but there's no actual good use for them, so omitting it seems fine. Alternatively, we could mix this in with the migration guide notes for #19137.
This commit is contained in:
parent
57588eb7eb
commit
846cec9ed2
@ -102,7 +102,7 @@ use crate::{config::ErasedGizmoConfigGroup, gizmos::GizmoBuffer};
|
|||||||
#[cfg(feature = "bevy_render")]
|
#[cfg(feature = "bevy_render")]
|
||||||
use {
|
use {
|
||||||
crate::retained::extract_linegizmos,
|
crate::retained::extract_linegizmos,
|
||||||
bevy_asset::{weak_handle, AssetId},
|
bevy_asset::AssetId,
|
||||||
bevy_ecs::{
|
bevy_ecs::{
|
||||||
component::Component,
|
component::Component,
|
||||||
entity::Entity,
|
entity::Entity,
|
||||||
@ -119,8 +119,8 @@ use {
|
|||||||
render_phase::{PhaseItem, RenderCommand, RenderCommandResult, TrackedRenderPass},
|
render_phase::{PhaseItem, RenderCommand, RenderCommandResult, TrackedRenderPass},
|
||||||
render_resource::{
|
render_resource::{
|
||||||
binding_types::uniform_buffer, BindGroup, BindGroupEntries, BindGroupLayout,
|
binding_types::uniform_buffer, BindGroup, BindGroupEntries, BindGroupLayout,
|
||||||
BindGroupLayoutEntries, Buffer, BufferInitDescriptor, BufferUsages, Shader,
|
BindGroupLayoutEntries, Buffer, BufferInitDescriptor, BufferUsages, ShaderStages,
|
||||||
ShaderStages, ShaderType, VertexFormat,
|
ShaderType, VertexFormat,
|
||||||
},
|
},
|
||||||
renderer::RenderDevice,
|
renderer::RenderDevice,
|
||||||
sync_world::{MainEntity, TemporaryRenderEntity},
|
sync_world::{MainEntity, TemporaryRenderEntity},
|
||||||
@ -144,12 +144,6 @@ use gizmos::{GizmoStorage, Swap};
|
|||||||
#[cfg(all(feature = "bevy_pbr", feature = "bevy_render"))]
|
#[cfg(all(feature = "bevy_pbr", feature = "bevy_render"))]
|
||||||
use light::LightGizmoPlugin;
|
use light::LightGizmoPlugin;
|
||||||
|
|
||||||
#[cfg(feature = "bevy_render")]
|
|
||||||
const LINE_SHADER_HANDLE: Handle<Shader> = weak_handle!("15dc5869-ad30-4664-b35a-4137cb8804a1");
|
|
||||||
#[cfg(feature = "bevy_render")]
|
|
||||||
const LINE_JOINT_SHADER_HANDLE: Handle<Shader> =
|
|
||||||
weak_handle!("7b5bdda5-df81-4711-a6cf-e587700de6f2");
|
|
||||||
|
|
||||||
/// A [`Plugin`] that provides an immediate mode drawing api for visual debugging.
|
/// A [`Plugin`] that provides an immediate mode drawing api for visual debugging.
|
||||||
///
|
///
|
||||||
/// Requires to be loaded after [`PbrPlugin`](bevy_pbr::PbrPlugin) or [`SpritePlugin`](bevy_sprite::SpritePlugin).
|
/// Requires to be loaded after [`PbrPlugin`](bevy_pbr::PbrPlugin) or [`SpritePlugin`](bevy_sprite::SpritePlugin).
|
||||||
@ -160,14 +154,9 @@ impl Plugin for GizmoPlugin {
|
|||||||
fn build(&self, app: &mut App) {
|
fn build(&self, app: &mut App) {
|
||||||
#[cfg(feature = "bevy_render")]
|
#[cfg(feature = "bevy_render")]
|
||||||
{
|
{
|
||||||
use bevy_asset::load_internal_asset;
|
use bevy_asset::embedded_asset;
|
||||||
load_internal_asset!(app, LINE_SHADER_HANDLE, "lines.wgsl", Shader::from_wgsl);
|
embedded_asset!(app, "lines.wgsl");
|
||||||
load_internal_asset!(
|
embedded_asset!(app, "line_joints.wgsl");
|
||||||
app,
|
|
||||||
LINE_JOINT_SHADER_HANDLE,
|
|
||||||
"line_joints.wgsl",
|
|
||||||
Shader::from_wgsl
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
app.register_type::<GizmoConfig>()
|
app.register_type::<GizmoConfig>()
|
||||||
|
@ -2,9 +2,10 @@ use crate::{
|
|||||||
config::{GizmoLineJoint, GizmoLineStyle, GizmoMeshConfig},
|
config::{GizmoLineJoint, GizmoLineStyle, GizmoMeshConfig},
|
||||||
line_gizmo_vertex_buffer_layouts, line_joint_gizmo_vertex_buffer_layouts, DrawLineGizmo,
|
line_gizmo_vertex_buffer_layouts, line_joint_gizmo_vertex_buffer_layouts, DrawLineGizmo,
|
||||||
DrawLineJointGizmo, GizmoRenderSystems, GpuLineGizmo, LineGizmoUniformBindgroupLayout,
|
DrawLineJointGizmo, GizmoRenderSystems, GpuLineGizmo, LineGizmoUniformBindgroupLayout,
|
||||||
SetLineGizmoBindGroup, LINE_JOINT_SHADER_HANDLE, LINE_SHADER_HANDLE,
|
SetLineGizmoBindGroup,
|
||||||
};
|
};
|
||||||
use bevy_app::{App, Plugin};
|
use bevy_app::{App, Plugin};
|
||||||
|
use bevy_asset::{load_embedded_asset, Handle};
|
||||||
use bevy_core_pipeline::core_2d::{Transparent2d, CORE_2D_DEPTH_FORMAT};
|
use bevy_core_pipeline::core_2d::{Transparent2d, CORE_2D_DEPTH_FORMAT};
|
||||||
|
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
@ -75,6 +76,7 @@ impl Plugin for LineGizmo2dPlugin {
|
|||||||
struct LineGizmoPipeline {
|
struct LineGizmoPipeline {
|
||||||
mesh_pipeline: Mesh2dPipeline,
|
mesh_pipeline: Mesh2dPipeline,
|
||||||
uniform_layout: BindGroupLayout,
|
uniform_layout: BindGroupLayout,
|
||||||
|
shader: Handle<Shader>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromWorld for LineGizmoPipeline {
|
impl FromWorld for LineGizmoPipeline {
|
||||||
@ -85,6 +87,7 @@ impl FromWorld for LineGizmoPipeline {
|
|||||||
.resource::<LineGizmoUniformBindgroupLayout>()
|
.resource::<LineGizmoUniformBindgroupLayout>()
|
||||||
.layout
|
.layout
|
||||||
.clone(),
|
.clone(),
|
||||||
|
shader: load_embedded_asset!(render_world, "lines.wgsl"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -124,13 +127,13 @@ impl SpecializedRenderPipeline for LineGizmoPipeline {
|
|||||||
|
|
||||||
RenderPipelineDescriptor {
|
RenderPipelineDescriptor {
|
||||||
vertex: VertexState {
|
vertex: VertexState {
|
||||||
shader: LINE_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
entry_point: "vertex".into(),
|
entry_point: "vertex".into(),
|
||||||
shader_defs: shader_defs.clone(),
|
shader_defs: shader_defs.clone(),
|
||||||
buffers: line_gizmo_vertex_buffer_layouts(key.strip),
|
buffers: line_gizmo_vertex_buffer_layouts(key.strip),
|
||||||
},
|
},
|
||||||
fragment: Some(FragmentState {
|
fragment: Some(FragmentState {
|
||||||
shader: LINE_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
shader_defs,
|
shader_defs,
|
||||||
entry_point: fragment_entry_point.into(),
|
entry_point: fragment_entry_point.into(),
|
||||||
targets: vec![Some(ColorTargetState {
|
targets: vec![Some(ColorTargetState {
|
||||||
@ -173,6 +176,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline {
|
|||||||
struct LineJointGizmoPipeline {
|
struct LineJointGizmoPipeline {
|
||||||
mesh_pipeline: Mesh2dPipeline,
|
mesh_pipeline: Mesh2dPipeline,
|
||||||
uniform_layout: BindGroupLayout,
|
uniform_layout: BindGroupLayout,
|
||||||
|
shader: Handle<Shader>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromWorld for LineJointGizmoPipeline {
|
impl FromWorld for LineJointGizmoPipeline {
|
||||||
@ -183,6 +187,7 @@ impl FromWorld for LineJointGizmoPipeline {
|
|||||||
.resource::<LineGizmoUniformBindgroupLayout>()
|
.resource::<LineGizmoUniformBindgroupLayout>()
|
||||||
.layout
|
.layout
|
||||||
.clone(),
|
.clone(),
|
||||||
|
shader: load_embedded_asset!(render_world, "line_joints.wgsl"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -225,13 +230,13 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline {
|
|||||||
|
|
||||||
RenderPipelineDescriptor {
|
RenderPipelineDescriptor {
|
||||||
vertex: VertexState {
|
vertex: VertexState {
|
||||||
shader: LINE_JOINT_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
entry_point: entry_point.into(),
|
entry_point: entry_point.into(),
|
||||||
shader_defs: shader_defs.clone(),
|
shader_defs: shader_defs.clone(),
|
||||||
buffers: line_joint_gizmo_vertex_buffer_layouts(),
|
buffers: line_joint_gizmo_vertex_buffer_layouts(),
|
||||||
},
|
},
|
||||||
fragment: Some(FragmentState {
|
fragment: Some(FragmentState {
|
||||||
shader: LINE_JOINT_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
shader_defs,
|
shader_defs,
|
||||||
entry_point: "fragment".into(),
|
entry_point: "fragment".into(),
|
||||||
targets: vec![Some(ColorTargetState {
|
targets: vec![Some(ColorTargetState {
|
||||||
|
@ -2,9 +2,10 @@ use crate::{
|
|||||||
config::{GizmoLineJoint, GizmoLineStyle, GizmoMeshConfig},
|
config::{GizmoLineJoint, GizmoLineStyle, GizmoMeshConfig},
|
||||||
line_gizmo_vertex_buffer_layouts, line_joint_gizmo_vertex_buffer_layouts, DrawLineGizmo,
|
line_gizmo_vertex_buffer_layouts, line_joint_gizmo_vertex_buffer_layouts, DrawLineGizmo,
|
||||||
DrawLineJointGizmo, GizmoRenderSystems, GpuLineGizmo, LineGizmoUniformBindgroupLayout,
|
DrawLineJointGizmo, GizmoRenderSystems, GpuLineGizmo, LineGizmoUniformBindgroupLayout,
|
||||||
SetLineGizmoBindGroup, LINE_JOINT_SHADER_HANDLE, LINE_SHADER_HANDLE,
|
SetLineGizmoBindGroup,
|
||||||
};
|
};
|
||||||
use bevy_app::{App, Plugin};
|
use bevy_app::{App, Plugin};
|
||||||
|
use bevy_asset::{load_embedded_asset, Handle};
|
||||||
use bevy_core_pipeline::{
|
use bevy_core_pipeline::{
|
||||||
core_3d::{Transparent3d, CORE_3D_DEPTH_FORMAT},
|
core_3d::{Transparent3d, CORE_3D_DEPTH_FORMAT},
|
||||||
oit::OrderIndependentTransparencySettings,
|
oit::OrderIndependentTransparencySettings,
|
||||||
@ -75,6 +76,7 @@ impl Plugin for LineGizmo3dPlugin {
|
|||||||
struct LineGizmoPipeline {
|
struct LineGizmoPipeline {
|
||||||
mesh_pipeline: MeshPipeline,
|
mesh_pipeline: MeshPipeline,
|
||||||
uniform_layout: BindGroupLayout,
|
uniform_layout: BindGroupLayout,
|
||||||
|
shader: Handle<Shader>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromWorld for LineGizmoPipeline {
|
impl FromWorld for LineGizmoPipeline {
|
||||||
@ -85,6 +87,7 @@ impl FromWorld for LineGizmoPipeline {
|
|||||||
.resource::<LineGizmoUniformBindgroupLayout>()
|
.resource::<LineGizmoUniformBindgroupLayout>()
|
||||||
.layout
|
.layout
|
||||||
.clone(),
|
.clone(),
|
||||||
|
shader: load_embedded_asset!(render_world, "lines.wgsl"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,13 +134,13 @@ impl SpecializedRenderPipeline for LineGizmoPipeline {
|
|||||||
|
|
||||||
RenderPipelineDescriptor {
|
RenderPipelineDescriptor {
|
||||||
vertex: VertexState {
|
vertex: VertexState {
|
||||||
shader: LINE_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
entry_point: "vertex".into(),
|
entry_point: "vertex".into(),
|
||||||
shader_defs: shader_defs.clone(),
|
shader_defs: shader_defs.clone(),
|
||||||
buffers: line_gizmo_vertex_buffer_layouts(key.strip),
|
buffers: line_gizmo_vertex_buffer_layouts(key.strip),
|
||||||
},
|
},
|
||||||
fragment: Some(FragmentState {
|
fragment: Some(FragmentState {
|
||||||
shader: LINE_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
shader_defs,
|
shader_defs,
|
||||||
entry_point: fragment_entry_point.into(),
|
entry_point: fragment_entry_point.into(),
|
||||||
targets: vec![Some(ColorTargetState {
|
targets: vec![Some(ColorTargetState {
|
||||||
@ -171,6 +174,7 @@ impl SpecializedRenderPipeline for LineGizmoPipeline {
|
|||||||
struct LineJointGizmoPipeline {
|
struct LineJointGizmoPipeline {
|
||||||
mesh_pipeline: MeshPipeline,
|
mesh_pipeline: MeshPipeline,
|
||||||
uniform_layout: BindGroupLayout,
|
uniform_layout: BindGroupLayout,
|
||||||
|
shader: Handle<Shader>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromWorld for LineJointGizmoPipeline {
|
impl FromWorld for LineJointGizmoPipeline {
|
||||||
@ -181,6 +185,7 @@ impl FromWorld for LineJointGizmoPipeline {
|
|||||||
.resource::<LineGizmoUniformBindgroupLayout>()
|
.resource::<LineGizmoUniformBindgroupLayout>()
|
||||||
.layout
|
.layout
|
||||||
.clone(),
|
.clone(),
|
||||||
|
shader: load_embedded_asset!(render_world, "line_joints.wgsl"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,13 +235,13 @@ impl SpecializedRenderPipeline for LineJointGizmoPipeline {
|
|||||||
|
|
||||||
RenderPipelineDescriptor {
|
RenderPipelineDescriptor {
|
||||||
vertex: VertexState {
|
vertex: VertexState {
|
||||||
shader: LINE_JOINT_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
entry_point: entry_point.into(),
|
entry_point: entry_point.into(),
|
||||||
shader_defs: shader_defs.clone(),
|
shader_defs: shader_defs.clone(),
|
||||||
buffers: line_joint_gizmo_vertex_buffer_layouts(),
|
buffers: line_joint_gizmo_vertex_buffer_layouts(),
|
||||||
},
|
},
|
||||||
fragment: Some(FragmentState {
|
fragment: Some(FragmentState {
|
||||||
shader: LINE_JOINT_SHADER_HANDLE,
|
shader: self.shader.clone(),
|
||||||
shader_defs,
|
shader_defs,
|
||||||
entry_point: "fragment".into(),
|
entry_point: "fragment".into(),
|
||||||
targets: vec![Some(ColorTargetState {
|
targets: vec![Some(ColorTargetState {
|
||||||
|
Loading…
Reference in New Issue
Block a user