diff --git a/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl b/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl index f221ff6a..1e95d980 100644 --- a/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl +++ b/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl @@ -2,11 +2,12 @@ layout(push_constant, std430) uniform Data { layout(offset = 0) vec2 pos[4]; layout(offset = 32) vec2 tex_pos[4]; layout(offset = 64) float mul; - layout(offset = 68) float size_x; - layout(offset = 72) float size_y; - layout(offset = 76) float corner_radius_tl; - layout(offset = 80) float corner_radius_tr; - layout(offset = 84) float corner_radius_br; - layout(offset = 88) float corner_radius_bl; - layout(offset = 92) float scale; + layout(offset = 68) float discard_threshold; + layout(offset = 72) float size_x; + layout(offset = 76) float size_y; + layout(offset = 80) float corner_radius_tl; + layout(offset = 84) float corner_radius_tr; + layout(offset = 88) float corner_radius_br; + layout(offset = 92) float corner_radius_bl; + layout(offset = 96) float scale; } data; diff --git a/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag b/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag index cec6f001..8c84529f 100644 --- a/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag +++ b/src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag @@ -38,6 +38,9 @@ void main() { vec2 size = vec2(data.size_x, data.size_y); vec4 corner_radius = vec4(data.corner_radius_tl, data.corner_radius_tr, data.corner_radius_br, data.corner_radius_bl); vec4 c = textureLod(tex, tex_pos, 0); + if (c.a < data.discard_threshold) { + discard; + } if (has_alpha_multiplier) { if (src_has_alpha) { c *= data.mul; diff --git a/src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl b/src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl index 61f3ef3c..82ec59ba 100644 --- a/src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl +++ b/src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl @@ -2,4 +2,5 @@ layout(push_constant, std430) uniform Data { layout(offset = 0) vec2 pos[4]; layout(offset = 32) vec2 tex_pos[4]; layout(offset = 64) float mul; + layout(offset = 68) float discard_threshold; } data; diff --git a/src/gfx_apis/vulkan/shaders/legacy/tex.frag b/src/gfx_apis/vulkan/shaders/legacy/tex.frag index 2896bc87..ab862b32 100644 --- a/src/gfx_apis/vulkan/shaders/legacy/tex.frag +++ b/src/gfx_apis/vulkan/shaders/legacy/tex.frag @@ -9,6 +9,9 @@ layout(location = 0) out vec4 out_color; void main() { vec4 c = textureLod(tex, tex_pos, 0); + if (c.a < data.discard_threshold) { + discard; + } if (has_alpha_multiplier) { if (src_has_alpha) { c *= data.mul; diff --git a/src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl b/src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl index 9a07f0b0..62c11e74 100644 --- a/src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl +++ b/src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl @@ -12,11 +12,12 @@ layout(buffer_reference, buffer_reference_align = 8, std430) readonly buffer Ver layout(push_constant, std430) uniform Data { layout(offset = 0) Vertices vertices; layout(offset = 8) float mul; - layout(offset = 12) float size_x; - layout(offset = 16) float size_y; - layout(offset = 20) float corner_radius_tl; - layout(offset = 24) float corner_radius_tr; - layout(offset = 28) float corner_radius_br; - layout(offset = 32) float corner_radius_bl; - layout(offset = 36) float scale; + layout(offset = 12) float discard_threshold; + layout(offset = 16) float size_x; + layout(offset = 20) float size_y; + layout(offset = 24) float corner_radius_tl; + layout(offset = 28) float corner_radius_tr; + layout(offset = 32) float corner_radius_br; + layout(offset = 36) float corner_radius_bl; + layout(offset = 40) float scale; } data; diff --git a/src/gfx_apis/vulkan/shaders/rounded_tex.frag b/src/gfx_apis/vulkan/shaders/rounded_tex.frag index 0c506bc2..aebbdb32 100644 --- a/src/gfx_apis/vulkan/shaders/rounded_tex.frag +++ b/src/gfx_apis/vulkan/shaders/rounded_tex.frag @@ -45,6 +45,9 @@ void main() { vec2 size = vec2(data.size_x, data.size_y); vec4 corner_radius = vec4(data.corner_radius_tl, data.corner_radius_tr, data.corner_radius_br, data.corner_radius_bl); vec4 c = textureLod(sampler2D(tex, sam), tex_pos, 0); + if (c.a < data.discard_threshold) { + discard; + } if (eotf != inv_eotf || has_matrix || alpha_mode != AM_PREMULTIPLIED_ELECTRICAL) { vec3 rgb = c.rgb; if (src_has_alpha && alpha_mode == AM_PREMULTIPLIED_ELECTRICAL) { diff --git a/src/gfx_apis/vulkan/shaders/tex.common.glsl b/src/gfx_apis/vulkan/shaders/tex.common.glsl index 8576231b..45b7119a 100644 --- a/src/gfx_apis/vulkan/shaders/tex.common.glsl +++ b/src/gfx_apis/vulkan/shaders/tex.common.glsl @@ -12,4 +12,5 @@ layout(buffer_reference, buffer_reference_align = 8, std430) readonly buffer Ver layout(push_constant, std430) uniform Data { Vertices vertices; float mul; + float discard_threshold; } data; diff --git a/src/gfx_apis/vulkan/shaders/tex.frag b/src/gfx_apis/vulkan/shaders/tex.frag index e1ccacda..2e09c32c 100644 --- a/src/gfx_apis/vulkan/shaders/tex.frag +++ b/src/gfx_apis/vulkan/shaders/tex.frag @@ -16,6 +16,9 @@ layout(location = 0) out vec4 out_color; void main() { vec4 c = textureLod(sampler2D(tex, sam), tex_pos, 0); + if (c.a < data.discard_threshold) { + discard; + } if (eotf != inv_eotf || has_matrix || alpha_mode != AM_PREMULTIPLIED_ELECTRICAL) { vec3 rgb = c.rgb; if (src_has_alpha && alpha_mode == AM_PREMULTIPLIED_ELECTRICAL) { diff --git a/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.frag.spv b/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.frag.spv index 9fd78f9b..300db829 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.frag.spv and b/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.frag.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.vert.spv b/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.vert.spv index 0a0d73e2..c296a7ec 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.vert.spv and b/src/gfx_apis/vulkan/shaders_bin/legacy_rounded_tex.vert.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/legacy_tex.frag.spv b/src/gfx_apis/vulkan/shaders_bin/legacy_tex.frag.spv index 9664f044..669b3064 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/legacy_tex.frag.spv and b/src/gfx_apis/vulkan/shaders_bin/legacy_tex.frag.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/legacy_tex.vert.spv b/src/gfx_apis/vulkan/shaders_bin/legacy_tex.vert.spv index edf86be6..7361189a 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/legacy_tex.vert.spv and b/src/gfx_apis/vulkan/shaders_bin/legacy_tex.vert.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/rounded_tex.frag.spv b/src/gfx_apis/vulkan/shaders_bin/rounded_tex.frag.spv index 2bdd1fd3..3ff5c280 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/rounded_tex.frag.spv and b/src/gfx_apis/vulkan/shaders_bin/rounded_tex.frag.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/rounded_tex.vert.spv b/src/gfx_apis/vulkan/shaders_bin/rounded_tex.vert.spv index 3ac5e409..7e11b397 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/rounded_tex.vert.spv and b/src/gfx_apis/vulkan/shaders_bin/rounded_tex.vert.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/tex.frag.spv b/src/gfx_apis/vulkan/shaders_bin/tex.frag.spv index c013804d..f1ca6188 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/tex.frag.spv and b/src/gfx_apis/vulkan/shaders_bin/tex.frag.spv differ diff --git a/src/gfx_apis/vulkan/shaders_bin/tex.vert.spv b/src/gfx_apis/vulkan/shaders_bin/tex.vert.spv index 74f97643..00f1aa5a 100644 Binary files a/src/gfx_apis/vulkan/shaders_bin/tex.vert.spv and b/src/gfx_apis/vulkan/shaders_bin/tex.vert.spv differ diff --git a/src/gfx_apis/vulkan/shaders_hash.txt b/src/gfx_apis/vulkan/shaders_hash.txt index 2fde0603..f8b7f0e8 100644 --- a/src/gfx_apis/vulkan/shaders_hash.txt +++ b/src/gfx_apis/vulkan/shaders_hash.txt @@ -15,11 +15,11 @@ ad22a79e1a88a12daa40c0a2b953084c129a408297c8ca544d60e0b6001470b9 src/gfx_apis/vu b77838c0aac9ec90ae76cd0d94d3891d72d9a30b09ce77009afd9f4e567dd042 src/gfx_apis/vulkan/shaders/legacy/rounded_fill.common.glsl fa39734aea1c96960f5dc95b999ae2fa5576ecf4b527fd70ee0f643c8ddcc452 src/gfx_apis/vulkan/shaders/legacy/rounded_fill.frag c1914cc00fb4827f65cd55bd0737d159fe44a098a3085a500822fc91cc2bfcad src/gfx_apis/vulkan/shaders/legacy/rounded_fill.vert -bd249cf170b72cd833e92a7719e88da0a91e563956579707e693679b443d73d5 src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl -28f3249e0d974a332b2926fb7565930627a093d6ac21ca17f2bf191740d299bd src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag +0305f0bf2ab87de4280e32adfda21906304db595590baa0f024d4e5e67d80d9c src/gfx_apis/vulkan/shaders/legacy/rounded_tex.common.glsl +02405debc59f254cd95f6b7f94df27438c952b22f357f411359898f430bcd770 src/gfx_apis/vulkan/shaders/legacy/rounded_tex.frag 6ef0bde549dc163cd08f68d975071f5d74213c07ccc4a06b30c6f179b2f848ae src/gfx_apis/vulkan/shaders/legacy/rounded_tex.vert -e0a8769dd7938dd02e66db9e9048ed6bef8f8c42671f2e2c7a7976a6d498f685 src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl -0e7c72ea11671065842c8b4ad4131a7df33b427dc0ea76bf5a896546f6636cb0 src/gfx_apis/vulkan/shaders/legacy/tex.frag +f5bfdb445c501ab97a19c7d435996a03ed45d31e8e54e29143f1daad8fa60d5b src/gfx_apis/vulkan/shaders/legacy/tex.common.glsl +3a9b36f72c82067e1892481054acb0948097d6c766e62e8bfad766fa2c2e3de6 src/gfx_apis/vulkan/shaders/legacy/tex.frag 4402f7ccdbb9fb52fb6cda3aab13cf89e2980c79b541f8be0463efd64a5f98ed src/gfx_apis/vulkan/shaders/legacy/tex.vert 3ba5d05c2b95099e5424b3ade5d1c31d431f5730b1d0b51a9fb5f8afc4ea14b4 src/gfx_apis/vulkan/shaders/out.common.glsl 5069f619c7d722815a022e2d84720a2d8290af49a3ed49ea0cd26b52115cc39a src/gfx_apis/vulkan/shaders/out.frag @@ -27,10 +27,10 @@ e0a8769dd7938dd02e66db9e9048ed6bef8f8c42671f2e2c7a7976a6d498f685 src/gfx_apis/vu 9202d5c9fc4ce0d5f40ed147f245bd037728c9e060ea46a0f0a1767ca55e6c48 src/gfx_apis/vulkan/shaders/rounded_fill.common.glsl 9085625d2afb1365685ae79a58108bf6566573ed94d9913397cf74dc6ef9b6e8 src/gfx_apis/vulkan/shaders/rounded_fill.frag 7665319a706e514f125d80f51f10b643f01cdae54d8a6ea56c218f78de7c0ecb src/gfx_apis/vulkan/shaders/rounded_fill.vert -dd100d048c0b380c913cffd7ac48fed3a341b3cb052302a11c369967f38aba9a src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl -454f34754ea4102190821c2d168dedd8c6bf624f1712b6136d902428f801a1e9 src/gfx_apis/vulkan/shaders/rounded_tex.frag +0fa53622bbee536bdf0b32438c276b9e5231e1fe5fac93ed395426da3893bd74 src/gfx_apis/vulkan/shaders/rounded_tex.common.glsl +adeba99236ee7606170bfb48e62c0df11c71a83018d8a201cde760c4f569fe5e src/gfx_apis/vulkan/shaders/rounded_tex.frag 21b18ba369b505b9aedb8cf2e7e31bc417f6704fd2daac353b0db52f9ae44c70 src/gfx_apis/vulkan/shaders/rounded_tex.vert -e22d4d3318a350def8ef19c7b27dc6a308a84c2fe9d7c02b81107f72073cd481 src/gfx_apis/vulkan/shaders/tex.common.glsl -1f196cee646a934072beb3e5648a5042c035953d9a0c26b0a22e330c2f8bb994 src/gfx_apis/vulkan/shaders/tex.frag +6ebf70abd2a06cb8a14cea7022a19d5d4bc95b1ef5e5a7ca22ab4c5fa37b6244 src/gfx_apis/vulkan/shaders/tex.common.glsl +fdfc60c64a22e7745dc82642ea23ef214dbd3b92d6a4f0ae1d75d33e89ae6a6a src/gfx_apis/vulkan/shaders/tex.frag 423cf327c9fcc4070dbf75321c1224a1589b6cf3d2f1ea5e8bd0362e1a9f3aa1 src/gfx_apis/vulkan/shaders/tex.vert b982f7101c22931a33b32dce3408387f3392c0f0ad0ca5852da265b0d12856bb src/gfx_apis/vulkan/shaders/tex_set.glsl