1.added RenderTargetOutputConfig at MaterialCreateInfo.

2.added MaterialInstance's data at MaterialCreateInfo.
This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-05-10 11:26:42 +08:00
parent 004504e027
commit 9c956e1c65
3 changed files with 37 additions and 9 deletions

View File

@ -9,19 +9,29 @@
#include<hgl/graph/VKSamplerType.h>
namespace hgl{namespace graph{
struct RenderTargetOutputConfig
{
uint color;
bool depth;
bool stencil;
};
class MaterialCreateInfo
{
AnsiString shader_name;
protected:
uint rt_color_count; ///<输出的RT数量
bool rt_depth; ///<是否输出深度
RenderTargetOutputConfig rto_cfg; ///<输出配置
uint32_t shader_stage; ///<着色器阶段
MaterialDescriptorInfo mdi; ///<材质描述符管理器
AnsiString mi_codes; ///<MaterialInstance代码
uint32_t mi_length; ///<MaterialInstance长度
ShaderCreateInfoMap shader_map; ///<着色器列表
ShaderCreateInfoVertex *vert;
@ -49,9 +59,23 @@ public:
public:
MaterialCreateInfo(const AnsiString &,const uint rc,const bool rd,const uint32 ss=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT);
MaterialCreateInfo(const AnsiString &,const RenderTargetOutputConfig &,const uint32 ss=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT);
~MaterialCreateInfo()=default;
bool SetMaterialInstance(const AnsiString &codes,const uint32_t length)
{
if(length>64)return(false);
if(length>0&&codes.Length()<4)return(false);
mi_length=length;
if(length>0)
mi_codes=codes;
return(true);
}
bool AddStruct(const AnsiString &ubo_typename,const AnsiString &codes);
bool AddStruct(const ShaderBufferSource &ss)
{

View File

@ -13,9 +13,14 @@ MaterialCreateInfo *CreateVertexColor2D(const Material2DConfig *cfg)
AnsiString mtl_name;
MaterialCreateInfo *mci=new MaterialCreateInfo( mtl_name, ///<名称
1, ///<最终一个RT输出
false); ///<无深度输出
const RenderTargetOutputConfig rtoc
{
1, //输出一个颜色
false, //不输出深度
false //不输出stencil
};
MaterialCreateInfo *mci=new MaterialCreateInfo(mtl_name,rtoc);
AnsiString sfComputePosition;

View File

@ -5,12 +5,11 @@ using namespace hgl;
using namespace hgl::graph;
namespace hgl{namespace graph{
MaterialCreateInfo::MaterialCreateInfo(const AnsiString &n,const uint rc,const bool rd,const uint32 ss)
MaterialCreateInfo::MaterialCreateInfo(const AnsiString &n,const RenderTargetOutputConfig &cfg,const uint32 ss)
{
shader_name=n;
rt_color_count=rc;
rt_depth=rd;
rto_cfg=cfg;
shader_stage=ss;