shader: assemble point inputs for merged geometry shaders

This commit is contained in:
nmzik
2026-09-07 05:04:15 +04:00
parent f880c58ccc
commit 1fd07c2c83
4 changed files with 33 additions and 10 deletions
+6 -2
View File
@@ -79,14 +79,18 @@ struct ShaderMeshInputInfo: ShaderWorkgroupInputInfo {
uint32_t max_primitives = 0;
uint32_t provoking_vertex = 0;
[[nodiscard]] constexpr uint32_t InputPrimitiveSize() const {
return input_primitive == static_cast<uint32_t>(Prospero::PrimitiveType::kPointList) ? 1u : 3u;
}
[[nodiscard]] constexpr uint32_t InputPrimitiveStep() const {
return input_primitive == static_cast<uint32_t>(Prospero::PrimitiveType::kTriList) ? 3u : 1u;
}
[[nodiscard]] constexpr uint32_t InputPrimitiveCount(uint32_t vertices) const {
return vertices < 3u ? 0u : (vertices - 3u) / InputPrimitiveStep() + 1u;
const auto size = InputPrimitiveSize();
return vertices < size ? 0u : (vertices - size) / InputPrimitiveStep() + 1u;
}
[[nodiscard]] constexpr uint32_t InputVertexCount(uint32_t primitives) const {
return primitives == 0u ? 0u : (primitives - 1u) * InputPrimitiveStep() + 3u;
return primitives == 0u ? 0u : (primitives - 1u) * InputPrimitiveStep() + InputPrimitiveSize();
}
};