Graphics: Rename Material to MaterialPass
This commit is contained in:
parent
f0ea623408
commit
5669b5bc60
|
|
@ -189,7 +189,7 @@ int main()
|
||||||
|
|
||||||
auto customMatSettings = std::make_shared<Nz::MaterialSettings>(std::move(customSettings));
|
auto customMatSettings = std::make_shared<Nz::MaterialSettings>(std::move(customSettings));
|
||||||
|
|
||||||
std::shared_ptr<Nz::Material> spaceshipMat = std::make_shared<Nz::Material>(customMatSettings);
|
std::shared_ptr<Nz::MaterialPass> spaceshipMat = std::make_shared<Nz::MaterialPass>(customMatSettings);
|
||||||
spaceshipMat->EnableDepthBuffer(true);
|
spaceshipMat->EnableDepthBuffer(true);
|
||||||
{
|
{
|
||||||
Nz::BasicMaterial basicMat(*spaceshipMat);
|
Nz::BasicMaterial basicMat(*spaceshipMat);
|
||||||
|
|
@ -198,7 +198,7 @@ int main()
|
||||||
basicMat.SetDiffuseMap(Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
basicMat.SetDiffuseMap(Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Nz::Material> planeMat = std::make_shared<Nz::Material>(customMatSettings);
|
std::shared_ptr<Nz::MaterialPass> planeMat = std::make_shared<Nz::MaterialPass>(customMatSettings);
|
||||||
planeMat->EnableDepthBuffer(true);
|
planeMat->EnableDepthBuffer(true);
|
||||||
{
|
{
|
||||||
Nz::BasicMaterial basicMat(*planeMat);
|
Nz::BasicMaterial basicMat(*planeMat);
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ int main()
|
||||||
texParams.renderDevice = device;
|
texParams.renderDevice = device;
|
||||||
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
||||||
|
|
||||||
std::shared_ptr<Nz::Material> material = std::make_shared<Nz::Material>(Nz::BasicMaterial::GetSettings());
|
std::shared_ptr<Nz::MaterialPass> material = std::make_shared<Nz::MaterialPass>(Nz::BasicMaterial::GetSettings());
|
||||||
material->EnableDepthBuffer(true);
|
material->EnableDepthBuffer(true);
|
||||||
material->EnableFaceCulling(true);
|
material->EnableFaceCulling(true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ int main()
|
||||||
texParams.renderDevice = device;
|
texParams.renderDevice = device;
|
||||||
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
||||||
|
|
||||||
std::shared_ptr<Nz::Material> material = std::make_shared<Nz::Material>(Nz::BasicMaterial::GetSettings());
|
std::shared_ptr<Nz::MaterialPass> material = std::make_shared<Nz::MaterialPass>(Nz::BasicMaterial::GetSettings());
|
||||||
material->EnableDepthBuffer(true);
|
material->EnableDepthBuffer(true);
|
||||||
material->EnableDepthClamp(true);
|
material->EnableDepthClamp(true);
|
||||||
material->EnableFaceCulling(true);
|
material->EnableFaceCulling(true);
|
||||||
|
|
@ -111,7 +111,7 @@ int main()
|
||||||
|
|
||||||
auto shipCollider = std::make_shared<Nz::ConvexCollider3D>(vertices, vertexMapper.GetVertexCount(), 0.01f);
|
auto shipCollider = std::make_shared<Nz::ConvexCollider3D>(vertices, vertexMapper.GetVertexCount(), 0.01f);
|
||||||
|
|
||||||
std::shared_ptr<Nz::Material> colliderMat = std::make_shared<Nz::Material>(Nz::BasicMaterial::GetSettings());
|
std::shared_ptr<Nz::MaterialPass> colliderMat = std::make_shared<Nz::MaterialPass>(Nz::BasicMaterial::GetSettings());
|
||||||
colliderMat->EnableDepthBuffer(true);
|
colliderMat->EnableDepthBuffer(true);
|
||||||
colliderMat->SetPrimitiveMode(Nz::PrimitiveMode::LineList);
|
colliderMat->SetPrimitiveMode(Nz::PrimitiveMode::LineList);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
#include <Nazara/Graphics/GraphicalMesh.hpp>
|
#include <Nazara/Graphics/GraphicalMesh.hpp>
|
||||||
#include <Nazara/Graphics/Graphics.hpp>
|
#include <Nazara/Graphics/Graphics.hpp>
|
||||||
#include <Nazara/Graphics/InstancedRenderable.hpp>
|
#include <Nazara/Graphics/InstancedRenderable.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Graphics/MaterialPipeline.hpp>
|
#include <Nazara/Graphics/MaterialPipeline.hpp>
|
||||||
#include <Nazara/Graphics/MaterialSettings.hpp>
|
#include <Nazara/Graphics/MaterialSettings.hpp>
|
||||||
#include <Nazara/Graphics/Model.hpp>
|
#include <Nazara/Graphics/Model.hpp>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#define NAZARA_BASIC_MATERIAL_HPP
|
#define NAZARA_BASIC_MATERIAL_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequisites.hpp>
|
#include <Nazara/Prerequisites.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Nz
|
||||||
public:
|
public:
|
||||||
struct UniformOffsets;
|
struct UniformOffsets;
|
||||||
|
|
||||||
BasicMaterial(Material& material);
|
BasicMaterial(MaterialPass& material);
|
||||||
|
|
||||||
inline void EnableAlphaTest(bool alphaTest);
|
inline void EnableAlphaTest(bool alphaTest);
|
||||||
|
|
||||||
|
|
@ -72,7 +72,7 @@ namespace Nz
|
||||||
static bool Initialize();
|
static bool Initialize();
|
||||||
static void Uninitialize();
|
static void Uninitialize();
|
||||||
|
|
||||||
Material& m_material;
|
MaterialPass& m_material;
|
||||||
std::size_t m_uniformBlockIndex;
|
std::size_t m_uniformBlockIndex;
|
||||||
OptionIndexes m_optionIndexes;
|
OptionIndexes m_optionIndexes;
|
||||||
TextureIndexes m_textureIndexes;
|
TextureIndexes m_textureIndexes;
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
#include <Nazara/Graphics/Config.hpp>
|
#include <Nazara/Graphics/Config.hpp>
|
||||||
#include <Nazara/Graphics/FramePipeline.hpp>
|
#include <Nazara/Graphics/FramePipeline.hpp>
|
||||||
#include <Nazara/Graphics/InstancedRenderable.hpp>
|
#include <Nazara/Graphics/InstancedRenderable.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Renderer/ShaderBinding.hpp>
|
#include <Nazara/Renderer/ShaderBinding.hpp>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
@ -44,14 +44,14 @@ namespace Nz
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BakedFrameGraph BuildFrameGraph();
|
BakedFrameGraph BuildFrameGraph();
|
||||||
void RegisterMaterial(Material* material);
|
void RegisterMaterial(MaterialPass* material);
|
||||||
void UnregisterMaterial(Material* material);
|
void UnregisterMaterial(MaterialPass* material);
|
||||||
|
|
||||||
struct MaterialData
|
struct MaterialData
|
||||||
{
|
{
|
||||||
std::size_t usedCount = 0;
|
std::size_t usedCount = 0;
|
||||||
|
|
||||||
NazaraSlot(Material, OnMaterialInvalidated, onMaterialInvalided);
|
NazaraSlot(MaterialPass, OnMaterialInvalidated, onMaterialInvalided);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RenderableData
|
struct RenderableData
|
||||||
|
|
@ -68,10 +68,10 @@ namespace Nz
|
||||||
|
|
||||||
std::size_t m_forwardPass;
|
std::size_t m_forwardPass;
|
||||||
std::unordered_map<AbstractViewer*, ViewerData> m_viewers;
|
std::unordered_map<AbstractViewer*, ViewerData> m_viewers;
|
||||||
std::unordered_map<Material*, MaterialData> m_materials;
|
std::unordered_map<MaterialPass*, MaterialData> m_materials;
|
||||||
std::unordered_map<WorldInstance*, std::unordered_map<const InstancedRenderable*, RenderableData>> m_renderables;
|
std::unordered_map<WorldInstance*, std::unordered_map<const InstancedRenderable*, RenderableData>> m_renderables;
|
||||||
std::unordered_set<AbstractViewer*> m_invalidatedViewerInstances;
|
std::unordered_set<AbstractViewer*> m_invalidatedViewerInstances;
|
||||||
std::unordered_set<Material*> m_invalidatedMaterials;
|
std::unordered_set<MaterialPass*> m_invalidatedMaterials;
|
||||||
std::unordered_set<WorldInstance*> m_invalidatedWorldInstances;
|
std::unordered_set<WorldInstance*> m_invalidatedWorldInstances;
|
||||||
BakedFrameGraph m_bakedFrameGraph;
|
BakedFrameGraph m_bakedFrameGraph;
|
||||||
bool m_rebuildFrameGraph;
|
bool m_rebuildFrameGraph;
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
class CommandBufferBuilder;
|
class CommandBufferBuilder;
|
||||||
class Material;
|
class MaterialPass;
|
||||||
class WorldInstance;
|
class WorldInstance;
|
||||||
|
|
||||||
class NAZARA_GRAPHICS_API InstancedRenderable
|
class NAZARA_GRAPHICS_API InstancedRenderable
|
||||||
|
|
@ -28,13 +28,13 @@ namespace Nz
|
||||||
|
|
||||||
virtual void Draw(CommandBufferBuilder& commandBuffer) const = 0;
|
virtual void Draw(CommandBufferBuilder& commandBuffer) const = 0;
|
||||||
|
|
||||||
virtual const std::shared_ptr<Material>& GetMaterial(std::size_t i) const = 0;
|
virtual const std::shared_ptr<MaterialPass>& GetMaterial(std::size_t i) const = 0;
|
||||||
virtual std::size_t GetMaterialCount() const = 0;
|
virtual std::size_t GetMaterialCount() const = 0;
|
||||||
|
|
||||||
InstancedRenderable& operator=(const InstancedRenderable&) = delete;
|
InstancedRenderable& operator=(const InstancedRenderable&) = delete;
|
||||||
InstancedRenderable& operator=(InstancedRenderable&&) noexcept = default;
|
InstancedRenderable& operator=(InstancedRenderable&&) noexcept = default;
|
||||||
|
|
||||||
NazaraSignal(OnMaterialInvalidated, InstancedRenderable* /*instancedRenderable*/, std::size_t /*materialIndex*/, const std::shared_ptr<Material>& /*newMaterial*/);
|
NazaraSignal(OnMaterialInvalidated, InstancedRenderable* /*instancedRenderable*/, std::size_t /*materialIndex*/, const std::shared_ptr<MaterialPass>& /*newMaterial*/);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifndef NAZARA_BASE_MATERIAL_HPP
|
#ifndef NAZARA_MATERIAL_PASS_HPP
|
||||||
#define NAZARA_BASE_MATERIAL_HPP
|
#define NAZARA_MATERIAL_PASS_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequisites.hpp>
|
#include <Nazara/Prerequisites.hpp>
|
||||||
#include <Nazara/Core/Color.hpp>
|
#include <Nazara/Core/Color.hpp>
|
||||||
|
|
@ -30,11 +30,11 @@ namespace Nz
|
||||||
class CommandBufferBuilder;
|
class CommandBufferBuilder;
|
||||||
class RenderFrame;
|
class RenderFrame;
|
||||||
|
|
||||||
class NAZARA_GRAPHICS_API Material : public Resource
|
class NAZARA_GRAPHICS_API MaterialPass : public Resource
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Material(std::shared_ptr<const MaterialSettings> settings);
|
MaterialPass(std::shared_ptr<const MaterialSettings> settings);
|
||||||
inline ~Material();
|
inline ~MaterialPass();
|
||||||
|
|
||||||
inline void Configure(std::shared_ptr<MaterialPipeline> pipeline);
|
inline void Configure(std::shared_ptr<MaterialPipeline> pipeline);
|
||||||
inline void Configure(const MaterialPipelineInfo& pipelineInfo);
|
inline void Configure(const MaterialPipelineInfo& pipelineInfo);
|
||||||
|
|
@ -101,8 +101,8 @@ namespace Nz
|
||||||
bool Update(RenderFrame& renderFrame, CommandBufferBuilder& builder);
|
bool Update(RenderFrame& renderFrame, CommandBufferBuilder& builder);
|
||||||
|
|
||||||
// Signals:
|
// Signals:
|
||||||
NazaraSignal(OnMaterialInvalidated, const Material* /*material*/);
|
NazaraSignal(OnMaterialInvalidated, const MaterialPass* /*material*/);
|
||||||
NazaraSignal(OnMaterialRelease, const Material* /*material*/);
|
NazaraSignal(OnMaterialRelease, const MaterialPass* /*material*/);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline void InvalidatePipeline();
|
inline void InvalidatePipeline();
|
||||||
|
|
@ -138,6 +138,6 @@ namespace Nz
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <Nazara/Graphics/Material.inl>
|
#include <Nazara/Graphics/MaterialPass.inl>
|
||||||
|
|
||||||
#endif // NAZARA_BASE_MATERIAL_HPP
|
#endif // NAZARA_MATERIAL_PASS_HPP
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// This file is part of the "Nazara Engine - Graphics module"
|
// This file is part of the "Nazara Engine - Graphics module"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Core/ErrorFlags.hpp>
|
#include <Nazara/Core/ErrorFlags.hpp>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <Nazara/Graphics/Debug.hpp>
|
#include <Nazara/Graphics/Debug.hpp>
|
||||||
|
|
@ -14,7 +14,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see OnMaterialRelease
|
* \see OnMaterialRelease
|
||||||
*/
|
*/
|
||||||
inline Material::~Material()
|
inline MaterialPass::~MaterialPass()
|
||||||
{
|
{
|
||||||
OnMaterialRelease(this);
|
OnMaterialRelease(this);
|
||||||
}
|
}
|
||||||
|
|
@ -28,7 +28,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see Configure
|
* \see Configure
|
||||||
*/
|
*/
|
||||||
inline void Material::Configure(std::shared_ptr<MaterialPipeline> pipeline)
|
inline void MaterialPass::Configure(std::shared_ptr<MaterialPipeline> pipeline)
|
||||||
{
|
{
|
||||||
NazaraAssert(pipeline, "Invalid material pipeline");
|
NazaraAssert(pipeline, "Invalid material pipeline");
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see Configure
|
* \see Configure
|
||||||
*/
|
*/
|
||||||
inline void Material::Configure(const MaterialPipelineInfo& pipelineInfo)
|
inline void MaterialPass::Configure(const MaterialPipelineInfo& pipelineInfo)
|
||||||
{
|
{
|
||||||
m_pipelineInfo = pipelineInfo;
|
m_pipelineInfo = pipelineInfo;
|
||||||
|
|
||||||
|
|
@ -67,7 +67,7 @@ namespace Nz
|
||||||
* \see SetDstBlend
|
* \see SetDstBlend
|
||||||
* \see SetSrcBlend
|
* \see SetSrcBlend
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableBlending(bool blending)
|
inline void MaterialPass::EnableBlending(bool blending)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.blending = blending;
|
m_pipelineInfo.blending = blending;
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see IsColorWritingEnabled
|
* \see IsColorWritingEnabled
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableColorWrite(bool colorWrite)
|
inline void MaterialPass::EnableColorWrite(bool colorWrite)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.colorWrite = colorWrite;
|
m_pipelineInfo.colorWrite = colorWrite;
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ namespace Nz
|
||||||
* \see IsDepthBufferEnabled
|
* \see IsDepthBufferEnabled
|
||||||
* \see SetDepthFunc
|
* \see SetDepthFunc
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableDepthBuffer(bool depthBuffer)
|
inline void MaterialPass::EnableDepthBuffer(bool depthBuffer)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.depthBuffer = depthBuffer;
|
m_pipelineInfo.depthBuffer = depthBuffer;
|
||||||
|
|
||||||
|
|
@ -130,7 +130,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see IsDepthClampEnabled
|
* \see IsDepthClampEnabled
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableDepthClamp(bool depthClamp)
|
inline void MaterialPass::EnableDepthClamp(bool depthClamp)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.depthClamp = depthClamp;
|
m_pipelineInfo.depthClamp = depthClamp;
|
||||||
|
|
||||||
|
|
@ -153,7 +153,7 @@ namespace Nz
|
||||||
* \see EnableDepthBuffer
|
* \see EnableDepthBuffer
|
||||||
* \see IsDepthWriteEnabled
|
* \see IsDepthWriteEnabled
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableDepthWrite(bool depthWrite)
|
inline void MaterialPass::EnableDepthWrite(bool depthWrite)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.depthWrite = depthWrite;
|
m_pipelineInfo.depthWrite = depthWrite;
|
||||||
|
|
||||||
|
|
@ -175,14 +175,14 @@ namespace Nz
|
||||||
* \see IsFaceCullingEnabled
|
* \see IsFaceCullingEnabled
|
||||||
* \see SetFaceCulling
|
* \see SetFaceCulling
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableFaceCulling(bool faceCulling)
|
inline void MaterialPass::EnableFaceCulling(bool faceCulling)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.faceCulling = faceCulling;
|
m_pipelineInfo.faceCulling = faceCulling;
|
||||||
|
|
||||||
InvalidatePipeline();
|
InvalidatePipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::EnableOption(std::size_t optionIndex, bool enable)
|
inline void MaterialPass::EnableOption(std::size_t optionIndex, bool enable)
|
||||||
{
|
{
|
||||||
if (TestBit<UInt64>(m_enabledOptions, optionIndex) != enable)
|
if (TestBit<UInt64>(m_enabledOptions, optionIndex) != enable)
|
||||||
{
|
{
|
||||||
|
|
@ -203,7 +203,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see IsScissorTestEnabled
|
* \see IsScissorTestEnabled
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableScissorTest(bool scissorTest)
|
inline void MaterialPass::EnableScissorTest(bool scissorTest)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.scissorTest = scissorTest;
|
m_pipelineInfo.scissorTest = scissorTest;
|
||||||
|
|
||||||
|
|
@ -221,7 +221,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see IsStencilTestEnabled
|
* \see IsStencilTestEnabled
|
||||||
*/
|
*/
|
||||||
inline void Material::EnableStencilTest(bool stencilTest)
|
inline void MaterialPass::EnableStencilTest(bool stencilTest)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.stencilTest = stencilTest;
|
m_pipelineInfo.stencilTest = stencilTest;
|
||||||
|
|
||||||
|
|
@ -236,7 +236,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see GetPipeline
|
* \see GetPipeline
|
||||||
*/
|
*/
|
||||||
inline void Material::EnsurePipelineUpdate() const
|
inline void MaterialPass::EnsurePipelineUpdate() const
|
||||||
{
|
{
|
||||||
if (!m_pipelineUpdated)
|
if (!m_pipelineUpdated)
|
||||||
UpdatePipeline();
|
UpdatePipeline();
|
||||||
|
|
@ -250,37 +250,37 @@ namespace Nz
|
||||||
* \see EnableDepthTest
|
* \see EnableDepthTest
|
||||||
* \see SetAmbientColor
|
* \see SetAmbientColor
|
||||||
*/
|
*/
|
||||||
inline RendererComparison Material::GetDepthCompareFunc() const
|
inline RendererComparison MaterialPass::GetDepthCompareFunc() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.depthCompare;
|
return m_pipelineInfo.depthCompare;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendEquation Material::GetBlendAlphaModeEquation() const
|
inline BlendEquation MaterialPass::GetBlendAlphaModeEquation() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.modeAlpha;
|
return m_pipelineInfo.blend.modeAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendEquation Material::GetBlendColorModeEquation() const
|
inline BlendEquation MaterialPass::GetBlendColorModeEquation() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.modeColor;
|
return m_pipelineInfo.blend.modeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendFunc Material::GetBlendDstAlphaFunc() const
|
inline BlendFunc MaterialPass::GetBlendDstAlphaFunc() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.dstAlpha;
|
return m_pipelineInfo.blend.dstAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendFunc Material::GetBlendDstColorFunc() const
|
inline BlendFunc MaterialPass::GetBlendDstColorFunc() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.dstColor;
|
return m_pipelineInfo.blend.dstColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendFunc Material::GetBlendSrcAlphaFunc() const
|
inline BlendFunc MaterialPass::GetBlendSrcAlphaFunc() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.srcAlpha;
|
return m_pipelineInfo.blend.srcAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline BlendFunc Material::GetBlendSrcColorFunc() const
|
inline BlendFunc MaterialPass::GetBlendSrcColorFunc() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blend.srcColor;
|
return m_pipelineInfo.blend.srcColor;
|
||||||
}
|
}
|
||||||
|
|
@ -292,7 +292,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see SetFaceCulling
|
* \see SetFaceCulling
|
||||||
*/
|
*/
|
||||||
inline FaceSide Material::GetFaceCulling() const
|
inline FaceSide MaterialPass::GetFaceCulling() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.cullingSide;
|
return m_pipelineInfo.cullingSide;
|
||||||
}
|
}
|
||||||
|
|
@ -301,7 +301,7 @@ namespace Nz
|
||||||
* \brief Gets the face filling
|
* \brief Gets the face filling
|
||||||
* \return Current face filling
|
* \return Current face filling
|
||||||
*/
|
*/
|
||||||
inline FaceFilling Material::GetFaceFilling() const
|
inline FaceFilling MaterialPass::GetFaceFilling() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.faceFilling;
|
return m_pipelineInfo.faceFilling;
|
||||||
}
|
}
|
||||||
|
|
@ -310,7 +310,7 @@ namespace Nz
|
||||||
* \brief Gets the line width of this material
|
* \brief Gets the line width of this material
|
||||||
* \return Line width
|
* \return Line width
|
||||||
*/
|
*/
|
||||||
inline float Material::GetLineWidth() const
|
inline float MaterialPass::GetLineWidth() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.lineWidth;
|
return m_pipelineInfo.lineWidth;
|
||||||
}
|
}
|
||||||
|
|
@ -319,7 +319,7 @@ namespace Nz
|
||||||
* \brief Gets the render states
|
* \brief Gets the render states
|
||||||
* \return Constant reference to the render states
|
* \return Constant reference to the render states
|
||||||
*/
|
*/
|
||||||
inline const std::shared_ptr<MaterialPipeline>& Material::GetPipeline() const
|
inline const std::shared_ptr<MaterialPipeline>& MaterialPass::GetPipeline() const
|
||||||
{
|
{
|
||||||
EnsurePipelineUpdate();
|
EnsurePipelineUpdate();
|
||||||
|
|
||||||
|
|
@ -330,7 +330,7 @@ namespace Nz
|
||||||
* \brief Gets the pipeline informations
|
* \brief Gets the pipeline informations
|
||||||
* \return Constant reference to the pipeline info
|
* \return Constant reference to the pipeline info
|
||||||
*/
|
*/
|
||||||
inline const MaterialPipelineInfo& Material::GetPipelineInfo() const
|
inline const MaterialPipelineInfo& MaterialPass::GetPipelineInfo() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo;
|
return m_pipelineInfo;
|
||||||
}
|
}
|
||||||
|
|
@ -339,17 +339,17 @@ namespace Nz
|
||||||
* \brief Gets the point size of this material
|
* \brief Gets the point size of this material
|
||||||
* \return Point size
|
* \return Point size
|
||||||
*/
|
*/
|
||||||
inline float Material::GetPointSize() const
|
inline float MaterialPass::GetPointSize() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.pointSize;
|
return m_pipelineInfo.pointSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline PrimitiveMode Material::GetPrimitiveMode() const
|
inline PrimitiveMode MaterialPass::GetPrimitiveMode() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.primitiveMode;
|
return m_pipelineInfo.primitiveMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const std::shared_ptr<const MaterialSettings>& Material::GetSettings() const
|
inline const std::shared_ptr<const MaterialSettings>& MaterialPass::GetSettings() const
|
||||||
{
|
{
|
||||||
return m_settings;
|
return m_settings;
|
||||||
}
|
}
|
||||||
|
|
@ -358,42 +358,42 @@ namespace Nz
|
||||||
* \brief Gets the über-shader used by this material
|
* \brief Gets the über-shader used by this material
|
||||||
* \return Constant pointer to the über-shader used
|
* \return Constant pointer to the über-shader used
|
||||||
*/
|
*/
|
||||||
inline const std::shared_ptr<UberShader>& Material::GetShader(ShaderStageType shaderStage) const
|
inline const std::shared_ptr<UberShader>& MaterialPass::GetShader(ShaderStageType shaderStage) const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.shaders[UnderlyingCast(shaderStage)].uberShader;
|
return m_pipelineInfo.shaders[UnderlyingCast(shaderStage)].uberShader;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ShaderBinding& Material::GetShaderBinding()
|
inline ShaderBinding& MaterialPass::GetShaderBinding()
|
||||||
{
|
{
|
||||||
assert(m_shaderBinding);
|
assert(m_shaderBinding);
|
||||||
return *m_shaderBinding;
|
return *m_shaderBinding;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const std::shared_ptr<Texture>& Material::GetTexture(std::size_t textureIndex) const
|
inline const std::shared_ptr<Texture>& MaterialPass::GetTexture(std::size_t textureIndex) const
|
||||||
{
|
{
|
||||||
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
||||||
return m_textures[textureIndex].texture;
|
return m_textures[textureIndex].texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const TextureSamplerInfo& Material::GetTextureSampler(std::size_t textureIndex) const
|
inline const TextureSamplerInfo& MaterialPass::GetTextureSampler(std::size_t textureIndex) const
|
||||||
{
|
{
|
||||||
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
||||||
return m_textures[textureIndex].samplerInfo;
|
return m_textures[textureIndex].samplerInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const std::shared_ptr<AbstractBuffer>& Material::GetUniformBuffer(std::size_t bufferIndex) const
|
inline const std::shared_ptr<AbstractBuffer>& MaterialPass::GetUniformBuffer(std::size_t bufferIndex) const
|
||||||
{
|
{
|
||||||
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
||||||
return m_uniformBuffers[bufferIndex].buffer;
|
return m_uniformBuffers[bufferIndex].buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const std::vector<UInt8>& Material::GetUniformBufferConstData(std::size_t bufferIndex)
|
inline const std::vector<UInt8>& MaterialPass::GetUniformBufferConstData(std::size_t bufferIndex)
|
||||||
{
|
{
|
||||||
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
||||||
return m_uniformBuffers[bufferIndex].data;
|
return m_uniformBuffers[bufferIndex].data;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::vector<UInt8>& Material::GetUniformBufferData(std::size_t bufferIndex)
|
inline std::vector<UInt8>& MaterialPass::GetUniformBufferData(std::size_t bufferIndex)
|
||||||
{
|
{
|
||||||
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid uniform buffer index");
|
||||||
UniformBuffer& uboEntry = m_uniformBuffers[bufferIndex];
|
UniformBuffer& uboEntry = m_uniformBuffers[bufferIndex];
|
||||||
|
|
@ -402,7 +402,7 @@ namespace Nz
|
||||||
return uboEntry.data;
|
return uboEntry.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool Material::HasTexture(std::size_t textureIndex) const
|
inline bool MaterialPass::HasTexture(std::size_t textureIndex) const
|
||||||
{
|
{
|
||||||
return GetTexture(textureIndex) != nullptr;
|
return GetTexture(textureIndex) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
@ -411,7 +411,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has blending enabled
|
* \brief Checks whether this material has blending enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsBlendingEnabled() const
|
inline bool MaterialPass::IsBlendingEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.blending;
|
return m_pipelineInfo.blending;
|
||||||
}
|
}
|
||||||
|
|
@ -420,7 +420,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has color write enabled
|
* \brief Checks whether this material has color write enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsColorWriteEnabled() const
|
inline bool MaterialPass::IsColorWriteEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.colorWrite;
|
return m_pipelineInfo.colorWrite;
|
||||||
}
|
}
|
||||||
|
|
@ -429,7 +429,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has depth buffer enabled
|
* \brief Checks whether this material has depth buffer enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsDepthBufferEnabled() const
|
inline bool MaterialPass::IsDepthBufferEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.depthBuffer;
|
return m_pipelineInfo.depthBuffer;
|
||||||
}
|
}
|
||||||
|
|
@ -438,7 +438,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has depth clamping enabled
|
* \brief Checks whether this material has depth clamping enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsDepthClampEnabled() const
|
inline bool MaterialPass::IsDepthClampEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.depthClamp;
|
return m_pipelineInfo.depthClamp;
|
||||||
}
|
}
|
||||||
|
|
@ -447,7 +447,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has depth writing enabled
|
* \brief Checks whether this material has depth writing enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsDepthWriteEnabled() const
|
inline bool MaterialPass::IsDepthWriteEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.depthWrite;
|
return m_pipelineInfo.depthWrite;
|
||||||
}
|
}
|
||||||
|
|
@ -456,12 +456,12 @@ namespace Nz
|
||||||
* \brief Checks whether this material has face culling enabled
|
* \brief Checks whether this material has face culling enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsFaceCullingEnabled() const
|
inline bool MaterialPass::IsFaceCullingEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.faceCulling;
|
return m_pipelineInfo.faceCulling;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool Material::IsOptionEnabled(std::size_t optionIndex) const
|
inline bool MaterialPass::IsOptionEnabled(std::size_t optionIndex) const
|
||||||
{
|
{
|
||||||
return TestBit<UInt64>(m_enabledOptions, optionIndex);
|
return TestBit<UInt64>(m_enabledOptions, optionIndex);
|
||||||
}
|
}
|
||||||
|
|
@ -470,7 +470,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has scissor test enabled
|
* \brief Checks whether this material has scissor test enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsScissorTestEnabled() const
|
inline bool MaterialPass::IsScissorTestEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.scissorTest;
|
return m_pipelineInfo.scissorTest;
|
||||||
}
|
}
|
||||||
|
|
@ -479,7 +479,7 @@ namespace Nz
|
||||||
* \brief Checks whether this material has stencil test enabled
|
* \brief Checks whether this material has stencil test enabled
|
||||||
* \return true If it is the case
|
* \return true If it is the case
|
||||||
*/
|
*/
|
||||||
inline bool Material::IsStencilTestEnabled() const
|
inline bool MaterialPass::IsStencilTestEnabled() const
|
||||||
{
|
{
|
||||||
return m_pipelineInfo.stencilTest;
|
return m_pipelineInfo.stencilTest;
|
||||||
}
|
}
|
||||||
|
|
@ -491,14 +491,14 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \remark Invalidates the pipeline
|
* \remark Invalidates the pipeline
|
||||||
*/
|
*/
|
||||||
inline void Material::SetDepthCompareFunc(RendererComparison depthFunc)
|
inline void MaterialPass::SetDepthCompareFunc(RendererComparison depthFunc)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.depthCompare = depthFunc;
|
m_pipelineInfo.depthCompare = depthFunc;
|
||||||
|
|
||||||
InvalidatePipeline();
|
InvalidatePipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::SetBlendEquation(BlendEquation colorMode, BlendEquation alphaMode)
|
inline void MaterialPass::SetBlendEquation(BlendEquation colorMode, BlendEquation alphaMode)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.blend.modeAlpha = alphaMode;
|
m_pipelineInfo.blend.modeAlpha = alphaMode;
|
||||||
m_pipelineInfo.blend.modeColor = colorMode;
|
m_pipelineInfo.blend.modeColor = colorMode;
|
||||||
|
|
@ -506,7 +506,7 @@ namespace Nz
|
||||||
InvalidatePipeline();
|
InvalidatePipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::SetBlendFunc(BlendFunc srcColor, BlendFunc dstColor, BlendFunc srcAlpha, BlendFunc dstAlpha)
|
inline void MaterialPass::SetBlendFunc(BlendFunc srcColor, BlendFunc dstColor, BlendFunc srcAlpha, BlendFunc dstAlpha)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.blend.dstAlpha = dstAlpha;
|
m_pipelineInfo.blend.dstAlpha = dstAlpha;
|
||||||
m_pipelineInfo.blend.dstColor = dstColor;
|
m_pipelineInfo.blend.dstColor = dstColor;
|
||||||
|
|
@ -523,7 +523,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \remark Invalidates the pipeline
|
* \remark Invalidates the pipeline
|
||||||
*/
|
*/
|
||||||
inline void Material::SetFaceCulling(FaceSide faceSide)
|
inline void MaterialPass::SetFaceCulling(FaceSide faceSide)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.cullingSide = faceSide;
|
m_pipelineInfo.cullingSide = faceSide;
|
||||||
|
|
||||||
|
|
@ -537,7 +537,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \remark Invalidates the pipeline
|
* \remark Invalidates the pipeline
|
||||||
*/
|
*/
|
||||||
inline void Material::SetFaceFilling(FaceFilling filling)
|
inline void MaterialPass::SetFaceFilling(FaceFilling filling)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.faceFilling = filling;
|
m_pipelineInfo.faceFilling = filling;
|
||||||
|
|
||||||
|
|
@ -555,7 +555,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see GetLineWidth
|
* \see GetLineWidth
|
||||||
*/
|
*/
|
||||||
inline void Material::SetLineWidth(float lineWidth)
|
inline void MaterialPass::SetLineWidth(float lineWidth)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.lineWidth = lineWidth;
|
m_pipelineInfo.lineWidth = lineWidth;
|
||||||
|
|
||||||
|
|
@ -573,7 +573,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see GetPointSize
|
* \see GetPointSize
|
||||||
*/
|
*/
|
||||||
inline void Material::SetPointSize(float pointSize)
|
inline void MaterialPass::SetPointSize(float pointSize)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.pointSize = pointSize;
|
m_pipelineInfo.pointSize = pointSize;
|
||||||
|
|
||||||
|
|
@ -581,14 +581,14 @@ namespace Nz
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline void Material::SetPrimitiveMode(PrimitiveMode mode)
|
inline void MaterialPass::SetPrimitiveMode(PrimitiveMode mode)
|
||||||
{
|
{
|
||||||
m_pipelineInfo.primitiveMode = mode;
|
m_pipelineInfo.primitiveMode = mode;
|
||||||
|
|
||||||
InvalidatePipeline();
|
InvalidatePipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::SetTexture(std::size_t textureIndex, std::shared_ptr<Texture> texture)
|
inline void MaterialPass::SetTexture(std::size_t textureIndex, std::shared_ptr<Texture> texture)
|
||||||
{
|
{
|
||||||
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
||||||
if (m_textures[textureIndex].texture != texture)
|
if (m_textures[textureIndex].texture != texture)
|
||||||
|
|
@ -598,7 +598,7 @@ namespace Nz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::SetTextureSampler(std::size_t textureIndex, TextureSamplerInfo samplerInfo)
|
inline void MaterialPass::SetTextureSampler(std::size_t textureIndex, TextureSamplerInfo samplerInfo)
|
||||||
{
|
{
|
||||||
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
NazaraAssert(textureIndex < m_textures.size(), "Invalid texture index");
|
||||||
if (m_textures[textureIndex].samplerInfo != samplerInfo)
|
if (m_textures[textureIndex].samplerInfo != samplerInfo)
|
||||||
|
|
@ -608,7 +608,7 @@ namespace Nz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::SetUniformBuffer(std::size_t bufferIndex, std::shared_ptr<AbstractBuffer> uniformBuffer)
|
inline void MaterialPass::SetUniformBuffer(std::size_t bufferIndex, std::shared_ptr<AbstractBuffer> uniformBuffer)
|
||||||
{
|
{
|
||||||
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid shared uniform buffer index");
|
NazaraAssert(bufferIndex < m_uniformBuffers.size(), "Invalid shared uniform buffer index");
|
||||||
if (m_uniformBuffers[bufferIndex].buffer != uniformBuffer)
|
if (m_uniformBuffers[bufferIndex].buffer != uniformBuffer)
|
||||||
|
|
@ -619,19 +619,19 @@ namespace Nz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::InvalidatePipeline()
|
inline void MaterialPass::InvalidatePipeline()
|
||||||
{
|
{
|
||||||
m_pipelineUpdated = false;
|
m_pipelineUpdated = false;
|
||||||
OnMaterialInvalidated(this);
|
OnMaterialInvalidated(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::InvalidateShaderBinding()
|
inline void MaterialPass::InvalidateShaderBinding()
|
||||||
{
|
{
|
||||||
m_shaderBindingUpdated = false;
|
m_shaderBindingUpdated = false;
|
||||||
OnMaterialInvalidated(this);
|
OnMaterialInvalidated(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::InvalidateTextureSampler(std::size_t textureIndex)
|
inline void MaterialPass::InvalidateTextureSampler(std::size_t textureIndex)
|
||||||
{
|
{
|
||||||
assert(textureIndex < m_textures.size());
|
assert(textureIndex < m_textures.size());
|
||||||
m_textures[textureIndex].sampler.reset();
|
m_textures[textureIndex].sampler.reset();
|
||||||
|
|
@ -639,7 +639,7 @@ namespace Nz
|
||||||
InvalidateShaderBinding();
|
InvalidateShaderBinding();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Material::InvalidateUniformData(std::size_t uniformBufferIndex)
|
inline void MaterialPass::InvalidateUniformData(std::size_t uniformBufferIndex)
|
||||||
{
|
{
|
||||||
assert(uniformBufferIndex < m_uniformBuffers.size());
|
assert(uniformBufferIndex < m_uniformBuffers.size());
|
||||||
UniformBuffer& uboEntry = m_uniformBuffers[uniformBufferIndex];
|
UniformBuffer& uboEntry = m_uniformBuffers[uniformBufferIndex];
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
class GraphicalMesh;
|
class GraphicalMesh;
|
||||||
class Material;
|
class MaterialPass;
|
||||||
|
|
||||||
class NAZARA_GRAPHICS_API Model : public InstancedRenderable
|
class NAZARA_GRAPHICS_API Model : public InstancedRenderable
|
||||||
{
|
{
|
||||||
|
|
@ -32,13 +32,13 @@ namespace Nz
|
||||||
|
|
||||||
const std::shared_ptr<AbstractBuffer>& GetIndexBuffer(std::size_t subMeshIndex) const;
|
const std::shared_ptr<AbstractBuffer>& GetIndexBuffer(std::size_t subMeshIndex) const;
|
||||||
std::size_t GetIndexCount(std::size_t subMeshIndex) const;
|
std::size_t GetIndexCount(std::size_t subMeshIndex) const;
|
||||||
const std::shared_ptr<Material>& GetMaterial(std::size_t subMeshIndex) const override;
|
const std::shared_ptr<MaterialPass>& GetMaterial(std::size_t subMeshIndex) const override;
|
||||||
std::size_t GetMaterialCount() const override;
|
std::size_t GetMaterialCount() const override;
|
||||||
const std::shared_ptr<RenderPipeline>& GetRenderPipeline(std::size_t subMeshIndex) const;
|
const std::shared_ptr<RenderPipeline>& GetRenderPipeline(std::size_t subMeshIndex) const;
|
||||||
const std::shared_ptr<AbstractBuffer>& GetVertexBuffer(std::size_t subMeshIndex) const;
|
const std::shared_ptr<AbstractBuffer>& GetVertexBuffer(std::size_t subMeshIndex) const;
|
||||||
inline std::size_t GetSubMeshCount() const;
|
inline std::size_t GetSubMeshCount() const;
|
||||||
|
|
||||||
inline void SetMaterial(std::size_t subMeshIndex, std::shared_ptr<Material> material);
|
inline void SetMaterial(std::size_t subMeshIndex, std::shared_ptr<MaterialPass> material);
|
||||||
|
|
||||||
Model& operator=(const Model&) = delete;
|
Model& operator=(const Model&) = delete;
|
||||||
Model& operator=(Model&&) noexcept = default;
|
Model& operator=(Model&&) noexcept = default;
|
||||||
|
|
@ -46,7 +46,7 @@ namespace Nz
|
||||||
private:
|
private:
|
||||||
struct SubMeshData
|
struct SubMeshData
|
||||||
{
|
{
|
||||||
std::shared_ptr<Material> material;
|
std::shared_ptr<MaterialPass> material;
|
||||||
std::vector<RenderPipelineInfo::VertexBufferData> vertexBufferData;
|
std::vector<RenderPipelineInfo::VertexBufferData> vertexBufferData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ namespace Nz
|
||||||
return m_subMeshes.size();
|
return m_subMeshes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Model::SetMaterial(std::size_t subMeshIndex, std::shared_ptr<Material> material)
|
inline void Model::SetMaterial(std::size_t subMeshIndex, std::shared_ptr<MaterialPass> material)
|
||||||
{
|
{
|
||||||
assert(subMeshIndex < m_subMeshes.size());
|
assert(subMeshIndex < m_subMeshes.size());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#define NAZARA_PHONG_LIGHTING_MATERIAL_HPP
|
#define NAZARA_PHONG_LIGHTING_MATERIAL_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequisites.hpp>
|
#include <Nazara/Prerequisites.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Nz
|
||||||
friend class MaterialPipeline;
|
friend class MaterialPipeline;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PhongLightingMaterial(Material& material);
|
PhongLightingMaterial(MaterialPass& material);
|
||||||
|
|
||||||
inline const std::shared_ptr<Texture>& GetAlphaMap() const;
|
inline const std::shared_ptr<Texture>& GetAlphaMap() const;
|
||||||
float GetAlphaThreshold() const;
|
float GetAlphaThreshold() const;
|
||||||
|
|
@ -86,7 +86,7 @@ namespace Nz
|
||||||
static bool Initialize();
|
static bool Initialize();
|
||||||
static void Uninitialize();
|
static void Uninitialize();
|
||||||
|
|
||||||
Material& m_material;
|
MaterialPass& m_material;
|
||||||
std::size_t m_phongUniformIndex;
|
std::size_t m_phongUniformIndex;
|
||||||
TextureIndexes m_textureIndexes;
|
TextureIndexes m_textureIndexes;
|
||||||
PhongUniformOffsets m_phongUniformOffsets;
|
PhongUniformOffsets m_phongUniformOffsets;
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Nz
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicMaterial::BasicMaterial(Material& material) :
|
BasicMaterial::BasicMaterial(MaterialPass& material) :
|
||||||
m_material(material)
|
m_material(material)
|
||||||
{
|
{
|
||||||
// Most common case: don't fetch texture indexes as a little optimization
|
// Most common case: don't fetch texture indexes as a little optimization
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace Nz
|
||||||
if (auto it = renderableMap.find(instancedRenderable); it == renderableMap.end())
|
if (auto it = renderableMap.find(instancedRenderable); it == renderableMap.end())
|
||||||
{
|
{
|
||||||
auto& renderableData = renderableMap.emplace(instancedRenderable, RenderableData{}).first->second;
|
auto& renderableData = renderableMap.emplace(instancedRenderable, RenderableData{}).first->second;
|
||||||
renderableData.onMaterialInvalidated.Connect(instancedRenderable->OnMaterialInvalidated, [this](InstancedRenderable* instancedRenderable, std::size_t materialIndex, const std::shared_ptr<Material>& newMaterial)
|
renderableData.onMaterialInvalidated.Connect(instancedRenderable->OnMaterialInvalidated, [this](InstancedRenderable* instancedRenderable, std::size_t materialIndex, const std::shared_ptr<MaterialPass>& newMaterial)
|
||||||
{
|
{
|
||||||
if (newMaterial)
|
if (newMaterial)
|
||||||
RegisterMaterial(newMaterial.get());
|
RegisterMaterial(newMaterial.get());
|
||||||
|
|
@ -56,7 +56,7 @@ namespace Nz
|
||||||
std::size_t matCount = instancedRenderable->GetMaterialCount();
|
std::size_t matCount = instancedRenderable->GetMaterialCount();
|
||||||
for (std::size_t i = 0; i < matCount; ++i)
|
for (std::size_t i = 0; i < matCount; ++i)
|
||||||
{
|
{
|
||||||
if (Material* mat = instancedRenderable->GetMaterial(i).get())
|
if (MaterialPass* mat = instancedRenderable->GetMaterial(i).get())
|
||||||
RegisterMaterial(mat);
|
RegisterMaterial(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -99,7 +99,7 @@ namespace Nz
|
||||||
|
|
||||||
m_invalidatedWorldInstances.clear();
|
m_invalidatedWorldInstances.clear();
|
||||||
|
|
||||||
for (Material* material : m_invalidatedMaterials)
|
for (MaterialPass* material : m_invalidatedMaterials)
|
||||||
{
|
{
|
||||||
if (material->Update(renderFrame, builder))
|
if (material->Update(renderFrame, builder))
|
||||||
m_rebuildForwardPass = true;
|
m_rebuildForwardPass = true;
|
||||||
|
|
@ -192,7 +192,7 @@ namespace Nz
|
||||||
std::size_t matCount = instancedRenderable->GetMaterialCount();
|
std::size_t matCount = instancedRenderable->GetMaterialCount();
|
||||||
for (std::size_t i = 0; i < matCount; ++i)
|
for (std::size_t i = 0; i < matCount; ++i)
|
||||||
{
|
{
|
||||||
if (Material* mat = instancedRenderable->GetMaterial(i).get())
|
if (MaterialPass* mat = instancedRenderable->GetMaterial(i).get())
|
||||||
UnregisterMaterial(mat);
|
UnregisterMaterial(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -268,13 +268,13 @@ namespace Nz
|
||||||
return frameGraph.Bake();
|
return frameGraph.Bake();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForwardFramePipeline::RegisterMaterial(Material* material)
|
void ForwardFramePipeline::RegisterMaterial(MaterialPass* material)
|
||||||
{
|
{
|
||||||
auto it = m_materials.find(material);
|
auto it = m_materials.find(material);
|
||||||
if (it == m_materials.end())
|
if (it == m_materials.end())
|
||||||
{
|
{
|
||||||
it = m_materials.emplace(material, MaterialData{}).first;
|
it = m_materials.emplace(material, MaterialData{}).first;
|
||||||
it->second.onMaterialInvalided.Connect(material->OnMaterialInvalidated, [this, material](const Material* /*material*/)
|
it->second.onMaterialInvalided.Connect(material->OnMaterialInvalidated, [this, material](const MaterialPass* /*material*/)
|
||||||
{
|
{
|
||||||
m_invalidatedMaterials.insert(material);
|
m_invalidatedMaterials.insert(material);
|
||||||
});
|
});
|
||||||
|
|
@ -285,7 +285,7 @@ namespace Nz
|
||||||
it->second.usedCount++;
|
it->second.usedCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForwardFramePipeline::UnregisterMaterial(Material* material)
|
void ForwardFramePipeline::UnregisterMaterial(MaterialPass* material)
|
||||||
{
|
{
|
||||||
auto it = m_materials.find(material);
|
auto it = m_materials.find(material);
|
||||||
assert(it != m_materials.end());
|
assert(it != m_materials.end());
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// This file is part of the "Nazara Engine - Graphics module"
|
// This file is part of the "Nazara Engine - Graphics module"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Core/ErrorFlags.hpp>
|
#include <Nazara/Core/ErrorFlags.hpp>
|
||||||
#include <Nazara/Graphics/BasicMaterial.hpp>
|
#include <Nazara/Graphics/BasicMaterial.hpp>
|
||||||
#include <Nazara/Graphics/UberShader.hpp>
|
#include <Nazara/Graphics/UberShader.hpp>
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Nz
|
||||||
*
|
*
|
||||||
* \see Reset
|
* \see Reset
|
||||||
*/
|
*/
|
||||||
Material::Material(std::shared_ptr<const MaterialSettings> settings) :
|
MaterialPass::MaterialPass(std::shared_ptr<const MaterialSettings> settings) :
|
||||||
m_settings(std::move(settings)),
|
m_settings(std::move(settings)),
|
||||||
m_enabledOptions(0),
|
m_enabledOptions(0),
|
||||||
m_pipelineUpdated(false),
|
m_pipelineUpdated(false),
|
||||||
|
|
@ -64,7 +64,7 @@ namespace Nz
|
||||||
UpdateShaderBinding();
|
UpdateShaderBinding();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Material::Update(RenderFrame& renderFrame, CommandBufferBuilder& builder)
|
bool MaterialPass::Update(RenderFrame& renderFrame, CommandBufferBuilder& builder)
|
||||||
{
|
{
|
||||||
bool shouldRegenerateCommandBuffer = false;
|
bool shouldRegenerateCommandBuffer = false;
|
||||||
if (!m_shaderBindingUpdated)
|
if (!m_shaderBindingUpdated)
|
||||||
|
|
@ -95,7 +95,7 @@ namespace Nz
|
||||||
return shouldRegenerateCommandBuffer;
|
return shouldRegenerateCommandBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Material::UpdatePipeline() const
|
void MaterialPass::UpdatePipeline() const
|
||||||
{
|
{
|
||||||
for (auto& shader : m_pipelineInfo.shaders)
|
for (auto& shader : m_pipelineInfo.shaders)
|
||||||
shader.enabledOptions = 0;
|
shader.enabledOptions = 0;
|
||||||
|
|
@ -122,7 +122,7 @@ namespace Nz
|
||||||
m_pipelineUpdated = true;
|
m_pipelineUpdated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Material::UpdateShaderBinding()
|
void MaterialPass::UpdateShaderBinding()
|
||||||
{
|
{
|
||||||
assert(!m_shaderBinding);
|
assert(!m_shaderBinding);
|
||||||
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#include <Nazara/Core/File.hpp>
|
#include <Nazara/Core/File.hpp>
|
||||||
#include <Nazara/Core/Log.hpp>
|
#include <Nazara/Core/Log.hpp>
|
||||||
#include <Nazara/Graphics/BasicMaterial.hpp>
|
#include <Nazara/Graphics/BasicMaterial.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Graphics/MaterialSettings.hpp>
|
#include <Nazara/Graphics/MaterialSettings.hpp>
|
||||||
#include <Nazara/Graphics/PhongLightingMaterial.hpp>
|
#include <Nazara/Graphics/PhongLightingMaterial.hpp>
|
||||||
#include <Nazara/Graphics/UberShader.hpp>
|
#include <Nazara/Graphics/UberShader.hpp>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
#include <Nazara/Graphics/Model.hpp>
|
#include <Nazara/Graphics/Model.hpp>
|
||||||
#include <Nazara/Graphics/GraphicalMesh.hpp>
|
#include <Nazara/Graphics/GraphicalMesh.hpp>
|
||||||
#include <Nazara/Graphics/Graphics.hpp>
|
#include <Nazara/Graphics/Graphics.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Graphics/WorldInstance.hpp>
|
#include <Nazara/Graphics/WorldInstance.hpp>
|
||||||
#include <Nazara/Renderer/CommandBufferBuilder.hpp>
|
#include <Nazara/Renderer/CommandBufferBuilder.hpp>
|
||||||
#include <Nazara/Graphics/Debug.hpp>
|
#include <Nazara/Graphics/Debug.hpp>
|
||||||
|
|
@ -57,7 +57,7 @@ namespace Nz
|
||||||
return m_graphicalMesh->GetIndexCount(subMeshIndex);
|
return m_graphicalMesh->GetIndexCount(subMeshIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::shared_ptr<Material>& Model::GetMaterial(std::size_t subMeshIndex) const
|
const std::shared_ptr<MaterialPass>& Model::GetMaterial(std::size_t subMeshIndex) const
|
||||||
{
|
{
|
||||||
assert(subMeshIndex < m_subMeshes.size());
|
assert(subMeshIndex < m_subMeshes.size());
|
||||||
const auto& subMeshData = m_subMeshes[subMeshIndex];
|
const auto& subMeshData = m_subMeshes[subMeshIndex];
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
PhongLightingMaterial::PhongLightingMaterial(Material& material) :
|
PhongLightingMaterial::PhongLightingMaterial(MaterialPass& material) :
|
||||||
m_material(material)
|
m_material(material)
|
||||||
{
|
{
|
||||||
// Most common case: don't fetch texture indexes as a little optimization
|
// Most common case: don't fetch texture indexes as a little optimization
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue