Constant MSDF_WGSL
Source pub const MSDF_WGSL: &str = r#"
fn msdf_median(rgb: vec3<f32>) -> f32 {
return max(min(rgb.r, rgb.g), min(max(rgb.r, rgb.g), rgb.b));
}
fn msdf_coverage(rgb: vec3<f32>, uv: vec2<f32>, texture_size: vec2<f32>) -> f32 {
let signed_distance = msdf_median(rgb) - 0.5;
let screen_range = 4.0 * 0.5 * dot(vec2<f32>(1.0) / fwidth(uv), vec2<f32>(1.0) / texture_size);
return clamp(0.5 + signed_distance * screen_range, 0.0, 1.0);
}
fn sample_msdf(atlas: texture_2d<f32>, atlas_sampler: sampler, uv: vec2<f32>) -> f32 {
let rgb = textureSample(atlas, atlas_sampler, uv).rgb;
return msdf_coverage(rgb, uv, vec2<f32>(textureDimensions(atlas)));
}
"#;