Graphics: Add new functions to get default material types/presets

This commit is contained in:
SirLynix
2023-08-08 18:17:58 +02:00
parent 32f8141bd8
commit cf6fdf258f
20 changed files with 111 additions and 117 deletions

View File

@@ -62,11 +62,22 @@ namespace Nz
UInt4
};
enum class MaterialLightingType
enum class MaterialInstancePreset
{
None,
Default,
NoDepth,
Transparent,
Max = Transparent
};
enum class MaterialType
{
Basic,
Phong,
PhysicallyBased
PhysicallyBased,
Max = PhysicallyBased
};
enum class MaterialPassFlag

View File

@@ -70,13 +70,13 @@ namespace Nz
struct DefaultMaterials
{
std::shared_ptr<Material> basicMaterial;
std::shared_ptr<Material> phongMaterial;
std::shared_ptr<Material> pbrMaterial;
struct MaterialData
{
std::shared_ptr<Material> material;
EnumArray<MaterialInstancePreset, std::shared_ptr<MaterialInstance>> presets;
};
std::shared_ptr<MaterialInstance> basicDefault;
std::shared_ptr<MaterialInstance> basicNoDepth;
std::shared_ptr<MaterialInstance> basicTransparent;
EnumArray<MaterialType, MaterialData> materials;
};
struct DefaultTextures

View File

@@ -65,6 +65,7 @@ namespace Nz
std::shared_ptr<MaterialInstance> Instantiate() const;
static std::shared_ptr<Material> Build(const ParameterList& materialData);
static std::shared_ptr<Material> Get(MaterialType lightingType);
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> LoadFromStream(Stream& stream, const MaterialParams& params = MaterialParams());

View File

@@ -24,7 +24,7 @@ namespace Nz
{
struct NAZARA_GRAPHICS_API MaterialInstanceParams : ResourceParameters
{
MaterialLightingType lightingType = MaterialLightingType::None;
MaterialType materialType = MaterialType::Basic;
bool IsValid() const;
};
@@ -115,9 +115,11 @@ namespace Nz
static constexpr std::size_t InvalidPropertyIndex = MaterialSettings::InvalidPropertyIndex;
static std::shared_ptr<MaterialInstance> GetDefault(MaterialType materialType, MaterialInstancePreset preset = MaterialInstancePreset::Default);
static std::shared_ptr<MaterialInstance> LoadFromFile(const std::filesystem::path& filePath, const MaterialInstanceParams& params = MaterialInstanceParams());
static std::shared_ptr<MaterialInstance> LoadFromMemory(const void* data, std::size_t size, const MaterialInstanceParams& params = MaterialInstanceParams());
static std::shared_ptr<MaterialInstance> LoadFromStream(Stream& stream, const MaterialInstanceParams& params = MaterialInstanceParams());
static std::shared_ptr<MaterialInstance> Instantiate(MaterialType materialType, MaterialInstancePreset preset = MaterialInstancePreset::Default);
NazaraSignal(OnMaterialInstancePipelineInvalidated, const MaterialInstance* /*matInstance*/, std::size_t /*passIndex*/);
NazaraSignal(OnMaterialInstanceShaderBindingInvalidated, const MaterialInstance* /*matInstance*/);