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