PerTerra V2

After a long wait I have been able to reassemble the engine. With this I have been able to expand the feature set and refine previous features.

With this version I have refined the pipeline in order to speed up drawing by implementing view fulcrum culling. This has allowed me to exponentially increase the amount of objects in the scene.

I have also offloaded the file IO to another thread to allow for the stream of data from the hard drive. This allows me to stream the terrain to and from the hard drive to allow me to have infinite worlds without locking up the system every time a new terrain object is being loaded. It also significantly decreases loading time because I can stream the data as the user is interacting with the application.

I switch the terrain from planes to a voxel system this allows me to have much greater detail. A side effect of this is much more computational strain on a large amount of data. To remedy this I added a third thread that is dedicated to dealing with voxel’s. Interaction with this thread is done with a manager class and circular queues. I have split the management into 3 main tasks and have given these tasks a priority

  1. Updating all existing voxel objects: This will update the meshes on the voxel objects in the world as of now but this may be expanded in the future. Probably not but considering future plans that will be explained a later time.
  2. Creation and Destruction of voxel objects:
    • Creation: This is done in three steps
      1. File IO: This will attempt to load a voxel object from file in the event that this succeeds it will skip to step 3
      2. Generation: The voxel object has failed to load from file this may be for a variety of reasons. The engine then turns to the generation algorithm that has given during the creation of the manager. It runs through each tile and queries the algorithm for tile data.
      3. Create Mesh: Before the chunk is registered for use it is then handed of to have it mesh generated.
    • Destruction: The voxel object is simply saved to disk, unregistered and deleted.

This slideshow requires JavaScript.

Apart from that there has not been much progress unfortunately.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s