53 lines
1.4 KiB
Zig
53 lines
1.4 KiB
Zig
const std = @import("std");
|
|
const vk = @import("vulkan");
|
|
const core = @import("core");
|
|
const VkConstants = @import("vk_constants.zig");
|
|
const meshes = @import("mesh.zig");
|
|
const NeonVkContext = @import("vk_renderer.zig").NeonVkContext;
|
|
const vk_pipeline = @import("vk_pipeline.zig");
|
|
|
|
const NeonVkPipelineBuilder = vk_pipeline.NeonVkPipelineBuilder;
|
|
const EulerAngles = core.EulerAngles;
|
|
const Mat = core.Mat;
|
|
const Vectorf = core.Vectorf;
|
|
const Quat = core.Quat;
|
|
const zm = core.zm;
|
|
const mul = zm.mul;
|
|
|
|
pub const Material = struct {
|
|
materialName: core.Name,
|
|
textureSet: vk.DescriptorSet = .null_handle,
|
|
pipeline: vk.Pipeline,
|
|
layout: vk.PipelineLayout,
|
|
|
|
pub fn deinit(self: *Material, ctx: *NeonVkContext) void {
|
|
ctx.vkd.destroyPipeline(ctx.dev, self.pipeline, null);
|
|
ctx.vkAllocator.destroyPipelineLayout(ctx.dev, self.layout);
|
|
}
|
|
};
|
|
|
|
pub const MaterialBuilder = struct {
|
|
const Self = @This();
|
|
allocator: std.mem.Allocator,
|
|
ctx: *NeonVkContext,
|
|
pipelineBuilder: NeonVkPipelineBuilder,
|
|
|
|
pub fn init(ctx: *NeonVkContext) MaterialBuilder {
|
|
const self = MaterialBuilder{
|
|
.allocator = ctx.allocator,
|
|
.ctx = ctx,
|
|
};
|
|
|
|
return self;
|
|
}
|
|
|
|
pub fn build(self: *Self) !void {
|
|
_ = self;
|
|
// try self.ctx.add_material();
|
|
}
|
|
|
|
pub fn deinit(self: *Self) void {
|
|
_ = self;
|
|
}
|
|
};
|