rotex_types/resource/
batch.rs1use crate::resource::descriptors::{
2 BindGroupDescriptor, BindGroupLayoutDescriptor, BufferDescriptor, ComputePipelineDescriptor,
3 MaterialDescriptor, MeshDescriptor, TextureDescriptor,
4};
5use crate::resource::geometry::IndexFormat;
6use crate::resource::ids::{
7 BindGroupId, BindGroupLayoutId, BufferId, ComputePipelineId, MaterialId, MeshId, TextureId,
8};
9
10#[derive(Debug, Clone)]
11pub enum ResourceCreateDescriptor {
12 Mesh { id: u64, mesh: MeshDescriptor },
13 Texture { id: u64, texture: TextureDescriptor },
14 Material { id: u64, material: MaterialDescriptor },
15 Buffer { id: u64, buffer: BufferDescriptor },
16 ComputePipeline { id: u64, pipeline: ComputePipelineDescriptor },
17 BindGroupLayout { id: u64, layout: BindGroupLayoutDescriptor },
18 BindGroup { id: u64, group: BindGroupDescriptor },
19}
20
21#[derive(Debug, Clone)]
22pub struct ResourceBatchCreate {
23 pub resources: Vec<ResourceCreateDescriptor>,
24}
25
26impl ResourceBatchCreate {
27 pub fn new(resources: Vec<ResourceCreateDescriptor>) -> Self {
28 Self { resources }
29 }
30}
31
32#[derive(Debug, Clone, Copy)]
33pub enum ResourceHandle {
34 Mesh(MeshId),
35 Texture(TextureId),
36 Material(MaterialId),
37 Buffer(BufferId),
38 ComputePipeline(ComputePipelineId),
39 BindGroupLayout(BindGroupLayoutId),
40 BindGroup(BindGroupId),
41}
42
43#[derive(Debug, Clone)]
44pub struct CreatedResources {
45 pub handles: Vec<ResourceHandle>,
46}
47
48#[derive(Debug, Clone)]
49pub enum ResourceUpdateDescriptor {
50 Mesh {
51 id: MeshId,
52 vertex_streams: Vec<crate::resource::descriptors::VertexStream>,
53 index_data: Vec<u8>,
54 index_format: IndexFormat,
55 index_count: u32,
56 },
57 MeshVertices {
58 id: MeshId,
59 vertex_data: Vec<u8>,
60 },
61 Texture {
62 id: TextureId,
63 data: Vec<u8>,
64 },
65 Material {
66 id: MaterialId,
67 enable_depth: Option<bool>,
68 texture: Option<Option<TextureId>>,
69 },
70 Buffer {
71 id: BufferId,
72 data: Vec<u8>,
73 },
74}
75
76#[derive(Debug, Clone)]
77pub struct ResourceBatchUpdate {
78 pub updates: Vec<ResourceUpdateDescriptor>,
79}
80
81impl ResourceBatchUpdate {
82 pub fn new(updates: Vec<ResourceUpdateDescriptor>) -> Self {
83 Self { updates }
84 }
85}