From badbadb80063caa67e41ecfc4c94a57827c36d39 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sat, 7 Jun 2025 17:53:36 +0200 Subject: [PATCH] Vulkan fixes --- armorpaint/shaders/dilate_map.kong | 10 +++++----- armorpaint/shaders/dilate_pass.kong | 20 ++++++++++++++++++-- armorpaint/shaders/layer_merge.kong | 12 +++++++----- base/assets/Scene.arm | Bin 178114 -> 178081 bytes base/shaders/ssao_blur_pass.kong | 2 +- base/shaders/ssao_pass.kong | 6 +++--- 6 files changed, 34 insertions(+), 16 deletions(-) diff --git a/armorpaint/shaders/dilate_map.kong b/armorpaint/shaders/dilate_map.kong index 3707937b..c7dc8d73 100644 --- a/armorpaint/shaders/dilate_map.kong +++ b/armorpaint/shaders/dilate_map.kong @@ -1,4 +1,9 @@ +#[set(everything)] +const constants: { + empty: float; +}; + struct vert_in { pos: float4; nor: float2; @@ -9,11 +14,6 @@ struct vert_out { pos: float4; } -#[set(everything)] -const constants: { - empty: float; -}; - fun dilate_map_vert(input: vert_in): vert_out { var output: vert_out; var tex_coord: float2 = float2(input.tex.x * 2.0 - 1.0, (1.0 - input.tex.y) * 2.0 - 1.0); diff --git a/armorpaint/shaders/dilate_pass.kong b/armorpaint/shaders/dilate_pass.kong index efb06a67..b4ef1dc5 100644 --- a/armorpaint/shaders/dilate_pass.kong +++ b/armorpaint/shaders/dilate_pass.kong @@ -65,13 +65,23 @@ fun dilate_pass_frag(input: vert_out): float4 { // Based on https://shaderbits.com/blog/uv-dilation by Ryan Brucks var texel_size: float2 = float2(1.0, 1.0) / constants.tex_size; var min_dist: float = 10000000.0; - var coord: uint2 = uint2(input.tex * constants.tex_size); - var mask: float = texdilate[coord].r; + //var coord: uint2 = uint2(input.tex * constants.tex_size); + var coordf: float2 = float2(input.tex.x * constants.tex_size.x, input.tex.y * constants.tex_size.y); + var coord: uint2 = uint2(uint(coordf.x), uint(coordf.y)); + //var mask: float = texdilate[coord].r; + var mask4: float4 = texdilate[coord]; + var mask: float = mask4.r; if (mask > 0.0) { discard; } var color: float4 = tex[coord]; + + + + + //// + /* var i: int = 0; while (i < int(constants.dilate_radius)) { i += 1; @@ -100,6 +110,12 @@ fun dilate_pass_frag(input: vert_out): float4 { j += 1; } } + */ + //// + + + + return color; } diff --git a/armorpaint/shaders/layer_merge.kong b/armorpaint/shaders/layer_merge.kong index 15a33a40..865e3d0d 100644 --- a/armorpaint/shaders/layer_merge.kong +++ b/armorpaint/shaders/layer_merge.kong @@ -132,6 +132,11 @@ fun layer_merge_frag(input: vert_out): float4 { lerp3(cola.rgb, cola.rgb + col0.rgb, str), max(col0.a, cola.a)); } + + //// + + /* TODO: SPIRV + if (constants.blending == 8) { // Overlay var rr: float; if (cola.r < 0.5) { @@ -170,11 +175,6 @@ fun layer_merge_frag(input: vert_out): float4 { (cola.rgb + str * (float3(2.0, 2.0, 2.0) * (col0.rgb - float3(0.5, 0.5, 0.5)))), max(col0.a, cola.a)); } - - - - /* TODO: SPIRV - if (constants.blending == 11) { return float4( lerp3(cola.rgb, abs3(cola.rgb - col0.rgb), str), @@ -237,6 +237,8 @@ fun layer_merge_frag(input: vert_out): float4 { */ + //// + return float4(1.0, 1.0, 1.0, 1.0); } diff --git a/base/assets/Scene.arm b/base/assets/Scene.arm index 45f6c6370a59fb3b864900482cb5f78d09198917..51239ad53f5afd976cd93dc3d03544c7ef9d31b1 100644 GIT binary patch delta 55 ycmX@~o@?QIu7(!IEliVFu`n?(Ficn8$mFyA-6|$EHZXrVkk5i7Q@54Lg$V%sln?>{ delta 63 zcmZ4Zp6k$iu7(!IEliVFF)~l*+sY)hU3M!|B;)o!tC@INp+eJvLJr#_H!^KuMpD$m F1OVm_6-fX9 diff --git a/base/shaders/ssao_blur_pass.kong b/base/shaders/ssao_blur_pass.kong index b8a1189c..55ee5176 100644 --- a/base/shaders/ssao_blur_pass.kong +++ b/base/shaders/ssao_blur_pass.kong @@ -109,7 +109,7 @@ fun ssao_blur_pass_frag(input: vert_out): float { blur_weight_i = 0.008934; } - var posadd: float = i; + var posadd: float = float(i); var nor2: float3 = get_nor(sample_lod(gbuffer0, sampler_linear, input.tex + posadd * constants.dir_inv, 0.0).rg); var influence_factor: float = step(discard_threshold, dot(nor2, nor)); diff --git a/base/shaders/ssao_pass.kong b/base/shaders/ssao_pass.kong index e1b7ca38..dc5c82b2 100644 --- a/base/shaders/ssao_pass.kong +++ b/base/shaders/ssao_pass.kong @@ -71,7 +71,7 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float { // for (var i: int = 0; i < max_steps; i = i + 1) { var i: int = 0; - while (i < max_steps) { + while (i < int(max_steps)) { hit_coord += dir; var delta: float = get_delta_depth(view_ray, hit_coord); if (delta > 0.0 && delta < 0.2) { @@ -88,8 +88,8 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float { } fun tangent(n: float3): float3 { - var t1: float3 = cross(n, float3(0, 0, 1)); - var t2: float3 = cross(n, float3(0, 1, 0)); + var t1: float3 = cross(n, float3(0.0, 0.0, 1.0)); + var t2: float3 = cross(n, float3(0.0, 1.0, 0.0)); if (length(t1) > length(t2)) { return normalize(t1); }