finish vulkan init (outside of description)

This commit is contained in:
matthew 2025-10-29 06:39:56 +11:00
parent f9cf8e26ab
commit 77ce53d4f1
7 changed files with 46 additions and 14 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -16,7 +16,7 @@
"versions": ["VULKAN_DEBUG"], "versions": ["VULKAN_DEBUG"],
"preGenerateCommands-linux": ["./build.sh"], "preGenerateCommands-linux": ["./build.sh"],
"preGenerateCommands-windows": [], "preGenerateCommands-windows": [],
"dflags": ["-Xcc=-mno-sse", "-P-I/usr/include/freetype2", "-vgc", "-Jbuild", "-Jassets/fonts"], "dflags": ["-Xcc=-mno-sse", "-P-I/usr/include/freetype2", "-Jbuild", "-Jassets/fonts"],
"dflags-dmd": ["-P=-DSTBI_NO_SIMD"] "dflags-dmd": ["-P=-DSTBI_NO_SIMD"]
}, },
{ {

@ -1 +1 @@
Subproject commit 53c500c302e87799b01bb99356780c9c51b41170 Subproject commit 1b4d9979765ca8a1c1f45ddf8420edc93d1b79dc

View File

@ -14,12 +14,28 @@ struct RenderState
{ {
Renderer rd; Renderer rd;
Arena[2] frame_arenas; Arena[2] frame_arenas;
PushConst pc;
ShaderGlobals globals;
Pipeline pipeline_pbr; Pipeline pipeline_pbr;
DescSetLayout desc_layout_globals; DescSetLayout desc_layout_globals;
DescSetLayout desc_layout_resources; DescSetLayout desc_layout_resources;
DescSet[2] desc_set_globals; DescSet[2] desc_set_globals;
DescSet[2] desc_set_resources; DescSet[2] desc_set_resources;
PipelineLayout pipeline_layout_pbr; PipelineLayout pipeline_layout_pbr;
ImageView placeholder_tex;
Buffer globals_buffer;
}
struct ShaderGlobals
{
Vec4 ambient;
Vec4 diffuse;
Vec4 specular;
f32 shininess = 0.0;
f32 alpha = 0.0;
} }
struct PushConst struct PushConst
@ -76,7 +92,7 @@ Init(RenderState* rds, PlatformWindow* window)
}; };
} }
DescLayoutBinding[5] global_bindings = [ DescLayoutBinding[3] global_bindings = [
{ binding: 0, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All }, { binding: 0, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All },
{ binding: 1, descriptorType: DT.StorageTexelBuf, descriptorCount: 1, stageFlags: SS.All }, { binding: 1, descriptorType: DT.StorageTexelBuf, descriptorCount: 1, stageFlags: SS.All },
{ binding: 2, descriptorType: DT.StorageImage, descriptorCount: 1, stageFlags: SS.All }, { binding: 2, descriptorType: DT.StorageImage, descriptorCount: 1, stageFlags: SS.All },
@ -124,4 +140,24 @@ Init(RenderState* rds, PlatformWindow* window)
bool result = CreateGraphicsPipeline(&rds.rd, &rds.pipeline_pbr, &pbr_info); bool result = CreateGraphicsPipeline(&rds.rd, &rds.pipeline_pbr, &pbr_info);
assert(result); assert(result);
const u64 tex_size = 32*32*4;
u8[tex_size] placeholder_tex;
u8[4] magenta = [255, 0, 255, 255];
u8[4] black = [0, 0, 0, 255];
u64 half = tex_size/2;
for(u64 i = 0; i < tex_size; i += 32)
{
bool swap = i <= half;
for(u64 j = 0; j < 16; j += 4)
{
placeholder_tex[i+j .. i+j+4] = !swap ? magenta[0 .. $] : black[0 .. $];
placeholder_tex[i+j+16 .. i+j+16+4] = !swap ? black[0 .. $] : magenta[0 .. $];
}
}
CreateImageView(&rds.rd, &rds.placeholder_tex, 32, 32, 4, placeholder_tex);
CreateBuffer(&rds.rd, &rds.globals_buffer, BT.Uniform, ShaderGlobals.sizeof, false);
} }

View File

@ -32,25 +32,21 @@ layout (set = 1, binding = 0) uniform Globals {
layout (set = 1, binding = 1, rg32ui) uniform coherent uimageBuffer ImageABuffer; layout (set = 1, binding = 1, rg32ui) uniform coherent uimageBuffer ImageABuffer;
layout (set = 2, binding = 2, r32ui) uniform coherent uimage2D ImageAux; layout (set = 1, binding = 2, r32ui) uniform coherent uimage2D ImageAux;
// SET 2 // SET 2
layout (set = 1, binding = 0) uniform texture2D Textures[IMG_MAX]; layout (set = 2, binding = 0) uniform texture2D Textures[IMG_MAX];
layout (set = 1, binding = 1) uniform Material { layout (set = 2, binding = 1) uniform Material {
vec4 ambient; vec4 ambient;
vec4 diffuse; vec4 diffuse;
vec4 specular; vec4 specular;
bool albedo_has_texture;
bool ambient_has_texture;
bool specular_has_texture;
bool alpha_has_texture;
float shininess; float shininess;
float alpha; float alpha;
} Materials[BUF_MAX]; } Materials[BUF_MAX];
layout (set = 1, binding = 2) uniform ModelState { layout (set = 2, binding = 2) uniform ModelState {
mat4 model_matrix; mat4 model_matrix;
} State[UNI_MAX]; } State[UNI_MAX];