Code Monkey home page Code Monkey logo

elysian-vk's Introduction

ElysianVk

ElysianVk is the intial Vulkan back-end implementation of the Elysian Shadows renderer. Our original renderer was a combination of OpenGL with OpenCL to give the highest-level OpenGL capabilities accross every platform, especially on MacOS where the supported GL version was much lower. OpenCL interop allowed us to still have compute shaders and generic GPU buffers to use more modern rendering techniques. All was good in the world... until Apple deprecated BOTH APIs. It immediately became time to choose another rendering path, and Vulkan, despite not technically supporting MacOS was the no-brainer for its cross-platform support and low-level performance. This codebase has actually been mostly developed under MacOS with MoltenVk, so we still intend to support the platform.

Status

While this is not currently the area in the tech stack where I am working, it will absolutely be imperative to return here and finish up. Currently, there's not so much of a high-level "renderer" implemented so much as a low-level C++ Vulkan utility API and back-end which would eventually power said renderer as I work my way up the graphics stack.

API Features

  • Custom CPU-side Allocators
  • Debug Logger/Debug Utils Messenger Extension
  • Instances, Instance Extensions
  • Physical Devices, Logical Devices, Device Extensions
  • DeviceMemory
  • Buffers and Buffer Views
  • Queues, QueueGroups
  • Commands, Command Buffer Groups, Command Pools, Command Allocators
  • Fences, Semaphores, Events
  • Pipelines, ComputePipelines, GraphicsPipelines
  • Pipeline Layouts, Shader Stages, BindingDescriptions
  • DescriptorSets, DescriptorSetGroups, DescriptorSetLayoutBindings
  • ShaderModule
  • FrameBuffers
  • SwapChain
  • QueryPool
  • RenderPass, Subpasses, Attachments

Dependencies

AMD's "VMA" library, or "Vulkan Memory Allocator" is contained within the lib folder as a submodule for helping to manage memory allocation and resource creation.

Testing

There is only a slight amount of testing that has been done, within the testing folder, and it has a hard depdency on Qt and QTest; however, we've recently created our own cross-platform unit test framework within our core stack library which this will be ported to and built upon.

elysian-vk's People

Contributors

gyrovorbis avatar

Stargazers

 avatar

Watchers

 avatar  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.