update dependencies, fix up vulkan initialization, start model loading to gpu
This commit is contained in:
parent
25899ff448
commit
bd4e1cc07e
BIN
assets/models/DamagedHelmet.glb
Normal file
BIN
assets/models/DamagedHelmet.glb
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
dub.json
4
dub.json
@ -7,7 +7,7 @@
|
|||||||
"targetType": "executable",
|
"targetType": "executable",
|
||||||
"targetName": "Gears",
|
"targetName": "Gears",
|
||||||
"targetPath": "build",
|
"targetPath": "build",
|
||||||
"sourceFiles-linux": ["build/libvma.a", "build/libstb.a", "build/libm3d.a", "build/libcglm.a"],
|
"sourceFiles-linux": ["build/libvma.a", "build/libstb.a", "build/libm3d.a", "build/libcglm.a", "build/libcgltf.a"],
|
||||||
"sourceFiles-windows": [],
|
"sourceFiles-windows": [],
|
||||||
"importPaths": ["src/gears", "src/dlib", "src/dlib/external/xxhash", "src/VulkanRenderer"],
|
"importPaths": ["src/gears", "src/dlib", "src/dlib/external/xxhash", "src/VulkanRenderer"],
|
||||||
"sourcePaths": ["src/gears", "src/dlib", "src/dlib/external/xxhash", "src/VulkanRenderer"],
|
"sourcePaths": ["src/gears", "src/dlib", "src/dlib/external/xxhash", "src/VulkanRenderer"],
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"preGenerateCommands-linux": ["./build.sh"],
|
"preGenerateCommands-linux": ["./build.sh"],
|
||||||
"preGenerateCommands-windows": [],
|
"preGenerateCommands-windows": [],
|
||||||
"dflags": ["-Xcc=-mno-sse", "-P-I/usr/include/freetype2", "-Jbuild", "-Jassets/fonts"],
|
"dflags": ["-Xcc=-mno-sse", "-P-I/usr/include/freetype2", "-Jbuild", "-Jassets/fonts"],
|
||||||
"dflags-dmd": ["-P=-DSTBI_NO_SIMD"]
|
"dflags-dmd": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "packer",
|
"name": "packer",
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit d46741a48033b5136fa189c1b80a574986e68f64
|
Subproject commit c42238a456f5048c7d1b2d5ebd71ecf13bb10ece
|
||||||
2
src/dlib
2
src/dlib
@ -1 +1 @@
|
|||||||
Subproject commit c83ffabce69071a3e7a0af3f26aa420082eeda1f
|
Subproject commit 493c17cba26952861ae4c5402f1676013b8317c6
|
||||||
@ -1,4 +1,5 @@
|
|||||||
import dlib;
|
import dlib;
|
||||||
|
/*
|
||||||
public import vulkan : PlatformHandles;
|
public import vulkan : PlatformHandles;
|
||||||
import vulkan : Destroy;
|
import vulkan : Destroy;
|
||||||
import vulkan;
|
import vulkan;
|
||||||
@ -414,6 +415,7 @@ DrawRect(Game* g, f32 p0_x, f32 p0_y, f32 p1_x, f32 p1_y, Vec4 col)
|
|||||||
AddUIIndices(g);
|
AddUIIndices(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// TODO: integrate this with vulkan again
|
// TODO: integrate this with vulkan again
|
||||||
Model
|
Model
|
||||||
LoadModel(Game* g, string name)
|
LoadModel(Game* g, string name)
|
||||||
@ -697,3 +699,4 @@ ReadModel(Game* g, string name)
|
|||||||
const(char)[] mat_name = m3d.material[i].name[0 .. strlen(m3d.material[i].name)];
|
const(char)[] mat_name = m3d.material[i].name[0 .. strlen(m3d.material[i].name)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|||||||
@ -10,8 +10,6 @@ ImageView[256] TEXTURES;
|
|||||||
Buffer[256] MATERIALS;
|
Buffer[256] MATERIALS;
|
||||||
Buffer[256] MODEL_STATES;
|
Buffer[256] MODEL_STATES;
|
||||||
|
|
||||||
DescIndices[DESC_SET_MAX] DESC_INDICES];
|
|
||||||
|
|
||||||
struct GameState
|
struct GameState
|
||||||
{
|
{
|
||||||
RenderState rds;
|
RenderState rds;
|
||||||
@ -29,6 +27,7 @@ struct RenderState
|
|||||||
Pipeline[PID.Max] pipelines;
|
Pipeline[PID.Max] pipelines;
|
||||||
DescSetLayout desc_layout_globals;
|
DescSetLayout desc_layout_globals;
|
||||||
DescSetLayout desc_layout_resources;
|
DescSetLayout desc_layout_resources;
|
||||||
|
DescSetLayout desc_layout_state;
|
||||||
DescSet[2] desc_set_globals;
|
DescSet[2] desc_set_globals;
|
||||||
PipelineLayout pipeline_layout_pbr;
|
PipelineLayout pipeline_layout_pbr;
|
||||||
|
|
||||||
@ -41,13 +40,6 @@ struct RenderState
|
|||||||
Buffer globals_buffer;
|
Buffer globals_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct DescIndices
|
|
||||||
{
|
|
||||||
u32 tex;
|
|
||||||
u32 mat;
|
|
||||||
u32 state;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ShaderGlobals
|
struct ShaderGlobals
|
||||||
{
|
{
|
||||||
Vec4 ambient;
|
Vec4 ambient;
|
||||||
@ -57,41 +49,6 @@ struct ShaderGlobals
|
|||||||
f32 alpha = 0.0;
|
f32 alpha = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MeshPart
|
|
||||||
{
|
|
||||||
u32 mat;
|
|
||||||
u32 offset;
|
|
||||||
u32 length;
|
|
||||||
PushConst pc;
|
|
||||||
|
|
||||||
alias pc this;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ModelData
|
|
||||||
{
|
|
||||||
MeshPart[] parts;
|
|
||||||
ModelState state;
|
|
||||||
Vertex[] v;
|
|
||||||
u32[] idx;
|
|
||||||
TextureData[] tex;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct TextureData
|
|
||||||
{
|
|
||||||
u8[] name;
|
|
||||||
u8[] data;
|
|
||||||
u32 width;
|
|
||||||
u32 height;
|
|
||||||
u32 ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Model
|
|
||||||
{
|
|
||||||
Buffer v_buf;
|
|
||||||
Buffer i_buf;
|
|
||||||
MeshPart[] parts;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ModelRenderInfo
|
struct ModelRenderInfo
|
||||||
{
|
{
|
||||||
PushConst pc;
|
PushConst pc;
|
||||||
@ -105,15 +62,6 @@ struct ModelState
|
|||||||
Mat4 matrix;
|
Mat4 matrix;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Material
|
|
||||||
{
|
|
||||||
Vec4 ambient;
|
|
||||||
Vec4 diffuse;
|
|
||||||
Vec4 specular;
|
|
||||||
float shininess;
|
|
||||||
float alpha;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum PBRMod : u32
|
enum PBRMod : u32
|
||||||
{
|
{
|
||||||
AlbedoValue = 0x0001,
|
AlbedoValue = 0x0001,
|
||||||
@ -182,17 +130,14 @@ struct PushConst
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Vertex
|
|
||||||
{
|
|
||||||
Vec4 col;
|
|
||||||
Vec4 tangent;
|
|
||||||
Vec3 pos;
|
|
||||||
Vec3 normal;
|
|
||||||
Vec2 uv;
|
|
||||||
}
|
|
||||||
|
|
||||||
ModelData g_box;
|
ModelData g_box;
|
||||||
|
|
||||||
|
void
|
||||||
|
RunCycle(GameState* g)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
GameState
|
GameState
|
||||||
InitGame(PlatformWindow* window)
|
InitGame(PlatformWindow* window)
|
||||||
{
|
{
|
||||||
@ -225,7 +170,7 @@ Init(RenderState* rds, PlatformWindow* window)
|
|||||||
{ binding: 2, descriptorType: DT.StorageImage, descriptorCount: 1, stageFlags: SS.All },
|
{ binding: 2, descriptorType: DT.StorageImage, descriptorCount: 1, stageFlags: SS.All },
|
||||||
];
|
];
|
||||||
|
|
||||||
DescLayoutBinding[3] resource_bindings = [
|
DescLayoutBinding[6] resource_bindings = [
|
||||||
{ binding: 0, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
{ binding: 0, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
||||||
{ binding: 1, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
{ binding: 1, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
||||||
{ binding: 2, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
{ binding: 2, descriptorType: DT.Image, descriptorCount: 1, stageFlags: SS.All },
|
||||||
@ -234,8 +179,12 @@ Init(RenderState* rds, PlatformWindow* window)
|
|||||||
{ binding: 5, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All },
|
{ binding: 5, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
DescLayoutBinding[1] state_bindings = [
|
||||||
|
{ binding: 0, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All },
|
||||||
|
];
|
||||||
|
|
||||||
Attribute[5] attributes = [
|
Attribute[5] attributes = [
|
||||||
{ binding: 0, location: 0, format: FMT.RGBA_F32, offset: Vertex.col.offsetof },
|
{ binding: 0, location: 0, format: FMT.RGBA_F32, offset: Vertex.color.offsetof },
|
||||||
{ binding: 0, location: 1, format: FMT.RGBA_F32, offset: Vertex.tangent.offsetof },
|
{ binding: 0, location: 1, format: FMT.RGBA_F32, offset: Vertex.tangent.offsetof },
|
||||||
{ binding: 0, location: 2, format: FMT.RGB_F32, offset: Vertex.pos.offsetof },
|
{ binding: 0, location: 2, format: FMT.RGB_F32, offset: Vertex.pos.offsetof },
|
||||||
{ binding: 0, location: 3, format: FMT.RGB_F32, offset: Vertex.normal.offsetof },
|
{ binding: 0, location: 3, format: FMT.RGB_F32, offset: Vertex.normal.offsetof },
|
||||||
@ -251,8 +200,9 @@ Init(RenderState* rds, PlatformWindow* window)
|
|||||||
|
|
||||||
rds.desc_layout_globals = CreateDescSetLayout(&rds.rd, global_bindings);
|
rds.desc_layout_globals = CreateDescSetLayout(&rds.rd, global_bindings);
|
||||||
rds.desc_layout_resources = CreateDescSetLayout(&rds.rd, resource_bindings);
|
rds.desc_layout_resources = CreateDescSetLayout(&rds.rd, resource_bindings);
|
||||||
|
rds.desc_layout_state = CreateDescSetLayout(&rds.rd, state_bindings);
|
||||||
|
|
||||||
rds.pipeline_layout_pbr = CreatePipelineLayout(&rds.rd, [rds.desc_layout_globals, rds.desc_layout_resources], PushConst.sizeof);
|
rds.pipeline_layout_pbr = CreatePipelineLayout(&rds.rd, [rds.desc_layout_globals, rds.desc_layout_resources, rds.desc_layout_state], PushConst.sizeof);
|
||||||
|
|
||||||
foreach(i; 0 .. 2)
|
foreach(i; 0 .. 2)
|
||||||
{
|
{
|
||||||
@ -273,8 +223,8 @@ Init(RenderState* rds, PlatformWindow* window)
|
|||||||
};
|
};
|
||||||
|
|
||||||
GfxPipelineInfo pbr_info = {
|
GfxPipelineInfo pbr_info = {
|
||||||
vertex_shader: LoadAssetData(&rds.frame_arenas[0], "shaders/pbr.vert.spv"),
|
vertex_shader: LoadFile(&rds.frame_arenas[0], "assets/shaders/pbr.vert.spv"),
|
||||||
frag_shader: LoadAssetData(&rds.frame_arenas[0], "shaders/pbr.frag.spv"),
|
frag_shader: LoadFile(&rds.frame_arenas[0], "assets/shaders/pbr.frag.spv"),
|
||||||
input_rate: IR.Vertex,
|
input_rate: IR.Vertex,
|
||||||
input_rate_stride: Vertex.sizeof,
|
input_rate_stride: Vertex.sizeof,
|
||||||
layout: rds.pipeline_layout_pbr,
|
layout: rds.pipeline_layout_pbr,
|
||||||
@ -315,7 +265,7 @@ Init(RenderState* rds, PlatformWindow* window)
|
|||||||
|
|
||||||
CreateBuffer(&rds.rd, &rds.globals_buffer, BT.Uniform, ShaderGlobals.sizeof, false);
|
CreateBuffer(&rds.rd, &rds.globals_buffer, BT.Uniform, ShaderGlobals.sizeof, false);
|
||||||
|
|
||||||
g_box = MakeBox
|
ModelData md = LoadGLTF(&rds.frame_arenas[0], "assets/models/DamagedHelmet.glb");
|
||||||
}
|
}
|
||||||
|
|
||||||
PipelineID
|
PipelineID
|
||||||
@ -381,6 +331,7 @@ GetPBRMod(bool albedo = false, bool ambient = false, bool specular = false, bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
ModelData
|
ModelData
|
||||||
MakeBox(RenderState* rds, f32 width, f32 height, Vec4 col)
|
MakeBox(RenderState* rds, f32 width, f32 height, Vec4 col)
|
||||||
{
|
{
|
||||||
@ -428,9 +379,9 @@ Model
|
|||||||
Upload(RenderState* rds, ModelData* data)
|
Upload(RenderState* rds, ModelData* data)
|
||||||
{
|
{
|
||||||
Model model;
|
Model model;
|
||||||
u32[] tex_idx = Alloc!(&rds.frame_arenas[0], data.text.length);
|
u32[] tex_idx = Alloc!(u32)(&rds.frame_arenas[0], data.text.length);
|
||||||
u32[] mat_idx = Alloc!(&rds.frame_arenas[0], data.materials.length);
|
u32[] mat_idx = Alloc!(u32)(&rds.frame_arenas[0], data.materials.length);
|
||||||
u32[] state_idx = Alloc!(&rds.frame_arenas[0], data.model_states.length);
|
u32[] state_idx = Alloc!(u32)(&rds.frame_arenas[0], data.model_states.length);
|
||||||
|
|
||||||
bool result = true;
|
bool result = true;
|
||||||
|
|
||||||
@ -450,20 +401,18 @@ Upload(RenderState* rds, ModelData* data)
|
|||||||
{
|
{
|
||||||
Buffer* buf = &rds.materials[rds.imat++];
|
Buffer* buf = &rds.materials[rds.imat++];
|
||||||
CreateBuffer(&rds.rd, buf, BT.Uniform, Material.sizeof);
|
CreateBuffer(&rds.rd, buf, BT.Uniform, Material.sizeof);
|
||||||
result = Transfer(&rds.rd, buf, )
|
//result = Transfer(&rds.rd, buf, )
|
||||||
}
|
}
|
||||||
|
|
||||||
for(u64 i = 0; i < data.model_states.length; i += 1)
|
for(u64 i = 0; i < data.model_states.length; i += 1)
|
||||||
{
|
{
|
||||||
Buffer* buf = &rds.model_states[rds.istate++];
|
Buffer* buf = &rds.model_states[rds.istate++];
|
||||||
CreateBuffer(&rds)
|
//CreateBuffer(&rds)
|
||||||
}
|
}
|
||||||
|
|
||||||
model.parts = data.parts;
|
model.parts = data.parts;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
DescIndices*
|
|
||||||
GetDescIndices()
|
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
|||||||
@ -44,7 +44,8 @@ layout (set = 2, binding = 4) uniform MaterialData {
|
|||||||
float shininess;
|
float shininess;
|
||||||
float alpha;
|
float alpha;
|
||||||
} Material;
|
} Material;
|
||||||
layout (set = 2, binding = 5) uniform ModelState {
|
|
||||||
|
layout (set = 3, binding = 0) uniform ModelState {
|
||||||
mat4 model_matrix;
|
mat4 model_matrix;
|
||||||
} State;
|
} State;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user