[WIP] Create pipeline for transparent on screen objects

This commit is contained in:
Piotr Krygier committed 2025-06-20 13:44:33 +02:00
1 parent 3c72c9b387
commit 56c0b7922f
6 files changed
+31 -11

No files matched your search

+2 -1
View File
@@ -31,7 +31,8 @@ ENV opengl
FORMAT num FORMAT num
SOURCES SOURCES
shaders/shader.vert shaders/shader.vert
shaders/shader.frag shaders/solid_objects.frag
shaders/on_screen_text.frag
) )
add_library(rse_graphics SHARED shaders/shader.vert.num shaders/shader.frag.num) add_library(rse_graphics SHARED shaders/shader.vert.num shaders/shader.frag.num)
File renamed without changes.
+18
View File
@@ -0,0 +1,18 @@
#version 450
/* Each time texture count is changed this value also need to change. I have to fix it somehow. */
#extension GL_EXT_nonuniform_qualifier : enable
layout(set = 1, binding = 1) uniform sampler2D texSampler[];
layout(location = 0) in vec3 fragColor;
layout(location = 1) in vec2 fragTexCoord;
layout(location = 2) in flat uint instanceTextureId;
layout(location = 0) out vec4 outColor;
void main() {
vec4 texturePixels = texture(texSampler[instanceTextureId], fragTexCoord);
outColor = vec4(fragColor * texturePixels, texturePixels.a);
}
+7 -7
View File
@@ -51,25 +51,25 @@ void rse_graphics_test_function(void)
{{0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 1.0f}}, {{0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 1.0f}},
{{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f}}}; {{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f}}};
struct rse_vertex_t vertices2[] = {{{-0.5f, -0.5f, -0.5f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}, struct rse_vertex_t vertices2[] = {{{-0.5f, -0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}},
{{0.5f, -0.5f, -0.5f}, {1.0f, 1.0f, 1.0f}, {1.0f, 0.0f}}, {{0.5f, -0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {1.0f, 0.0f}},
{{0.5f, 0.5f, -0.5f}, {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f}}, {{0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f}},
{{-0.5f, 0.5f, -0.5f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f}}}; {{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f}}};
// FIXME: Temporary array of vertices, for testing purposes // FIXME: Temporary array of vertices, for testing purposes
uint16_t indices[] = {0, 1, 2, 2, 3, 0}; uint16_t indices[] = {0, 1, 2, 2, 3, 0};
uint16_t mesh_id = create_mesh(vertices, indices, 6, 6); uint16_t mesh_id = create_mesh(vertices, indices, 6, 6);
create_mesh_instance(mesh_id, (struct rse_instance_data_t){ create_mesh_instance(mesh_id, (struct rse_instance_data_t){
{0.0f, 0.0f, 0.4f}, {0.0f, 0.0f, 2.4f},
{0.0f, 0.0f, rse_math_deg_to_radians(45.0f)}, {0.0f, 0.0f, rse_math_deg_to_radians(45.0f)},
1.0f, 1.0f,
tex_id_2 tex_id_2
}); });
create_mesh_instance(mesh_id, (struct rse_instance_data_t){ create_mesh_instance(mesh_id, (struct rse_instance_data_t){
{-1.0f, 0.0f, 0.3f}, {-0.5f, 0.0f, -1.0f},
{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, rse_math_deg_to_radians(10.0f)},
1.0f, 1.0f,
tex_id_2 tex_id_2
}); });
+1 -1
View File
@@ -572,7 +572,7 @@ rse_err_t find_depth_format(VkFormat* found_format)
{ {
#define formats_count 3 #define formats_count 3
rse_err_t status; rse_err_t status;
VkFormat formats[formats_count] = {VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT}; VkFormat formats[formats_count] = {VK_FORMAT_D32_SFLOAT};
STATUS_CHECK(find_supported_format( STATUS_CHECK(find_supported_format(
formats, formats,
+3 -2
View File
@@ -16,7 +16,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#define SHADER_MODULES_COUNT 2U #define SHADER_MODULES_COUNT 3U
enum shader_stage_t enum shader_stage_t
{ {
@@ -33,7 +33,8 @@ VkShaderModule g_shader_modules[SHADER_MODULES_COUNT];
const char* g_shader_paths[] = { const char* g_shader_paths[] = {
"../graphics/shaders/shader.vert.num", "../graphics/shaders/shader.vert.num",
"../graphics/shaders/shader.frag.num", "../graphics/shaders/solid_objects.frag.num",
"../graphics/shaders/on_screen_text.frag.num",
}; };
static VkVertexInputBindingDescription get_binding_description() static VkVertexInputBindingDescription get_binding_description()