Use castle's stbi instead of zstbi

This commit is contained in:
2026-02-06 23:27:21 +01:00
parent 33a0b241ef
commit 39712e359d
10 changed files with 73 additions and 75 deletions

View File

@@ -4,6 +4,7 @@ const std = @import("std");
const c = @import("const.zig");
const glfw = @import("zglfw");
const math = @import("math.zig");
const media = @import("media");
const shaders = @import("shaders.zig");
const vk = @import("vulkan");
const vm = @import("vecmath");
@@ -43,6 +44,7 @@ directional_lights: shaders.DirectionalLightBuffer,
sampler: vk.Sampler,
deferred_command_buffers: std.ArrayList(CommandBuffer),
stbi: media.stbi,
blocks: Blocks,
materials: Materials,
textures: Textures,
@@ -59,6 +61,9 @@ const chunk_descriptor_pool = 1024;
const camera_near_plane = 0.1;
pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain) !Game {
var stbi = media.stbi.init(allocator);
errdefer stbi.deinit();
var materials = try Materials.init(engine, allocator);
errdefer materials.deinit(engine, allocator);
@@ -72,7 +77,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
// will crash the game with segfault reading address 0x140 (presumably
// within librenderdoc.so).
blocks.loadAll(engine, &materials, &textures, allocator);
blocks.loadAll(engine, &materials, &textures, &stbi, allocator);
const sampler = try engine.createSampler(.{
.mag_filter = .linear,
@@ -433,10 +438,10 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
});
engine.setObjectName(global_descriptor_set, "DS Global", .{});
const block_grass = try blocks.getOrLoad(engine, &materials, &textures, "Grass.json", allocator);
const block_dirt = try blocks.getOrLoad(engine, &materials, &textures, "Dirt.json", allocator);
const block_stone = try blocks.getOrLoad(engine, &materials, &textures, "Stone.json", allocator);
const block_bedrock = try blocks.getOrLoad(engine, &materials, &textures, "Bedrock.json", allocator);
const block_grass = try blocks.getOrLoad(engine, &materials, &textures, &stbi, "Grass.json", allocator);
const block_dirt = try blocks.getOrLoad(engine, &materials, &textures, &stbi, "Dirt.json", allocator);
const block_stone = try blocks.getOrLoad(engine, &materials, &textures, &stbi, "Stone.json", allocator);
const block_bedrock = try blocks.getOrLoad(engine, &materials, &textures, &stbi, "Bedrock.json", allocator);
// VOLATILE Load all assets before this point
@@ -627,7 +632,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
.elements = directional_lights_data,
});
var skybox = try Skybox.load("skybox.hdr", engine, 512, global_uniforms.buffer, swapchain.render_pass, allocator);
var skybox = try Skybox.load("skybox.hdr", engine, &stbi, 512, global_uniforms.buffer, swapchain.render_pass, allocator);
errdefer skybox.deinit(engine);
return .{
@@ -652,6 +657,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
.sampler = sampler,
.deferred_command_buffers = try .initCapacity(allocator, 4),
.stbi = stbi,
.blocks = blocks,
.materials = materials,
.textures = textures,
@@ -696,6 +702,7 @@ pub fn deinit(self: *Game) void {
self.textures.deinit(self.engine, self.allocator);
self.materials.deinit(self.engine, self.allocator);
self.blocks.deinit(self.allocator);
self.stbi.deinit();
self.* = undefined;
}