Browse Source

Restructured world update for multi-threading

Restructured the world update method so that multi-threading can easily be implemented
Jef Belmans 2 years ago
parent
commit
c609f5313f

+ 1 - 1
minecraft_clone/first_app.cpp

@@ -108,7 +108,7 @@ void first_app::run()
             global_ubo.flush_index(frame_index);
 
             // UPDATE CHUNKS
-            // world_generator_.update_world(camera.get_position());
+            world_generator_.update_world(camera.get_position());
 
             // RENDER
 			renderer_.begin_swapchain_render_pass(command_buffer);

+ 29 - 12
minecraft_clone/world_generator.cpp

@@ -38,17 +38,20 @@ void world_generator::generate_world()
 void world_generator::update_world(const glm::vec3& position)
 {
 	// Get the chunk the player is in
+	auto start = std::chrono::high_resolution_clock::now();
 	Chunk* player_chunk = get_chunk_at_position(position);
 
-	if (!player_chunk)
+	if(!player_chunk || old_player_chunk_coord == player_chunk->coord)
 		return;
 
-	// Get the chunks around the player
+	old_player_chunk_coord = player_chunk->coord;
+
 	for (auto& chunk : chunks_)
 	{
 		chunk.is_active = false;
 	}
 
+	// Get the chunks around the player
 	uint64_t num_chunks = static_cast<uint64_t>(chunks_.size());
 	for (int x = -render_distance_; x <= render_distance_; x++)
 	{
@@ -60,21 +63,31 @@ void world_generator::update_world(const glm::vec3& position)
 			if (chunk)
 				chunk->is_active = true;
 			else
-				chunks_.emplace_back(generate_chunk(chunk_coord));
+				chunks_to_generate_.emplace_back(chunk_coord);
 		}
 	}
 
-	// Build the new chunks around the player
-	for (int i = num_chunks; i < chunks_.size(); i++)
+	// Generate the new chunks around the player
+	for (const glm::ivec2& coord : chunks_to_generate_)
 	{
-		std::cout << "Building new chunk: " << chunks_[i].coord.x << ", " << chunks_[i].coord.y << "\n";
+		std::cout << "Building new chunk: " << coord.x << ", " << coord.y << "\n";
+		auto start = std::chrono::high_resolution_clock::now();
+
+		auto& chunk = chunks_.emplace_back(generate_chunk(coord));
+		rebuild_surrounding_chunks(chunk);
+		build_chunk(chunk);
 
-		// First rebuild the surrounding chunks
-		rebuild_surrounding_chunks(chunks_[i]);
+		auto end = std::chrono::high_resolution_clock::now();
+		auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
 
-		// Then build the new chunk
-		build_chunk(chunks_[i]);
+		std::cout << "\tTook: " << duration << "ms\n\n";
 	}
+
+	chunks_to_generate_.clear();
+
+	auto end = std::chrono::high_resolution_clock::now();
+	auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
+	std::cout << "Updating entire world took: " << duration << "ms\n\n";
 }
 
 Chunk world_generator::generate_chunk(const glm::ivec2& coord)
@@ -163,9 +176,13 @@ bool world_generator::add_block_vertices_to_chunk(const glm::vec3& position, Chu
 	auto it = block.faces.begin();
 	while (it != block.faces.end())
 	{
+		BlockType adjecent_block{};
 		// Get block at world position
-		BlockType adjecent_block = get_block_at_position((position + it->vertices[0].normal) + 
-			glm::vec3{chunk.world_position.x, 0.f, chunk.world_position.y});
+		if(position.x == chunk_size_ - 1 || position.x == 0 || position.z == chunk_size_ - 1 || position.z == 0) 
+			adjecent_block = get_block_at_position((position + it->vertices[0].normal) + 
+				glm::vec3{chunk.world_position.x, 0.f, chunk.world_position.y});
+		else
+			adjecent_block = chunk.block_map[position + it->vertices[0].normal];
 
 		// Check if there is a block and if it is solid, if so, don't add this face
 		if (voxel_data::is_block_solid(adjecent_block))

+ 6 - 3
minecraft_clone/world_generator.h

@@ -32,10 +32,13 @@ private:
 	BlockType get_block_at_position(const glm::vec3& position);
 
 	coral_3d::coral_device& device_;
-	std::vector<Chunk> chunks_{};
 
-	const uint32_t world_size_{ 16 };
-	const uint16_t render_distance_{ 2 }; // In chunks, in each direction (render_distance * 2 + 1)
+	const uint16_t render_distance_{ 1 }; // In chunks, in each direction (render_distance * 2 + 1)
 	const uint16_t chunk_size_{ 16 };
 	const uint16_t world_height_{ 32 };
+
+	std::vector<Chunk> chunks_{};
+	std::vector<glm::ivec2> chunks_to_generate_{};
+
+	glm::ivec2 old_player_chunk_coord{0};
 };

BIN
out/build/x64-Debug/.ninja_deps


+ 16 - 0
out/build/x64-Debug/.ninja_log

@@ -57,3 +57,19 @@
 1888	2309	7108946164687044	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
 11	1577	7108946803719190	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
 1577	1865	7108946804783218	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+14	1359	7108999663521300	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	838eede5482a47f8
+18	1863	7108999668556517	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	e1882e4a9647373b
+21	1888	7108999668800253	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+1888	2192	7108999669945278	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+18	1624	7109002618526398	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+1624	2012	7109002619681199	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+4	1104	7109006600380817	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	838eede5482a47f8
+7	1609	7109006605423111	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	e1882e4a9647373b
+10	1621	7109006605538542	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+1621	1989	7109006607262468	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+11	1940	7109008832837960	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+1940	2223	7109008833915635	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+11	2064	7109008981839317	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+2064	2359	7109008982946083	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013
+11	1553	7109009889393626	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	e2637c078342451e
+1553	1833	7109009890507857	minecraft_clone/minecraft_clone.exe	7da0b2f7ca2013

BIN
out/build/x64-Debug/minecraft_clone/CMakeFiles/minecraft_clone.dir/vc140.pdb


BIN
out/build/x64-Debug/minecraft_clone/minecraft_clone.ilk


BIN
out/build/x64-Debug/minecraft_clone/minecraft_clone.pdb


BIN
out/build/x64-Release/.ninja_deps


+ 80 - 99
out/build/x64-Release/.ninja_log

@@ -1,128 +1,109 @@
 # ninja log v5
 9	167	7107921055886289	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.frag.spv	cf825d28678334f9
+12	156	7107921055710758	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	ab94f32c2a30bf2e
 217	889	7107921063108715	coral_renderer/CMakeFiles/coral_renderer.dir/coral_utils.cpp.obj	61d6c235d1ab7202
 23	183	7107921056046948	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/voxel_shader.frag.spv	48fbf32b8e4f204d
-12	156	7107921055710758	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	ab94f32c2a30bf2e
+19	172	7107921055941609	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	546ee68668f23aa2
+84	869	7107921062465082	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	496e01f20bcd9209
 26	184	7107921056061961	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/voxel_shader.vert.spv	29e3c2c9b4cb3955
 72	850	7107921062646209	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_thread.c.obj	a42466a924400240
-84	869	7107921062465082	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	496e01f20bcd9209
-19	172	7107921055941609	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	546ee68668f23aa2
 16	158	7107921055755789	E:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	b93d887ab982a112
-65	870	7107921062761779	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	4ce60cb8085bfc4a
 41	832	7107921062480091	third_party/GLFW/src/CMakeFiles/glfw.dir/init.c.obj	4c3432162dfba984
-68	841	7107921062540767	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	560b9841c36ca334
+65	870	7107921062761779	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	4ce60cb8085bfc4a
 58	872	7107921062882295	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_init.c.obj	2af4bda6680fb9a0
+68	841	7107921062540767	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	560b9841c36ca334
 55	857	7107921062606154	third_party/GLFW/src/CMakeFiles/glfw.dir/window.c.obj	113330e8f19e6d35
 47	869	7107921062746764	third_party/GLFW/src/CMakeFiles/glfw.dir/monitor.c.obj	2612862b2eceab12
-46	1026	7108099929755275	coral_renderer/CMakeFiles/coral_renderer.dir/coral_descriptors.cpp.obj	58c4d364253128d
 52	863	7107921062435056	third_party/GLFW/src/CMakeFiles/glfw.dir/vulkan.c.obj	650f0f592dd807bc
-9	1887	7108671800598602	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+46	1026	7108099929755275	coral_renderer/CMakeFiles/coral_renderer.dir/coral_descriptors.cpp.obj	58c4d364253128d
 37	871	7107921062791811	third_party/GLFW/src/CMakeFiles/glfw.dir/context.c.obj	caf4694f76bba58d
-62	878	7107921062992844	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	f4448c998c46664c
+19	1593	7108991139907554	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
 81	871	7107921062721736	third_party/GLFW/src/CMakeFiles/glfw.dir/egl_context.c.obj	a0bf0e9de6ce9e23
-934	996	7107921064133453	third_party/GLFW/src/glfw3.lib	72cb3f0d3bdbe8a5
+62	878	7107921062992844	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	f4448c998c46664c
 44	888	7107921063028261	third_party/GLFW/src/CMakeFiles/glfw.dir/input.c.obj	fdab6c055128488
+934	996	7107921064133453	third_party/GLFW/src/glfw3.lib	72cb3f0d3bdbe8a5
 78	882	7107921062992844	third_party/GLFW/src/CMakeFiles/glfw.dir/wgl_context.c.obj	82f0c3e97c492c8b
-19	762	7108099927123780	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	3339056311aa81cf
 75	934	7107921063565711	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_window.c.obj	551096e38bb5f60a
+19	762	7108099927123780	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	3339056311aa81cf
 184	1112	7107921065331944	coral_renderer/CMakeFiles/coral_renderer.dir/coral_window.cpp.obj	9322b9a51b9da23b
-37	1501	7108099934495263	coral_renderer/CMakeFiles/coral_renderer.dir/coral_texture.cpp.obj	22d76ed5186f4695
 32	820	7108099927701417	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	68d39b4a661c7765
-8	565	7108626535210019	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	ccb6ec365f85f624
+37	1501	7108099934495263	coral_renderer/CMakeFiles/coral_renderer.dir/coral_texture.cpp.obj	22d76ed5186f4695
+15	585	7108689789017850	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	ccb6ec365f85f624
+20	847	7108887523071798	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	9e9fbf41d3abfc6c
+39	938	7108887523964057	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_renderer.cpp.obj	ea894ddbb51e986f
 18	1180	7108126857442463	minecraft_clone/CMakeFiles/minecraft_clone.dir/chunk.cpp.obj	b80463febc9c872
-13	837	7108671790111638	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_renderer.cpp.obj	ea894ddbb51e986f
-29	1144	7108099930912361	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	9e9fbf41d3abfc6c
+27	851	7108887523114703	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c44799d01941a134
 30	2651	7107921080709816	third_party/CMakeFiles/vkbootstrap.dir/vkbootstrap/VkBootstrap.cpp.obj	af5f1ea9e4fd4598
-11	749	7108626537066906	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c44799d01941a134
 22	1213	7108099931572372	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	c20c8f0603546fd6
-63	1063	7108099930123562	minecraft_clone/CMakeFiles/minecraft_clone.dir/atlas_generator.cpp.obj	63a7b03febd0c3e3
-5	850	7108626538057692	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9f39a3ad561683f6
+42	833	7108887522914987	minecraft_clone/CMakeFiles/minecraft_clone.dir/atlas_generator.cpp.obj	63a7b03febd0c3e3
+23	977	7108887524340920	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9f39a3ad561683f6
+12	1075	7108887525332091	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	5f8313c86bb83823
 2	16	0	clean	21a4d0550fd2b6b1
-13	1425	7108099933726495	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	5f8313c86bb83823
-5	994	7108671791670148	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+16	1070	7108991134695618	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
 5	977	7108149498029376	coral_renderer/CMakeFiles/coral_renderer.dir/coral_device.cpp.obj	5053ccbaabbd5e9d
-16	997	7108100547215682	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_data.cpp.obj	8a7daf6159c2fa53
-850	904	7108626538484252	coral_renderer/coral_renderer.lib	22d45a2543ff0fdf
+4	1048	7108891316732977	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_data.cpp.obj	8a7daf6159c2fa53
 40	1660	7108099936096179	coral_renderer/CMakeFiles/coral_renderer.dir/coral_buffer.cpp.obj	77b1cf6059c01a73
-1935	2257	7108671802877936	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+2104	2158	7108887536059401	coral_renderer/coral_renderer.lib	22d45a2543ff0fdf
 33	2863	7107921082822377	third_party/CMakeFiles/tinyobjloader.dir/tinyobjloader/tiny_obj_loader.cc.obj	5d11c9f136fb5987
-12	1891	7108147814377072	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	7f5e366fb42bc0ab
+1655	2018	7108991142360109	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+16	2104	7108887535570313	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	7f5e366fb42bc0ab
 2651	2699	7107921081207838	third_party/vkbootstrap.lib	70c0e9f308a489de
 2863	2903	7107921083235766	third_party/tinyobjloader.lib	49f56a18b656ab21
-16	1935	7108671801079182	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+23	1655	7108991140524242	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
 11	510	7108150990566898	build.ninja	6cdfad673094e22
-8	1600	7108671976423925	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1600	1929	7108671978098800	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-11	1635	7108672103517894	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1635	1968	7108672105263762	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	1634	7108672459809639	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1634	1970	7108672461575953	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	1624	7108676110041141	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1624	1962	7108676111840356	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-11	1620	7108676251114430	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1620	1951	7108676252844496	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	1639	7108677380221390	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1639	1991	7108677382115316	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-15	585	7108689789017850	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	ccb6ec365f85f624
-17	814	7108689791321426	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c44799d01941a134
-11	919	7108689792357800	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9f39a3ad561683f6
-919	973	7108689792791464	coral_renderer/coral_renderer.lib	22d45a2543ff0fdf
-21	1749	7108689800613992	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-24	1816	7108689801300571	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1816	2138	7108689803024664	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-13	1297	7108713862925380	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-17	2077	7108713870707476	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-13	1632	7108714165881491	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1632	1969	7108714167671755	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-4	1798	7108714835705713	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1799	2127	7108714837455620	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	1631	7108715391975222	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1631	1962	7108715393698641	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-4	1612	7108719393352247	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1613	1942	7108719395082273	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-11	1608	7108723722664804	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1608	1936	7108723724393468	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-6	1647	7108725280226116	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1648	2001	7108725282032539	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-10	2151	7108725890904070	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-2152	2491	7108725892683086	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-11	1801	7108736504925629	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1801	2147	7108736506783908	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-5	1717	7108736808393946	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1717	2049	7108736810158366	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-4	949	7108739034401762	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-8	1608	7108739040973967	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-11	1655	7108739041437933	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1655	1989	7108739043183472	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-6	944	7108816433744459	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-9	1600	7108816440289921	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-13	1677	7108816441041419	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1677	1994	7108816442805363	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	946	7108832778455626	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-16	1596	7108832784948610	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-19	1653	7108832785503130	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1653	1978	7108832787224559	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-12	1626	7108832903164451	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1626	1948	7108832904824429	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-11	1711	7108835471673823	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1712	2034	7108835473379731	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-42	833	7108887522914987	minecraft_clone/CMakeFiles/minecraft_clone.dir/atlas_generator.cpp.obj	63a7b03febd0c3e3
-20	847	7108887523071798	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	9e9fbf41d3abfc6c
-27	851	7108887523114703	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c44799d01941a134
-39	938	7108887523964057	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_renderer.cpp.obj	ea894ddbb51e986f
-23	977	7108887524340920	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9f39a3ad561683f6
-12	1075	7108887525332091	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	5f8313c86bb83823
-30	1114	7108887525723556	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-36	1153	7108887526101836	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_data.cpp.obj	8a7daf6159c2fa53
-33	1797	7108887532532906	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-45	1856	7108887533121874	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-16	2104	7108887535570313	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	7f5e366fb42bc0ab
-2104	2158	7108887536059401	coral_renderer/coral_renderer.lib	22d45a2543ff0fdf
-12	1093	7108887910956417	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_data.cpp.obj	8a7daf6159c2fa53
-1093	1442	7108887912840799	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-4	1048	7108891316732977	minecraft_clone/CMakeFiles/minecraft_clone.dir/voxel_data.cpp.obj	8a7daf6159c2fa53
-1049	1381	7108891318541747	minecraft_clone/minecraft_clone.exe	506eec639b450a47
-18	1053	7108947128168014	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
-22	1588	7108947133505314	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
-25	1634	7108947133962451	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
-1635	1952	7108947135609609	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+13	947	7108991256846901	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+17	1597	7108991263324831	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+20	1650	7108991263844574	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1650	1986	7108991265611594	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	933	7108992282404909	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+14	1580	7108992288853185	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+17	1624	7108992289286759	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1624	1945	7108992290983460	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	1610	7108994863102852	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1611	1943	7108994864851269	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	940	7108995316926161	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+15	1583	7108995323331868	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+18	1624	7108995323740787	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1624	1950	7108995325476661	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+13	972	7108999171609634	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+16	1605	7108999177925665	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+20	1680	7108999178679632	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1680	2015	7108999180469255	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	1615	7108999341816540	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1616	1947	7108999343574988	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+18	1712	7109002900278263	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1712	2045	7109002902086894	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	1637	7109003401466711	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1637	1971	7109003403228902	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	947	7109003622693096	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+15	1578	7109003628984232	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+18	1645	7109003629656036	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1645	1968	7109003631380935	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+4	1620	7109004246807099	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1620	1958	7109004248617845	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+12	994	7109004325145090	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+16	1675	7109004331938050	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+19	1741	7109004332588196	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1741	2060	7109004334304178	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	1694	7109005710850487	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1694	2016	7109005712585935	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	1623	7109006067117450	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1623	1961	7109006068913840	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	958	7109006364057335	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+15	1594	7109006370403356	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+18	1659	7109006371051824	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1659	1978	7109006372727544	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+5	1615	7109009969428527	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1615	1930	7109009971159973	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+11	945	7109010060909940	minecraft_clone/CMakeFiles/minecraft_clone.dir/main.cpp.obj	ca275f79d188cf8f
+14	1590	7109010067338560	minecraft_clone/CMakeFiles/minecraft_clone.dir/first_app.cpp.obj	3a8e8f25ac5a3595
+17	1662	7109010068056210	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1662	1991	7109010069829554	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+13	1628	7109010564260732	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1629	1961	7109010566051268	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+12	1643	7109011197363833	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1643	1975	7109011199100133	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+12	1635	7109011942608930	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1635	1972	7109011944425724	minecraft_clone/minecraft_clone.exe	506eec639b450a47
+12	1643	7109012562327183	minecraft_clone/CMakeFiles/minecraft_clone.dir/world_generator.cpp.obj	3c460ce3743f64dd
+1643	1976	7109012564078226	minecraft_clone/minecraft_clone.exe	506eec639b450a47