From c355f96f9b6b81f479fd63f2d1f6e4b499a8c049 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 6 Mar 2024 13:54:05 +0800 Subject: [PATCH] little codes --- .../LightBasic/BlinnPhongDirectionLight.cpp | 5 ++- inc/hgl/graph/mtl/BlinnPhong.h | 36 ++++++++++--------- inc/hgl/graph/mtl/UniformBuffer.h | 24 +++++++++++++ src/ShaderGen/CMakeLists.txt | 3 +- 4 files changed, 50 insertions(+), 18 deletions(-) create mode 100644 inc/hgl/graph/mtl/UniformBuffer.h diff --git a/example/LightBasic/BlinnPhongDirectionLight.cpp b/example/LightBasic/BlinnPhongDirectionLight.cpp index ccd29268..dd76d2cd 100644 --- a/example/LightBasic/BlinnPhongDirectionLight.cpp +++ b/example/LightBasic/BlinnPhongDirectionLight.cpp @@ -1,4 +1,4 @@ -// BlinnPhong direction light +// BlinnPhong direction light #include"VulkanAppFramework.h" #include @@ -64,6 +64,9 @@ private: mtl_sun_light=db->LoadMaterial("Std3D/BlinnPhong/SunLightPureColor",&cfg); if(!mtl_sun_light)return(false); + mtl_sun_light->BindUBO(DescriptorSetType::Global,"sun",sun_data,sizeof(sun_data)); //恢复SUN.UBO或是使用内嵌SUN定义也行, + //恢复SUN.UBO的意义是让引擎支持读取外部UBO配置文件 + mi_sphere=db->CreateMaterialInstance(mtl_sun_light); if(!mi_sphere)return(false); diff --git a/inc/hgl/graph/mtl/BlinnPhong.h b/inc/hgl/graph/mtl/BlinnPhong.h index 584b4d33..62ee9b1b 100644 --- a/inc/hgl/graph/mtl/BlinnPhong.h +++ b/inc/hgl/graph/mtl/BlinnPhong.h @@ -1,22 +1,26 @@ #pragma once #include +#include #include - -namespace hgl +STD_MTL_NAMESPACE_BEGIN +namespace blinnphong { - namespace graph + struct SunLight { - namespace mtl - { - namespace blinnphong - { - struct SunLight - { - Vector3f direction; - Vector3f color; - };//struct SunLight - }//namespace blinnphong - }//namespace mtl - }//namespace graph -}//namespace hgl \ No newline at end of file + Vector3f direction; + Vector3f color; + };//struct SunLight + + constexpr const ShaderBufferSource SBS_SunLight= + { + "SunLight", + "sun", + + R"( + vec3 direction; + vec3 color; +)" + }; +}//namespace blinnphong +STD_MTL_NAMESPACE_END diff --git a/inc/hgl/graph/mtl/UniformBuffer.h b/inc/hgl/graph/mtl/UniformBuffer.h new file mode 100644 index 00000000..e10fd1a8 --- /dev/null +++ b/inc/hgl/graph/mtl/UniformBuffer.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include + +STD_MTL_NAMESPACE_BEGIN + +/** +* 所有UBO的基类,它即向生成器提供代码,也可以为渲染器提供数据 +*/ +class UniformBuffer +{ +private: + + ShaderBufferSource *sbs; + +public: + + virtual const AnsiString &GetStructName ()const{return sbs->struct_name;} ///<取得结构名称 + virtual const AnsiString &GetDefaultValueName ()const{return sbs->name;} ///<取得默认变量名称 + virtual const AnsiString &GetShaderCodes ()const{return sbs->codes;} ///<取得Shader代码 +};//class UniformBuffer + +STD_MTL_NAMESPACE_END diff --git a/src/ShaderGen/CMakeLists.txt b/src/ShaderGen/CMakeLists.txt index a0404b16..f8e1a0a1 100644 --- a/src/ShaderGen/CMakeLists.txt +++ b/src/ShaderGen/CMakeLists.txt @@ -36,7 +36,8 @@ SOURCE_GROUP("GLSL Compiler" FILES ${GLSL_COMPILER_SOURCE}) set(STD_MTL_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/mtl) -SET(SHADERGEN_COMMON_FILES ${STD_MTL_HEADER_PATH}/UBOCommon.h +SET(SHADERGEN_COMMON_FILES ${STD_MTL_HEADER_PATH}/UniformBuffer.h + ${STD_MTL_HEADER_PATH}/UBOCommon.h ${STD_MTL_HEADER_PATH}/SamplerName.h common/MFCommon.h common/MFGetPosition.h