So I just realized how easy it would be to gpgpu for chunk vbo generation and possibly even generating the blocks.
Bind transform feedback
Bind chunk id[] as an isamplerBuffer
Render 16^3 points with no attribs
Use gsh to out pos, uv.
In gsh detect blocks surrounded by 6 opaque blocks, cull them by not emitting
Considering theres 16^3~=4k blocks in a chunk, im guessing this would be at least 100x as fast. Since when using an ssd on a pregenerated world loading is still an issue: I believe creating the vbo is the main bottleneck for speed. So this would be an absolutely immense performance boost for anyone with GL>3.1 (pretty much everyone)
This would be best if mojang implemented it directly though.
If someone doesnt have GL3.2 then it can be easily autodetected then they just use the same old chunk rendering.
This thread under Minecraft Suggestions because I don't see why anyone wouldn't want this in vanilla.
Rollback Post to RevisionRollBack
[ Type 1 Anarchy ] - 3D guns - Mechs - Missiles - Turrets - Frikkin Laser Beams
The majority of time spent loading a chunk is looking at each block to tell if it is visible, the processor has to look at all 4000 blocks individually, while the GPU can do it in parallel.
My 8-core CPU is 32 GigaFLOPS while my 980-core GPU is 1000 GigaFLOPS, making it about 30 times faster, but on cpu its normally done in a single thread, not 8, which would make gpu 250 times faster. Theres overhead with moving data to the gpu, so I'm guessing it would be around 100 times faster.
The end result would be near-instant chunk loading.
Also this glitch
would no longer happen, as thats a bug with render manager deciding which chunks to load first, while if they all load near-instantly there is no longer a need to sort them
Rollback Post to RevisionRollBack
[ Type 1 Anarchy ] - 3D guns - Mechs - Missiles - Turrets - Frikkin Laser Beams
The majority of time spent loading a chunk is looking at each block to tell if it is visible, the processor has to look at all 4000 blocks individually, while the GPU can do it in parallel. My 8-core CPU is 32 GigaFLOPS while my 980-core GPU is 1000 GigaFLOPS, making it about 30 times faster, but on cpu its normally done in a single thread, not 8, which would make gpu 250 times faster. Theres overhead with moving data to the gpu, so I'm guessing it would be around 100 times faster. The end result would be near-instant chunk loading. Also this glitch would no longer happen, as thats a bug with render manager deciding which chunks to load first, while if they all load near-instantly there is no longer a need to sort them
From what I can tell, the world renderer uses OGL call lists which are cached across multiple frames. It seems to me that optimizing conversion of world geometry into call lists would only give a small speedup during loading, and no noticeable impact on average FPS.
Have you told any of the devs about this? Try sending them a mail or tweet or something with full explanation of what your idea is. They're always open to suggestions, especially ones that improve their game massively.
I'm with this guy. As someone who is not computer-savvy on any level, I can only think that a conversation with one of the devs would yield the most pertinent light on whether or not you're right.
From what I can tell, the world renderer uses OGL call lists which are cached across multiple frames. It seems to me that optimizing conversion of world geometry into call lists would only give a small speedup during loading, and no noticeable impact on average FPS.
Unlike pretty much everything else in mc, chunks are actually stored as VBOs. They have to be otherwise the game would be unplayable.
And yeah there would be no effect once chunks are loaded, its for loading speed not rendering. Wording is getting ambiguous here because if i say loading then people think loading the block data, while if i say rendering people think rendering every frame, while if i say vbo generation people have no idea what im talking about :/
Rollback Post to RevisionRollBack
[ Type 1 Anarchy ] - 3D guns - Mechs - Missiles - Turrets - Frikkin Laser Beams
Unlike pretty much everything else in mc, chunks are actually stored as VBOs. They have to be otherwise the game would be unplayable.
And yeah there would be no effect once chunks are loaded, its for loading speed not rendering. Wording is getting ambiguous here because if i say loading then people think loading the block data, while if i say rendering people think rendering every frame, while if i say vbo generation people have no idea what im talking about :/
Lol, fair enough. I should look into using VBOs then for rendering ships in one of my mods. The ships are just a bunch of blocks. I'm using call lists now, but I might switch to something faster to get better performance. Calling the block renderer/tesselator thingy is really slow!
This would be best if mojang implemented it directly though.
If someone doesnt have GL3.2 then it can be easily autodetected then they just use the same old chunk rendering.
This thread under Minecraft Suggestions because I don't see why anyone wouldn't want this in vanilla.
If you are planning to make a suggestion, please read this.
If you want to know more, you can read this.
For those who complain about post-Beta generation, you might want to see this.
My 8-core CPU is 32 GigaFLOPS while my 980-core GPU is 1000 GigaFLOPS, making it about 30 times faster, but on cpu its normally done in a single thread, not 8, which would make gpu 250 times faster. Theres overhead with moving data to the gpu, so I'm guessing it would be around 100 times faster.
The end result would be near-instant chunk loading.
Also this glitch
would no longer happen, as thats a bug with render manager deciding which chunks to load first, while if they all load near-instantly there is no longer a need to sort them
From what I can tell, the world renderer uses OGL call lists which are cached across multiple frames. It seems to me that optimizing conversion of world geometry into call lists would only give a small speedup during loading, and no noticeable impact on average FPS.
I'm with this guy. As someone who is not computer-savvy on any level, I can only think that a conversation with one of the devs would yield the most pertinent light on whether or not you're right.
If you are planning to make a suggestion, please read this.
If you want to know more, you can read this.
For those who complain about post-Beta generation, you might want to see this.
Unlike pretty much everything else in mc, chunks are actually stored as VBOs. They have to be otherwise the game would be unplayable.
And yeah there would be no effect once chunks are loaded, its for loading speed not rendering. Wording is getting ambiguous here because if i say loading then people think loading the block data, while if i say rendering people think rendering every frame, while if i say vbo generation people have no idea what im talking about :/
Lol, fair enough. I should look into using VBOs then for rendering ships in one of my mods. The ships are just a bunch of blocks. I'm using call lists now, but I might switch to something faster to get better performance. Calling the block renderer/tesselator thingy is really slow!
I see it would make loading faster.
I'm back