added PureColor2D.cpp
This commit is contained in:
parent
198fe55216
commit
c485941342
@ -1 +1 @@
|
||||
Subproject commit b10387ad563ced36feb5cdd8eea3cdaed6e68bf6
|
||||
Subproject commit f5cfe02eed045d84ee03a9e32d62029c71fec530
|
@ -21,14 +21,14 @@ class TestApp:public CameraAppFramework
|
||||
|
||||
private:
|
||||
|
||||
SceneNode render_root;
|
||||
RenderList *render_list=nullptr;
|
||||
SceneNode render_root;
|
||||
RenderList * render_list =nullptr;
|
||||
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Pipeline * pipeline =nullptr;
|
||||
|
||||
Primitive * ro_plane_grid[3];
|
||||
Primitive * ro_plane_grid[3]{};
|
||||
|
||||
private:
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include<hgl/graph/VK.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
|
||||
class MaterialCreateInfo;
|
||||
|
||||
/**
|
||||
|
@ -52,14 +52,20 @@ public:
|
||||
MaterialCreateInfo(const MaterialConfig *);
|
||||
~MaterialCreateInfo()=default;
|
||||
|
||||
bool SetMaterialInstance(const AnsiString &codes,const uint32_t length)
|
||||
/**
|
||||
* 设置材质实例代码与数据长度
|
||||
* @param mi_glsl_codes 材质实例GLSL代码
|
||||
* @param mi_struct_bytes 单个材质实例数据长度
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
bool SetMaterialInstance(const AnsiString &mi_glsl_codes,const uint32_t mi_struct_bytes)
|
||||
{
|
||||
if(length>0&&codes.Length()<4)return(false);
|
||||
if(mi_struct_bytes>0&&mi_glsl_codes.Length()<4)return(false);
|
||||
|
||||
mi_length=length;
|
||||
mi_length=mi_struct_bytes;
|
||||
|
||||
if(length>0)
|
||||
mi_codes=codes;
|
||||
if(mi_struct_bytes>0)
|
||||
mi_codes=mi_glsl_codes;
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ namespace
|
||||
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
||||
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||
// VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME,
|
||||
// VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
|
||||
VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
|
||||
|
||||
// VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME,
|
||||
};
|
||||
|
57
src/ShaderGen/2d/PureColor2D.cpp
Normal file
57
src/ShaderGen/2d/PureColor2D.cpp
Normal file
@ -0,0 +1,57 @@
|
||||
#include"Std2DMaterial.h"
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
namespace
|
||||
{
|
||||
constexpr const char vs_main[]=R"(
|
||||
void main()
|
||||
{
|
||||
HandoverMI(); //交接材质实例ID给下一个Shader
|
||||
|
||||
gl_Position=GetPosition2D();
|
||||
})";
|
||||
|
||||
constexpr const char fs_main[]=R"(
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
MaterialInstance mi=GetMI();
|
||||
|
||||
Color=mi.Color;
|
||||
})";
|
||||
|
||||
class MaterialPureColor2D:public Std2DMaterial
|
||||
{
|
||||
public:
|
||||
|
||||
using Std2DMaterial::Std2DMaterial;
|
||||
~MaterialPureColor2D()=default;
|
||||
|
||||
bool CreateVertexShader(ShaderCreateInfoVertex *vsc) override
|
||||
{
|
||||
if(!Std2DMaterial::CreateVertexShader(vsc))
|
||||
return(false);
|
||||
|
||||
vsc->AddFunction(vs_main);
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool CreateFragmentShader(ShaderCreateInfoFragment *fsc) override
|
||||
{
|
||||
fsc->AddOutput(VAT_VEC4,"Color"); //Fragment shader的输出等于最终的RT了,所以这个名称其实随便起。
|
||||
|
||||
fsc->AddFunction(fs_main);
|
||||
return(true);
|
||||
}
|
||||
};//class MaterialPureColor2D:public Std2DMaterial
|
||||
}//namespace
|
||||
|
||||
MaterialCreateInfo *CreatePureColor2D(const Material2DConfig *cfg)
|
||||
{
|
||||
MaterialPureColor2D mpc2d(cfg);
|
||||
|
||||
return mpc2d.Create();
|
||||
}
|
||||
STD_MTL_NAMESPACE_END
|
@ -12,9 +12,8 @@ void main()
|
||||
gl_Position=GetPosition2D();
|
||||
})";
|
||||
|
||||
//一个shader中所有向下一个shader输出,会被定义在一个名为Output的结构中。
|
||||
//而同时,这个Output结构,会在下一个Shader中,以Input名称出现使用。
|
||||
//也就是说:在此材质中,VertexShader中的Output等于FragmentShader中的Input
|
||||
//一个shader中输出的所有数据,会被定义在一个名为Output的结构中。所以编写时要用Output.XXXX来使用。
|
||||
//而同时,这个结构在下一个Shader中以Input名称出现,使用时以Input.XXX的形式使用。
|
||||
|
||||
constexpr const char fs_main[]=R"(
|
||||
void main()
|
||||
|
@ -49,7 +49,8 @@ SET(STD_MTL_2D_HEADER_PATH ${STD_MTL_HEADER_PATH}/2d)
|
||||
SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/Material2DConfig.h
|
||||
2d/Std2DMaterial.h
|
||||
2d/Std2DMaterial.cpp
|
||||
2d/VertexColor2D.cpp)
|
||||
2d/VertexColor2D.cpp
|
||||
2d/PureColor2D.cpp)
|
||||
|
||||
SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
||||
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
||||
|
Loading…
x
Reference in New Issue
Block a user