Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/recp/gkern
🎥 Graphics Kernel: flexible, highly configurable, extensible render engine (realtime + offline)
https://github.com/recp/gkern
3d 3d-graphics c-render-engine engine glsl graphics graphics-engine graphics-kernel graphics-library graphics-rendering opengl pbr rendering rendering-2d-graphics rendering-3d-graphics rendering-engine rendering-kernel shader shadow-mapping transparency
Last synced: 3 months ago
JSON representation
🎥 Graphics Kernel: flexible, highly configurable, extensible render engine (realtime + offline)
- Host: GitHub
- URL: https://github.com/recp/gkern
- Owner: recp
- License: lgpl-3.0
- Created: 2017-02-04T11:46:04.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2023-07-16T10:05:19.000Z (over 1 year ago)
- Last Synced: 2024-10-15T10:49:16.844Z (4 months ago)
- Topics: 3d, 3d-graphics, c-render-engine, engine, glsl, graphics, graphics-engine, graphics-kernel, graphics-library, graphics-rendering, opengl, pbr, rendering, rendering-2d-graphics, rendering-3d-graphics, rendering-engine, rendering-kernel, shader, shadow-mapping, transparency
- Language: C
- Homepage:
- Size: 1.2 MB
- Stars: 98
- Watchers: 13
- Forks: 11
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# 🫧 gkern: Graphics Kernel
`gkern` is a flexible, highly configurable, and extensible render engine. It's designed for both realtime and offline rendering, with a focus on robustness, performance, and ease of use. It is written in `C` so it is easy to use with other languages.
📌 Currently the library renders using OpenGL. I'm trying to integrate with `Metal`, `Vulkan`, `DirectX`
HISTORY: The main purpose was render [AssetKit](https://github.com/recp/assetkit) content. Then it became general purpose rendering and graphics library.
# Features:
- Similar scene data structure with COLLADA/glTF
- Shader generator for common materials (phong, blinn, lambert, const)
- This generator also supports textures, shadowmaps ... all feeatures to render scene perfectly and fast
- Shader manager (currently for common profile)
- Transform caching
- Uniform location caching
- Built-in trackball
- Multi-pass rendering
- Rendering to Texture
- Multiple Render Targets
- Textures
- State Manager / Caching
- Frustum Culling
- Configurable shadowmaps: Yes you can select which technique to use! More techniques may be supportted by time
- Basic/Simple Shadow Maps
- Cascaded Shadow Maps (PSSM)
- Order Independent Transparency
- Weighted, Blended OIT
- Some other techniques aill also be supported natively
- PBR materials
- Metallic-Roughness Workflow
- Specular-Glossiness Workflow
- Simple animations
- Skeletal animations
- Morph animations
- ...
- and some built-in helpers for many common tasks and more by fetures time...# Todo
- [ ] Real-Time Path Tracing
- [ ] Order objects before rendering
- [x] PBR
- [x] Transparency
- [ ] Occlusion Culling
- [ ] Level of Detail for mesh
- [ ] Multithread rendering
- [ ] Instanced Rendering
- [ ] Animations
- [x] Autoreserve animations
- [x] Play count...
- [x] Simple Animations
- [ ] Keyframe animations
- [x] Animate float/vec3/vec4
- [ ] Interpolations
- [x] STEP
- [x] LINEAR
- [x] CUBIC BEZIER SPLINE
- [ ] CUBIC HERMITE SPLINE
- [ ] B-SPLINE
- [ ] CARDINAL SPLINE
- [x] Skeletal animations (working on this)
- [x] Morph animations
- [ ] ...
# Screenshots![](DamagedHelmet_gltf.jpg)
# Build
todo# Notes
- This library is still unshaped, wait this until AssetKit finished.
- After finished this AssetKit and library, I'll publish documentation and update README.
- Also check [simple-collada-viewer](https://github.com/recp/simple-collada-viewer) repo to see an example to how to use this