wgpu: Clamp alpha in shaders (fix #6954)
This commit is contained in:
parent
cab49ae6e1
commit
121c2577b4
|
@ -28,7 +28,8 @@ fn main_fragment(in: VertexOutput) -> [[location(0)]] vec4<f32> {
|
|||
if( color.a > 0.0 ) {
|
||||
color = vec4<f32>(color.rgb / color.a, color.a);
|
||||
color = color * transforms.mult_color + transforms.add_color;
|
||||
color = vec4<f32>(color.rgb * color.a, color.a);
|
||||
let alpha = clamp(color.a, 0.0, 1.0);
|
||||
color = vec4<f32>(color.rgb * alpha, alpha);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
|
|
@ -7,12 +7,13 @@ struct VertexOutput {
|
|||
|
||||
[[stage(vertex)]]
|
||||
fn main_vertex(in: VertexInput) -> VertexOutput {
|
||||
let pos: vec4<f32> = globals.view_matrix * transforms.world_matrix * vec4<f32>(in.position.x, in.position.y, 0.0, 1.0);
|
||||
return VertexOutput(pos, in.color);
|
||||
let pos = globals.view_matrix * transforms.world_matrix * vec4<f32>(in.position.x, in.position.y, 0.0, 1.0);
|
||||
let color = in.color * transforms.mult_color + transforms.add_color;
|
||||
let alpha = clamp(color.a, 0.0, 1.0);
|
||||
return VertexOutput(pos, vec4<f32>(color.rgb * alpha, alpha));
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main_fragment(in: VertexOutput) -> [[location(0)]] vec4<f32> {
|
||||
let out = in.color * transforms.mult_color + transforms.add_color;
|
||||
return vec4<f32>(out.rgb * out.a, out.a);
|
||||
return in.color;
|
||||
}
|
||||
|
|
|
@ -102,5 +102,6 @@ fn main_fragment(in: VertexOutput) -> [[location(0)]] vec4<f32> {
|
|||
color = linear_to_srgb(color);
|
||||
}
|
||||
let out = color * transforms.mult_color + transforms.add_color;
|
||||
return vec4<f32>(out.rgb * out.a, out.a);
|
||||
let alpha = clamp(out.a, 0.0, 1.0);
|
||||
return vec4<f32>(out.rgb * alpha, alpha);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue