cosmonaut
0e05ed6b34
We used to have monolithic uniform buffers on the VulkanRenderer object, but this was inefficient in the case of threaded usage. Now, we have a pool of uniform buffers. A uniform buffer is selected from the pool when a pipeline is bound. The uniform buffers are rotated upon presentation. Now pushing uniforms is now a concern of the command buffer instead of the pipeline. The pipeline should just always have been a static object anyway. Additionally, we now do extra buffer record-keeping so that buffer data can be updated after a bind/draw. Fence submission has also been restructured so that submissions don't cause unnecessary blocks. Now we assign one fence per submission, and we don't wait for fences until it's time to present. Reviewed-on: MoonsideGames/Refresh#1 Co-authored-by: cosmonaut <evan@moonside.games> Co-committed-by: cosmonaut <evan@moonside.games> |
||
---|---|---|
Vulkan-Headers@1d99b835ec | ||
include | ||
src | ||
visualc | ||
.drone.yml | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
README.md
This is Refresh, an XNA-inspired 3D graphics library with modern capabilities.
License
Refresh is licensed under the zlib license. See LICENSE for details.
About Refresh
Refresh is directly inspired by FNA3D and intended to be a replacement for XNA's Graphics namespace. XNA 4.0 is a powerful API, but its shader system is outdated and certain restrictions are awkward to handle in a modern context. In the way that XNA was "one step above" DX9, Refresh intends to be "one step above" Vulkan. It should map nicely to modern graphics APIs. Refresh will initially have a Vulkan runtime implementation. Support for other APIs like DX12 may come later. For shaders, we consume SPIR-V bytecode.
Dependencies
Refresh depends on SDL2 for portability. Refresh never explicitly uses the C runtime.
Building Refresh
For *nix platforms, use CMake:
$ mkdir build/
$ cd build/
$ cmake ../
$ make
For Windows, use the Refresh.sln in the "visualc" folder.
Want to contribute?
Issues can be reported and patches contributed via Github: