diff --git a/examples/build.zig b/examples/build.zig index bc9b454..b49d41b 100644 --- a/examples/build.zig +++ b/examples/build.zig @@ -1,7 +1,6 @@ const std = @import("std"); const vkgen = @import("vulkan_zig"); -const ShaderCompileStep = vkgen.ShaderCompileStep; pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); @@ -33,15 +32,27 @@ pub fn build(b: *std.Build) void { .root_source_file = vk_generate_cmd.addOutputFileArg("vk.zig"), }); - const shaders = ShaderCompileStep.create( - b, - .{ .real_path = "glslc" }, - &[_][]const u8{"--target-env=vulkan1.2"}, + const vert_cmd = b.addSystemCommand(&.{ + "glslc", + "--target-env=vulkan1.2", "-o", - ); - shaders.add("triangle_vert", "shaders/triangle.vert", .{}); - shaders.add("triangle_frag", "shaders/triangle.frag", .{}); - triangle_exe.root_module.addImport("shaders", shaders.getModule()); + }); + const vert_spv = vert_cmd.addOutputFileArg("vert.spv"); + vert_cmd.addFileArg(b.path("shaders/triangle.vert")); + triangle_exe.root_module.addAnonymousImport("vertex_shader", .{ + .root_source_file = vert_spv, + }); + + const frag_cmd = b.addSystemCommand(&.{ + "glslc", + "--target-env=vulkan1.2", + "-o", + }); + const frag_spv = frag_cmd.addOutputFileArg("frag.spv"); + frag_cmd.addFileArg(b.path("shaders/triangle.frag")); + triangle_exe.root_module.addAnonymousImport("fragment_shader", .{ + .root_source_file = frag_spv, + }); const triangle_run_cmd = b.addRunArtifact(triangle_exe); triangle_run_cmd.step.dependOn(b.getInstallStep()); diff --git a/examples/triangle.zig b/examples/triangle.zig index 60702b0..ca205be 100644 --- a/examples/triangle.zig +++ b/examples/triangle.zig @@ -1,11 +1,13 @@ const std = @import("std"); const vk = @import("vulkan"); const c = @import("c.zig"); -const shaders = @import("shaders"); const GraphicsContext = @import("graphics_context.zig").GraphicsContext; const Swapchain = @import("swapchain.zig").Swapchain; const Allocator = std.mem.Allocator; +const vert_spv align(@alignOf(u32)) = @embedFile("vertex_shader").*; +const frag_spv align(@alignOf(u32)) = @embedFile("fragment_shader").*; + const app_name = "vulkan-zig triangle example"; const Vertex = struct { @@ -362,14 +364,14 @@ fn createPipeline( render_pass: vk.RenderPass, ) !vk.Pipeline { const vert = try gc.dev.createShaderModule(&.{ - .code_size = shaders.triangle_vert.len, - .p_code = @ptrCast(&shaders.triangle_vert), + .code_size = vert_spv.len, + .p_code = @ptrCast(&vert_spv), }, null); defer gc.dev.destroyShaderModule(vert, null); const frag = try gc.dev.createShaderModule(&.{ - .code_size = shaders.triangle_frag.len, - .p_code = @ptrCast(&shaders.triangle_frag), + .code_size = frag_spv.len, + .p_code = @ptrCast(&frag_spv), }, null); defer gc.dev.destroyShaderModule(frag, null);