Toast Engine
Loading...
Searching...
No Matches
material_instance.hpp
Go to the documentation of this file.
1
8
9#pragma once
10#include "material.hpp"
11
12#include <string>
13#include <unordered_map>
14
15namespace assets {
16
21class TOAST_API MaterialInstance : public Material {
22public:
23 explicit MaterialInstance(const toml::table& table, Handle<Schema> schema = {});
24 ~MaterialInstance() override;
25
26 [[nodiscard]]
27 auto type() const -> std::string_view override {
28 return "material_instance";
29 }
30
31 [[nodiscard]]
32 auto serialize(SaveMode mode) const -> std::vector<uint8_t> override;
33
34 void reload(const toml::table& table) override;
35
36 [[nodiscard]]
37 auto parent() const -> const Handle<Material>&;
38
39 [[nodiscard]]
40 auto shaders() const -> const std::vector<Handle<Shader>>& override;
41
42 [[nodiscard]]
43 auto settings() const -> MaterialSettings override;
44
45 [[nodiscard]]
46 auto value(std::string_view key) const -> const DataValue* override;
47
48 [[nodiscard]]
49 auto rootMaterial() -> Material* override;
50
51private:
52 auto parentMaterial() const -> Material*;
53
54 [[nodiscard]]
55 auto deltaRoot() const -> DataValue;
56
57 mutable Handle<Material> m_parent;
58 mutable bool m_parent_dirty = true;
59 mutable std::unordered_map<std::string, DataValue> m_merged_objects;
60};
61
62}
Typed value for TOML files.
Definition data_value.hpp:50
Type-safe smart pointer for assets.
Definition core_types.hpp:149
void reload(const toml::table &table) override
Re-parses the asset contents in place.
Definition material_instance.cpp:49
auto parent() const -> const Handle< Material > &
The parent material.
Definition material_instance.cpp:55
auto value(std::string_view key) const -> const DataValue *override
Looks up a shader parameter value by name.
Definition material_instance.cpp:114
auto rootMaterial() -> Material *override
The material owning the render pass, instances return their parent.
Definition material_instance.cpp:141
SaveMode
Definition core_types.hpp:25
Material asset backed by TOML data.
Fixed-function pipeline state carried by the material's [settings] block.
Definition material.hpp:33