Graphics: Add new functions to get default material types/presets
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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*/);
|
||||
|
||||
Reference in New Issue
Block a user