render: Add From<ColorTransform> for ColorAdjustments uniforms

This commit is contained in:
Nathan Adams 2020-04-30 16:40:08 +02:00
parent 99d15aef0d
commit 760677a2a1
1 changed files with 21 additions and 36 deletions

View File

@ -81,6 +81,25 @@ struct ColorAdjustments {
add_color: [f32; 4], add_color: [f32; 4],
} }
impl From<ColorTransform> for ColorAdjustments {
fn from(transform: ColorTransform) -> Self {
Self {
mult_color: [
transform.r_mult,
transform.g_mult,
transform.b_mult,
transform.a_mult,
],
add_color: [
transform.r_add,
transform.g_add,
transform.b_add,
transform.a_add,
],
}
}
}
unsafe impl Pod for ColorAdjustments {} unsafe impl Pod for ColorAdjustments {}
unsafe impl Zeroable for ColorAdjustments {} unsafe impl Zeroable for ColorAdjustments {}
@ -1111,20 +1130,6 @@ impl RenderBackend for WGPURenderBackend {
], ],
]; ];
let mult_color = [
transform.color_transform.r_mult,
transform.color_transform.g_mult,
transform.color_transform.b_mult,
transform.color_transform.a_mult,
];
let add_color = [
transform.color_transform.r_add,
transform.color_transform.g_add,
transform.color_transform.b_add,
transform.color_transform.a_add,
];
let transforms_ubo = create_buffer_with_data( let transforms_ubo = create_buffer_with_data(
&self.device, &self.device,
bytemuck::cast_slice(&[Transforms { bytemuck::cast_slice(&[Transforms {
@ -1137,10 +1142,7 @@ impl RenderBackend for WGPURenderBackend {
let colors_ubo = create_buffer_with_data( let colors_ubo = create_buffer_with_data(
&self.device, &self.device,
bytemuck::cast_slice(&[ColorAdjustments { bytemuck::cast_slice(&[ColorAdjustments::from(transform.color_transform)]),
mult_color,
add_color,
}]),
wgpu::BufferUsage::UNIFORM, wgpu::BufferUsage::UNIFORM,
create_debug_label!("Bitmap {} colors transfer buffer", bitmap.0), create_debug_label!("Bitmap {} colors transfer buffer", bitmap.0),
); );
@ -1257,26 +1259,9 @@ impl RenderBackend for WGPURenderBackend {
]; ];
if transform.color_transform != mesh.colors_last { if transform.color_transform != mesh.colors_last {
let mult_color = [
transform.color_transform.r_mult,
transform.color_transform.g_mult,
transform.color_transform.b_mult,
transform.color_transform.a_mult,
];
let add_color = [
transform.color_transform.r_add,
transform.color_transform.g_add,
transform.color_transform.b_add,
transform.color_transform.a_add,
];
let colors_temp = create_buffer_with_data( let colors_temp = create_buffer_with_data(
&self.device, &self.device,
bytemuck::cast_slice(&[ColorAdjustments { bytemuck::cast_slice(&[ColorAdjustments::from(transform.color_transform)]),
mult_color,
add_color,
}]),
wgpu::BufferUsage::COPY_SRC, wgpu::BufferUsage::COPY_SRC,
create_debug_label!("Shape {} colors transfer buffer", mesh.shape_id), create_debug_label!("Shape {} colors transfer buffer", mesh.shape_id),
); );