DROP
a simple game engine
This set-up works for Windows x64
Download the directory "dependencies", paste assimp.lib into the project dependencies folder.
https://drive.google.com/drive/folders/1BnptvQUHHxcnXt53LJGVPdqLg2EXvkPA?usp=sharing
- double click on "scripts\Setup.bat"
- Vertex Animations for Grass
- Outline and stencil buffer
- Collision Detection & Response System
- Physics simulation for rigid bodies made of particles (rework and how to convert particle pos into transform?)
- Skeletal animations
- Cloth simulation (just a rework)
- Fluid simulation (Look at Doom:DarkAges video https://youtu.be/Ed4vNNQwCDU?si=3qRpfoFei1mSx-Qn)
- RayMarching for clouds and fog (https://youtu.be/Ed4vNNQwCDU?si=3qRpfoFei1mSx-Qn)
- Vulkan and renderer rework (winter is coming)
In order to create shadows we need to put the camera on the light position with the same orientation as the direction of the light. We do a first render pass, without calculating the color, in order to find the surfaces that are hidden by the objects. We do a second render pass, this time we calculate the color of the fragments keeping in consideration also the area obscured by the shadows.
Implementing the scene graph using a tree. We will store the transform in local coordinates and the cumulated transform in world coordinates. Local transform for the transformations related to the single object. The cumulated one for the scale, orientation and position of the object in world space, to be used by the other components.
My Bare Bone Terrain Streaming System.
Pre requisite: having a terrain to stream.
Since this is just a toy game engine for the moment, I just generated a pseudo random terrain.
-
Divide the scene into grid of cells.
For this example the grid is a square made of 11x11 cells
-
Displace the terrain component or starting point to the bottom left of the scene.
This will simplify the grid management since we will not need to handle row and col with negative numbers
Each cell is a slice of our terrain with width and length of 10x10. It's made of:
-
plane mesh -
height mapor vertical displacement textureThis is the part that was pseudo randomly generated It is made of 81 floats (9x9), based on the number of vertices of the mesh we are using. Each pixel represent the vertical displacement applied to a specific mesh vertex.
The goal of the Terrain Streaming System is to dynamically load only the necessary displacement maps around the Target/Player.
Once the Target/Player changes cell, new displacement maps will be required.
The map requested are forwarded to the Asset Thread that will read the specific files and fill its response buffer. Once every N loaded maps, the game thread will copy the results into its buffer to be rendered.











