// Copyright (C) 2017 Jérôme Leclercq // 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; Graphics::FillViewerPipelineLayout(info); Graphics::FillWorldPipelineLayout(info); for (const Texture& textureInfo : m_data.textures) { info.bindings.push_back({ Graphics::MaterialBindingSet, textureInfo.bindingIndex, ShaderBindingType::Texture, textureInfo.shaderStages }); } for (const UniformBlock& ubo : m_data.uniformBlocks) { info.bindings.push_back({ Graphics::MaterialBindingSet, ubo.bindingIndex, ShaderBindingType::UniformBuffer, ubo.shaderStages }); } for (const SharedUniformBlock& ubo : m_data.sharedUniformBlocks) { info.bindings.push_back({ Graphics::MaterialBindingSet, 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