diff --git a/assets/shaders/gradient.comp.spv b/assets/shaders/gradient.comp.spv index d29c57b..093c46c 100644 Binary files a/assets/shaders/gradient.comp.spv and b/assets/shaders/gradient.comp.spv differ diff --git a/assets/shaders/gui.frag.spv b/assets/shaders/gui.frag.spv index 8a577ba..01ddf0d 100644 Binary files a/assets/shaders/gui.frag.spv and b/assets/shaders/gui.frag.spv differ diff --git a/assets/shaders/gui.vert.spv b/assets/shaders/gui.vert.spv index 7eb8f37..bd0b856 100644 Binary files a/assets/shaders/gui.vert.spv and b/assets/shaders/gui.vert.spv differ diff --git a/assets/shaders/pbr.frag.spv b/assets/shaders/pbr.frag.spv index 3b228d4..24f0715 100644 Binary files a/assets/shaders/pbr.frag.spv and b/assets/shaders/pbr.frag.spv differ diff --git a/assets/shaders/pbr.vert.spv b/assets/shaders/pbr.vert.spv index 8177cce..fdc993d 100644 Binary files a/assets/shaders/pbr.vert.spv and b/assets/shaders/pbr.vert.spv differ diff --git a/assets/shaders/triangle.frag.spv b/assets/shaders/triangle.frag.spv index c4a1dcf..8d87e42 100644 Binary files a/assets/shaders/triangle.frag.spv and b/assets/shaders/triangle.frag.spv differ diff --git a/assets/shaders/triangle.vert.spv b/assets/shaders/triangle.vert.spv index dff15cf..5aea80f 100644 Binary files a/assets/shaders/triangle.vert.spv and b/assets/shaders/triangle.vert.spv differ diff --git a/src/gears/main.d b/src/gears/main.d index 0c59ddd..359e581 100644 --- a/src/gears/main.d +++ b/src/gears/main.d @@ -12,7 +12,7 @@ void main() p.Window window = p.CreateWindow("Video Game", 1920, 1080); r.Renderer rd = r.Init(&window); - scope(exit) r.Destroy(&rd); + //scope(exit) r.Destroy(&rd); while (true) { @@ -21,5 +21,7 @@ void main() r.Cycle(&rd); } + + writefln("exiting"); } diff --git a/src/gears/renderer.d b/src/gears/renderer.d index 667738c..7229672 100644 --- a/src/gears/renderer.d +++ b/src/gears/renderer.d @@ -115,6 +115,7 @@ struct Camera struct GlobalUniforms { + Mat4 world_matrix; Vec2 res; } @@ -236,13 +237,21 @@ Cycle(Renderer* rd) { rd.ui_count = 0; + f32 radius = 10.0; + f32 cam_x = sin(RDTSC()) * radius * 0.000000000001; + f32 cam_z = cos(RDTSC()) * radius * 0.000000000001; + + Logf("cam_x %s cam_z %s", cam_x, cam_z); + + rd.globals.world_matrix = Mat4.lookAt(Vec3(cam_x, 0.0, cam_z), Vec3(0.0, 0.0, 0.0), Vec3(0.0, 1.0, 0.0)); + BeginFrame(rd); Bind(rd, &rd.compute_pipeline); SetUniform(rd, &rd.globals); - DrawRect(rd, 150.0, 300.0, 500.0, 700.0, Vec4(0.0, 0.0, 1.0, 1.0)); + //DrawRect(rd, 150.0, 300.0, 500.0, 700.0, Vec4(0.0, 0.0, 1.0, 1.0)); PrepComputeDrawImage(rd); @@ -258,7 +267,7 @@ Cycle(Renderer* rd) Bind(rd, &rd.triangle_pipeline); - Draw(rd, 3, 1); + //Draw(rd, 3, 1); Bind(rd, &rd.pbr_pipeline); diff --git a/src/gears/vulkan.d b/src/gears/vulkan.d index 8b97560..80d6777 100644 --- a/src/gears/vulkan.d +++ b/src/gears/vulkan.d @@ -492,7 +492,7 @@ BeginFrame(Vulkan* vk) { RecreateSwapchain(vk); } - else + else if (result != VK_SUBOPTIMAL_KHR) { VkCheckA("BeginFrame failure: vkAcquireNextImageKHR error", result); } diff --git a/src/shaders/pbr.vert.glsl b/src/shaders/pbr.vert.glsl index 3d3da30..8082239 100644 --- a/src/shaders/pbr.vert.glsl +++ b/src/shaders/pbr.vert.glsl @@ -22,7 +22,7 @@ mat4 y_matrix = mat4( void main() { - gl_Position = in_pos * y_matrix; + gl_Position = in_pos * y_matrix * G.world_matrix; if (Materials[nonuniformEXT(PC.mat_id)].albedo_has_texture) { diff --git a/src/shaders/structures.layout b/src/shaders/structures.layout index 53f68cb..1a7d626 100644 --- a/src/shaders/structures.layout +++ b/src/shaders/structures.layout @@ -3,6 +3,7 @@ // **************************************************************************** layout (set = 0, binding = 0) uniform GlobalUniforms { + mat4 world_matrix; vec2 res; } G; diff --git a/src/shared/aliases.d b/src/shared/aliases.d index 1e89946..9edb8db 100644 --- a/src/shared/aliases.d +++ b/src/shared/aliases.d @@ -1,6 +1,7 @@ import core.memory; import std.stdint; import dplug.math; +import std.math.trigonometry; debug { diff --git a/src/shared/util.d b/src/shared/util.d index 95ee887..30903bc 100644 --- a/src/shared/util.d +++ b/src/shared/util.d @@ -359,3 +359,30 @@ Hash(string str) return xxh3_64bits_withSeed(str.ptr, str.length, HASH_SEED); } +u64 +RDTSC() +{ + union u64_split + { + u64 full; + struct + { + u32 upper; + u32 lower; + }; + }; + + u64_split val; + u64_split* valp = &val; + asm + { + cpuid; + rdtsc; + mov R8, valp; + mov valp.upper.offsetof[R8], EDX; + mov valp.lower.offsetof[R8], EAX; + } + + return val.full; +} +