// Copyright (C) 2021 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include #include namespace Nz { inline MaterialSettings::MaterialSettings() : MaterialSettings(Builder{}) { } inline MaterialSettings::MaterialSettings(Builder data) : m_data(std::move(data)) { RenderPipelineLayoutInfo info; for (const Texture& textureInfo : m_data.textures) { info.bindings.push_back({ 0, textureInfo.bindingIndex, ShaderBindingType::Texture, textureInfo.shaderStages }); } for (const UniformBlock& ubo : m_data.uniformBlocks) { info.bindings.push_back({ 0, ubo.bindingIndex, ShaderBindingType::UniformBuffer, ubo.shaderStages }); } for (const SharedUniformBlock& ubo : m_data.sharedUniformBlocks) { info.bindings.push_back({ 0, ubo.bindingIndex, ShaderBindingType::UniformBuffer, ubo.shaderStages }); } m_pipelineLayout = Graphics::Instance()->GetRenderDevice()->InstantiateRenderPipelineLayout(std::move(info)); } inline auto MaterialSettings::GetBuilderData() const -> const Builder& { return m_data; } inline auto MaterialSettings::GetOptions() const -> const std::vector