Thank you for your interest in contributing to the Nabla Engine! Nabla is a high-performance rendering framework that leverages Vulkan, OptiX, and CUDA. This document provides guidelines to help you contribute effectively.
If you find a bug, please report it by opening an issue here. Include details such as:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected and actual results
- Any relevant logs or screenshots
If you have ideas for enhancements, please submit them as issues here. Describe:
- The feature you would like to see
- Why it would be beneficial
- Any relevant examples or mockups
We welcome pull requests for new features! See the Free Tasks to Take section for a list of ideas. When submitting a pull request:
- Ensure your code compiles
- Ensure it runs without issues at runtime
- Update documentation as necessary
Below are some tasks that are open for contribution. If you start working on a task, please open an issue to let us know. We can hire contributors if a pull request for the task is opened and merged by us. Follow Pull Request Process if you decide to contribute. The list may get updated, new tasks may be added and already completed deleted, so before you start working on any please make sure it's still free.
- Extend
nbl::system
to download textures and meshes over HTTP/URL - Mesh Shader Pipeline implementation and demo
- Raytracing Pipeline implementation and demo
- Perfect Hashing implementation
- Compute Frustum Culling in HLSL with Nabla Chad Append
- Merge Sort (Vulkan Compute)
- Radix Sort (Vulkan Compute)
- Bitonic Sort (Vulkan Compute)
- Merge Path (Vulkan Compute)
- GPU flip fluid simulation task idea -> discord thread for more info
- Exact Distance Transform on a GPU
- Light Scattering Effects Using Epipolar Sampling and 1D Min/Max Binary Trees
- Cone Map Generation
Issues also count as free tasks. We also have old issues from previous generation here.
If you have questions about the list, you can ask directly on our Discord server or open an issue here.
- Do not open pull requests which "fix" code formatting, the use of
NULL
, C-style casts, C++11, exceptions, or directory structure. This is a "DO NOT WANT"(TM) ESPECIALLY for your first pull requests. If your need to do this is so burning, then provide us with a pull request containing a script to do this instead. - Ensure you follow our Implementing Features standards.
- Split your larger contributions into as many separate independent features as practical.
- Fork from the
master
branch or the last stable tag (with exceptions for some features). - Develop your contribution in your fork or a separate branch.
- Comment your code, even just a tiny bit.
- Supply an example which also serves as a test to the
examples_test
folder so that we can see how to use your contribution and that it works. - Open a pull request with just the code relevant to that one feature.
- Engage in discussion in the pull request and polish your submission while taking some really minor and mild constructive criticism.
- Get your pull request merged.
- If in doubt, look at point 1.
Join our Discord server to connect with other contributors. It's the first place to go for questions and discussions about the project.
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.