2023-03-22 02:41:19 +08:00
|
|
|
|
#pragma once
|
2023-03-21 21:01:16 +08:00
|
|
|
|
|
2023-10-09 01:12:27 +08:00
|
|
|
|
#include<hgl/type/String.h>
|
|
|
|
|
|
2023-03-21 21:01:16 +08:00
|
|
|
|
#define STD_MTL_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace mtl{
|
|
|
|
|
#define STD_MTL_NAMESPACE_END }}}
|
|
|
|
|
|
2024-05-25 17:58:39 +08:00
|
|
|
|
#define STD_MTL_NAMESPACE hgl::graph::mtl
|
|
|
|
|
#define STD_MTL_NAMESPACE_USING using namespace STD_MTL_NAMESPACE;
|
2023-06-02 20:45:19 +08:00
|
|
|
|
|
2023-10-07 16:14:34 +08:00
|
|
|
|
#define STD_MTL_FUNC_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace mtl{namespace func{
|
|
|
|
|
#define STD_MTL_FUNC_NAMESPACE_END }}}}
|
|
|
|
|
|
2024-05-25 17:58:39 +08:00
|
|
|
|
#define STD_MTL_FUNC_NAMESPACE hgl::graph::mtl::func
|
|
|
|
|
#define STD_MTL_FUNC_NAMESPACE_USING using namespace STD_MTL_FUNC_NAMESPACE;
|
2023-10-07 16:14:34 +08:00
|
|
|
|
|
2023-06-02 20:45:19 +08:00
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
namespace graph
|
|
|
|
|
{
|
2023-10-08 10:04:58 +08:00
|
|
|
|
class ShaderCreateInfoVertex;
|
|
|
|
|
class ShaderCreateInfoGeometry;
|
|
|
|
|
class ShaderCreateInfoFragment;
|
|
|
|
|
|
2023-06-02 20:45:19 +08:00
|
|
|
|
namespace mtl
|
|
|
|
|
{
|
2023-10-07 16:14:34 +08:00
|
|
|
|
namespace func
|
|
|
|
|
{
|
|
|
|
|
}//namespace func
|
2023-10-08 10:04:58 +08:00
|
|
|
|
|
|
|
|
|
class MaterialCreateInfo;
|
2023-10-09 20:56:25 +08:00
|
|
|
|
struct MaterialCreateConfig;
|
2023-10-08 10:04:58 +08:00
|
|
|
|
|
|
|
|
|
class StdMaterial
|
|
|
|
|
{
|
2023-10-09 20:56:25 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
MaterialCreateInfo *mci;
|
|
|
|
|
|
2023-10-08 10:04:58 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
2023-10-10 02:48:02 +08:00
|
|
|
|
virtual bool BeginCustomShader(){return true;/*some work before create shader*/};
|
2023-10-08 10:04:58 +08:00
|
|
|
|
|
|
|
|
|
virtual bool CustomVertexShader(ShaderCreateInfoVertex *)=0;
|
|
|
|
|
virtual bool CustomGeometryShader(ShaderCreateInfoGeometry *){return false;}
|
|
|
|
|
virtual bool CustomFragmentShader(ShaderCreateInfoFragment *)=0;
|
|
|
|
|
|
2023-10-10 02:48:02 +08:00
|
|
|
|
virtual bool EndCustomShader(){return true;/*some work after create shader*/};
|
2023-10-08 10:04:58 +08:00
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2023-10-09 20:56:25 +08:00
|
|
|
|
StdMaterial(const MaterialCreateConfig *);
|
2023-10-08 10:04:58 +08:00
|
|
|
|
virtual ~StdMaterial()=default;
|
|
|
|
|
|
2023-10-09 20:56:25 +08:00
|
|
|
|
virtual MaterialCreateInfo *Create();
|
2023-10-08 10:04:58 +08:00
|
|
|
|
};//class StdMaterial
|
2023-06-02 20:45:19 +08:00
|
|
|
|
}//namespace mtl
|
|
|
|
|
}//namespace graph
|
|
|
|
|
}//namespace hgl
|