Tempname: Engine update. I am so tired
To keep it all contained, since the last devlog I have:
- Merged Phase-III into main & created a Phase-IV branch
- Changed the landing page's color palette
- Modified the target architecture 4 times (3 committed)
- Created a rudimentary SceneManager class
- Implemented an EngineContext class to distribute ownership & to help with data flow+containment
- Implemented a layer system to help cut down on application & to contain/host the events system.
- Finally put in the system directory (folder) in the architecture that will host any simulations, computations, and animations. Currently it is the planned details for the camera system.
The biggest thing that I have done so far is the layer system & state/context creation.
The layer system is like a regenerating stack of pancakes 🥞. Before you cast your pancake regeneration spell we all have, you have to prep the pancakes with butter and syrup. Each time you finish the pancakes, a new round starts and you eat them again. Then, once you are done, you have to disable the regeneration spell. The layer system acts the same, but computationally & layers instead of pancakes. Each layer goes through the lifecycle of onAttach -> onUpdate -> onDetach. By far the biggest reason for the layer system is the event system, but I'll leave that for the next devlog.
Here is the github page: github.com/pkncoder/Engine/tree/Phase-IV
Here is the landing page: pkncoder.github.io/Engine
I still have soooo much to do, especially with & after the event system. I've completed most of the easy stuff for Phase-IV. Here is the current architecture & a site screenshot.
Changed my mind on shipping, however I do now have a landing page! I still have to do things like changing the color palette (it's alright now, but I want something different I think), adding little details to really sell the "Rendering" aspect of this, etc. etc.
Here's the landing page, please check it out & give any feedback! pkncoder.github.io/Engine/index.html
Since I changed my mind on shipping, here are those images that I was going to use!
Just got done with some renders on the engine, been working all day on implementing the things needed.
Along with the images, I added:
Shadow Mapping for the Rasterizer (only 1 emitter)
Tone mapping to the Rasterizer
Fog to the Rasterizer
A vignette effect to the Rasterizer
Transparency maps to the Rasterizer
Settings & presets for the renders
* A new "Queer Room" modeled by me in blender for the Path Tracer (going to post it on ship).
I honestly have had so much fun with this. Currently working on a landing page to go in place of my "Online Demo" on stardance (since this isn't that kind of application D: ).
Here's the github: github.com/pkncoder/Engine/tree/Phase-III! At some point I'll be redoing the README as well for more info.
Also, these images aren't even the best ones, I'll leave that for the ship :3
🚢I forgot about acceleration structures, so I planned that out as well in the renderer.
Currently just:
• BVH (Bounding Volume Heirarchy) for Ray & Path Tracing
• SVO (Sparse Voxel Octree) for Ray Marching (Hypothetically)
These acceleration structures make rendering methods like Ray & Path Tracing, Ray Marching, Ray Casting, etc. feasible for real-time by "cutting out" data (objects) similar to how a Binary Tree works.
I have finished getting albedo (basic color) textures loading. To get this working I had to redo how meshes were loaded completely, but I finally finished that. The biggest problems I had was getting the backrooms model to render correctly, as the previous models I had, all of the textures were in a "baked" form, which my renderer does not support. Finally I found a free non-baked one that was really good, but there was just a few issues with normals, and after I fixed that in blender shading issues showed up, and then UV issues. However the model is mostly fixed now!
If you would like to try for yourself, the github repo is here: github.com/pkncoder/Engine/tree/Phase-III. The repo is large currently, as I still need to compress the files, or remove them (gitignore). The Path Tracer is currently disabled, as I need to swap the textures to handles, and then modify the PathTracer to work with the textures. It will look really good once I get that working though!
Here's that diagram for how the program currently interacts with itself.
• Anything purple (besides the background) is a temporary connection/file.
• Anything green needs re-worked
• The "Services" group contains files that are completely static in use, and are accessible globally.
It's still a bit messy, but that's partly due to the temporary/need re-worked files. There's a still some spaghetti code due to that. The shader files I do look a lot like spaghetti as well, but that is mostly do to positioning.
It's pretty basic, as the ui/ and system/ dirs aren't in there either (system/ is simulations + any computations that would need to be done (ex. translating data for one renderer to another)).
I'm working on my Engine project. Just redid most of the data management in the PathTracer renderer. I'm almost done with this development phase, so that's fun. Tempname: Engine (yes that's the name) is a custom-built 3d engine that will support rendering complex scenes not only in a very stylized manner, but with a suite of techniques not normally seen. The renders not only will be high-quality and efficient, but will also have the ability for basic animations (no keyframes, but a simple system of startpos-endpos or along a drawn curve w/ velocity controlled by a graph). I like to think of those GIFs of scenes that have simple things like grass blowing, or a flag blowing in the wind. There's so much more to this that is way to much to fit into a small explanation, but there is more information at the github page: github.com/pkncoder/Engine/tree/Phase-III (ignore the main branch).
Here's some random images from it (no textures yet, that should be soon. Then the backrooms really will feel like the backrooms):