Code Monkey home page Code Monkey logo

orka's Introduction

Build status Docs status License GitHub release IRC

Orka

Orka is an OpenGL 4.6 rendering kernel written in Ada 2012. It provides the building blocks to easily render 3D graphics or do general-purpose computing on the GPU, and to use input devices like gamepads.

  • Object-oriented rendering API. Renderer objects like shader programs, framebuffers, buffers, and textures can be used via an object-oriented API. Objects are automatically created and destroyed by using controlled types. Various AZDO techniques can be used to allow multithreaded buffer updates and batched draw calls for high performance rendering.

  • Debug rendering and logging. Various packages exist that can be used to draw bounding boxes, coordinate axes, lines, and spheres for debugging. Messages from the rendering API or other parts of your application can be logged to the terminal or files.

  • Algorithms and effects. Compute the prefix sum or Fast Fourier Transform using compute shaders, or apply a (Gaussian) blur to a texture.

  • Atmosphere and terrain. Render a realistic atmosphere or adaptive tessellated terrain.

  • Joysticks and gamepads. Joysticks and gamepads can be managed via an API. Analog axes can be filtered with a low-pass filter, dead zones can be removed, and axes and triggers can be inverted or normalized. It is possible to detect chords (groups of buttons), button sequences, and rapid button tapping.

  • Job graph processing system. A job graph processing system provides flexible multitasking by allowing work to be split into multiple small jobs which are then processed by any available task from a task pool. Jobs can be processed in parallel as well as sequentially.

  • Asynchronous resource loading. Resources like KTX textures and glTF models are loaded asynchronously using the job graph processing system. Resources can be loaded from directories and archive files.

  • Quaternions and matrices. Packages for applying common transformations to vectors, quaternions, and matrices using x86 SIMD instructions are provided. The various x86 SIMD extensions like SSE, AVX2, FMA, F16C, etc., can also be used directly in your own code.

Additionally, Orka provides several bindings:

  • OpenGL 4.6. Thick bindings are provided for the modern parts of OpenGL 4.6. There are no bindings for fixed function functionality that is deprecated or functions that have been superseded by newer extensions.

  • GLFW 3. Provides bindings for GLFW 3.x. This is a library for creating windows with an OpenGL context on them. It also provides functionality for capturing user input on keyboard, mouse, and joystick. Alternatively, libraries like SDL can be used instead to create windows and process input.

Documentation

The documentation can be viewed on the website.

Learning Ada

Ada is an imperative and object-oriented programming language focused on correctness, readability, and good software engineering practices for large scale systems and safety-critical and embedded real-time systems.

It has a very strong static type system where you can create your own types that reflect the problem domain, with optional low-level control of your data. Packages provide modularity and information hiding. High-level concurrency primitives like protected objects allow safe communication between tasks and design-by-contract is supported through type invariants, predicates, and pre- and postconditions.

If you would like to learn Ada, then here are a few resources to get started:

Contributing

If you would like to fix a bug, add an improvement, or have suggestions or advice regarding the architecture, APIs, performance, or code comments and documentation, then do not hesitate to open a new issue.

Make sure you have read the contributing guidelines before opening an issue or pull request.

License

Orka is distributed under the terms of the Apache License 2.0 except for a few packages and files.

The following packages and/or files are licensed under the BSD 3-Clause license:

  • Orka.Features.Atmosphere (and child packages Constants and Earth)

  • Files in data/shaders/atmosphere/

The following packages and/or files are licensed under the MIT license:

  • Files in data/shaders/terrain/

orka's People

Contributors

onox avatar flyx avatar rodeo-mccabe avatar alkhimey avatar landgraf avatar rashfael avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.