ULRE/inc/hgl/graph/mtl/Material3DCreateConfig.h

79 lines
2.3 KiB
C
Raw Normal View History

2023-09-27 20:31:46 +08:00
#pragma once
#include<hgl/graph/mtl/MaterialLibrary.h>
2023-09-27 20:31:46 +08:00
#include<hgl/graph/mtl/MaterialConfig.h>
#include<hgl/graph/CoordinateSystem.h>
#include<hgl/graph/VertexAttrib.h>
STD_MTL_NAMESPACE_BEGIN
2024-06-25 01:17:47 +08:00
struct Material3DCreateConfig:public MaterialCreateConfig,public Comparator<Material3DCreateConfig>
2023-09-27 20:31:46 +08:00
{
bool camera; ///<包含摄像机矩阵信息
2023-09-27 20:31:46 +08:00
bool local_to_world; ///<包含LocalToWorld矩阵
2024-06-18 01:28:53 +08:00
VAType position_format; ///<position格式
2023-09-27 20:31:46 +08:00
2023-09-28 15:03:34 +08:00
// bool reverse_depth; ///<使用反向深度
2023-09-27 20:31:46 +08:00
public:
Material3DCreateConfig(const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(name,p)
2023-09-27 20:31:46 +08:00
{
rt_output.color=1; //输出一个颜色
rt_output.depth=true; //不输出深度
rt_output.stencil=false; //不输出stencil
camera=true;
2023-09-27 20:31:46 +08:00
local_to_world=false;
position_format=VAT_VEC3;
2023-09-28 15:03:34 +08:00
// reverse_depth=false;
2023-09-27 20:31:46 +08:00
}
2023-10-12 14:59:39 +08:00
const int compare(const Material3DCreateConfig &cfg)const override
2023-10-12 14:59:39 +08:00
{
int off=MaterialCreateConfig::compare(cfg);
2023-10-12 14:59:39 +08:00
if(off)return off;
off=camera-cfg.camera;
if(off)return off;
off=local_to_world-cfg.local_to_world;
if(off)return off;
off=position_format.Comp(cfg.position_format);
return off;
}
2023-09-27 20:31:46 +08:00
};//struct Material3DCreateConfig:public MaterialCreateConfig
DEFINE_MATERIAL_FACTORY_CLASS(VertexColor3D, const Material3DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(VertexLuminance3D,const Material3DCreateConfig);
DEFINE_MATERIAL_FACTORY_CLASS(Gizmo3D, const Material3DCreateConfig);
2024-06-26 01:50:55 +08:00
struct BillboardMaterialCreateConfig:public Material3DCreateConfig
{
bool fixed_size; ///<固定大小(指像素尺寸)
Vector2u pixel_size; ///<像素尺寸
public:
using Material3DCreateConfig::Material3DCreateConfig;
};
DEFINE_MATERIAL_FACTORY_CLASS(Billboard2D,BillboardMaterialCreateConfig);
/**
*
* @param mtl_name
* @param cfg
* @return
*/
MaterialCreateInfo *LoadMaterialFromFile(const VulkanDevAttr *dev_attr,const AnsiString &name,Material3DCreateConfig *cfg);
2023-09-27 20:31:46 +08:00
STD_MTL_NAMESPACE_END