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:
|
private:
|
||||||
|
|
||||||
SceneNode render_root;
|
SceneNode render_root;
|
||||||
RenderList *render_list=nullptr;
|
RenderList * render_list =nullptr;
|
||||||
|
|
||||||
Material * material =nullptr;
|
Material * material =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
Primitive * ro_plane_grid[3];
|
Primitive * ro_plane_grid[3]{};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
#include<hgl/graph/VK.h>
|
#include<hgl/graph/VK.h>
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
class MaterialCreateInfo;
|
class MaterialCreateInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -52,14 +52,20 @@ public:
|
|||||||
MaterialCreateInfo(const MaterialConfig *);
|
MaterialCreateInfo(const MaterialConfig *);
|
||||||
~MaterialCreateInfo()=default;
|
~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)
|
if(mi_struct_bytes>0)
|
||||||
mi_codes=codes;
|
mi_codes=mi_glsl_codes;
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ namespace
|
|||||||
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
||||||
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||||
// VK_AMD_DISPLAY_NATIVE_HDR_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,
|
// VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME,
|
||||||
};
|
};
|
||||||
|
@ -220,7 +220,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
const ShaderCreateInfoVertex *vert=mci->GetVS();
|
const ShaderCreateInfoVertex *vert=mci->GetVS();
|
||||||
|
|
||||||
if(vert)
|
if(vert)
|
||||||
{
|
{
|
||||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Vertex"),
|
sm=CreateShaderModule( mtl_name+OS_TEXT("?Vertex"),
|
||||||
VK_SHADER_STAGE_VERTEX_BIT,
|
VK_SHADER_STAGE_VERTEX_BIT,
|
||||||
vert->GetSPVData(),vert->GetSPVSize());
|
vert->GetSPVData(),vert->GetSPVSize());
|
||||||
|
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
|
@ -39,7 +39,7 @@ bool Std2DMaterial::CreateVertexShader(ShaderCreateInfoVertex *vsc)
|
|||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialCreateInfo *Std2DMaterial::Create()
|
MaterialCreateInfo *Std2DMaterial::Create()
|
||||||
{
|
{
|
||||||
if(mci->hasVertex())
|
if(mci->hasVertex())
|
||||||
|
@ -12,9 +12,8 @@ void main()
|
|||||||
gl_Position=GetPosition2D();
|
gl_Position=GetPosition2D();
|
||||||
})";
|
})";
|
||||||
|
|
||||||
//一个shader中所有向下一个shader输出,会被定义在一个名为Output的结构中。
|
//一个shader中输出的所有数据,会被定义在一个名为Output的结构中。所以编写时要用Output.XXXX来使用。
|
||||||
//而同时,这个Output结构,会在下一个Shader中,以Input名称出现使用。
|
//而同时,这个结构在下一个Shader中以Input名称出现,使用时以Input.XXX的形式使用。
|
||||||
//也就是说:在此材质中,VertexShader中的Output等于FragmentShader中的Input
|
|
||||||
|
|
||||||
constexpr const char fs_main[]=R"(
|
constexpr const char fs_main[]=R"(
|
||||||
void main()
|
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
|
SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/Material2DConfig.h
|
||||||
2d/Std2DMaterial.h
|
2d/Std2DMaterial.h
|
||||||
2d/Std2DMaterial.cpp
|
2d/Std2DMaterial.cpp
|
||||||
2d/VertexColor2D.cpp)
|
2d/VertexColor2D.cpp
|
||||||
|
2d/PureColor2D.cpp)
|
||||||
|
|
||||||
SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
||||||
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user