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",
|
||||
"targetName": "Gears",
|
||||
"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": [],
|
||||
"importPaths": ["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-windows": [],
|
||||
"dflags": ["-Xcc=-mno-sse", "-P-I/usr/include/freetype2", "-Jbuild", "-Jassets/fonts"],
|
||||
"dflags-dmd": ["-P=-DSTBI_NO_SIMD"]
|
||||
"dflags-dmd": []
|
||||
},
|
||||
{
|
||||
"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;
|
||||
/*
|
||||
public import vulkan : PlatformHandles;
|
||||
import vulkan : Destroy;
|
||||
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);
|
||||
}
|
||||
|
||||
/*
|
||||
// TODO: integrate this with vulkan again
|
||||
Model
|
||||
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)];
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@ -10,8 +10,6 @@ ImageView[256] TEXTURES;
|
||||
Buffer[256] MATERIALS;
|
||||
Buffer[256] MODEL_STATES;
|
||||
|
||||
DescIndices[DESC_SET_MAX] DESC_INDICES];
|
||||
|
||||
struct GameState
|
||||
{
|
||||
RenderState rds;
|
||||
@ -29,6 +27,7 @@ struct RenderState
|
||||
Pipeline[PID.Max] pipelines;
|
||||
DescSetLayout desc_layout_globals;
|
||||
DescSetLayout desc_layout_resources;
|
||||
DescSetLayout desc_layout_state;
|
||||
DescSet[2] desc_set_globals;
|
||||
PipelineLayout pipeline_layout_pbr;
|
||||
|
||||
@ -41,13 +40,6 @@ struct RenderState
|
||||
Buffer globals_buffer;
|
||||
}
|
||||
|
||||
struct DescIndices
|
||||
{
|
||||
u32 tex;
|
||||
u32 mat;
|
||||
u32 state;
|
||||
}
|
||||
|
||||
struct ShaderGlobals
|
||||
{
|
||||
Vec4 ambient;
|
||||
@ -57,41 +49,6 @@ struct ShaderGlobals
|
||||
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
|
||||
{
|
||||
PushConst pc;
|
||||
@ -105,15 +62,6 @@ struct ModelState
|
||||
Mat4 matrix;
|
||||
}
|
||||
|
||||
struct Material
|
||||
{
|
||||
Vec4 ambient;
|
||||
Vec4 diffuse;
|
||||
Vec4 specular;
|
||||
float shininess;
|
||||
float alpha;
|
||||
}
|
||||
|
||||
enum PBRMod : u32
|
||||
{
|
||||
AlbedoValue = 0x0001,
|
||||
@ -182,17 +130,14 @@ struct PushConst
|
||||
}
|
||||
}
|
||||
|
||||
struct Vertex
|
||||
{
|
||||
Vec4 col;
|
||||
Vec4 tangent;
|
||||
Vec3 pos;
|
||||
Vec3 normal;
|
||||
Vec2 uv;
|
||||
}
|
||||
|
||||
ModelData g_box;
|
||||
|
||||
void
|
||||
RunCycle(GameState* g)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GameState
|
||||
InitGame(PlatformWindow* window)
|
||||
{
|
||||
@ -225,7 +170,7 @@ Init(RenderState* rds, PlatformWindow* window)
|
||||
{ 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: 1, 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 },
|
||||
];
|
||||
|
||||
DescLayoutBinding[1] state_bindings = [
|
||||
{ binding: 0, descriptorType: DT.Uniform, descriptorCount: 1, stageFlags: SS.All },
|
||||
];
|
||||
|
||||
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: 2, format: FMT.RGB_F32, offset: Vertex.pos.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_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)
|
||||
{
|
||||
@ -273,8 +223,8 @@ Init(RenderState* rds, PlatformWindow* window)
|
||||
};
|
||||
|
||||
GfxPipelineInfo pbr_info = {
|
||||
vertex_shader: LoadAssetData(&rds.frame_arenas[0], "shaders/pbr.vert.spv"),
|
||||
frag_shader: LoadAssetData(&rds.frame_arenas[0], "shaders/pbr.frag.spv"),
|
||||
vertex_shader: LoadFile(&rds.frame_arenas[0], "assets/shaders/pbr.vert.spv"),
|
||||
frag_shader: LoadFile(&rds.frame_arenas[0], "assets/shaders/pbr.frag.spv"),
|
||||
input_rate: IR.Vertex,
|
||||
input_rate_stride: Vertex.sizeof,
|
||||
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);
|
||||
|
||||
g_box = MakeBox
|
||||
ModelData md = LoadGLTF(&rds.frame_arenas[0], "assets/models/DamagedHelmet.glb");
|
||||
}
|
||||
|
||||
PipelineID
|
||||
@ -381,6 +331,7 @@ GetPBRMod(bool albedo = false, bool ambient = false, bool specular = false, bool
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
ModelData
|
||||
MakeBox(RenderState* rds, f32 width, f32 height, Vec4 col)
|
||||
{
|
||||
@ -428,9 +379,9 @@ Model
|
||||
Upload(RenderState* rds, ModelData* data)
|
||||
{
|
||||
Model model;
|
||||
u32[] tex_idx = Alloc!(&rds.frame_arenas[0], data.text.length);
|
||||
u32[] mat_idx = Alloc!(&rds.frame_arenas[0], data.materials.length);
|
||||
u32[] state_idx = Alloc!(&rds.frame_arenas[0], data.model_states.length);
|
||||
u32[] tex_idx = Alloc!(u32)(&rds.frame_arenas[0], data.text.length);
|
||||
u32[] mat_idx = Alloc!(u32)(&rds.frame_arenas[0], data.materials.length);
|
||||
u32[] state_idx = Alloc!(u32)(&rds.frame_arenas[0], data.model_states.length);
|
||||
|
||||
bool result = true;
|
||||
|
||||
@ -450,20 +401,18 @@ Upload(RenderState* rds, ModelData* data)
|
||||
{
|
||||
Buffer* buf = &rds.materials[rds.imat++];
|
||||
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)
|
||||
{
|
||||
Buffer* buf = &rds.model_states[rds.istate++];
|
||||
CreateBuffer(&rds)
|
||||
//CreateBuffer(&rds)
|
||||
}
|
||||
|
||||
model.parts = data.parts;
|
||||
}
|
||||
|
||||
DescIndices*
|
||||
GetDescIndices()
|
||||
*/
|
||||
|
||||
unittest
|
||||
{
|
||||
|
||||
@ -44,7 +44,8 @@ layout (set = 2, binding = 4) uniform MaterialData {
|
||||
float shininess;
|
||||
float alpha;
|
||||
} Material;
|
||||
layout (set = 2, binding = 5) uniform ModelState {
|
||||
|
||||
layout (set = 3, binding = 0) uniform ModelState {
|
||||
mat4 model_matrix;
|
||||
} State;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user