Skip to content

Commit 394867d

Browse files
Vulkan/D3D12: Fix HDR rendering, ribbon shaders, and pipeline barriers (#18734)
* WIP: Vulkan/D3D12 ribbon shader and mipmap fixes Save point for in-progress gfx driver changes including Vulkan ribbon shader updates and D3D12 fixes. * Vulkan: Fix HDR render pass mismatch and pipeline barrier Fix render pass / framebuffer format mismatch when rendering through the SDR offscreen buffer in HDR mode. The filter chain's final pass and the frame render pass were using vk->render_pass (A2B10G10R10) while the offscreen buffer framebuffer was created with vk->sdr_render_pass (B8G8R8A8), causing a Vulkan validation error. Select the correct render pass at frame time based on use_offscreen_buffer, and rebuild the filter chain's final pass pipeline to use the SDR render pass both at shader preset load and at swapchain recreation. Also fix an incorrect srcStageMask in the image layout transition after the HDR pipeline: SHADER_READ_BIT requires FRAGMENT_SHADER_BIT, not COLOR_ATTACHMENT_OUTPUT_BIT. * Vulkan/D3D12: Use BLEND_OP_MAX for alpha channel blending Change the alpha blend operation from ADD to MAX in the blend-enabled pipeline states for both Vulkan and D3D12. This ensures the render target alpha channel is always 1.0 (since the background establishes alpha=1.0 and max(src, 1.0) preserves it) while leaving RGB blending with SRC_ALPHA / ONE_MINUS_SRC_ALPHA completely unchanged.
1 parent 86441ed commit 394867d

13 files changed

Lines changed: 762 additions & 661 deletions

gfx/common/vulkan_common.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,9 @@ static const char *vulkan_optional_instance_extensions[] = {
911911
#ifdef __APPLE__
912912
VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
913913
#endif
914+
#ifdef _WIN32
915+
"VK_KHR_get_surface_capabilities2",
916+
#endif
914917
#ifdef VULKAN_HDR_SWAPCHAIN
915918
VULKAN_COLORSPACE_EXTENSION_NAME
916919
#endif

gfx/drivers/d3d12.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ typedef struct ALIGN(16)
247247
float height;
248248
} OutputSize;
249249
float time;
250+
float alpha;
250251
} d3d12_uniform_t;
251252

