Graphics/MaterialInstance: Add UpdatePassesStates
This commit is contained in:
parent
55f2937678
commit
3edffa8399
|
|
@ -96,10 +96,17 @@ namespace Nz
|
|||
void SetValueProperty(std::size_t valueIndex, const MaterialSettings::Value& value);
|
||||
|
||||
void UpdateOptionValue(UInt32 optionHash, const nzsl::Ast::ConstantSingleValue& value);
|
||||
|
||||
void UpdatePassFlags(std::string_view passName, MaterialPassFlags materialFlags);
|
||||
inline void UpdatePassFlags(std::size_t passName, MaterialPassFlags materialFlags);
|
||||
|
||||
void UpdatePassStates(std::string_view passName, FunctionRef<bool(RenderStates&)> stateUpdater);
|
||||
template<typename F> void UpdatePassStates(std::size_t passIndex, F&& stateUpdater);
|
||||
|
||||
void UpdatePassesStates(std::initializer_list<std::string_view> passesName, FunctionRef<bool(RenderStates&)> stateUpdater);
|
||||
template<typename F> void UpdatePassesStates(std::initializer_list<std::size_t> passesIndex, F&& stateUpdater);
|
||||
template<typename F> void UpdatePassesStates(F&& stateUpdater, bool ignoreDisabled = true);
|
||||
|
||||
void UpdateTextureBinding(std::size_t textureBinding, std::shared_ptr<Texture> texture, std::shared_ptr<TextureSampler> textureSampler);
|
||||
void UpdateUniformBufferData(std::size_t uniformBufferIndex, std::size_t offset, std::size_t size, const void* data);
|
||||
|
||||
|
|
|
|||
|
|
@ -200,6 +200,25 @@ namespace Nz
|
|||
InvalidatePassPipeline(passIndex);
|
||||
}
|
||||
|
||||
template<typename F>
|
||||
void MaterialInstance::UpdatePassesStates(std::initializer_list<std::size_t> passesIndex, F&& stateUpdater)
|
||||
{
|
||||
for (std::size_t passIndex : passesIndex)
|
||||
UpdatePassStates(passIndex, stateUpdater);
|
||||
}
|
||||
|
||||
template<typename F>
|
||||
void MaterialInstance::UpdatePassesStates(F&& stateUpdater, bool ignoreDisabled)
|
||||
{
|
||||
for (std::size_t i = 0; i < m_passes.size(); ++i)
|
||||
{
|
||||
if (ignoreDisabled && !m_passes[i].enabled)
|
||||
continue;
|
||||
|
||||
UpdatePassStates(i, stateUpdater);
|
||||
}
|
||||
}
|
||||
|
||||
inline void MaterialInstance::InvalidatePassPipeline(std::size_t passIndex)
|
||||
{
|
||||
assert(passIndex < m_passes.size());
|
||||
|
|
|
|||
|
|
@ -253,6 +253,13 @@ namespace Nz
|
|||
return UpdatePassStates(passIndex, stateUpdater);
|
||||
}
|
||||
|
||||
void MaterialInstance::UpdatePassesStates(std::initializer_list<std::string_view> passesName, FunctionRef<bool(RenderStates&)> stateUpdater)
|
||||
{
|
||||
auto& materialPassRegistry = Graphics::Instance()->GetMaterialPassRegistry();
|
||||
for (std::string_view passName : passesName)
|
||||
UpdatePassStates(materialPassRegistry.GetPassIndex(passName), stateUpdater);
|
||||
}
|
||||
|
||||
void MaterialInstance::SetTextureProperty(std::size_t textureIndex, std::shared_ptr<Texture> texture)
|
||||
{
|
||||
assert(textureIndex < m_textureOverride.size());
|
||||
|
|
|
|||
Loading…
Reference in New Issue