Activity

Simon

Devlog 04:

After some more optimizations I am now able to render quite a large region. The problem that now arrises is the amount of buffers used. Every chunk at the moment uses 6 buffers and QRhi just cant handle this. The next approach to fix this is to switch from QRhi to Vulkan to gain more control and implement a solution that can work for far larger render distances.

Optimizations:

  • Greedy Meshing
  • Frustum Culling
  • Fully async chunk and mesh generation
  • Removing faces that are facing away from the player
0
Simon

Devlog 03:

Voxel Worlds are hard :(

What I did:

  • Moved chunk mesh generation in seperate worker threads and tried to make everything needed thread safe
  • Implemented movement and game logic through its own classes running in its own thread
  • Implemented instanced drawing for quads, drasticly reducing the amount of verticies and removing the need of indicies through TriangleStrip
  • Added chunk generation using perlin noise
Attachment
0
Simon

Devlog 02:

After too many hours, I now finally got a codebase, that can do efficient rendering of chunks using QRhi under Qml.

To achieve this the hardest parts were:

  • Reducing the trafic between cpu and gpu. Only seending meshes if they changed
  • Creating efficient meshes, using face culling for now (greedy meshing planned)
  • Effiently storing the chunk data
  • Getting the order of the triangles right to enable backface culling
  • QRhi stuff:
    • Understanding the basics of the rendering pipeline and how QRhiCommandBuffers work

The picture currently shows one 32x16x32 stone chunk rendered with different colored faces.

If you have any questions feel free to comment <:

Attachment
0
Simon

Devlog 01:

Tried a lot with QRhi and Qt Quick 3D but always had problems with optimization and different threads accessing different things and bing blocked by operations.

New try with QRhiWindow to stay in c++ for the whole 3D pipeline.

Allready learned a lot about 3D rendering and optimization.

Attachment
0
Simon

Devlog 06:

New Features:

  • changed from simple TabBar to ListView for workspace tab bar
  • added drag and drop support for workspace tab bar, so you can reorder the files manually after opening

Fixes / Polishing:

  • used enum for node type in cpp backend instead of string
0
Simon

Devlog 05:

Added web assembly demo hosted on github pages.
The project is not optimized for web assembly yet but it works.

Additionally some small features were added:

  • closing files
  • proper dimensions of the sidebar also on web assembly
Attachment
0
Simon

Devlog 04:

Rewrote the way how the contents of the file are saved in the C++ backend by giving them their own classes and finally implemented a proper editor in which multiple files can be opened and switched easily.
Also created the editor for TODO lists.

Finally I looked into the ui and fixed some smaller details to just create a better ux.

Attachment
Attachment
0
Simon

Devlog 03:
Added basic editing structure for my file / folder structure to create / rename / delete files and folders.
Additionally fixing the ui to make it consistent and getting changes in the note editor to be registered and saved in the C++ backend

Attachment
Attachment
Attachment
0
Simon

Devlog 02:
Added the basic project structure using Antigravity:
C++ backend subclassing QAbstractItemModel
QML Frontend with minimal functionallity

Getting this result needed a lot of knowledge around how qt handels models and what works and what does not, but after investing 30min into the implementation plan alone gemini did a great job on implementing all of the features.

For everyone who wants an idea how it works look at
https://github.com/simonpth/cirruspad/blob/main/CLASSES.md

The code is far from perfect and needs a bit of human polishing but it’s a good starting point.

Attachment
Attachment
Attachment
Attachment
Attachment
0
Simon

Devlog 01:

I finished project, hackclub and github setup and now everything is ready to start. This devlog also is there to finish the task on the welcome page!

Attachment
0