From 4a8333311687230a467aeab32bbfef119d3c94ef Mon Sep 17 00:00:00 2001 From: Szymon Nowakowski Date: Tue, 6 Jan 2026 21:10:07 +0100 Subject: [PATCH] Nothing --- src/Chunks.zig | 61 +++++++++++++++++++----------------- src/Game.zig | 7 ++--- src/assets/Blocks.zig | 2 +- src/assets/Materials.zig | 2 +- src/engine/CommandBuffer.zig | 6 ++-- src/engine/Engine.zig | 26 ++++++++------- src/engine/VkAllocator.zig | 4 +-- 7 files changed, 56 insertions(+), 52 deletions(-) diff --git a/src/Chunks.zig b/src/Chunks.zig index 339fd7a..d6b62d0 100644 --- a/src/Chunks.zig +++ b/src/Chunks.zig @@ -303,12 +303,17 @@ pub fn raycast(self: *const Chunks, origin_sv: vm.Vector3Int, ray_sv: vm.Vector3 c.subvoxelsToVoxelSubvoxels(end_sv.z), }); - const zero = vm.epi32(0); - const one = vm.epi32(1); - - const ray_positive: vm.Vector3Int = .{ .vector = @select(i32, ray_sv.vector > zero, one, zero) }; - const ray_negative: vm.Vector3Int = .{ .vector = @select(i32, ray_sv.vector < zero, one, zero) }; - const ray_sign: vm.Vector3Int = .sub(ray_positive, ray_negative); + const ray_positive = vm.Vector3Int.init( + @intFromBool(ray_sv.x > 0), + @intFromBool(ray_sv.y > 0), + @intFromBool(ray_sv.z > 0), + ); + const ray_negative = vm.Vector3Int.init( + @intFromBool(ray_sv.x < 0), + @intFromBool(ray_sv.y < 0), + @intFromBool(ray_sv.z < 0), + ); + const ray_sign = ray_positive.sub(ray_negative); const start_vx = origin_sv.sub(ray_positive).divScalar(c.sv_per_vx).add(ray_sign); const end_vx = end_sv.sub(ray_positive).divScalar(c.sv_per_vx); @@ -346,33 +351,33 @@ pub fn raycast(self: *const Chunks, origin_sv: vm.Vector3Int, ray_sv: vm.Vector3 return null; } - const oi = origin_sv.vector[i_index]; - const oj = origin_sv.vector[j_index]; - const ok = origin_sv.vector[k_index]; + const oi = origin_sv.asArray()[i_index]; + const oj = origin_sv.asArray()[j_index]; + const ok = origin_sv.asArray()[k_index]; - const di = ray_sv.vector[i_index]; - const dj = ray_sv.vector[j_index]; - const dk = ray_sv.vector[k_index]; + const di = ray_sv.asArray()[i_index]; + const dj = ray_sv.asArray()[j_index]; + const dk = ray_sv.asArray()[k_index]; - var i_vx = start_vx.vector[i_index]; + var i_vx = start_vx.asArray()[i_index]; var enter_i_sv = oi; var enter_di_sv = enter_i_sv - oi; var enter_jdi_sv = oj * di + enter_di_sv * dj; var enter_kdi_sv = ok * di + enter_di_sv * dk; - var enter_i_vx = @divFloor(enter_i_sv - ray_positive.vector[i_index], c.sv_per_vx); - var enter_j_vx = @divFloor(enter_jdi_sv - ray_positive.vector[j_index], c.sv_per_vx * di); - var enter_k_vx = @divFloor(enter_kdi_sv - ray_positive.vector[k_index], c.sv_per_vx * di); + var enter_i_vx = @divFloor(enter_i_sv - ray_positive.asArray()[i_index], c.sv_per_vx); + var enter_j_vx = @divFloor(enter_jdi_sv - ray_positive.asArray()[j_index], c.sv_per_vx * di); + var enter_k_vx = @divFloor(enter_kdi_sv - ray_positive.asArray()[k_index], c.sv_per_vx * di); - var exit_i_sv = c.voxelsToSubvoxels(i_vx + ray_negative.vector[i_index]); + var exit_i_sv = c.voxelsToSubvoxels(i_vx + ray_negative.asArray()[i_index]); var exit_di_sv = exit_i_sv - oi; var exit_jdi_sv = oj * di + exit_di_sv * dj; var exit_kdi_sv = ok * di + exit_di_sv * dk; - var exit_i_vx = @divFloor(exit_i_sv - ray_positive.vector[i_index], c.sv_per_vx); - var exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.vector[j_index], c.sv_per_vx * di); - var exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.vector[k_index], c.sv_per_vx * di); + var exit_i_vx = @divFloor(exit_i_sv - ray_positive.asArray()[i_index], c.sv_per_vx); + var exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.asArray()[j_index], c.sv_per_vx * di); + var exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.asArray()[k_index], c.sv_per_vx * di); std.debug.print("({d}:{X}, {d:.3}, {d:.3}) → ({d}:{X}, {d:.3}, {d:.3}) | ({d}, {d}, {d}) → ({d}, {d}, {d})\n", .{ c.subvoxelsToVoxels(.border_up, enter_i_sv), @@ -391,7 +396,7 @@ pub fn raycast(self: *const Chunks, origin_sv: vm.Vector3Int, ray_sv: vm.Vector3 exit_k_vx, }); - while (i_vx != end_vx.vector[i_index]) : (i_vx += ray_sign.vector[i_index]) { + while (i_vx != end_vx.asArray()[i_index]) : (i_vx += ray_sign.asArray()[i_index]) { enter_i_sv = exit_i_sv; enter_di_sv = exit_di_sv; enter_jdi_sv = exit_jdi_sv; @@ -401,14 +406,14 @@ pub fn raycast(self: *const Chunks, origin_sv: vm.Vector3Int, ray_sv: vm.Vector3 enter_j_vx = exit_j_vx; enter_k_vx = exit_k_vx; - exit_i_sv = c.voxelsToSubvoxels(i_vx + ray_positive.vector[i_index]); + exit_i_sv = c.voxelsToSubvoxels(i_vx + ray_positive.asArray()[i_index]); exit_di_sv = exit_i_sv - oi; exit_jdi_sv = oj * di + exit_di_sv * dj; exit_kdi_sv = ok * di + exit_di_sv * dk; - exit_i_vx = @divFloor(exit_i_sv - ray_positive.vector[i_index], c.sv_per_vx); - exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.vector[j_index], c.sv_per_vx * di); - exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.vector[k_index], c.sv_per_vx * di); + exit_i_vx = @divFloor(exit_i_sv - ray_positive.asArray()[i_index], c.sv_per_vx); + exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.asArray()[j_index], c.sv_per_vx * di); + exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.asArray()[k_index], c.sv_per_vx * di); std.debug.print("({d}:{X}, {d:.3}, {d:.3}) → ({d}:{X}, {d:.3}, {d:.3}) | ({d}, {d}, {d}) → ({d}, {d}, {d})\n", .{ c.subvoxelsToVoxels(.border_up, enter_i_sv), @@ -442,9 +447,9 @@ pub fn raycast(self: *const Chunks, origin_sv: vm.Vector3Int, ray_sv: vm.Vector3 exit_jdi_sv = oj * di + exit_di_sv * dj; exit_kdi_sv = ok * di + exit_di_sv * dk; - exit_i_vx = @divFloor(exit_i_sv - ray_positive.vector[i_index], c.sv_per_vx); - exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.vector[j_index], c.sv_per_vx * di); - exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.vector[k_index], c.sv_per_vx * di); + exit_i_vx = @divFloor(exit_i_sv - ray_positive.asArray()[i_index], c.sv_per_vx); + exit_j_vx = @divFloor(exit_jdi_sv - ray_positive.asArray()[j_index], c.sv_per_vx * di); + exit_k_vx = @divFloor(exit_kdi_sv - ray_positive.asArray()[k_index], c.sv_per_vx * di); std.debug.print("({d}:{X}, {d:.3}, {d:.3}) → ({d}:{X}, {d:.3}, {d:.3}) | ({d}, {d}, {d}) → ({d}, {d}, {d})\n", .{ c.subvoxelsToVoxels(.border_up, enter_i_sv), diff --git a/src/Game.zig b/src/Game.zig index 2f0de07..277c4cc 100644 --- a/src/Game.zig +++ b/src/Game.zig @@ -765,11 +765,8 @@ fn render(self: *Game) !void { @floatFromInt(extent.height), ); - const camera_position = vm.Vector3.init( - @floatFromInt(self.player.position_sv.x), - @floatFromInt(self.player.position_sv.y), - @floatFromInt(self.player.position_sv.z), - ) + const camera_position = self.player.position_sv + .asFloat() .divScalar(c.sv_per_vx) .add(.init(0, 0, Player.camera_height_vx)); const camera_rotation = vm.Quaternion.mulQuaternion( diff --git a/src/assets/Blocks.zig b/src/assets/Blocks.zig index 18f680e..054192a 100644 --- a/src/assets/Blocks.zig +++ b/src/assets/Blocks.zig @@ -255,7 +255,7 @@ fn loadBlock( defer file.close(); var file_reader = file.reader(&buffer); - var json_reader: std.json.Reader = .init(temp_allocator, &file_reader.interface); + var json_reader = std.json.Reader.init(temp_allocator, &file_reader.interface); defer json_reader.deinit(); const parsed: std.json.Parsed(DefinitionJson) = try std.json.parseFromTokenSource(DefinitionJson, temp_allocator, &json_reader, .{ diff --git a/src/assets/Materials.zig b/src/assets/Materials.zig index 906cdb0..6e6b875 100644 --- a/src/assets/Materials.zig +++ b/src/assets/Materials.zig @@ -279,7 +279,7 @@ fn loadMaterial(self: *Materials, engine: *Engine, textures: *Textures, filename defer file.close(); var file_reader = file.reader(&buffer); - var json_reader: std.json.Reader = .init(temp_allocator, &file_reader.interface); + var json_reader = std.json.Reader.init(temp_allocator, &file_reader.interface); defer json_reader.deinit(); const parsed: std.json.Parsed(MaterialJson) = try std.json.parseFromTokenSource(MaterialJson, temp_allocator, &json_reader, .{ diff --git a/src/engine/CommandBuffer.zig b/src/engine/CommandBuffer.zig index 7ac5322..d98fb6e 100644 --- a/src/engine/CommandBuffer.zig +++ b/src/engine/CommandBuffer.zig @@ -23,11 +23,9 @@ pub fn init(engine: *Engine, queue_type: QueueType) !CommandBuffer { .queue_type = queue_type, .level = .primary, }); - const proxy: vk.CommandBufferProxy = .init(handle, engine.device.wrapper); - const allocator = engine.vk_allocator.allocator; return .{ - .proxy = proxy, - .allocator = allocator, + .proxy = .init(handle, engine.device.wrapper), + .allocator = engine.vk_allocator.allocator, .queue_type = queue_type, }; } diff --git a/src/engine/Engine.zig b/src/engine/Engine.zig index 483425b..7281513 100644 --- a/src/engine/Engine.zig +++ b/src/engine/Engine.zig @@ -232,7 +232,7 @@ pub fn init(allocator: std.mem.Allocator, maybe_window: ?*glfw.Window) !Engine { var queue_create_info: std.ArrayList(vk.DeviceQueueCreateInfo) = .initBuffer(&queue_create_info_buffer); const queue_allocations: QueueAllocations = blk: { - var queue_allocator: QueueAllocator = .init(instance, physical_device); + var queue_allocator = QueueAllocator.init(instance, physical_device); const queue_families_properties = queue_allocator.queueFamiliesProperties(); const graphics_queue_family = findGraphicsQueueFamily(queue_families_properties) orelse return error.NoGraphicsQueue; @@ -347,21 +347,21 @@ pub fn init(allocator: std.mem.Allocator, maybe_window: ?*glfw.Window) !Engine { }, &vk_allocator.interface); errdefer device.destroyCommandPool(transfer_command_pool, &vk_allocator.interface); - const graphics_queue: Queue = .init( + const graphics_queue = Queue.init( device.getDeviceQueue( queue_allocations.graphics_queue.family, queue_allocations.graphics_queue.index, ), queue_allocations.graphics_queue, ); - const compute_queue: Queue = .init( + const compute_queue = Queue.init( device.getDeviceQueue( queue_allocations.compute_queue.family, queue_allocations.compute_queue.index, ), queue_allocations.compute_queue, ); - const transfer_queue: Queue = .init( + const transfer_queue = Queue.init( device.getDeviceQueue( queue_allocations.transfer_queue.family, queue_allocations.transfer_queue.index, @@ -692,6 +692,10 @@ fn findPresentationQueueFamily(queue_families_properties: []const vk.QueueFamily return null; } +fn makeArena(self: *const Engine) std.heap.ArenaAllocator { + return .init(self.vk_allocator.allocator); +} + fn resolveCommandPool(self: *const Engine, queue_type: QueueType) vk.CommandPool { return switch (queue_type) { .graphics => self.graphics_command_pool, @@ -975,7 +979,7 @@ pub fn bindImageMemory(self: *Engine, image: vk.Image, memory: vk.DeviceMemory, } pub fn createBuffer(self: *Engine, create_info: BufferCreateInfo) !vk.Buffer { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -998,7 +1002,7 @@ pub fn createBuffer(self: *Engine, create_info: BufferCreateInfo) !vk.Buffer { } pub fn createDescriptorSetLayout(self: *Engine, create_info: DescriptorSetLayoutCreateInfo) !vk.DescriptorSetLayout { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -1074,7 +1078,7 @@ pub fn createFramebuffer(self: *Engine, create_info: FramebufferCreateInfo) !vk. } pub fn createGraphicsPipeline(self: *Engine, create_info: GraphicsPipelineCreateInfo) !vk.Pipeline { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -1153,7 +1157,7 @@ pub fn createGraphicsPipeline(self: *Engine, create_info: GraphicsPipelineCreate } pub fn createImage(self: *Engine, create_info: ImageCreateInfo) !vk.Image { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -1206,7 +1210,7 @@ pub fn createPipelineLayout(self: *Engine, create_info: PipelineLayoutCreateInfo } pub fn createRenderPass(self: *Engine, create_info: RenderPassCreateInfo) !vk.RenderPass { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -1258,7 +1262,7 @@ pub fn createShaderModule(self: *Engine, create_info: ShaderModuleCreateInfo) !v } pub fn createSwapchain(self: *Engine, create_info: SwapchainCreateInfo) !vk.SwapchainKHR { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); @@ -1402,7 +1406,7 @@ pub fn unmapMemory(self: *Engine, memory: vk.DeviceMemory) void { } pub fn updateDescriptorSets(self: *Engine, update_info: DescriptorSetsUpdateInfo) !void { - var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator); + var arena = self.makeArena(); defer arena.deinit(); const allocator = arena.allocator(); diff --git a/src/engine/VkAllocator.zig b/src/engine/VkAllocator.zig index c480ad0..28f8e1b 100644 --- a/src/engine/VkAllocator.zig +++ b/src/engine/VkAllocator.zig @@ -66,7 +66,7 @@ fn allocationFunction( ) callconv(vk.vulkan_call_conv) ?*anyopaque { const self: *VkAllocator = @ptrCast(@alignCast(p_user_data.?)); - const desired_alignment: std.mem.Alignment = .fromByteUnits(alignment); + const desired_alignment = std.mem.Alignment.fromByteUnits(alignment); std.debug.assert(std.mem.Alignment.compare(actual_alignment, .gte, desired_alignment)); self.mutex.lock(); @@ -91,7 +91,7 @@ fn reallocationFunction( ) callconv(vk.vulkan_call_conv) ?*anyopaque { const self: *VkAllocator = @ptrCast(@alignCast(p_user_data.?)); - const desired_alignment: std.mem.Alignment = .fromByteUnits(alignment); + const desired_alignment = std.mem.Alignment.fromByteUnits(alignment); std.debug.assert(std.mem.Alignment.compare(actual_alignment, .gte, desired_alignment)); self.mutex.lock();