Polyphase Game Engine
Loading...
Searching...
No Matches
MaterialBase.h
Go to the documentation of this file.
1#pragma once
2
3#include "Assets/Material.h"
4
5#include "Vertex.h"
6
9
10class Texture;
11class MaterialLite;
12
14{
15public:
16
18
21
22 virtual void LoadStream(Stream& stream, Platform platform) override;
23 virtual void SaveStream(Stream& stream, Platform platform) override;
24 virtual void Create() override;
25 virtual void Destroy() override;
26 virtual bool Import(const std::string& path, ImportOptions* options) override;
27 virtual void GatherProperties(std::vector<Property>& outProps) override;
28 virtual glm::vec4 GetTypeColor() override;
29 virtual const char* GetTypeName() override;
30
31 virtual bool IsBase() const override;
32
33 void Compile();
34 void MarkStale();
35
36 virtual BlendMode GetBlendMode() const override;
37 virtual float GetMaskCutoff() const override;
38 virtual int32_t GetSortPriority() const override;
39 virtual bool IsDepthTestDisabled() const override;
40 virtual bool ShouldApplyFog() const override;
41 virtual CullMode GetCullMode() const override;
42
43 void SetBlendMode(BlendMode blendMode);
44 void SetMaskCutoff(float cutoff);
45 void SetSortPriority(int32_t priority);
46 void SetDepthTestDisabled(bool depthTest);
47 void SetApplyFog(bool applyFog);
48 void SetCullMode(CullMode cullMode);
49
50 uint32_t GetNumScalarParameters();
51 uint32_t GetNumVectorParameters();
52 uint32_t GetNumTextureParameters();
53 uint32_t GetUniformBufferSize();
54
55 const std::vector<uint8_t>& GetVertexShaderCode(VertexType type) const;
56 const std::vector<uint8_t>& GetFragmentShaderCode();
57
58 MaterialLite* GetLiteFallback() const;
59
60 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
61
62protected:
63
64 // Properties
65 std::string mShader;
67 float mMaskCutoff = 0.5f;
68 int32_t mSortPriority = 0;
69 bool mDisableDepthTest = false;
70 bool mApplyFog = true;
72
73 // Misc
75 std::vector<uint8_t> mVertexCode[(uint32_t)VertexType::Max];
76 std::vector<uint8_t> mFragmentCode;
77 uint32_t mNumScalarParams = 0;
78 uint32_t mNumVectorParams = 0;
79 uint32_t mNumTextureParams = 0;
80 bool mCompiled = false;
81 bool mCompilationStale = true;
82};
CullMode
Definition EngineTypes.h:139
Platform
Definition EngineTypes.h:31
BlendMode
Definition EngineTypes.h:106
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
VertexType
Definition Vertex.h:7
Definition AssetRef.h:18
Definition Datum.h:164
Definition Asset.h:102
Definition MaterialBase.h:14
std::vector< uint8_t > mFragmentCode
Definition MaterialBase.h:76
MaterialRef mLiteFallback
Definition MaterialBase.h:74
DECLARE_ASSET(MaterialBase, Material)
std::string mShader
Definition MaterialBase.h:65
Definition MaterialLite.h:38
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 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 bool IsBase() const
Definition Material.cpp:109
virtual void Create() override
Definition Material.cpp:74
Definition Stream.h:21
Definition Texture.h:10