1.5 KiB
1.5 KiB
Shaders & Hot Reload
-
Locations
- Sources live under
shaders/and are compiled to.spvnext to the sources.
- Sources live under
-
Build integration
- CMake invokes
glslangValidator -Vfor*.vert,*.frag,*.comptargeting Vulkan 1.2. - Windows PowerShell helper
compile_shaders.ps1usesglslctargeting Vulkan 1.3 and supports additional stages:.mesh(-fshader-stage=mesh),.task, and ray tracing stages (.rgen,.rmiss,.rchit,.rahit,.rint,.rcall).
- Keep
glslangValidator/glslconPATHand ensure your Vulkan SDK is installed.
- CMake invokes
-
Hot reload
PipelineManager::hotReloadChanged()watches.spvmodification times.- Pipelines rebind the next frame when a shader file timestamp changes.
- ImGui → Pipelines window provides a manual “Reload Changed” button and lists currently registered pipelines.
-
Conventions
- Name SPIR‑V files with full extension, e.g.
fullscreen.vert.spv,deferred_lighting.frag.spv. - Use
EngineContext::getAssets()->shaderPath("<name>.spv")when registering pipelines. - Use sRGB formats for albedo textures and UNORM for PBR control textures (see
docs/asset_manager.md).
- Name SPIR‑V files with full extension, e.g.
-
Adding a pipeline (graphics)
- Fill
GraphicsPipelineCreateInfowith shader paths, descriptor set layouts, optional push constants, and aconfigure(PipelineBuilder&)callback to set topology, raster, depth/blend, and attachment formats. - Register with
PipelineManager::createGraphicsPipeline(name, info). Retrieve viagetGraphicsorgetMaterialPipeline.
- Fill