Skip to content
/ gkern Public

🎥 Graphics Kernel: flexible, highly configurable, extensible render engine (realtime + offline)

License

Notifications You must be signed in to change notification settings

recp/gkern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🫧 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 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
  • PBR
  • Transparency
  • Occlusion Culling
  • Level of Detail for mesh
  • Multithread rendering
  • Instanced Rendering
  • Animations
    • Autoreserve animations
    • Play count...
    • Simple Animations
    • Keyframe animations
      • Animate float/vec3/vec4
      • Interpolations
        • STEP
        • LINEAR
        • CUBIC BEZIER SPLINE
        • CUBIC HERMITE SPLINE
        • B-SPLINE
        • CARDINAL SPLINE
    • Skeletal animations (working on this)
    • Morph animations
  • ...

Screenshots

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 repo to see an example to how to use this