diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-08-01 18:45:50 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-08-01 19:03:21 +0200 |
| commit | 93fa0b2e214fbb70e6c03f5ca7536c7c32544aa7 (patch) | |
| tree | d95fa69b1efb9f7d23f0ec61aee804bebe054350 /src | |
| parent | 0dafba17af044532fa2f14c61176e7994336f56c (diff) | |
Pack bvh nodes, optimize vertices size
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 4 | ||||
| -rw-r--r-- | src/scene.cpp | 4 |
2 files changed, 3 insertions, 5 deletions
diff --git a/src/main.cpp b/src/main.cpp index d0500e7..c2643ca 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -63,14 +63,14 @@ int main() { auto cam = camera(position, target, v_fov, (float)width / (float)height, aperture, focus_distance); auto main_scene = scene(cam, width, height); auto can_render = true; - vkrenderer renderer { wnd, sizeof(main_scene.meta), sizeof(main_scene.triangles[1]) * main_scene.triangles.size(), sizeof(main_scene.nodes[0]) * main_scene.nodes.size() }; + vkrenderer renderer { wnd, sizeof(main_scene.meta), sizeof(main_scene.triangles[1]) * main_scene.triangles.size(), sizeof(main_scene.packed_nodes[0]) * main_scene.packed_nodes.size() }; // vkrenderer renderer { wnd, sizeof(main_scene.meta), sizeof(main_scene.spheres[0]) * main_scene.spheres.size(), sizeof(main_scene.nodes[0]) * main_scene.nodes.size() }; // Upload scene content std::memcpy(renderer.scene_buffer_ptr(), &main_scene.meta, sizeof(main_scene.meta)); // std::memcpy(renderer.geometry_buffer_ptr(), main_scene.spheres.data(), sizeof(main_scene.spheres[0]) * main_scene.spheres.size()); std::memcpy(renderer.geometry_buffer_ptr(), main_scene.triangles.data(), sizeof(main_scene.triangles[0]) * main_scene.triangles.size()); - std::memcpy(renderer.bvh_buffer_ptr(), main_scene.nodes.data(), sizeof(main_scene.nodes[0]) * main_scene.nodes.size()); + std::memcpy(renderer.bvh_buffer_ptr(), main_scene.packed_nodes.data(), sizeof(main_scene.packed_nodes[0]) * main_scene.packed_nodes.size()); ImGuiIO& io = ImGui::GetIO(); io.DisplaySize.x = (float)width; diff --git a/src/scene.cpp b/src/scene.cpp index b44abd5..73c73e5 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -90,9 +90,7 @@ scene::scene(camera cam, uint32_t width, uint32_t height) // random_scene();
- bvh builder(triangles, nodes);
+ bvh builder(triangles, packed_nodes);
// bvh builder(spheres, nodes);
// builder.exporter();
-
- std::memcpy(nodes.data(), builder.nodes.data(), sizeof(nodes[0]) * nodes.size());
}
|
