Compare commits

..

1 Commits

Author SHA1 Message Date
Avery ef6da3658e
Skybox rendering, broken
1 week ago

@ -19,13 +19,14 @@
devShells.default = pkgs.mkShell {
VULKAN_SDK = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
# LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${pkgs.SDL2}/lib/";
LD_LIBRARY_PATH = lib.makeLibraryPath (with pkgs; [SDL2 vulkan-loader]);
LD_LIBRARY_PATH = lib.makeLibraryPath (with pkgs; [SDL2 vulkan-loader vulkan-validation-layers]);
buildInputs = with pkgs; [
SDL2
SDL2.dev
vulkan-headers
vulkan-loader
vulkan-validation-layers # maybe?
shaderc
# glm and whatnot …
];
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,13 +1,8 @@
#version 450
// vim: ft=c
struct PosNorm {
vec4 pos;
vec4 norm;
};
layout(std430, set = 0, binding = 0) buffer positions_buffer {
PosNorm posnrm[];
mat2x4 posnrm[];
} pos;
layout(push_constant, std430) uniform pc {
@ -25,22 +20,16 @@ const float TAU = PI*2.0;
void main() {
// assign outs
normal = pos.posnrm[gl_VertexIndex].norm;
pos_pre = pos.posnrm[gl_VertexIndex].pos;
normal = pos.posnrm[gl_VertexIndex][1];
pos_pre = pos.posnrm[gl_VertexIndex][0];
// define constants
const float zFar = 100.0;
const float zNear = 0.1;
// assign the transformee
gl_Position = pos.posnrm[gl_VertexIndex].pos;
gl_Position = pos.posnrm[gl_VertexIndex][0];
mat4 fix_coordinates = mat4(
-1.0, 0.0, 0.0, 0.0,
0.0, -1.0, 0.0, 0.0,
0.0, 0.0, -1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat4 view_orig = mat4(
1.0, 0.0, 0.0, cam_orig.x,
0.0, 1.0, 0.0, cam_orig.y,
@ -84,11 +73,6 @@ void main() {
0.0, 0.0, 0.0, 1.0
);
// vulkan has inverted screen coordinates
// but we want regular mesh coordinates
// gl_Position.xyz *= -1.0
gl_Position *= fix_coordinates;
// apply view's origin transformation
//gl_Position.xyz += cam_orig.xyz;
// gl_Position *= view_orig;
@ -123,5 +107,4 @@ void main() {
// z normalization
//gl_Position.z /= zFar;
gl_Position *= project_normal;
}

@ -828,7 +828,6 @@ fn write_desc_sets(
desc_sets: &Vec<vk::DescriptorSet>,
mesh_buf: &vk::Buffer,
image_view: vk::ImageView,
skybox_sampler: vk::Sampler
) {
let buf_info = vk::DescriptorBufferInfo::default()
.buffer(*mesh_buf)
@ -843,9 +842,8 @@ fn write_desc_sets(
.buffer_info(&buf_infos);
let img_info = vk::DescriptorImageInfo::default()
.image_layout(vk::ImageLayout::GENERAL)
.image_view(image_view)
.sampler(skybox_sampler);
.image_layout(vk::ImageLayout::UNDEFINED)
.image_view(image_view);
let img_infos = &[img_info];
let img_desc = vk::WriteDescriptorSet::default()
.dst_set(desc_sets[0])
@ -946,30 +944,6 @@ fn record_commands(
.clear_values(&clear_vals);
unsafe {
let regions = (0..6)
.map(|i| {
vk::BufferImageCopy::default()
.buffer_offset(3 * 2048 * 2048 * i)
.buffer_row_length(0)
.buffer_image_height(0)
.image_offset(vk::Offset3D::default())
.image_extent(vk::Extent3D::default().width(2048).height(2048).depth(1))
.image_subresource(
vk::ImageSubresourceLayers::default()
.aspect_mask(vk::ImageAspectFlags::COLOR)
.mip_level(0)
.layer_count(1)
.base_array_layer(i as u32),
)
})
.collect::<Vec<_>>();
dev.cmd_copy_buffer_to_image(
*cmd_buf,
*skybox_buffer,
*skybox_image,
vk::ImageLayout::GENERAL,
&regions,
);
dev.cmd_begin_render_pass(*cmd_buf, &render_pass_info, vk::SubpassContents::INLINE);
dev.cmd_bind_pipeline(*cmd_buf, vk::PipelineBindPoint::GRAPHICS, *pipe);
dev.cmd_bind_descriptor_sets(
@ -1037,7 +1011,30 @@ fn record_commands(
base_color.as_ref(),
);
let regions = (0..6)
.map(|i| {
vk::BufferImageCopy::default()
.buffer_offset(3 * 2048 * 2048 * i)
.buffer_row_length(0)
.buffer_image_height(0)
.image_offset(vk::Offset3D::default())
.image_extent(vk::Extent3D::default().width(2048).height(2048).depth(1))
.image_subresource(
vk::ImageSubresourceLayers::default()
.aspect_mask(vk::ImageAspectFlags::COLOR)
.mip_level(0)
.layer_count(1)
.base_array_layer(i as u32),
)
})
.collect::<Vec<_>>();
dev.cmd_copy_buffer_to_image(
*cmd_buf,
*skybox_buffer,
*skybox_image,
vk::ImageLayout::GENERAL,
&regions,
);
dev.cmd_draw(*cmd_buf, 36, 1, 0, 0);
dev.cmd_end_render_pass(*cmd_buf);
@ -1147,7 +1144,7 @@ fn handle_cont_key(keycode: Keycode, camera: &mut Camera, mouse: &MouseUtil) {
}
fn decode_rif(raw: &[u8]) -> &[u8] {
&raw[17..]
&raw[18..]
}
fn main() {
@ -1239,16 +1236,10 @@ fn main() {
.tiling(vk::ImageTiling::OPTIMAL)
.usage(vk::ImageUsageFlags::TRANSFER_DST | vk::ImageUsageFlags::SAMPLED)
.sharing_mode(vk::SharingMode::EXCLUSIVE)
.initial_layout(vk::ImageLayout::UNDEFINED)
.initial_layout(vk::ImageLayout::GENERAL)
.queue_family_indices(&qf_idxs);
let image =
unsafe { dev.create_image(&create_info, None) }.expect("Failed to create image");
let skybox_mem_size: vk::MemoryRequirements = unsafe {dev.get_image_memory_requirements(image)};
let skybox_dev_mem = mem_alloc(&dev, host_invisible_inx, skybox_mem_size.size);
unsafe {
dev.bind_image_memory(image, skybox_dev_mem, 0).expect("Failed to bind image memory");
}
let create_info = vk::ImageViewCreateInfo::default()
.image(image)
.view_type(vk::ImageViewType::CUBE)
@ -1277,7 +1268,6 @@ fn main() {
let sampler =
unsafe { dev.create_sampler(&create_info, None) }.expect("Failed to create sampler");
(image, image_view, sampler)
};
@ -1353,7 +1343,7 @@ fn main() {
let desc_sets = make_desc_sets(&dev, &desc_pool);
write_desc_sets(&dev, &desc_sets, &mesh_buf, skybox_image_view, skybox_sampler);
write_desc_sets(&dev, &desc_sets, &mesh_buf, skybox_image_view);
let sem_avail = make_sem(&dev);
let sem_finish = make_sem(&dev);

Loading…
Cancel
Save