Sprites - keep color as 4 f32 (#4361)
# Objective - Fix #4356 ## Solution - Do not reduce the color of sprites to 4 u8
This commit is contained in:
parent
509548190b
commit
f6bc9a022d
@ -122,7 +122,7 @@ impl SpecializedRenderPipeline for SpritePipeline {
|
||||
|
||||
if key.contains(SpritePipelineKey::COLORED) {
|
||||
// color
|
||||
formats.push(VertexFormat::Uint32);
|
||||
formats.push(VertexFormat::Float32x4);
|
||||
}
|
||||
|
||||
let vertex_layout =
|
||||
@ -283,7 +283,7 @@ struct SpriteVertex {
|
||||
struct ColoredSpriteVertex {
|
||||
pub position: [f32; 3],
|
||||
pub uv: [f32; 2],
|
||||
pub color: u32,
|
||||
pub color: [f32; 4],
|
||||
}
|
||||
|
||||
pub struct SpriteMeta {
|
||||
@ -498,14 +498,11 @@ pub fn queue_sprites(
|
||||
|
||||
// Store the vertex data and add the item to the render phase
|
||||
if current_batch.colored {
|
||||
// encode color as a single u32 to save space
|
||||
let color = extracted_sprite.color.as_linear_rgba_u32();
|
||||
|
||||
for i in QUAD_INDICES.iter() {
|
||||
sprite_meta.colored_vertices.push(ColoredSpriteVertex {
|
||||
position: positions[*i],
|
||||
uv: uvs[*i].into(),
|
||||
color,
|
||||
color: extracted_sprite.color.as_linear_rgba_f32(),
|
||||
});
|
||||
}
|
||||
let item_start = colored_index;
|
||||
|
||||
@ -18,14 +18,14 @@ fn vertex(
|
||||
[[location(0)]] vertex_position: vec3<f32>,
|
||||
[[location(1)]] vertex_uv: vec2<f32>,
|
||||
#ifdef COLORED
|
||||
[[location(2)]] vertex_color: u32,
|
||||
[[location(2)]] vertex_color: vec4<f32>,
|
||||
#endif
|
||||
) -> VertexOutput {
|
||||
var out: VertexOutput;
|
||||
out.uv = vertex_uv;
|
||||
out.position = view.view_proj * vec4<f32>(vertex_position, 1.0);
|
||||
#ifdef COLORED
|
||||
out.color = vec4<f32>((vec4<u32>(vertex_color) >> vec4<u32>(0u, 8u, 16u, 24u)) & vec4<u32>(255u)) / 255.0;
|
||||
out.color = vertex_color;
|
||||
#endif
|
||||
return out;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user