/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/RendererCore/ShaderCompiler/Implementation/PermutationGenerator.cpp
58 строк
1 KB
C-Core
Array usage cleanup (#1864)
11 мар 2026, 23:44
Не верифицирован
11 мар 2026, 23:44
f7cb730
Код
Авторство
О чём код?
#include <RendererCore/RendererCorePCH.h> #include <RendererCore/ShaderCompiler/PermutationGenerator.h> void ezPermutationGenerator::Clear() { m_Permutations.Clear(); } void ezPermutationGenerator::RemovePermutations(const ezHashedString& sPermVarName) { m_Permutations.Remove(sPermVarName); } void ezPermutationGenerator::AddPermutation(const ezHashedString& sName, const ezHashedString& sValue) { EZ_ASSERT_DEV(!sName.IsEmpty(), ""); EZ_ASSERT_DEV(!sValue.IsEmpty(), ""); m_Permutations[sName].Insert(sValue); } ezUInt32 ezPermutationGenerator::GetPermutationCount() const { ezUInt32 uiPermutations = 1; for (auto it = m_Permutations.GetIterator(); it.IsValid(); ++it) { uiPermutations *= it.Value().GetCount(); } return uiPermutations; } void ezPermutationGenerator::GetPermutation(ezUInt32 uiPerm, ezDynamicArray<ezPermutationVar>& out_permVars) const { out_permVars.Clear(); for (auto itVariable = m_Permutations.GetIterator(); itVariable.IsValid(); ++itVariable) { const ezUInt32 uiValues = itVariable.Value().GetCount(); ezUInt32 uiUseValue = uiPerm % uiValues; uiPerm /= uiValues; auto itValue = itVariable.Value().GetIterator(); for (; uiUseValue > 0; --uiUseValue) { ++itValue; } ezPermutationVar& pv = out_permVars.ExpandAndGetRef(); pv.m_sName = itVariable.Key(); pv.m_sValue = itValue.Key(); } }