Graphics/Material: Rename CreateInstance to Instantiate
This commit is contained in:
parent
4e631da7dc
commit
1205155466
|
|
@ -207,11 +207,11 @@ int main()
|
||||||
|
|
||||||
auto deferredMaterial = std::make_shared<Nz::Material>(std::move(settings), "BasicMaterial");
|
auto deferredMaterial = std::make_shared<Nz::Material>(std::move(settings), "BasicMaterial");
|
||||||
|
|
||||||
std::shared_ptr<Nz::MaterialInstance> spaceshipMat = deferredMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> spaceshipMat = deferredMaterial->Instantiate();
|
||||||
spaceshipMat->SetTextureProperty("AlphaMap", Nz::Texture::LoadFromFile(resourceDir / "alphatile.png", texParams));
|
spaceshipMat->SetTextureProperty("AlphaMap", Nz::Texture::LoadFromFile(resourceDir / "alphatile.png", texParams));
|
||||||
spaceshipMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
spaceshipMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
||||||
|
|
||||||
std::shared_ptr<Nz::MaterialInstance> flareMaterial = deferredMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> flareMaterial = deferredMaterial->Instantiate();
|
||||||
flareMaterial->UpdatePassStates("ForwardPass", [](Nz::RenderStates& renderStates)
|
flareMaterial->UpdatePassStates("ForwardPass", [](Nz::RenderStates& renderStates)
|
||||||
{
|
{
|
||||||
renderStates.depthClamp = true;
|
renderStates.depthClamp = true;
|
||||||
|
|
@ -233,7 +233,7 @@ int main()
|
||||||
planeSampler.wrapModeU = Nz::SamplerWrap::Repeat;
|
planeSampler.wrapModeU = Nz::SamplerWrap::Repeat;
|
||||||
planeSampler.wrapModeV = Nz::SamplerWrap::Repeat;
|
planeSampler.wrapModeV = Nz::SamplerWrap::Repeat;
|
||||||
|
|
||||||
std::shared_ptr<Nz::MaterialInstance> planeMat = deferredMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> planeMat = deferredMaterial->Instantiate();
|
||||||
planeMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "dev_grey.png", texParams), planeSampler);
|
planeMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "dev_grey.png", texParams), planeSampler);
|
||||||
|
|
||||||
Nz::Model spaceshipModel(std::move(gfxMesh), spaceship->GetAABB());
|
Nz::Model spaceshipModel(std::move(gfxMesh), spaceship->GetAABB());
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,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::MaterialInstance> material = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> material = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->Instantiate();
|
||||||
material->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
material->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
||||||
|
|
||||||
for (std::size_t y = 0; y < 10; ++y)
|
for (std::size_t y = 0; y < 10; ++y)
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,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::MaterialInstance> material = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> material = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->Instantiate();
|
||||||
for (std::string_view passName : { "DepthPass", "ForwardPass" })
|
for (std::string_view passName : { "DepthPass", "ForwardPass" })
|
||||||
{
|
{
|
||||||
material->UpdatePassStates(passName, [](Nz::RenderStates& states)
|
material->UpdatePassStates(passName, [](Nz::RenderStates& states)
|
||||||
|
|
@ -115,7 +115,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::MaterialInstance> colliderMat = Nz::Graphics::Instance()->GetDefaultMaterials().basicMaterial->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> colliderMat = Nz::Graphics::Instance()->GetDefaultMaterials().basicMaterial->Instantiate();
|
||||||
colliderMat->SetValueProperty("BaseColor", Nz::Color::Green);
|
colliderMat->SetValueProperty("BaseColor", Nz::Color::Green);
|
||||||
for (std::string_view passName : { "DepthPass", "ForwardPass" })
|
for (std::string_view passName : { "DepthPass", "ForwardPass" })
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ int main()
|
||||||
Nz::TextureParams srgbTexParams = texParams;
|
Nz::TextureParams srgbTexParams = texParams;
|
||||||
srgbTexParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
srgbTexParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
||||||
|
|
||||||
std::shared_ptr<Nz::MaterialInstance> sphereMat = std::make_shared<Nz::MaterialInstance>(material);
|
std::shared_ptr<Nz::MaterialInstance> sphereMat = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->Instantiate();
|
||||||
sphereMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Rusty/rustediron2_basecolor.png", srgbTexParams));
|
sphereMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Rusty/rustediron2_basecolor.png", srgbTexParams));
|
||||||
|
|
||||||
std::shared_ptr<Nz::Model> sphereModel = std::make_shared<Nz::Model>(std::move(gfxMesh), sphereMesh->GetAABB());
|
std::shared_ptr<Nz::Model> sphereModel = std::make_shared<Nz::Model>(std::move(gfxMesh), sphereMesh->GetAABB());
|
||||||
|
|
@ -227,7 +227,7 @@ int main()
|
||||||
planeSampler.wrapModeU = Nz::SamplerWrap::Repeat;
|
planeSampler.wrapModeU = Nz::SamplerWrap::Repeat;
|
||||||
planeSampler.wrapModeV = Nz::SamplerWrap::Repeat;
|
planeSampler.wrapModeV = Nz::SamplerWrap::Repeat;
|
||||||
|
|
||||||
std::shared_ptr<Nz::MaterialInstance> planeMat = std::make_shared<Nz::MaterialInstance>(material);
|
std::shared_ptr<Nz::MaterialInstance> planeMat = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->Instantiate();
|
||||||
planeMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "dev_grey.png", texParams), planeSampler);
|
planeMat->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "dev_grey.png", texParams), planeSampler);
|
||||||
|
|
||||||
std::shared_ptr<Nz::Model> planeModel = std::make_shared<Nz::Model>(std::move(planeMeshGfx), planeMesh.GetAABB());
|
std::shared_ptr<Nz::Model> planeModel = std::make_shared<Nz::Model>(std::move(planeMeshGfx), planeMesh.GetAABB());
|
||||||
|
|
|
||||||
|
|
@ -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::MaterialInstance> materialInstance = material->CreateInstance();
|
std::shared_ptr<Nz::MaterialInstance> materialInstance = material->Instantiate();
|
||||||
materialInstance->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
materialInstance->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams));
|
||||||
|
|
||||||
Nz::ImageWidget* imageWidget = canvas2D.Add<Nz::ImageWidget>(materialInstance);
|
Nz::ImageWidget* imageWidget = canvas2D.Add<Nz::ImageWidget>(materialInstance);
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,6 @@ namespace Nz
|
||||||
Material(MaterialSettings settings, const nzsl::Ast::ModulePtr& referenceModule);
|
Material(MaterialSettings settings, const nzsl::Ast::ModulePtr& referenceModule);
|
||||||
~Material() = default;
|
~Material() = default;
|
||||||
|
|
||||||
std::shared_ptr<MaterialInstance> CreateInstance() const;
|
|
||||||
|
|
||||||
std::shared_ptr<MaterialInstance> GetDefaultInstance() const;
|
std::shared_ptr<MaterialInstance> GetDefaultInstance() const;
|
||||||
|
|
||||||
inline std::size_t FindTextureByTag(const std::string& tag) const;
|
inline std::size_t FindTextureByTag(const std::string& tag) const;
|
||||||
|
|
@ -63,6 +61,8 @@ namespace Nz
|
||||||
inline const UniformBlockData& GetUniformBlockData(std::size_t uniformBlockIndex) const;
|
inline const UniformBlockData& GetUniformBlockData(std::size_t uniformBlockIndex) const;
|
||||||
inline std::size_t GetUniformBlockCount() const;
|
inline std::size_t GetUniformBlockCount() const;
|
||||||
|
|
||||||
|
std::shared_ptr<MaterialInstance> Instantiate() const;
|
||||||
|
|
||||||
static std::shared_ptr<Material> Build(const ParameterList& materialData);
|
static std::shared_ptr<Material> Build(const ParameterList& materialData);
|
||||||
static std::shared_ptr<Material> LoadFromFile(const std::filesystem::path& filePath, const MaterialParams& params = MaterialParams());
|
static std::shared_ptr<Material> LoadFromFile(const std::filesystem::path& filePath, const MaterialParams& params = MaterialParams());
|
||||||
static std::shared_ptr<Material> LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params = MaterialParams());
|
static std::shared_ptr<Material> LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params = MaterialParams());
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,11 @@ namespace Nz
|
||||||
switch (parameters.lightingType)
|
switch (parameters.lightingType)
|
||||||
{
|
{
|
||||||
case MaterialLightingType::Phong:
|
case MaterialLightingType::Phong:
|
||||||
materialInstance = Graphics::Instance()->GetDefaultMaterials().phongMaterial->CreateInstance();
|
materialInstance = Graphics::Instance()->GetDefaultMaterials().phongMaterial->Instantiate();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MaterialLightingType::PhysicallyBased:
|
case MaterialLightingType::PhysicallyBased:
|
||||||
materialInstance = Graphics::Instance()->GetDefaultMaterials().pbrMaterial->CreateInstance();
|
materialInstance = Graphics::Instance()->GetDefaultMaterials().pbrMaterial->Instantiate();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MaterialLightingType::None:
|
case MaterialLightingType::None:
|
||||||
|
|
@ -47,7 +47,7 @@ namespace Nz
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!materialInstance)
|
if (!materialInstance)
|
||||||
materialInstance = Graphics::Instance()->GetDefaultMaterials().basicMaterial->CreateInstance();
|
materialInstance = Graphics::Instance()->GetDefaultMaterials().basicMaterial->Instantiate();
|
||||||
|
|
||||||
if (hasAlphaTest && PixelFormatInfo::HasAlpha(texture->GetFormat()))
|
if (hasAlphaTest && PixelFormatInfo::HasAlpha(texture->GetFormat()))
|
||||||
materialInstance->SetValueProperty("AlphaTest", true);
|
materialInstance->SetValueProperty("AlphaTest", true);
|
||||||
|
|
|
||||||
|
|
@ -262,14 +262,14 @@ namespace Nz
|
||||||
|
|
||||||
m_defaultMaterials.basicDefault = m_defaultMaterials.basicMaterial->GetDefaultInstance();
|
m_defaultMaterials.basicDefault = m_defaultMaterials.basicMaterial->GetDefaultInstance();
|
||||||
|
|
||||||
m_defaultMaterials.basicNoDepth = m_defaultMaterials.basicMaterial->CreateInstance();
|
m_defaultMaterials.basicNoDepth = m_defaultMaterials.basicMaterial->Instantiate();
|
||||||
m_defaultMaterials.basicNoDepth->DisablePass(depthPassIndex);
|
m_defaultMaterials.basicNoDepth->DisablePass(depthPassIndex);
|
||||||
m_defaultMaterials.basicNoDepth->UpdatePassStates(forwardPassIndex, [](RenderStates& states)
|
m_defaultMaterials.basicNoDepth->UpdatePassStates(forwardPassIndex, [](RenderStates& states)
|
||||||
{
|
{
|
||||||
states.depthBuffer = false;
|
states.depthBuffer = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
m_defaultMaterials.basicTransparent = m_defaultMaterials.basicMaterial->CreateInstance();
|
m_defaultMaterials.basicTransparent = m_defaultMaterials.basicMaterial->Instantiate();
|
||||||
m_defaultMaterials.basicTransparent->DisablePass(depthPassIndex);
|
m_defaultMaterials.basicTransparent->DisablePass(depthPassIndex);
|
||||||
m_defaultMaterials.basicTransparent->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
m_defaultMaterials.basicTransparent->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -164,23 +164,23 @@ namespace Nz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MaterialInstance> Material::CreateInstance() const
|
|
||||||
{
|
|
||||||
return std::make_shared<MaterialInstance>(shared_from_this());
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<MaterialInstance> Material::GetDefaultInstance() const
|
std::shared_ptr<MaterialInstance> Material::GetDefaultInstance() const
|
||||||
{
|
{
|
||||||
std::shared_ptr<MaterialInstance> instance = m_defaultInstance.lock();
|
std::shared_ptr<MaterialInstance> instance = m_defaultInstance.lock();
|
||||||
if (!instance)
|
if (!instance)
|
||||||
{
|
{
|
||||||
instance = CreateInstance();
|
instance = Instantiate();
|
||||||
m_defaultInstance = std::weak_ptr<MaterialInstance>(instance);
|
m_defaultInstance = std::weak_ptr<MaterialInstance>(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<MaterialInstance> Material::Instantiate() const
|
||||||
|
{
|
||||||
|
return std::make_shared<MaterialInstance>(shared_from_this());
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<Material> Material::Build(const ParameterList& materialData)
|
std::shared_ptr<Material> Material::Build(const ParameterList& materialData)
|
||||||
{
|
{
|
||||||
return std::shared_ptr<Material>();
|
return std::shared_ptr<Material>();
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ namespace Nz
|
||||||
|
|
||||||
auto CreateMaterialFromTexture = [&](std::shared_ptr<Texture> texture)
|
auto CreateMaterialFromTexture = [&](std::shared_ptr<Texture> texture)
|
||||||
{
|
{
|
||||||
std::shared_ptr<MaterialInstance> material = defaultBasicMaterial.basicMaterial->CreateInstance();
|
std::shared_ptr<MaterialInstance> material = defaultBasicMaterial.basicMaterial->Instantiate();
|
||||||
material->DisablePass(depthPassIndex);
|
material->DisablePass(depthPassIndex);
|
||||||
material->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
material->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ namespace Nz
|
||||||
std::size_t depthPassIndex = materialPassRegistry.GetPassIndex("DepthPass");
|
std::size_t depthPassIndex = materialPassRegistry.GetPassIndex("DepthPass");
|
||||||
std::size_t forwardPassIndex = materialPassRegistry.GetPassIndex("ForwardPass");
|
std::size_t forwardPassIndex = materialPassRegistry.GetPassIndex("ForwardPass");
|
||||||
|
|
||||||
m_opaqueMaterial = defaultMaterials.basicMaterial->CreateInstance();
|
m_opaqueMaterial = defaultMaterials.basicMaterial->Instantiate();
|
||||||
for (std::size_t passIndex : { depthPassIndex, forwardPassIndex })
|
for (std::size_t passIndex : { depthPassIndex, forwardPassIndex })
|
||||||
{
|
{
|
||||||
m_opaqueMaterial->UpdatePassStates(passIndex, [](RenderStates& renderStates)
|
m_opaqueMaterial->UpdatePassStates(passIndex, [](RenderStates& renderStates)
|
||||||
|
|
@ -37,7 +37,7 @@ namespace Nz
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
m_transparentMaterial = defaultMaterials.basicMaterial->CreateInstance();
|
m_transparentMaterial = defaultMaterials.basicMaterial->Instantiate();
|
||||||
m_transparentMaterial->DisablePass(depthPassIndex);
|
m_transparentMaterial->DisablePass(depthPassIndex);
|
||||||
|
|
||||||
m_transparentMaterial->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
m_transparentMaterial->UpdatePassStates(forwardPassIndex, [](RenderStates& renderStates)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue