Commit Graph

105 Commits (ca043bac68f6fa4bf797108ff970e191d4a7ea2a)

Author SHA1 Message Date
EmaMaker 3daf994ac3 opengl: disable vsync
This way I can better watch how changes affect FPS/frame times, rather than have it capped at
60FPS/16.6ms
Does not introduce visible tearing.

The engine runs at about 170 FPS on my Tesla M40, and so does minecraft. It never goes past that, I think this is a
limitation of using prime offloading. Runs at 300FPS on average on the Radeon HD6850 to which I
normally offload the Tesla to
2023-04-10 00:45:25 +02:00
EmaMaker 47543c9101 intervalmap: use updated upper_bound when checking removal of next node 2023-04-10 00:30:28 +02:00
EmaMaker 1a4412c5b1 renderer: initial texture support via ArrayTextures
totally stolen textures from minecraft
2023-04-10 00:30:28 +02:00
EmaMaker 2b1991ff2b separate rendering in a dedicated file 2023-04-10 00:30:24 +02:00
EmaMaker b4f3bdad06 experimental 3d generation
a cave-like effect
2023-03-29 21:39:53 +02:00
EmaMaker 40fec8a649 actual random generation 2023-03-29 21:39:53 +02:00
emamaker 179bd20aba update .gitignore 2023-03-27 21:10:45 +02:00
emamaker a039ced6cf gamma correction 2023-03-27 21:10:45 +02:00
EmaMaker 44b027c3e2 Blinn-Phong lighting 2023-03-27 21:10:45 +02:00
EmaMaker 6bd3bdecb8 shader: allow to send vec3 uniforms 2023-03-27 21:10:45 +02:00
EmaMaker b4dd3be584 chunkmesher: push vertices normals to GPU 2023-03-27 21:10:38 +02:00
EmaMaker da6608c66a chunkmanager: only calculate update sphere indices at startup 2023-03-25 16:32:01 +01:00
EmaMaker 8584d2e974 general code cleanup 2023-03-25 16:28:12 +01:00
EmaMaker 19cd81b9fb chunkmesher/manager: move sending data to gpu in dedicated function 2023-03-23 16:19:25 +01:00
EmaMaker 19b3c68015 camera: nearer near clipping plane 2023-03-23 14:26:12 +01:00
EmaMaker e609f4858b initial blockpicking 2023-03-23 14:25:34 +01:00
EmaMaker e18a2cca05 intervalmap: solve bugs with insertion, printing and retrival 2023-03-21 22:15:46 +01:00
EmaMaker 8040868055 chunkmanager: unload chunks after a time treshold 2023-03-13 13:33:32 +01:00
EmaMaker b7077af00f chunkmanager: delete far chunks from memory 2023-03-13 12:56:46 +01:00
EmaMaker ba35689c6c chunkmesher: also cleanup colors at the start 2023-03-13 12:56:10 +01:00
EmaMaker bc2225e0f3 chunk: first delete buffer, then vao 2023-03-13 12:55:20 +01:00
EmaMaker f3d89a2e5a chunk release resources on destruction 2023-03-12 22:14:28 +01:00
EmaMaker ddd047e82f interval map: clean map on destruction 2023-03-12 22:14:05 +01:00
EmaMaker ab762eb9bc use unique_ptr when dumping intervalmap to array 2023-03-12 19:28:23 +01:00
EmaMaker f7eb04a5f1 use unique_ptr when dumping intervalmap to array 2023-03-12 19:24:09 +01:00
EmaMaker 383fb60686 proper frustum culling 2023-03-12 19:24:05 +01:00
EmaMaker e69c58abd3 gracefully shut down secondary threads 2023-03-12 12:43:41 +01:00
EmaMaker 716056b8c5 experimental multithreaded generation and meshing 2023-03-03 21:33:11 +01:00
EmaMaker 2ec728897e main: print currently used GPU at the start 2023-02-23 19:07:35 +01:00
EmaMaker b1e420f564 camera: allow to strafe up and down 2023-02-23 19:07:17 +01:00
EmaMaker cf0bb3f111 update .gitignore 2023-02-23 19:06:42 +01:00
EmaMaker b600ef5214 memory: delete shader when terminating 2023-02-23 17:02:20 +01:00
EmaMaker 0baa2eb649 memory: use proper delete[] 2023-02-22 21:54:15 +01:00
EmaMaker c547d11cd5 chunks: drop per-chunk chunkmesh
Use a single mesher. This, on top of the previous commits, shaves off another 20MB of total RAM usage, using a total of about 120MB for a standard world (16 chunk size, 8 render distance), of which 22 in heap
2023-02-12 14:36:59 +01:00
EmaMaker ec2feb919f chunkmanager: chunkmesh on the stack 2023-02-12 12:20:03 +01:00
EmaMaker 9f82a17bd2 chunkmesh: do not create shader for every object 2023-02-12 12:18:30 +01:00
EmaMaker 2e0ed7b057 clear mesh data after sending to gpu 2023-02-11 22:26:34 +01:00
EmaMaker 3c54de5f21 update .gitignore 2023-02-11 21:52:31 +01:00
EmaMaker 4aef800210 ship glfw 2023-02-11 21:49:35 +01:00
emamaker 69c44e3609 enable faceculling
Doesn't give a massive improve in performance right now, but a nice one to have and was already made from the jme3 porting
2022-12-01 23:45:05 +01:00
emamaker 773b7999d4 chunkmgr: do not update same chunk multiple times
Iterating on radius from 0 up to RENDER_DISTANCE made the algorithm check the same "sphere" multiple times
2022-12-01 23:45:05 +01:00
emamaker 1ccbf8b157 rudimentary frustum culling
TODO: maybe manually extract planes and check against those
2022-12-01 23:45:05 +01:00
EmaMaker 8116791dcf use hilbert curve instead of flatten array
Using valgrind heap memory tracker, this does not seem to bring any advantage on heap memory usage. To be tested more in depth
2022-12-01 23:44:47 +01:00
EmaMaker b724640384 chunkgen: take advantage of intervalmap structure
brings down heap memory usage to about 67% of that using arrays (valgrind, tested on standard terrain with renderdistance at 8)
2022-12-01 23:44:03 +01:00
EmaMaker 8eb15f4725 chunk: migration to intervalmaps 2022-12-01 23:44:03 +01:00
EmaMaker 5dd924abf7 implement intervalmaps 2022-12-01 23:44:03 +01:00
emamaker 2418c481bd camera: wider and further view 2022-12-01 23:44:03 +01:00
emamaker 9b133181ba chunkmesh: cleanup 2022-12-01 23:44:03 +01:00
EmaMaker c8f429564c chunkmgr: properly dispose allocated chunk memory 2022-12-01 23:44:03 +01:00
EmaMaker a5ddb0e37f chunkmgr: avoid call of chunkmesh default ctor 2022-12-01 23:44:03 +01:00