Polyphase Game Engine
Loading...
Searching...
No Matches
MaterialLite.h
Go to the documentation of this file.
1#pragma once
2
3#include "Assets/Material.h"
5
6extern const char* gShadingModelStrings[];
7extern const char* gVertexColorModeStrings[];
8extern const char* gMaterialLiteUvSourceStrings[];
9
10enum class MaterialLiteUvSource : uint8_t
11{
12 Mesh,
13 WorldXY,
14 WorldXZ,
15 WorldYZ,
17
18 Count
19};
20
22{
29 glm::vec2 mUvOffsets[MAX_UV_MAPS] = { { 0.0f, 0.0f }, {0.0f, 0.0f} };
30 glm::vec2 mUvScales[MAX_UV_MAPS] = { { 1.0f, 1.0f }, {1.0f, 1.0f} };
32 glm::vec4 mColor = { 1.0f, 1.0f, 1.0f, 1.0f };
33 glm::vec4 mFresnelColor = { 1.0f, 0.0f, 0.0f, 0.0f };
34 float mEmission = 0.0f;
35 float mWrapLighting = 0.0f;
36 float mFresnelPower = 1.0f;
37 float mSpecular = 0.0f;
38 uint32_t mToonSteps = 2;
39 float mOpacity = 1.0f;
40 float mMaskCutoff = 0.5f;
41 float mShininess = 32.0f;
42 int32_t mSortPriority = 0;
43 uint32_t mNumTextures = 1;
44 bool mDisableDepthTest = false;
45 bool mFresnelEnabled = false;
46 bool mApplyFog = true;
48};
49
51{
52public:
53
55
56 static MaterialLite* New(Material* src = nullptr);
57
60
61 virtual void LoadStream(Stream& stream, Platform platform) override;
62 virtual void SaveStream(Stream& stream, Platform platform) override;
63 virtual void Create() override;
64 virtual void Destroy() override;
65 virtual bool Import(const std::string& path, ImportOptions* options) override;
66 virtual void GatherProperties(std::vector<Property>& outProps) override;
67 virtual glm::vec4 GetTypeColor() override;
68 virtual const char* GetTypeName() override;
69 virtual bool DrawCustomProperty(Property& prop) override;
70
71 virtual bool IsLite() const override;
72
73 void SaveLiteParams(Stream& stream);
74 void LoadLiteParams(Stream& stream, uint32_t version);
75
76 // Node graph integration
77 virtual bool HasNodeGraph() const override { return mUseNodeGraph; }
78 virtual NodeGraph* GetNodeGraph() override { return &mGraph; }
79 virtual void ApplyGraphValues(NodeGraph* graph) override;
80
81 NodeGraph& GetGraph() { return mGraph; }
82 const NodeGraph& GetGraph() const { return mGraph; }
83 void SetUseNodeGraph(bool use);
84 void ApplyGraphToParams();
85
86 const MaterialLiteParams& GetLiteParams() const;
87 void SetLiteParams(const MaterialLiteParams& params);
88
89 void SetTexture(uint32_t slot, Texture* texture);
90 Texture* GetTexture(uint32_t slot);
91
92 ShadingModel GetShadingModel() const;
93 void SetShadingModel(ShadingModel shadingModel);
94
95 virtual BlendMode GetBlendMode() const override;
96 void SetBlendMode(BlendMode blendMode);
97
98 VertexColorMode GetVertexColorMode() const;
99 void SetVertexColorMode(VertexColorMode mode);
100
101 glm::vec2 GetUvOffset(int32_t uvIndex = 0) const;
102 void SetUvOffset(glm::vec2 offset, int32_t uvIndex = 0);
103
104 glm::vec2 GetUvScale(int32_t uvIndex = 0) const;
105 void SetUvScale(glm::vec2 scale, int32_t uvIndex = 0);
106
107 MaterialLiteUvSource GetUvSource(int32_t uvIndex = 0) const;
108 void SetUvSource(MaterialLiteUvSource source, int32_t uvIndex = 0);
109
110 glm::vec4 GetColor() const;
111 void SetColor(const glm::vec4& color);
112
113 glm::vec4 GetFresnelColor() const;
114 void SetFresnelColor(const glm::vec4& color);
115
116 float GetEmission() const;
117 void SetEmission(float emission);
118
119 float GetWrapLighting() const;
120 void SetWrapLighting(float wrapLighting);
121
122 float GetFresnelPower() const;
123 void SetFresnelPower(float power);
124
125 float GetSpecular() const;
126 void SetSpecular(float specular);
127
128 uint32_t GetToonSteps() const;
129 void SetToonSteps(uint32_t steps);
130
131 float GetOpacity() const;
132 void SetOpacity(float opacity);
133
134 virtual float GetMaskCutoff() const override;
135 void SetMaskCutoff(float cutoff);
136
137 float GetShininess() const;
138 void SetShininess(float shininess);
139
140 virtual int32_t GetSortPriority() const override;
141 void SetSortPriority(int32_t priority);
142
143 virtual bool IsDepthTestDisabled() const override;
144 void SetDepthTestDisabled(bool depthTest);
145
146 bool IsFresnelEnabled() const;
147 void SetFresnelEnabled(bool enable);
148
149 virtual bool ShouldApplyFog() const override;
150 void SetApplyFog(bool applyFog);
151
152 virtual CullMode GetCullMode() const override;
153 void SetCullMode(CullMode cullMode);
154
155 uint32_t GetUvMap(uint32_t textureSlot);
156 void SetUvMap(uint32_t textureSlot, uint32_t uvMapIndex);
157
158 TevMode GetTevMode(uint32_t textureSlot);
159 void SetTevMode(uint32_t textureSlot, TevMode mode);
160
161 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
162
163protected:
164
165 // Properties
168 bool mUseNodeGraph = false;
169};
#define MAX_UV_MAPS
Definition Constants.h:27
#define MATERIAL_LITE_MAX_TEXTURES
Definition Constants.h:22
CullMode
Definition EngineTypes.h:146
Platform
Definition EngineTypes.h:31
ShadingModel
Definition EngineTypes.h:104
VertexColorMode
Definition EngineTypes.h:123
TevMode
Definition EngineTypes.h:132
BlendMode
Definition EngineTypes.h:113
MaterialLiteUvSource
Definition MaterialLite.h:11
const char * gVertexColorModeStrings[]
const char * gShadingModelStrings[]
const char * gMaterialLiteUvSourceStrings[]
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetRef.h:18
Definition Datum.h:169
Definition Asset.h:108
Definition MaterialLite.h:51
virtual bool HasNodeGraph() const override
Definition MaterialLite.h:77
virtual NodeGraph * GetNodeGraph() override
Definition MaterialLite.h:78
DECLARE_ASSET(MaterialLite, Material)
NodeGraph & GetGraph()
Definition MaterialLite.h:81
NodeGraph mGraph
Definition MaterialLite.h:167
MaterialLiteParams mLiteParams
Definition MaterialLite.h:166
const NodeGraph & GetGraph() const
Definition MaterialLite.h:82
Definition Material.h:48
virtual glm::vec4 GetTypeColor() override
Definition Material.cpp:94
virtual bool Import(const std::string &path, ImportOptions *options) override
Definition Material.cpp:84
virtual void SaveStream(Stream &stream, Platform platform) override
Definition Material.cpp:42
virtual bool IsDepthTestDisabled() const
Definition Material.cpp:283
virtual void LoadStream(Stream &stream, Platform platform) override
Definition Material.cpp:10
virtual void ApplyGraphValues(NodeGraph *graph)
Definition Material.h:94
virtual const char * GetTypeName() override
Definition Material.cpp:99
virtual bool ShouldApplyFog() const
Definition Material.cpp:284
virtual BlendMode GetBlendMode() const
Definition Material.cpp:280
virtual CullMode GetCullMode() const
Definition Material.cpp:285
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Material.cpp:89
virtual int32_t GetSortPriority() const
Definition Material.cpp:282
virtual void Destroy() override
Definition Material.cpp:79
virtual float GetMaskCutoff() const
Definition Material.cpp:281
virtual void Create() override
Definition Material.cpp:74
virtual bool IsLite() const
Definition Material.cpp:119
Definition NodeGraph.h:17
virtual bool DrawCustomProperty(Property &prop)
Definition Object.h:46
Definition Property.h:14
Definition Stream.h:21
Definition Texture.h:10
Definition MaterialLite.h:22
uint8_t mUvSources[MAX_UV_MAPS]
Definition MaterialLite.h:31
float mWrapLighting
Definition MaterialLite.h:35
uint32_t mToonSteps
Definition MaterialLite.h:38
int32_t mSortPriority
Definition MaterialLite.h:42
BlendMode mBlendMode
Definition MaterialLite.h:24
TextureRef mTextures[MATERIAL_LITE_MAX_TEXTURES]
Definition MaterialLite.h:26
VertexColorMode mVertexColorMode
Definition MaterialLite.h:25
glm::vec2 mUvOffsets[MAX_UV_MAPS]
Definition MaterialLite.h:29
float mOpacity
Definition MaterialLite.h:39
float mFresnelPower
Definition MaterialLite.h:36
bool mDisableDepthTest
Definition MaterialLite.h:44
float mShininess
Definition MaterialLite.h:41
TevMode mTevModes[MATERIAL_LITE_MAX_TEXTURES]
Definition MaterialLite.h:28
glm::vec4 mFresnelColor
Definition MaterialLite.h:33
glm::vec2 mUvScales[MAX_UV_MAPS]
Definition MaterialLite.h:30
float mEmission
Definition MaterialLite.h:34
CullMode mCullMode
Definition MaterialLite.h:47
uint32_t mNumTextures
Definition MaterialLite.h:43
ShadingModel mShadingModel
Definition MaterialLite.h:23
bool mApplyFog
Definition MaterialLite.h:46
bool mFresnelEnabled
Definition MaterialLite.h:45
float mMaskCutoff
Definition MaterialLite.h:40
float mSpecular
Definition MaterialLite.h:37
uint8_t mUvMaps[MATERIAL_LITE_MAX_TEXTURES]
Definition MaterialLite.h:27
glm::vec4 mColor
Definition MaterialLite.h:32