render iteration
This commit is contained in:
@@ -2,8 +2,6 @@ use crate::mesh::InstanceRaw;
|
||||
use crate::render::DrawCall;
|
||||
use crate::world::World;
|
||||
use bytemuck::cast_slice;
|
||||
use glam::Mat4;
|
||||
use wgpu::util::DeviceExt;
|
||||
|
||||
pub fn render_system(world: &World) -> Vec<DrawCall>
|
||||
{
|
||||
@@ -24,16 +22,27 @@ pub fn render_system(world: &World) -> Vec<DrawCall>
|
||||
}
|
||||
else
|
||||
{
|
||||
let dissolve_amount = world.dissolves.get(entity).map(|d| d.amount).unwrap_or(0.0);
|
||||
|
||||
let instance_data = InstanceRaw {
|
||||
model: model_matrix.to_cols_array_2d(),
|
||||
dissolve_amount,
|
||||
_padding: [0.0; 3],
|
||||
};
|
||||
|
||||
let buffer = crate::render::with_device(|device| {
|
||||
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
let buffer = device.create_buffer(&wgpu::BufferDescriptor {
|
||||
label: Some("Instance Buffer"),
|
||||
contents: cast_slice(&[instance_data]),
|
||||
usage: wgpu::BufferUsages::VERTEX,
|
||||
})
|
||||
size: std::mem::size_of::<InstanceRaw>() as u64,
|
||||
usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
|
||||
mapped_at_creation: false,
|
||||
});
|
||||
|
||||
crate::render::with_queue(|queue| {
|
||||
queue.write_buffer(&buffer, 0, cast_slice(&[instance_data]));
|
||||
});
|
||||
|
||||
buffer
|
||||
});
|
||||
|
||||
(Some(buffer), 1)
|
||||
|
||||
Reference in New Issue
Block a user