Migrate GLSL to Slang, text shader
This commit is contained in:
@@ -261,6 +261,26 @@ pub fn load(
|
||||
});
|
||||
errdefer engine.destroyImageView(cubemap_image_view);
|
||||
|
||||
// NOTE Because slang cannot conceive of such a thing as RWTextureCube
|
||||
// (equivalent to imageCube in GLSL, which docs claim exists, but it
|
||||
// doesn't), we have to resort to RWTexture2DArray (WTexture2DArray to be
|
||||
// specific) in the compute shader. We have to make another image view with
|
||||
// appropriate view_type to pass validation.
|
||||
|
||||
const cubemap_image_view_2d_array = try engine.createImageView(.{
|
||||
.image = cubemap_image,
|
||||
.view_type = .@"2d_array",
|
||||
.format = .r16g16b16a16_sfloat,
|
||||
.subresource_range = .{
|
||||
.aspect_mask = .{ .color_bit = true },
|
||||
.base_mip_level = 0,
|
||||
.level_count = 1,
|
||||
.base_array_layer = 0,
|
||||
.layer_count = 6,
|
||||
},
|
||||
});
|
||||
defer engine.destroyImageView(cubemap_image_view_2d_array);
|
||||
|
||||
// --- PIPELINE AND DESCRIPTORS --------------------------------------------
|
||||
|
||||
const sampler = try engine.createSampler(.{
|
||||
@@ -312,7 +332,7 @@ pub fn load(
|
||||
});
|
||||
defer engine.destroyPipelineLayout(compute_pipeline_layout);
|
||||
|
||||
const compute_shader = try engine.createShaderModule(.{ .code = &shaders.equirect_to_cube_comp_spv });
|
||||
const compute_shader = try engine.createShaderModule(.{ .code = &shaders.equirect_to_cube_spv });
|
||||
defer engine.destroyShaderModule(compute_shader);
|
||||
|
||||
var compute_pipeline: vk.Pipeline = undefined;
|
||||
@@ -380,7 +400,7 @@ pub fn load(
|
||||
.image = &.{
|
||||
.{
|
||||
.sampler = .null_handle,
|
||||
.image_view = cubemap_image_view,
|
||||
.image_view = cubemap_image_view_2d_array,
|
||||
.image_layout = .general,
|
||||
},
|
||||
},
|
||||
@@ -622,23 +642,20 @@ pub fn load(
|
||||
},
|
||||
});
|
||||
|
||||
const vertex_shader = try engine.createShaderModule(.{ .code = &shaders.skybox_vert_spv });
|
||||
defer engine.destroyShaderModule(vertex_shader);
|
||||
|
||||
const fragment_shader = try engine.createShaderModule(.{ .code = &shaders.skybox_frag_spv });
|
||||
defer engine.destroyShaderModule(fragment_shader);
|
||||
const shader = try engine.createShaderModule(.{ .code = &shaders.skybox_spv });
|
||||
defer engine.destroyShaderModule(shader);
|
||||
|
||||
const pipeline = try engine.createGraphicsPipeline(.{
|
||||
.stages = &.{
|
||||
.{
|
||||
.stage = .{ .vertex_bit = true },
|
||||
.module = vertex_shader,
|
||||
.name = "main",
|
||||
.module = shader,
|
||||
.name = "vertexMain",
|
||||
},
|
||||
.{
|
||||
.stage = .{ .fragment_bit = true },
|
||||
.module = fragment_shader,
|
||||
.name = "main",
|
||||
.module = shader,
|
||||
.name = "fragmentMain",
|
||||
},
|
||||
},
|
||||
.vertex_input_state = .{
|
||||
|
||||
Reference in New Issue
Block a user