252253
typedef struct
@@ -455,7 +456,7 @@ static D3D12_RENDER_TARGET_BLEND_DESC d3d12_blend_enable_desc = {
455456
D3D12_BLEND_OP_ADD,
456457
D3D12_BLEND_SRC_ALPHA,
457458
D3D12_BLEND_INV_SRC_ALPHA,
458-
D3D12_BLEND_OP_ADD,
459+
D3D12_BLEND_OP_MAX,
459460
D3D12_LOGIC_OP_NOOP,
460461
D3D12_COLOR_WRITE_ENABLE_ALL,
461462
};
@@ -1199,7 +1200,8 @@ static void gfx_display_d3d12_draw_pipeline(gfx_display_ctx_draw_t *draw,
11991200
cmd->lpVtbl->IASetPrimitiveTopology(cmd,
12001201
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
12011202

1202-
d3d12->ubo_values.time += 0.01f;
1203+
d3d12->ubo_values.time += 0.01f;
1204+
d3d12->ubo_values.alpha = draw->color ? draw->color[3] : 1.0f;
12031205

12041206
{
12051207
D3D12_RANGE read_range;
@@ -3528,6 +3530,7 @@ static void *d3d12_gfx_init(const video_info_t* video,
35283530
d3d12->ubo_values.mvp = d3d12->mvp_no_rot;
35293531
d3d12->ubo_values.OutputSize.width = d3d12->chain.viewport.Width;
35303532
d3d12->ubo_values.OutputSize.height = d3d12->chain.viewport.Height;
3533+
d3d12->ubo_values.alpha = 1.0f;
35313534

35323535
{
35333536
math_matrix_4x4* mvp;

gfx/drivers/d3d_shaders/ribbon_simple_sm4.hlsl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SRC(
77
float4x4 modelViewProj;
88
float2 Outputsize;
99
float time;
10+
float alpha;
1011
};
1112
uniform UBO global;
1213

@@ -46,6 +47,6 @@ SRC(
4647

4748
float4 PSMain() : SV_TARGET
4849
{
49-
return float4(0.05, 0.05, 0.05, 1.0);
50+
return float4(0.05, 0.05, 0.05, global.alpha);
5051
};
5152
)

gfx/drivers/d3d_shaders/ribbon_sm4.hlsl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ SRC(
1313
float4x4 modelViewProj;
1414
float2 Outputsize;
1515
float time;
16+
float alpha;
1617
};
1718
uniform UBO global;
1819

@@ -70,7 +71,7 @@ SRC(
7071
float3 normal = normalize(cross(x, y));
7172
float c = 1.0 - dot(normal, up);
7273
c = (1.0 - cos(c * c)) / 13.0;
73-
return float4(c, c, c, 1.0);
74+
return float4(c, c, c, global.alpha);
7475
// return float4(c, c, c, c);
7576
// return float4(1.0, 1.0, 1.0, c);
7677
// return float4(1.0, 0.0, 1.0, 1.0);

gfx/drivers/vulkan.c

Lines changed: 59 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,14 +1352,18 @@ static void gfx_display_vk_draw_pipeline(
13521352
default:
13531353
case VIDEO_SHADER_MENU:
13541354
case VIDEO_SHADER_MENU_2:
1355-
ca = &p_disp->dispca;
1356-
draw->coords = (struct video_coords*)&ca->coords;
1357-
draw->backend_data = ubo_scratch_data;
1358-
draw->backend_data_size = 2 * sizeof(float);
1359-
1360-
/* Match UBO layout in shader. */
1361-
memcpy(ubo_scratch_data, &t, sizeof(t));
1362-
memcpy(ubo_scratch_data + sizeof(float), &yflip, sizeof(yflip));
1355+
{
1356+
float alpha = draw->color ? draw->color[3] : 1.0f;
1357+
ca = &p_disp->dispca;
1358+
draw->coords = (struct video_coords*)&ca->coords;
1359+
draw->backend_data = ubo_scratch_data;
1360+
draw->backend_data_size = 3 * sizeof(float);
1361+
1362+
/* Match UBO layout in shader. */
1363+
memcpy(ubo_scratch_data, &t, sizeof(t));
1364+
memcpy(ubo_scratch_data + sizeof(float), &yflip, sizeof(yflip));
1365+
memcpy(ubo_scratch_data + 2 * sizeof(float), &alpha, sizeof(alpha));
1366+
}
13631367
break;
13641368

13651369
/* Snow simple */
@@ -2624,7 +2628,7 @@ static void vulkan_init_pipelines(vk_t *vk)
26242628
blend_attachment.colorBlendOp = VK_BLEND_OP_ADD;
26252629
blend_attachment.srcAlphaBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
26262630
blend_attachment.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
2627-
blend_attachment.alphaBlendOp = VK_BLEND_OP_ADD;
2631+
blend_attachment.alphaBlendOp = VK_BLEND_OP_MAX;
26282632

26292633
/* Glyph pipeline */
26302634
module_info.codeSize = sizeof(font_frag);
@@ -3303,6 +3307,20 @@ static bool vulkan_init_filter_chain_preset(vk_t *vk, const char *shader_path)
33033307
vulkan_set_hdr_inverse_tonemap(vk, vk->filter_chain, !emits_hdr10);
33043308
vulkan_set_hdr10(vk, vk->filter_chain, !emits_hdr10);
33053309
vk->flags |= VK_FLAG_SHOULD_RESIZE;
3310+
3311+
if (!emits_hdr10)
3312+
{
3313+
/* Rendering goes through the SDR offscreen buffer;
3314+
* rebuild the filter chain's final pass pipeline
3315+
* to use the SDR render pass. */
3316+
struct vulkan_filter_chain_swapchain_info sdr_swapchain;
3317+
sdr_swapchain.vp = vk->vk_vp;
3318+
sdr_swapchain.format = vk->context->swapchain_format;
3319+
sdr_swapchain.render_pass = vk->sdr_render_pass;
3320+
sdr_swapchain.num_indices = vk->context->num_swapchain_images;
3321+
vulkan_filter_chain_update_swapchain_info(
3322+
vk->filter_chain, &sdr_swapchain);
3323+
}
33063324
}
33073325
else if (rt_format == VK_FORMAT_R16G16B16A16_SFLOAT)
33083326
{
@@ -4028,6 +4046,26 @@ static void vulkan_check_swapchain(vk_t *vk)
40284046
filter_info.format = vk->context->swapchain_format;
40294047
filter_info.render_pass = vk->render_pass;
40304048
filter_info.num_indices = vk->context->num_swapchain_images;
4049+
4050+
#ifdef VULKAN_HDR_SWAPCHAIN
4051+
/* When rendering through the SDR offscreen buffer, the filter chain's
4052+
* final pass must use the SDR render pass to match the framebuffer format. */
4053+
if (vk->context->flags & VK_CTX_FLAG_HDR_ENABLE)
4054+
{
4055+
vulkan_filter_chain_t *chain = vk->filter_chain
4056+
? vk->filter_chain : vk->filter_chain_default;
4057+
struct video_shader *preset = vulkan_filter_chain_get_preset(chain);
4058+
if (preset && preset->passes)
4059+
{
4060+
VkFormat rt_format = vulkan_filter_chain_get_pass_rt_format(
4061+
chain, preset->passes - 1);
4062+
if ( vulkan_is_hdr10_format(rt_format)
4063+
&& !vulkan_filter_chain_emits_hdr10(chain))
4064+
filter_info.render_pass = vk->sdr_render_pass;
4065+
}
4066+
}
4067+
#endif
4068+
40314069
if (
40324070
!vulkan_filter_chain_update_swapchain_info(
40334071
(vk->filter_chain) ? vk->filter_chain : vk->filter_chain_default,
@@ -5050,6 +5088,12 @@ static bool vulkan_frame(void *data, const void *frame,
50505088
else if (tex->image)
50515089
vulkan_transition_texture(vk, vk->cmd, tex);
50525090

5091+
/* If the texture hasn't been uploaded yet (e.g. after
5092+
* reinit from HDR toggle with no cached frame),
5093+
* fall back to the default black texture. */
5094+
if (tex->layout == VK_IMAGE_LAYOUT_UNDEFINED)
5095+
tex = &vk->default_texture;
5096+
50535097
input.image = tex->image;
50545098
input.view = tex->view;
50555099
input.layout = tex->layout;
@@ -5105,7 +5149,12 @@ static bool vulkan_frame(void *data, const void *frame,
51055149
{
51065150
rp_info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
51075151
rp_info.pNext = NULL;
5152+
#ifdef VULKAN_HDR_SWAPCHAIN
5153+
rp_info.renderPass = use_offscreen_buffer
5154+
? vk->sdr_render_pass : vk->render_pass;
5155+
#else
51085156
rp_info.renderPass = vk->render_pass;
5157+
#endif
51095158
rp_info.framebuffer = backbuffer->framebuffer;
51105159
rp_info.renderArea.offset.x = 0;
51115160
rp_info.renderArea.offset.y = 0;
@@ -5153,7 +5202,7 @@ static bool vulkan_frame(void *data, const void *frame,
51535202
VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, vk->offscreen_buffer.image,
51545203
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
51555204
VK_ACCESS_SHADER_READ_BIT, VK_ACCESS_TRANSFER_WRITE_BIT,
5156-
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
5205+
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
51575206
VK_PIPELINE_STAGE_TRANSFER_BIT);
51585207

51595208
end_main_pass = false;

gfx/drivers/vulkan_shaders/pipeline_ribbon.frag

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ layout(std140, set = 0, binding = 0) uniform UBO
55
{
66
float time;
77
float yflip;
8+
float alpha;
89
} constants;
910

1011
layout(location = 0) in vec3 vEC;
@@ -19,5 +20,5 @@ void main()
1920
vec3 normal = normalize(cross(x, y));
2021
float c = 1.0 - dot(normal, up);
2122
c = (1.0 - cos(c * c)) / 3.0;
22-
FragColor = vec4(c, c, c, 1.0);
23+
FragColor = vec4(c, c, c, constants.alpha);
2324
}
Lines changed: 76 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{0x07230203,0x00010000,0x000d0007,0x00000036,
1+
{0x07230203,0x00010000,0x000d000b,0x00000037,
22
0x00000000,0x00020011,0x00000001,0x0006000b,
33
0x00000001,0x4c534c47,0x6474732e,0x3035342e,
44
0x00000000,0x0003000e,0x00000000,0x00000001,
@@ -16,76 +16,80 @@
1616
0x00030005,0x00000011,0x004f4255,0x00050006,
1717
0x00000011,0x00000000,0x656d6974,0x00000000,
1818
0x00050006,0x00000011,0x00000001,0x696c6679,
19-
0x00000070,0x00050005,0x00000013,0x736e6f63,
20-
0x746e6174,0x00000073,0x00040005,0x0000001b,
21-
0x6d726f6e,0x00006c61,0x00030005,0x00000021,
22-
0x00000063,0x00050005,0x00000031,0x67617246,
23-
0x6f6c6f43,0x00000072,0x00040047,0x0000000b,
24-
0x0000001e,0x00000000,0x00050048,0x00000011,
19+
0x00000070,0x00050006,0x00000011,0x00000002,
20+
0x68706c61,0x00000061,0x00050005,0x00000013,
21+
0x736e6f63,0x746e6174,0x00000073,0x00040005,
22+
0x0000001b,0x6d726f6e,0x00006c61,0x00030005,
23+
0x00000021,0x00000063,0x00050005,0x00000031,
24+
0x67617246,0x6f6c6f43,0x00000072,0x00040047,
25+
0x0000000b,0x0000001e,0x00000000,0x00030047,
26+
0x00000011,0x00000002,0x00050048,0x00000011,
2527
0x00000000,0x00000023,0x00000000,0x00050048,
2628
0x00000011,0x00000001,0x00000023,0x00000004,
27-
0x00030047,0x00000011,0x00000002,0x00040047,
28-
0x00000013,0x00000022,0x00000000,0x00040047,
29-
0x00000013,0x00000021,0x00000000,0x00040047,
30-
0x00000031,0x0000001e,0x00000000,0x00020013,
31-
0x00000002,0x00030021,0x00000003,0x00000002,
32-
0x00030016,0x00000006,0x00000020,0x00040017,
33-
0x00000007,0x00000006,0x00000003,0x00040020,
34-
0x00000008,0x00000007,0x00000007,0x00040020,
35-
0x0000000a,0x00000001,0x00000007,0x0004003b,
36-
0x0000000a,0x0000000b,0x00000001,0x0004001e,
37-
0x00000011,0x00000006,0x00000006,0x00040020,
38-
0x00000012,0x00000002,0x00000011,0x0004003b,
39-
0x00000012,0x00000013,0x00000002,0x00040015,
40-
0x00000014,0x00000020,0x00000001,0x0004002b,
41-
0x00000014,0x00000015,0x00000001,0x00040020,
42-
0x00000016,0x00000002,0x00000006,0x00040020,
43-
0x00000020,0x00000007,0x00000006,0x0004002b,
44-
0x00000006,0x00000022,0x3f800000,0x0004002b,
45-
0x00000006,0x00000024,0x00000000,0x0006002c,
46-
0x00000007,0x00000025,0x00000024,0x00000024,
47-
0x00000022,0x0004002b,0x00000006,0x0000002d,
48-
0x40400000,0x00040017,0x0000002f,0x00000006,
49-
0x00000004,0x00040020,0x00000030,0x00000003,
50-
0x0000002f,0x0004003b,0x00000030,0x00000031,
51-
0x00000003,0x00050036,0x00000002,0x00000004,
52-
0x00000000,0x00000003,0x000200f8,0x00000005,
53-
0x0004003b,0x00000008,0x00000009,0x00000007,
54-
0x0004003b,0x00000008,0x0000000e,0x00000007,
55-
0x0004003b,0x00000008,0x0000001b,0x00000007,
56-
0x0004003b,0x00000020,0x00000021,0x00000007,
57-
0x0004003d,0x00000007,0x0000000c,0x0000000b,
58-
0x000400cf,0x00000007,0x0000000d,0x0000000c,
59-
0x0003003e,0x00000009,0x0000000d,0x0004003d,
60-
0x00000007,0x0000000f,0x0000000b,0x000400d0,
61-
0x00000007,0x00000010,0x0000000f,0x0003003e,
62-
0x0000000e,0x00000010,0x00050041,0x00000016,
63-
0x00000017,0x00000013,0x00000015,0x0004003d,
64-
0x00000006,0x00000018,0x00000017,0x0004003d,
65-
0x00000007,0x00000019,0x0000000e,0x0005008e,
66-
0x00000007,0x0000001a,0x00000019,0x00000018,
67-
0x0003003e,0x0000000e,0x0000001a,0x0004003d,
68-
0x00000007,0x0000001c,0x00000009,0x0004003d,
69-
0x00000007,0x0000001d,0x0000000e,0x0007000c,
70-
0x00000007,0x0000001e,0x00000001,0x00000044,
71-
0x0000001c,0x0000001d,0x0006000c,0x00000007,
72-
0x0000001f,0x00000001,0x00000045,0x0000001e,
73-
0x0003003e,0x0000001b,0x0000001f,0x0004003d,
74-
0x00000007,0x00000023,0x0000001b,0x00050094,
75-
0x00000006,0x00000026,0x00000023,0x00000025,
76-
0x00050083,0x00000006,0x00000027,0x00000022,
77-
0x00000026,0x0003003e,0x00000021,0x00000027,
78-
0x0004003d,0x00000006,0x00000028,0x00000021,
79-
0x0004003d,0x00000006,0x00000029,0x00000021,
80-
0x00050085,0x00000006,0x0000002a,0x00000028,
81-
0x00000029,0x0006000c,0x00000006,0x0000002b,
82-
0x00000001,0x0000000e,0x0000002a,0x00050083,
83-
0x00000006,0x0000002c,0x00000022,0x0000002b,
84-
0x00050088,0x00000006,0x0000002e,0x0000002c,
85-
0x0000002d,0x0003003e,0x00000021,0x0000002e,
86-
0x0004003d,0x00000006,0x00000032,0x00000021,
87-
0x0004003d,0x00000006,0x00000033,0x00000021,
88-
0x0004003d,0x00000006,0x00000034,0x00000021,
89-
0x00070050,0x0000002f,0x00000035,0x00000032,
90-
0x00000033,0x00000034,0x00000022,0x0003003e,
91-
0x00000031,0x00000035,0x000100fd,0x00010038}
29+
0x00050048,0x00000011,0x00000002,0x00000023,
30+
0x00000008,0x00040047,0x00000013,0x00000021,
31+
0x00000000,0x00040047,0x00000013,0x00000022,
32+
0x00000000,0x00040047,0x00000031,0x0000001e,
33+
0x00000000,0x00020013,0x00000002,0x00030021,
34+
0x00000003,0x00000002,0x00030016,0x00000006,
35+
0x00000020,0x00040017,0x00000007,0x00000006,
36+
0x00000003,0x00040020,0x00000008,0x00000007,
37+
0x00000007,0x00040020,0x0000000a,0x00000001,
38+
0x00000007,0x0004003b,0x0000000a,0x0000000b,
39+
0x00000001,0x0005001e,0x00000011,0x00000006,
40+
0x00000006,0x00000006,0x00040020,0x00000012,
41+
0x00000002,0x00000011,0x0004003b,0x00000012,
42+
0x00000013,0x00000002,0x00040015,0x00000014,
43+
0x00000020,0x00000001,0x0004002b,0x00000014,
44+
0x00000015,0x00000001,0x00040020,0x00000016,
45+
0x00000002,0x00000006,0x00040020,0x00000020,
46+
0x00000007,0x00000006,0x0004002b,0x00000006,
47+
0x00000022,0x3f800000,0x0004002b,0x00000006,
48+
0x00000024,0x00000000,0x0006002c,0x00000007,
49+
0x00000025,0x00000024,0x00000024,0x00000022,
50+
0x0004002b,0x00000006,0x0000002d,0x40400000,
51+
0x00040017,0x0000002f,0x00000006,0x00000004,
52+
0x00040020,0x00000030,0x00000003,0x0000002f,
53+
0x0004003b,0x00000030,0x00000031,0x00000003,
54+
0x0004002b,0x00000014,0x00000033,0x00000002,
55+
0x00050036,0x00000002,0x00000004,0x00000000,
56+
0x00000003,0x000200f8,0x00000005,0x0004003b,
57+
0x00000008,0x00000009,0x00000007,0x0004003b,
58+
0x00000008,0x0000000e,0x00000007,0x0004003b,
59+
0x00000008,0x0000001b,0x00000007,0x0004003b,
60+
0x00000020,0x00000021,0x00000007,0x0004003d,
61+
0x00000007,0x0000000c,0x0000000b,0x000400cf,
62+
0x00000007,0x0000000d,0x0000000c,0x0003003e,
63+
0x00000009,0x0000000d,0x0004003d,0x00000007,
64+
0x0000000f,0x0000000b,0x000400d0,0x00000007,
65+
0x00000010,0x0000000f,0x0003003e,0x0000000e,
66+
0x00000010,0x00050041,0x00000016,0x00000017,
67+
0x00000013,0x00000015,0x0004003d,0x00000006,
68+
0x00000018,0x00000017,0x0004003d,0x00000007,
69+
0x00000019,0x0000000e,0x0005008e,0x00000007,
70+
0x0000001a,0x00000019,0x00000018,0x0003003e,
71+
0x0000000e,0x0000001a,0x0004003d,0x00000007,
72+
0x0000001c,0x00000009,0x0004003d,0x00000007,
73+
0x0000001d,0x0000000e,0x0007000c,0x00000007,
74+
0x0000001e,0x00000001,0x00000044,0x0000001c,
75+
0x0000001d,0x0006000c,0x00000007,0x0000001f,
76+
0x00000001,0x00000045,0x0000001e,0x0003003e,
77+
0x0000001b,0x0000001f,0x0004003d,0x00000007,
78+
0x00000023,0x0000001b,0x00050094,0x00000006,
79+
0x00000026,0x00000023,0x00000025,0x00050083,
80+
0x00000006,0x00000027,0x00000022,0x00000026,
81+
0x0003003e,0x00000021,0x00000027,0x0004003d,
82+
0x00000006,0x00000028,0x00000021,0x0004003d,
83+
0x00000006,0x00000029,0x00000021,0x00050085,
84+
0x00000006,0x0000002a,0x00000028,0x00000029,
85+
0x0006000c,0x00000006,0x0000002b,0x00000001,
86+
0x0000000e,0x0000002a,0x00050083,0x00000006,
87+
0x0000002c,0x00000022,0x0000002b,0x00050088,
88+
0x00000006,0x0000002e,0x0000002c,0x0000002d,
89+
0x0003003e,0x00000021,0x0000002e,0x0004003d,
90+
0x00000006,0x00000032,0x00000021,0x00050041,
91+
0x00000016,0x00000034,0x00000013,0x00000033,
92+
0x0004003d,0x00000006,0x00000035,0x00000034,
93+
0x00070050,0x0000002f,0x00000036,0x00000032,
94+
0x00000032,0x00000032,0x00000035,0x0003003e,
95+
0x00000031,0x00000036,0x000100fd,0x00010038}

gfx/drivers/vulkan_shaders/pipeline_ribbon.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ layout(std140, set = 0, binding = 0) uniform UBO
77
{
88
float time;
99
float yflip;
10+
float alpha;
1011
} constants;
1112

1213
float iqhash(float n)

0 commit comments

Comments
 (0)