The project is highly WIP - contributions are welcome to help accelerate development!
Kirino-Engine is a CPU-GPU dual pipeline rendering engine that combines ECS paradigm and modern rendering techniques. Its primary goal is to overhaul most of the Minecraft's rendering in a future-proof and elegant manner and provide a set of clean rendering APIs to mod devs.
-
Why is Kirino-Engine different compared to OptiFine / Sodium / Iris / Canvas?
- Because Kirino-Engine is fundamentally GPU-driven and ECS-driven, unlike traditional optimizers or shader mods
- Kirino-Engine reimagines the entire rendering pipeline
- Kirino-Engine pays a huge attention to its architecture
- Kirino-Engine isn't simply an optimizer or shader mod
-
What's the most exciting features in dev?
- GPU-Driven Meshlet Rendering & Virtual Geometry
- Vulkan-like / Modern paradigms (like Multi-Draw Indirect, Pipeline State Objects, etc.)
- Semi-Static Global Illumination Driven by Surface Cards & Temporal Accumulation
- ECS & Parallel Job System
- Async GPU Resource System
- Multi-resolution & HDR & Post-processing Pipeline
-
What can I expect as a player?
- Performance wise: smoother performance and FPS improvements
- Shader wise: modern lighting techniques and better global illumination
- Configurability: optional HDR, optional resolution up-scaling or down-scaling, optional post-processing, etc.
-
What can I expect as a mod developer?
- Clean rendering APIs that hide OpenGL completely
- Versatile rendering APIs that focus on the concept of render commands
- Will be able to create emissive blocks, PBR, fogs, decals, any post-processing effects
- Future-proof architecture
View Project Board to track development progress, features and ideas.
If you are curious about the tech/code details, check out Engine Overview Page!
If you would like to contribute, check out our Contributing Page!
It's a bit outdated, Project Board takes precedence.
GL Abstraction
Goal: a semantic abstraction layer that preserves the meaning of GL operations instead of a black-box GL wrapper
- GL Resource Abstraction 🚧
- Resource manager 🚧
- Shader Abstraction 🚧
- Only support
vert+fragfor now, but design withtess,compute, etc. in mind - Global shader registry
- Compile and store shaders ✅
- Shader source hashing
- Uniform
- Parse uniforms from shader source
- Uniform location and type memorization
- UBO support
- ShaderProgram
- Uniform input type widening
- Only support
- Buffer Abstraction 🚧
- Generic buffer object + View ✅
- VAO (VBO + EBO) ✅
- Vertex attribute layout ✅
- UBO, SSBO
- PBO pack & unpack
- TBO
- Upload hint + access hint ✅
- Persistent buffer ✅
- Framebuffer ✅
- Attachment ✅
- RenderBuffer ✅
- Texture Abstraction 🚧
- Sampler
- Generic texture object + View ✅
- Texture 🚧
- Texture2D (for common uses) ✅
- Texture2DMultisample (for multisampling fbo) 🚧
- Texture2DArray (for texture atlas)
- ...
- Debug Abstraction ✅
- KHR_debug ✅
- Material Abstraction
- MaterialTemplate to describe layout and shaders
- MaterialInstance to hold actual parameters
ECS
- Overall ECS structure ✅
- CleanWorld, CleanEntity, CleanComponent, CleanSystem ✅
- Entity ✅
- Entity manager (utilizes archetype) ✅
- Component ✅
- Component schema ✅
- Class scan via ClassGraph ✅
- Storage ✅
- Archetype ✅
- Runtime 🚧
SystemExeGraphto coordinate different systems- Execution priority
- Async execution & barrier
- Job ✅
- Job is a unit of work that can be split and executed in parallel ✅
Engine
- CPU & GPU hybrid dual pipeline 🚧
- DrawCommand decorating mechanism 🚧
- RenderPass / Subpass architecture ✅
- Built-in Multi-resolution & Super-sampling 🚧
- Immutable Pipeline State Object ✅
- Meshlets 🚧
- Scriptable pipeline
- ...
Kirino Engine is made possible thanks to the efforts of all contributors!
- tttsaurus - Core maintainer, architecture design, and overall project coordination
- Eerie - Feature development and algorithmic contributions
- ChaosStrikez - Code refactoring, call-site improvements, and algorithm fixes
This project is licensed under Mod Permissions License published by Jbredwards.