<commit_before># Granite

Granite is my personal Vulkan renderer project.

## Why release this?

The most interesting part of this project compared to the other open-source Vulkan renderers so far
is probably the render graph implementation.

The project is on GitHub in the hope it might be useful as-is
for learning purposes or generating implementation ideas.

### Disclaimer

**Do not expect any support or help.
Pull requests will likely be ignored or dismissed.**

## Low-level rendering backend

The rendering backend focuses entirely on Vulkan,
so it reuses Vulkan enums and data structures where appropriate.
However, the API greatly simplifies the more painful points of writing straight Vulkan.
It's not designed to be the fastest renderer ever made, it's likely a happy middle ground between
"perfect" Vulkan and OpenGL/D3D11 w.r.t. CPU overhead.

- Memory manager
- Deferred destruction and release of API objects and memory
- Automatic descriptor set management
- Linear allocators for vertex/index/uniform/staging data
- Automatic pipeline creation
- Command buffer tracks state similar to older APIs
- Uses TRANSFER-queue on desktop to upload linear-allocated vertex/index/uniform data in bulk
- Vulkan GLSL for shaders, shaders are compiled in runtime with shaderc
- Pipeline cache save-to-disk and reload
- Easier-to-use fences and semaphores

Missing bits:
- Multithreaded rendering
- Precompile all shaders to optimized SPIR-V

Implementation is found in `vulkan/`.

## High-level rendering backend<commit_msg>Mention MSAA resolve in render graph.<commit_after># Granite

Granite is my personal Vulkan renderer project.

## Why release this?

The most interesting part of this project compared to the other open-source Vulkan renderers so far
is probably the render graph implementation.

The project is on GitHub in the hope it might be useful as-is
for learning purposes or generating implementation ideas.

### Disclaimer

**Do not expect any support or help.
Pull requests will likely be ignored or dismissed.**

## Low-level rendering backend

The rendering backend focuses entirely on Vulkan,
so it reuses Vulkan enums and data structures where appropriate.
However, the API greatly simplifies the more painful points of writing straight Vulkan.
It's not designed to be the fastest renderer ever made, it's likely a happy middle ground between
"perfect" Vulkan and OpenGL/D3D11 w.r.t. CPU overhead.

- Memory manager
- Deferred destruction and release of API objects and memory
- Automatic descriptor set management
- Automatic, optimal multisampled resolve with pResolveAttachments
- Linear allocators for vertex/index/uniform/staging data
- Automatic pipeline creation
- Command buffer tracks state similar to older APIs
- Uses TRANSFER-queue on desktop to upload linear-allocated vertex/index/uniform data in bulk
- Vulkan GLSL for shaders, shaders are compiled in runtime with shaderc
- Pipeline cache save-to-disk and reload
- Easier-to-use fences and semaphores

Missing bits:
- Multithreaded rendering
- Precompile all shaders to optimized SPIR-V

Implementation is found in `vulkan/`.

## High-level rendering backend
{'fraction_non_alphanumeric': 0.04601713741669311, 'fraction_numerical': 0.001904157410345922, 'mean_word_length': 4.559082892416225, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2156250', 'n_tokens_mistral': 831, 'n_tokens_neox': 790, 'n_words': 424}