switch bevy_mesh to use wgpu-types instead of wgpu (#16619)
# Objective - dont depend on wgpu if we dont have to ## Solution - works towards this, but doesnt fully accomplish it. bevy_mesh depends on bevy_image ## Testing - 3d_scene runs --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com> Co-authored-by: BD103 <59022059+BD103@users.noreply.github.com>
This commit is contained in:
parent
c6147e57f4
commit
e77efcc8d7
@ -24,7 +24,7 @@ bevy_utils = { path = "../bevy_utils", version = "0.15.0-dev" }
|
||||
# misc
|
||||
bitflags = { version = "2.3", features = ["serde"] }
|
||||
bytemuck = { version = "1.5" }
|
||||
wgpu = { version = "23.0.1", default-features = false }
|
||||
wgpu-types = { version = "23", default-features = false }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
hexasphere = "15.0"
|
||||
derive_more = { version = "1", default-features = false, features = [
|
||||
|
@ -2,7 +2,7 @@ use bevy_reflect::Reflect;
|
||||
use core::iter;
|
||||
use core::iter::FusedIterator;
|
||||
use derive_more::derive::{Display, Error};
|
||||
use wgpu::IndexFormat;
|
||||
use wgpu_types::IndexFormat;
|
||||
|
||||
/// A disjunction of four iterators. This is necessary to have a well-formed type for the output
|
||||
/// of [`Mesh::triangles`](super::Mesh::triangles), which produces iterators of four different types depending on the
|
||||
@ -176,7 +176,7 @@ impl From<&Indices> for IndexFormat {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::Indices;
|
||||
use wgpu::IndexFormat;
|
||||
use wgpu_types::IndexFormat;
|
||||
|
||||
#[test]
|
||||
fn test_indices_push() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
use bevy_transform::components::Transform;
|
||||
pub use wgpu::PrimitiveTopology;
|
||||
pub use wgpu_types::PrimitiveTopology;
|
||||
|
||||
use super::{
|
||||
face_area_normal, face_normal, generate_tangents_for_mesh, scale_normal, FourIterators,
|
||||
@ -15,7 +15,7 @@ use bevy_math::{primitives::Triangle3d, *};
|
||||
use bevy_reflect::Reflect;
|
||||
use bevy_utils::tracing::warn;
|
||||
use bytemuck::cast_slice;
|
||||
use wgpu::{VertexAttribute, VertexFormat, VertexStepMode};
|
||||
use wgpu_types::{VertexAttribute, VertexFormat, VertexStepMode};
|
||||
|
||||
pub const INDEX_BUFFER_ASSET_INDEX: u64 = 0;
|
||||
pub const VERTEX_ATTRIBUTE_BUFFER_ID: u64 = 10;
|
||||
@ -1211,11 +1211,11 @@ impl core::ops::Mul<Mesh> for Transform {
|
||||
mod tests {
|
||||
use super::Mesh;
|
||||
use crate::mesh::{Indices, MeshWindingInvertError, VertexAttributeValues};
|
||||
use crate::PrimitiveTopology;
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::primitives::Triangle3d;
|
||||
use bevy_math::Vec3;
|
||||
use bevy_transform::components::Transform;
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
|
@ -1,7 +1,7 @@
|
||||
use super::{Indices, Mesh, VertexAttributeValues};
|
||||
use bevy_math::Vec3;
|
||||
use derive_more::derive::{Display, Error};
|
||||
use wgpu::{PrimitiveTopology, VertexFormat};
|
||||
use wgpu_types::{PrimitiveTopology, VertexFormat};
|
||||
|
||||
struct MikktspaceGeometryHelper<'a> {
|
||||
indices: Option<&'a Indices>,
|
||||
|
@ -7,7 +7,7 @@ use bevy_reflect::prelude::*;
|
||||
use bytemuck::{Pod, Zeroable};
|
||||
use core::iter;
|
||||
use derive_more::derive::{Display, Error};
|
||||
use wgpu::{Extent3d, TextureDimension, TextureFormat};
|
||||
use wgpu_types::{Extent3d, TextureDimension, TextureFormat};
|
||||
|
||||
const MAX_TEXTURE_WIDTH: u32 = 2048;
|
||||
// NOTE: "component" refers to the element count of math objects,
|
||||
|
@ -12,7 +12,7 @@ use bevy_math::{
|
||||
},
|
||||
FloatExt, Vec2,
|
||||
};
|
||||
use wgpu::PrimitiveTopology;
|
||||
use wgpu_types::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Circle`] shape.
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::Capsule3d, Vec2, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// Manner in which UV coordinates are distributed vertically.
|
||||
#[derive(Clone, Copy, Debug, Default)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::Cone, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// Anchoring options for [`ConeMeshBuilder`]
|
||||
#[derive(Debug, Copy, Clone, Default)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::ConicalFrustum, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`ConicalFrustum`] shape.
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{primitives::Cuboid, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Cuboid`] shape.
|
||||
pub struct CuboidMeshBuilder {
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::Cylinder};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// Anchoring options for [`CylinderMeshBuilder`]
|
||||
#[derive(Debug, Copy, Clone, Default)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{primitives::Plane3d, Dir3, Quat, Vec2, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Plane3d`] shape.
|
||||
#[derive(Clone, Copy, Debug, Default)]
|
||||
|
@ -1,10 +1,9 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::Sphere};
|
||||
use core::f32::consts::PI;
|
||||
use derive_more::derive::{Display, Error};
|
||||
use hexasphere::shapes::IcoSphere;
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// An error when creating an icosphere [`Mesh`] from a [`SphereMeshBuilder`].
|
||||
#[derive(Clone, Copy, Debug, Error, Display)]
|
||||
|
@ -1,8 +1,7 @@
|
||||
use super::triangle3d;
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::primitives::{Tetrahedron, Triangle3d};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Tetrahedron`] shape.
|
||||
pub struct TetrahedronMeshBuilder {
|
||||
|
@ -1,8 +1,7 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{ops, primitives::Torus, Vec3};
|
||||
use core::ops::RangeInclusive;
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Torus`] shape.
|
||||
#[derive(Clone, Debug)]
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};
|
||||
use bevy_asset::RenderAssetUsages;
|
||||
use bevy_math::{primitives::Triangle3d, Vec3};
|
||||
use wgpu::PrimitiveTopology;
|
||||
|
||||
/// A builder used for creating a [`Mesh`] with a [`Triangle3d`] shape.
|
||||
pub struct Triangle3dMeshBuilder {
|
||||
|
@ -4,7 +4,7 @@ use bevy_math::{
|
||||
};
|
||||
|
||||
use super::{MeshBuilder, Meshable};
|
||||
use crate::{Indices, Mesh, VertexAttributeValues};
|
||||
use crate::{Indices, Mesh, PrimitiveTopology, VertexAttributeValues};
|
||||
|
||||
/// A type representing a segment of the perimeter of an extrudable mesh.
|
||||
pub enum PerimeterSegment {
|
||||
@ -72,7 +72,7 @@ impl PerimeterSegment {
|
||||
/// ## Warning
|
||||
///
|
||||
/// By implementing this trait you guarantee that the `primitive_topology` of the mesh returned by
|
||||
/// this builder is [`PrimitiveTopology::TriangleList`](wgpu::PrimitiveTopology::TriangleList)
|
||||
/// this builder is [`PrimitiveTopology::TriangleList`]
|
||||
/// and that your mesh has a [`Mesh::ATTRIBUTE_POSITION`] attribute.
|
||||
pub trait Extrudable: MeshBuilder {
|
||||
/// A list of the indices each representing a part of the perimeter of the mesh.
|
||||
@ -198,7 +198,7 @@ where
|
||||
// By swapping the first and second indices of each triangle we invert the winding order thus making the mesh visible from the other side
|
||||
if let Some(indices) = back_face.indices_mut() {
|
||||
match topology {
|
||||
wgpu::PrimitiveTopology::TriangleList => match indices {
|
||||
PrimitiveTopology::TriangleList => match indices {
|
||||
Indices::U16(indices) => {
|
||||
indices.chunks_exact_mut(3).for_each(|arr| arr.swap(1, 0));
|
||||
}
|
||||
@ -401,10 +401,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
Mesh::new(
|
||||
wgpu::PrimitiveTopology::TriangleList,
|
||||
front_face.asset_usage,
|
||||
)
|
||||
Mesh::new(PrimitiveTopology::TriangleList, front_face.asset_usage)
|
||||
.with_inserted_indices(Indices::U32(indices))
|
||||
.with_inserted_attribute(Mesh::ATTRIBUTE_POSITION, positions)
|
||||
.with_inserted_attribute(Mesh::ATTRIBUTE_NORMAL, normals)
|
||||
|
@ -6,7 +6,7 @@ use bevy_utils::HashSet;
|
||||
use bytemuck::cast_slice;
|
||||
use core::hash::{Hash, Hasher};
|
||||
use derive_more::derive::{Display, Error};
|
||||
use wgpu::{BufferAddress, VertexAttribute, VertexFormat, VertexStepMode};
|
||||
use wgpu_types::{BufferAddress, VertexAttribute, VertexFormat, VertexStepMode};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct MeshVertexAttribute {
|
||||
|
Loading…
Reference in New Issue
Block a user