Spare Parts Engine
Introduction
During the last year at the game assembly we have the same group for the whole year and that makes it possible/easier for us to keep improving upon the engine beyond the scope of whatever game project that we are working on currently. This engine is then used for the last three game projects.
My contributions to the engine
An ECS that you can read more about here.
A vertex painter that you can read more about here.
Renderer
A renderer that has been continuously iterated upon over the course of the last five group projects at The Game Assembly. It currently has the following features:
Clustered shading - Read more about that here.
Deferred + forward rendering for translucent objects
Frustum culling using a multi-threaded octree
Mesh instancing - All meshes are instanced drawn (static, animated, sprites)
Materials
Material instances
RGB masks - Can be set on a per instance basis
Settings for samplers, UV behavior (tiling, world aligned) on a per texture set basis (Texture set: Diffuse, Normal map, Material, Effects)
Settings for depth stencil state, rasterizer state, blend state, and alpha clip threshold
Shaders
Decals - Tileable, angle threshold to avoid stretching
Four different types of lights - Local directional lights, spotlights, point lights, and soft area lights
Shadow mapping for local directional lights and spotlights
Optimizations for static lights, and static objects
Post processing effects
Double buffered
Visual scripting features
All of these were done using Unreal Engine as inspiration
Wildcard pins - Pins that don't have a specific type until they are connected to a pin which does.
Split and combine pins - Ex. splitting a pin of a math vector into its components and then be able to combine them back into one again
Drag and drop properties into the script editor
Timeline - A timeline node that you can double click to open up and add/remove points and drag on handles to change the bezier curves.
Various other nodes