2019-05-30 19:51:20 +08:00
|
|
|
|
#ifndef HGL_GRAPH_MATERIAL_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_MATERIAL_INCLUDE
|
|
|
|
|
|
2020-01-09 17:40:39 +08:00
|
|
|
|
#include<hgl/graph/material/Component.h>
|
2020-01-14 18:09:40 +08:00
|
|
|
|
#include<hgl/type/BaseString.h>
|
|
|
|
|
|
|
|
|
|
MATERIAL_NAMESPACE_BEGIN
|
2020-01-09 16:53:30 +08:00
|
|
|
|
enum class BlendMode
|
2019-05-30 19:51:20 +08:00
|
|
|
|
{
|
2020-01-09 16:53:30 +08:00
|
|
|
|
Opaque=0,
|
|
|
|
|
Mask,
|
|
|
|
|
Alpha,
|
|
|
|
|
Additive,
|
2020-01-14 18:09:40 +08:00
|
|
|
|
Subtractive,
|
2020-01-09 16:53:30 +08:00
|
|
|
|
Modulate,
|
|
|
|
|
PreMultiAlpha, // 预计算好一半的Alpha
|
|
|
|
|
|
|
|
|
|
BEGIN_RANGE =Opaque,
|
|
|
|
|
END_RANGE =PreMultiAlpha,
|
|
|
|
|
RANGE_SIZE =END_RANGE-BEGIN_RANGE+1
|
2020-01-09 17:40:39 +08:00
|
|
|
|
};//enum class BlendMode
|
2020-01-09 16:53:30 +08:00
|
|
|
|
|
2020-01-15 21:02:37 +08:00
|
|
|
|
/**
|
|
|
|
|
* 延迟渲染阶段流程
|
|
|
|
|
*/
|
|
|
|
|
enum class DeferredRenderPass
|
|
|
|
|
{
|
|
|
|
|
Opaque, ///<不透明部分
|
|
|
|
|
Mask, ///<遮罩部分
|
|
|
|
|
|
|
|
|
|
Composition, ///<GBuffer合成阶段
|
|
|
|
|
|
|
|
|
|
Additive, ///<Subtractive混合阶段
|
|
|
|
|
Subtractive, ///<Additive混合阶段
|
|
|
|
|
Alpha, ///<Alpha透明区混合阶段
|
|
|
|
|
|
|
|
|
|
PostProcess, ///<后期
|
|
|
|
|
};//enum class DeferredRenderPass
|
|
|
|
|
|
2020-01-09 16:53:30 +08:00
|
|
|
|
class Material
|
|
|
|
|
{
|
2020-01-14 18:09:40 +08:00
|
|
|
|
UTF8String name;
|
|
|
|
|
|
2020-01-09 16:53:30 +08:00
|
|
|
|
ComponentBitsConfig comp_cfg;
|
2020-01-14 18:09:40 +08:00
|
|
|
|
BlendMode blend_mode;
|
|
|
|
|
|
|
|
|
|
bool two_sided=false;
|
|
|
|
|
bool wire_frame=false;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
Material(const UTF8String &n,
|
|
|
|
|
const ComponentBitsConfig &cbf,
|
|
|
|
|
const BlendMode &bm=BlendMode::Opaque,
|
|
|
|
|
const bool ts=false,
|
|
|
|
|
const bool wf=false)
|
|
|
|
|
{
|
|
|
|
|
name=n;
|
|
|
|
|
comp_cfg=cbf;
|
|
|
|
|
blend_mode=bm;
|
|
|
|
|
two_sided=false;
|
|
|
|
|
wire_frame=false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual ~Material()=default;
|
2020-01-09 16:53:30 +08:00
|
|
|
|
};//class Material
|
2020-01-14 18:09:40 +08:00
|
|
|
|
MATERIAL_NAMESPACE_END
|
2020-01-08 21:52:53 +08:00
|
|
|
|
#endif//HGL_GRAPH_MATERIAL_INCLUDE
|