diff --git a/CMSceneGraph b/CMSceneGraph index af89ab16..f207c0b8 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit af89ab168343de511796f400d17c6bc14836f691 +Subproject commit f207c0b844e4c8474cdd4a94cd276251025f23ed diff --git a/example/Vulkan/second_triangle.cpp b/example/Vulkan/second_triangle.cpp index 4533abb9..8f254faf 100644 --- a/example/Vulkan/second_triangle.cpp +++ b/example/Vulkan/second_triangle.cpp @@ -46,7 +46,7 @@ private: if(!material_instance) return(false); - BindCameraUBO(material_instance); + db->BindGlobalDescriptor(material_instance); // pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d")); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles); //等同上一行,为Framework重载,默认使用swapchain的render target diff --git a/inc/hgl/graph/mtl/2d/VertexColor2D.h b/inc/hgl/graph/mtl/2d/VertexColor2D.h new file mode 100644 index 00000000..8f9506dc --- /dev/null +++ b/inc/hgl/graph/mtl/2d/VertexColor2D.h @@ -0,0 +1,19 @@ +#ifndef HGL_GRAPH_MTL_2D_VERTEX2D_INCLUDE +#define HGL_GRAPH_MTL_2D_VERTEX2D_INCLUDE + +#include + +namespace hgl +{ + namespace graph + { + class MaterialCreateInfo; + + namespace mtl + { + MaterialCreateInfo *CreateVertexColor2D(const CoordinateSystem2D &); + }//namespace mtl + }//namespace graph +}//namespace hgl + +#endif//HGL_GRAPH_MTL_2D_VERTEX2D_INCLUDE diff --git a/inc/hgl/graph/mtl/2d/VertexColor2DNDC.h b/inc/hgl/graph/mtl/2d/VertexColor2DNDC.h deleted file mode 100644 index 2d40d155..00000000 --- a/inc/hgl/graph/mtl/2d/VertexColor2DNDC.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE -#define HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE - -namespace hgl -{ - namespace graph - { - class MaterialCreateInfo; - - namespace mtl - { - MaterialCreateInfo *CreateVertexColor2DNDC(); - }//namespace mtl - }//namespace graph -}//namespace hgl - -#endif//HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE diff --git a/inc/hgl/graph/mtl/StdMaterial.h b/inc/hgl/graph/mtl/StdMaterial.h index 6834ff34..f4682687 100644 --- a/inc/hgl/graph/mtl/StdMaterial.h +++ b/inc/hgl/graph/mtl/StdMaterial.h @@ -1,6 +1,19 @@ -#pragma once +#pragma once #define STD_MTL_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace mtl{ #define STD_MTL_NAMESPACE_END }}} #define STD_MTL_NAMESPACE_USING using namespace hgl::graph::mtl + +enum class CoordinateSystem2D +{ + NDC, + ZeroToOne, //左上角为0,0;右下角为1,1 + Ortho //左上角为0,0;右下角为(width-1),(height-1) +}; + +namespace GlobalShaderUBO +{ + constexpr const char ViewportInfo[]="ViewportInfo"; + constexpr const char CameraInfo[]="CameraInfo"; +} diff --git a/src/ShaderGen/2d/VertexColor2DNDC.cpp b/src/ShaderGen/2d/VertexColor2D.cpp similarity index 64% rename from src/ShaderGen/2d/VertexColor2DNDC.cpp rename to src/ShaderGen/2d/VertexColor2D.cpp index 8b27e1dc..eb2675af 100644 --- a/src/ShaderGen/2d/VertexColor2DNDC.cpp +++ b/src/ShaderGen/2d/VertexColor2D.cpp @@ -1,15 +1,29 @@ #include +#include #include #include #include STD_MTL_NAMESPACE_BEGIN -MaterialCreateInfo *CreateVertexColor2DNDC() +MaterialCreateInfo *CreateVertexColor2D(const CoordinateSystem2D &cs) { - MaterialCreateInfo *mci=new MaterialCreateInfo("VertexColor2DNDC", ///<名称,随便起 + AnsiString mtl_name="VertexColor2D"; + + if(cs==CoordinateSystem2D::NDC)mtl_name+="NDC";else + if(cs==CoordinateSystem2D::ZeroToOne)mtl_name+="ZeroToOne";else + if(cs==CoordinateSystem2D::Ortho)mtl_name+="Ortho";else + return(nullptr); + + + MaterialCreateInfo *mci=new MaterialCreateInfo( mtl_name, ///<名称 1, ///<最终一个RT输出 false); ///<无深度输出 + if(cs==CoordinateSystem2D::Ortho) + { + mci->AddStruct(GlobalShaderUBO::ViewportInfo,""); + } + //vertex部分 { ShaderCreateInfoVertex *vsc=mci->GetVS(); diff --git a/src/ShaderGen/CMakeLists.txt b/src/ShaderGen/CMakeLists.txt index 71987361..4d317f66 100644 --- a/src/ShaderGen/CMakeLists.txt +++ b/src/ShaderGen/CMakeLists.txt @@ -39,8 +39,8 @@ set(STD_MTL_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/mtl) SET(STD_MTL_2D_HEADER_PATH ${STD_MTL_HEADER_PATH}/2d) -SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/VertexColor2DNDC.h - 2d/VertexColor2DNDC.cpp) +SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/VertexColor2D.h + 2d/VertexColor2D.cpp) SET(STANDARD_MATERIAL_SOURCE ${STD_MTL_HEADER_PATH}/StdMaterial.h)