TheSpydog
6439516835
This change makes Refresh behave more like FNA and other rendering APIs, where user-side textures have a sample count instead of generating MSAA RTs on the fly. This should theoretically reduce memory consumption since subresource views no longer generate their own MSAA textures. Instead, each texture with a sample count > 1 now has a reference to an MSAA texture baked into the root texture itself, so views can just reference that. This also simplifies VulkanRenderTarget significantly, to the point where it's just a wrapper around VkImageView. We could probably remove the abstraction entirely at this point. Since VkRenderPass objects still require knowing the sample count, we can use the first bound texture's sample count. This means users only have to specify sample count in two places -- the graphics pipeline, and the texture. Easy enough. I also noticed and fixed a bug with clear values with MSAA levels > 1. Co-authored-by: Caleb Cornett <caleb.cornett@outlook.com> Reviewed-on: MoonsideGames/Refresh#37 Co-authored-by: TheSpydog <thespydog@noreply.example.org> Co-committed-by: TheSpydog <thespydog@noreply.example.org> |
||
---|---|---|
Vulkan-Headers@1d99b835ec | ||
include | ||
shadercompiler | ||
src | ||
visualc | ||
.drone.yml | ||
.editorconfig | ||
.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: