From 35ab8db37c6f83325a1650eb3b40dd22c0d08e50 Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 11 Sep 2022 17:26:03 -0400 Subject: [PATCH] fix(wayland surface): simula text shader --- src/wayland/shaders/mod.rs | 4 ++-- src/wayland/shaders/shader_unlit_simula.hlsl | 18 +++++++++++++----- src/wayland/shaders/shader_unlit_simula.sks | Bin 28411 -> 30189 bytes src/wayland/surface.rs | 5 ----- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/wayland/shaders/mod.rs b/src/wayland/shaders/mod.rs index 5acd8e7..178d192 100644 --- a/src/wayland/shaders/mod.rs +++ b/src/wayland/shaders/mod.rs @@ -1,7 +1,7 @@ #![allow(dead_code)] // Basic gamma correction shader -pub const PANEL_SHADER_BYTES: &[u8] = include_bytes!("shader_unlit_gamma.sks"); +// pub const PANEL_SHADER_BYTES: &[u8] = include_bytes!("shader_unlit_gamma.sks"); // Simula shader with fancy lanzcos sampling -// pub const PANEL_SHADER_BYTES: &[u8] = include_bytes!("shader_unlit_simula.sks"); +pub const PANEL_SHADER_BYTES: &[u8] = include_bytes!("shader_unlit_simula.sks"); diff --git a/src/wayland/shaders/shader_unlit_simula.hlsl b/src/wayland/shaders/shader_unlit_simula.hlsl index a246965..a27c063 100644 --- a/src/wayland/shaders/shader_unlit_simula.hlsl +++ b/src/wayland/shaders/shader_unlit_simula.hlsl @@ -6,16 +6,19 @@ //--diffuse = white //--fcFactor = 1.0 //--ripple = 4.0 -//--size = 256, 256 //--uv_offset = 0.0, 0.0 //--uv_scale = 1.0, 1.0 +//--alpha_min = 0.0 +//--alpha_max = 1.0 Texture2D diffuse : register(t0); SamplerState diffuse_s : register(s0); -int2 size; +float4 diffuse_i; float fcFactor; float ripple; float2 uv_scale; float2 uv_offset; +float alpha_min; +float alpha_max; struct vsIn { float4 pos : SV_Position; @@ -40,6 +43,10 @@ psIn vs(vsIn input, uint id : SV_InstanceID) { return o; } +float map(float value, float min1, float max1, float min2, float max2) { + return min2 + (value - min1) * (max2 - min2) / (max1 - min1); +} + // float gaussian(float x, float t) { // float PI = 3.14159265358; // return exp(-x*x/(2.0 * t*t))/(sqrt(2.0*PI)*t); @@ -66,10 +73,10 @@ float4 lowpassFilter(Texture2D tex, sampler2D texSampler, float2 uv, float alpha //float width = sqrt(max(dot(dx_uv, dx_uv), dot(dy_uv, dy_uv))); float2 width = abs(float2(dx_uv.x, dy_uv.y)); - float2 pixelWidth = floor(width * float2(size)); + float2 pixelWidth = floor(width * diffuse_i.xy); float2 aspectRatio = normalize(pixelWidth); - float2 xyf = uv * float2(size); + float2 xyf = uv * diffuse_i.xy; int2 xy = int2(xyf); pixelWidth = clamp(pixelWidth, float2(1.0), float2(2.0)); @@ -89,7 +96,7 @@ float4 lowpassFilter(Texture2D tex, sampler2D texSampler, float2 uv, float alpha //float lanczosValue = gaussian(kx, fcx); float lanczosValue = kaiser(sqrt(kx*kx + ky*ky), alpha); - q += tex.Sample(texSampler, (float2(u, v)+float2(0.5))/float2(size)) * lanczosValue; + q += tex.Sample(texSampler, (float2(u, v)+float2(0.5))/diffuse_i.xy) * lanczosValue; // q += tex.Load(int3(u, v, 0)) * lanczosValue; qSum += lanczosValue; } @@ -106,6 +113,7 @@ float4 ps(psIn input) : SV_TARGET { float4 col = lowpassFilter(diffuse, diffuse_s, input.uv, ripple); // float4 col = diffuse.Sample(diffuse_s, input.uv); col.rgb = pow(col.rgb, float3(gamma)); + col.a = map(col.a, 0, 1, alpha_min, alpha_max); return col; } diff --git a/src/wayland/shaders/shader_unlit_simula.sks b/src/wayland/shaders/shader_unlit_simula.sks index 1e0a7c851b0843844dd5f9635afb832d51df7175..2a5e526130bed9ce37c88a6b343ef0982949242b 100644 GIT binary patch literal 30189 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 J_` = - vec2(smithay_tex.width() as f32, smithay_tex.height() as f32).into(); - sk_mat.set_parameter("size", &size); sk_tex.set_sample(TextureSample::Point); sk_tex.set_address_mode(TextureAddress::Clamp); }