Skip to content
Robert Konrad edited this page Jun 16, 2022 · 9 revisions

Aims

Minimal platform disparity

Other than being written in C, Kinc provides complete hardware abstraction without being dependent on any standards like OpenGL, which work in slightly different ways on different systems (OpenGL vs OpenGL ES vs WebGL, ...) or are not available at all (fresh Windows installs, consoles,...). Sound is mixed in software, avoiding any delicate differences in Audio API implementations (almost all of today's systems in the end mix sound in software anyway).

Minimal design

Kinc is a tiny library that focuses purely on providing the necessary functionality to develop games and multimedia applications without worrying about the details of any particular target system. It is not a game engine, but it is a great starting point for building a game engine or making existing engines/frameworks/SDKs/... platform independent.

Maximum performance

Kinc interfaces with hardware and operating systems at the lowest possible level. Graphics are implemented using the system's native 3D API. Thanks to Kinc's minimal design, as little as possible stands between you and your hardware.

Maximum compatibility

Kinc applications not only run on a lot of systems but also run conveniently on as many specific configurations as possible. The graphics interface is purely shader based, which currently rules out very old systems (which is planned to be addressed by providing multiple graphics interfaces). Android compatibility goes back to version 2.2. by interfacing with Java for APIs which were not provided natively in earlier Android versions. Kinc does not depend on any libraries which are not an inherent part of the target systems. The Windows target also does not depend on D3DX, contrary to even most commercial games (shaders for Direct3D are instead compiled to a custom binary format).

Included Tools

krafix

krafix is a shader cross-compiler based on SPIRV-Cross and compiles GLSL 4.5 to HLSL, other versions of GLSL, Metal shading language or whatever else might come up.

kmake

kmake is a small build system, similar to premake or cmake, which creates project files for IDEs like Visual Studio and XCode. It's perfectly fine to use Kinc with other build systems, kmake is just smaller and faster and supports consoles out of the box.

Uses

  • Kha - All native platform targets use Kinc as their base.

Systems

  • Windows (Direct3D 12, Direct3D 11, Direct3D 9, Vulkan or OpenGL)
  • Linux (Vulkan or OpenGL)
  • macOS (Metal or OpenGL)
  • FreeBSD
  • Android (Vulkan or OpenGL)
  • iOS (Metal or OpenGL)
  • tvOS
  • Raspberry Pi
  • Universal Windows Platform (Direct3D 12 or Direct3D 11)
  • HTML5 (WebGL or WebGPU)
  • PlayStation 4*
  • PlayStation 5*
  • Xbox One*
  • Xbox Series X|S*
  • Nintendo Switch*

* The consoles code is not public. If you are a registered developer with Microsoft/Nintendo/Sony you can contact us to get access.

License

Kinc is available under the zlib license.