The core is a 3d engine that i have been working on for several years during this time i have tested diffrent method of rendering, sort and how to diffrent objective.
the core uses independent libraryis that support cross platform
other librarys used but not looked to the core
This is the heart of the core. This decides how all the projects design are produced. The Threadpool allocate X nummbers of threads based on cpu. Minimum of threads are 3 Opengl, Worker and slave this is the tre main types of threads used by the threadpool
- Worker thread this is the main thread used by the thread pool for almost all the work done by the application using the core. Worker can take Cycle work(Works that is done more then once) and single work.
- Opengl can take the same work as Worker threads but is the only thread that can do anythinge with the opengl. this thread is almost never used by the applications.
- Slave thread is the thread that takes care of work that who does not need to be finsihed before the next frame is done. Work added to the Slave thread can take as long times as they want this is often used during loading screens when the Worker and opengl threads take care of the rendering parts whyle the slave threads loads whats need to be done.
The thread system is self balancing with means with every frame executed the works are moved around in the threds to increas the perfomence automatically. This removes the hard work of creating a perfect work order for the works.
double bufferd render system
The render system is doubled buffer in that aspect that every thinge that should be renderd is copied to a buffer and stored to be renderd in the next frame. The user from the application does never notice that the render system is doubled bufferd its hidden behind layers of stuff to be able to render anythinge you add RenderNode to a object and add information how the object should be renderd to the rendernode and then the rendernode takes care of the rest. The double bufferd ssytem was added the core to increase the GPU efficcene from 95% to 99%.
The texture system is a simple texture
Models is an abstraction layer that uses the scene graph system to build up model. A mesh connected to the model can have every other scene graph component attached to it including other meshes.this gave the model more flexibility then using a static model where a mesh only could be connected to the model.
The mesh keep information about it self and it’s different components like collision mesh, lod levels mesh.
The animation system connected to the mesh is rudimentary at best it is where basic because i never needed any more complex system i was only interested in how a animation system actually worked and the math behind it.
scene graph system
This system is simple in it’s nature and very robust as far as the testing goes. The graph system takes care of all render properties of the engine. And by using this graph system i was able to create a doubled bufferd render system where the render frame is done semimonthly as the next frame is updated the user never notice that the rendering is one frame “late”.