inexorgame / vulkan-renderer

A new 3D game engine for Linux and Windows using C++20 and Vulkan API 1.3, in very early but ongoing development
https://inexor.org
MIT License
790 stars 34 forks source link

Implement basic SPIR-V reflection #418

Open yeetari opened 3 years ago

yeetari commented 3 years ago

This PR introduces SPIR-V reflection to parse the execution stage and push constant size from each shader. We can take this further and extract more things like descriptor set layouts in the future.

IAmNotHanni commented 3 years ago

Maybe change title to "refactoring" or "improvements", otherwise people might think it's about actual reflection in rendering :D

IAmNotHanni commented 1 year ago

https://www.khronos.org/assets/uploads/developers/library/2016-vulkan-devday-uk/4-Using-spir-v-with-spirv-cross.pdf

IAmNotHanni commented 1 year ago

I think I will take over this pull request and implement it based on spirv-cross. I mentioned on Discord already that I don't see much sense in writing the shader reflection code ourselves, even though spirv-cross might be more massive of a library than we need :) Also, it looks like it's being tested and maintained continuously.