methanepowered / methanekit Goto Github PK
View Code? Open in Web Editor NEW๐ฒ 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
๐ฒ 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
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.
Choose 3rd-party mesh models loader and implement loading in a tutorial.
Implement cube-map textures support in DirectX 12 and Metal.
Instead, newly started application should appear in foreground.
Write documentation about using Program Resource Bindings based on code of Textured Cube tutorial.
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.
Color/depth/stencil frame buffers clearing should be optionally configurable via Context::Settings and in Graphics::App base class. Asteroids sample does not need frame buffer clearing because it already renders sky-box primitive to full-screen.
Add command line parameters to setup app and context configuration parameters on startup. Command line parser library should be chosen and added to Externals.
Setup continuous integration system integrated with GitHub project (Travis for example).
Implement procedural icosahedron mesh generation with subdivision and spherification support in order to generate geo-spheres with desired details.
Add support for texture arrays
Create controller to change graphics context parameters in runtime:
Fix DirectX 12 debug-runtime warnings related to incorrect setup of resource transition barriers in Shadow Cube tutorial.
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.
Support creating multiple windows for application with independent graphic contexts.
Tracy realtime profiler: https://github.com/wolfpld/tracy
Manual: https://github.com/wolfpld/tracy/releases/download/v0.6.3/tracy.pdf
Write documentation about using Render Pass and Render State based on code of Shadow Cube tutorial.
Implement auto-generation of texture mip-map levels.
Support full screen mode for applications with CTRL+F hotkey for switching to it.
Develop "cows" sample demonstraing mesh loading, instancing and depth of field postprocessing with simple Poisson disk technique.
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
Methane libraries should allow adding dedicated shader/texture resources and using them from the library code (same as done for applications now).
Implement HeadsUpDisplay
user interface component for rendering text on screen with common rendering statistics and information of RenderContext
.
Support iOS platform in Platform App module and enable graphics rendering with Metal backend.
Replace non-official fork of boost::nowide with official repository built in standalone mode: https://github.com/boostorg/nowide
Investigate issue of non-smooth rendering in unsync mode (VSync=OFF: render by timer) and fix hiccups.
Support parallel command list calls.
Create Asteroids sample demonstrating parallel rendering.
https://app.leanboard.io/board/c55368cd-cd1e-41a9-a4fc-17c69a34066b
Support execution of compute shaders with Methane Kit. Add compute pipeline interfaces to Graphics Core module along with DX12 and Metal implementations:
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.
Implement user input with mouse and keyboard in Methane application infrastructure. Start with GLFW implementation and implement similar approach in object-oriented style extending module Platform/App.
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)
Support program uniforms binding to resources such as constant buffers with byte offset specification inside of it.
Implement Vulkan API backend in Graphics Core module.
Design and implement basic user interface library based on Graphics/Core module. UI library should include most common controls: Panel, Button, Label, etc.
Implement dynamic library for Methane Kit.
Minimize the window, as the result error message is displayed and application is closed.
Add Linux platform support to Platform App and Platform Input modules.
Instrument Platform modules with ITT tasks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.