From 09e9e71d59d2e4252771f586aa28b14e2439d024 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 24 Jun 2024 22:30:34 +0800 Subject: [PATCH] adjust & layout codes. --- CMPlatform | 2 +- ShaderLibrary/Billboard/2DWay.vert | 0 ShaderLibrary/Std3D/Billboard/2DWay.mtl | 43 ---------- ShaderLibrary/Std3D/Billboard/FixedSize.mtl | 82 +++++++++++++++++++ .../BlinnPhong/SunLightPureColorTexture.mtl | 2 +- example/Basic/BillboardTest.cpp | 6 +- .../Vulkan/VKRenderResourceMaterial.cpp | 2 +- src/ShaderGen/3d/M_BillboardDynamicSize.cpp | 6 +- src/ShaderGen/3d/M_BillboardFixedSize.cpp | 12 +-- 9 files changed, 97 insertions(+), 58 deletions(-) delete mode 100644 ShaderLibrary/Billboard/2DWay.vert delete mode 100644 ShaderLibrary/Std3D/Billboard/2DWay.mtl create mode 100644 ShaderLibrary/Std3D/Billboard/FixedSize.mtl diff --git a/CMPlatform b/CMPlatform index 8d091ebf..3b769e69 160000 --- a/CMPlatform +++ b/CMPlatform @@ -1 +1 @@ -Subproject commit 8d091ebfb0fb02c320789357f66bf84d1c80682f +Subproject commit 3b769e692b3e2dc43dba9c682f7e899d2115eac7 diff --git a/ShaderLibrary/Billboard/2DWay.vert b/ShaderLibrary/Billboard/2DWay.vert deleted file mode 100644 index e69de29b..00000000 diff --git a/ShaderLibrary/Std3D/Billboard/2DWay.mtl b/ShaderLibrary/Std3D/Billboard/2DWay.mtl deleted file mode 100644 index d5e39cd4..00000000 --- a/ShaderLibrary/Std3D/Billboard/2DWay.mtl +++ /dev/null @@ -1,43 +0,0 @@ -#Material -Name Billboard2DWay -Base Std3D/Billboard - -#VertexInput -vec2 TexCoord - -#Vertex -Output -{ - vec2 TexCoord -} - -Code -{ - void main() - { - Output.TexCoord=TexCoord; - - vec4 pos=GetPosition3D() - +camera.camera_right*TexCoord.x*Billboard.Size.x - +camera.camera_up *TexCoord.y*Billboard.Size.y; - - gl_Position=GetPosition3D(); - } -} - -#Fragment - -sampler2D TextureBaseColor - -Output -{ - vec4 FragColor; -} - -Code -{ - void main() - { - FragColor=texture(TextureBaseColor,Input.TexCoord); - } -} diff --git a/ShaderLibrary/Std3D/Billboard/FixedSize.mtl b/ShaderLibrary/Std3D/Billboard/FixedSize.mtl new file mode 100644 index 00000000..daec061e --- /dev/null +++ b/ShaderLibrary/Std3D/Billboard/FixedSize.mtl @@ -0,0 +1,82 @@ +#Material +Name BillboardFixedSize +Base Std3D/Billboard + +#VertexInput +vec2 TexCoord + +#MaterialInstance +Length 8 +Stage Vertex + +Code +{ + uvec2 BillboardSize; +} + +#Vertex +Output +{ + vec2 BillboardSize +} + +Code +{ + void main() + { + MaterialInstance mi=GetMI(); + + Output.BillboardSize=mi.BillboardSize/viewport.canvas_resolution; + + gl_Position=GetPosition3D(); + gl_Position/=gl_Position.w; + } +} + +#Geometry +Output +{ + vec2 TexCoord +} + +Code +{ + void main() + { + const vec2 BillboardVertex[4]=vec2[] + ( + vec2(-0.5,-0.5), + vec2(-0.5, 0.5), + vec2( 0.5,-0.5), + vec2( 0.5, 0.5) + ); + + for(int i=0;i<4;i++) + { + gl_Position=gl_in[0].gl_Position; + gl_Position.xy+=BillboardVertex[i]*Input[0].BillboardSize; + + Output.TexCoord=BillboardVertex[i]+vec2(0.5); + + EmitVertex(); + } + EndPrimitive(); + } +} + +#Fragment + +sampler2D TextureBaseColor + +Output +{ + vec4 FragColor; +} + +Code +{ + void main() + { + FragColor=texture(TextureBaseColor,Input.TexCoord); + } +} diff --git a/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColorTexture.mtl b/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColorTexture.mtl index 6889a84c..31b2bd36 100644 --- a/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColorTexture.mtl +++ b/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColorTexture.mtl @@ -81,7 +81,7 @@ Code #ifndef HAVE_SPECULAR FragColor=vec4(direct_color,1.0); - #else + #else vec3 spec_color=vec3(0.0); diff --git a/example/Basic/BillboardTest.cpp b/example/Basic/BillboardTest.cpp index b69b3215..f47e9841 100644 --- a/example/Basic/BillboardTest.cpp +++ b/example/Basic/BillboardTest.cpp @@ -129,8 +129,8 @@ private: struct PlaneGridCreateInfo pgci; - pgci.grid_size.Set(32,32); - pgci.sub_count.Set(8,8); + pgci.grid_size.Set(500,500); + pgci.sub_count.Set(5,5); pgci.lum=0.5; pgci.sub_lum=0.75; @@ -203,5 +203,5 @@ public: int main(int,char **) { - return RunApp(1280,720); + return RunApp(1920,1080); } diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index 47aae1f8..0b54d2df 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -25,7 +25,7 @@ namespace const int shader_count=shader_maps->GetCount(); shader_stage_list.SetCount(shader_count); - VkPipelineShaderStageCreateInfo *p=shader_stage_list.GetData(); + VkPipelineShaderStageCreateInfo *p=shader_stage_list.GetData(); auto **itp=shader_maps->GetDataList(); for(int i=0;ishader_stage_flag_bit|=VK_SHADER_STAGE_GEOMETRY_BIT; cfg->local_to_world=true; diff --git a/src/ShaderGen/3d/M_BillboardFixedSize.cpp b/src/ShaderGen/3d/M_BillboardFixedSize.cpp index 61c1b43e..185544a7 100644 --- a/src/ShaderGen/3d/M_BillboardFixedSize.cpp +++ b/src/ShaderGen/3d/M_BillboardFixedSize.cpp @@ -40,8 +40,8 @@ void main() } EndPrimitive(); })"; - - constexpr const char fs_main[]=R"( + + constexpr const char fs_main[]=R"( void main() { FragColor=texture(TextureBaseColor,Input.TexCoord); @@ -87,9 +87,9 @@ void main() bool EndCustomShader() override { - mci->SetMaterialInstance( mi_codes, //材质实例glsl代码 - mi_bytes, //材质实例数据大小 - VK_SHADER_STAGE_VERTEX_BIT); //只在Vertex Shader中使用材质实例最终数据 + mci->SetMaterialInstance(mi_codes, //材质实例glsl代码 + mi_bytes, //材质实例数据大小 + VK_SHADER_STAGE_VERTEX_BIT); //只在Vertex Shader中使用材质实例最终数据 return(true); } @@ -100,7 +100,7 @@ MaterialCreateInfo *CreateBillboard2DFixedSize(mtl::BillboardMaterialCreateConfi { if(!cfg) return(nullptr); - + cfg->shader_stage_flag_bit|=VK_SHADER_STAGE_GEOMETRY_BIT; cfg->local_to_world=true;