Giter VIP home page Giter VIP logo

methanepowered / methanekit Goto Github PK

View Code? Open in Web Editor NEW
780.0 16.0 44.0 53.48 MB

๐ŸŽฒ Modern 3D graphics made simple with C++17 cross-platform framework and rendering abstraction API on top of DirectX 12, Metal & Vulkan

License: Apache License 2.0

CMake 4.27% C++ 85.10% HLSL 0.67% Shell 0.56% Batchfile 0.27% C 0.50% Objective-C++ 8.57% PowerShell 0.04% Dockerfile 0.02%
graphics d3d12 metal cross-platform gamedev vulkan hlsl graphics-engine graphics-programming graphics-library

methanekit's Issues

Improved shader converter

Try to replace glslangValidator to DirectXCompiler built for MacOS for compiling HLSL to SPIRV, required for further translation to Metal shader code with SPIRV-Cross.

Mesh models loader

Choose 3rd-party mesh models loader and implement loading in a tutorial.

[DX12] Triple buffering does not work as expected

Triple buffering should enable submitting up to 3 frames for rendering to GPU without stalls at present, but currently each frame is rendered strictly after previous frame was presented, which seems to be incorrect.

Graphics context controller

Create controller to change graphics context parameters in runtime:

  1. Swich device between available system devices
  2. Switch VSync ON/OFF
  3. Switch to full screen and back
  4. Add/Remove frame buffers in swap-chain

Sky-box rendering primitive

Add Sky-Box rendering primitive to the Extensions module, which should use its private shaders for rendering (from Extensions library resources) and support setting custom cube-texture images from user code.

Tutorials do not start on MacOS because of command line parsing error

When macOS bundled application is launched from Finder, MacOS assigns it a unique process serial number (PSN) and passes it to application as a command line argument, for example "-psn_0_8423432" (see description on stack overflow). When cxxopts tries to parse command line with psn argument it throws OptionException "Argument โ€˜-psn_0_8423432โ€™ starts with a - but has incorrect syntax". When application is started from Terminal by full path to executable inside bundle it works normally because there is no psn argument in command line options.

Related issue created on cxxopts project: jarro2783/cxxopts#171

Render Context Heads Up Display (HUD)

Implement HeadsUpDisplay user interface component for rendering text on screen with common rendering statistics and information of RenderContext.

Compute pipeline support

Support execution of compute shaders with Methane Kit. Add compute pipeline interfaces to Graphics Core module along with DX12 and Metal implementations:

  • ComputeCommandList
  • ComputeState
  • Shader::Type::Compute

Cross-platform text rendering

Implement cross-platform approach to building font atlas and using it for cross-platform text rendering. Font atlas generation could use Freetype library. Text renderer should be a part of module Graphics/Extensions.

[VS Build] Install target is broken

Attempt to run any CMake install target leads to the error described below:

CMake Error at Externals/Nowide/cmake_install.cmake:51 (file):
    file INSTALL cannot find
    "C:/Users/sys_avctests/Documents/MethaneKit/Build/Output/VisualStudio/x64-Release/Build/Externals/Nowide/RelWithDebInfo/nowide0.pdb".
  Call Stack (most recent call first):
    Externals/cmake_install.cmake:41 (include)
    cmake_install.cmake:37 (include)

User interface library

Design and implement basic user interface library based on Graphics/Core module. UI library should include most common controls: Panel, Button, Label, etc.

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.