diff --git a/CMCore b/CMCore index fbe4815c..462f0792 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit fbe4815c748346fae03d08bed7d228f45f02ac79 +Subproject commit 462f0792835cc5022771a3594e312efa365a5fae diff --git a/CMSceneGraph b/CMSceneGraph index f5cfe02e..95ed7ae0 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit f5cfe02eed045d84ee03a9e32d62029c71fec530 +Subproject commit 95ed7ae08b3c50055d2a162e22585c7c1cefc763 diff --git a/example/Vulkan/CMakeLists.txt b/example/Vulkan/CMakeLists.txt index a5ab994c..ad8ef8da 100644 --- a/example/Vulkan/CMakeLists.txt +++ b/example/Vulkan/CMakeLists.txt @@ -13,38 +13,40 @@ endmacro() CreateProject("Basic" 1st_draw_triangle_in_NDC first_triangle.cpp) CreateProject("Basic" 2nd_draw_triangle_use_UBO second_triangle.cpp) CreateProject("Basic" 3rd_draw_triangle_use_RenderList third_triangle.cpp) -CreateProject("Basic" FragCoord FragCoordTest.cpp) -CreateProject("Basic" indices_rect indices_rect.cpp) -CreateProject("Basic" FullScreenTriangle FullScreenTriangle.cpp) -CreateProject("Basic" InstanceTriangle InstanceTriangle.cpp) +CreateProject("Basic" 4th_draw_triangle_use_MaterialInstance fourth_triangle.cpp) + +#CreateProject("Basic" FragCoord FragCoordTest.cpp) +#CreateProject("Basic" indices_rect indices_rect.cpp) +#CreateProject("Basic" FullScreenTriangle FullScreenTriangle.cpp) +#CreateProject("Basic" InstanceTriangle InstanceTriangle.cpp) CreateProject("Texture" TextureFormat TextureFormat.cpp) -CreateProject("Texture" texture_rect texture_rect.cpp) +#CreateProject("Texture" texture_rect texture_rect.cpp) #CreateProject("Texture" HQFilterTexture HQFilterTexture.cpp) #CreateProject(06.Geometry2D Geometry2D.cpp) -CreateProject("Geometry2D" RectanglePrimitive RectanglePrimitive.cpp) -CreateProject("Tile" DrawTile DrawTile.cpp) -CreateProject("Tile" DrawText DrawText.cpp) +#CreateProject("Geometry2D" RectanglePrimitive RectanglePrimitive.cpp) +#CreateProject("Tile" DrawTile DrawTile.cpp) +#CreateProject("Tile" DrawText DrawText.cpp) -CreateProject("Geometry3D " Geometry3D Geometry3D.cpp) +#CreateProject("Geometry3D " Geometry3D Geometry3D.cpp) -CreateProject("Scene" SceneTree SceneTree.cpp) +#CreateProject("Scene" SceneTree SceneTree.cpp) #CreateProject("Scene" LoadStaticMesh LoadStaticMesh.cpp LoadScene.cpp) -CreateProject("Scene" InlineGeometryScene InlineGeometryScene.cpp) +#CreateProject("Scene" InlineGeometryScene InlineGeometryScene.cpp) -CreateProject("Scene/Sky" SkyColor SkyColor.cpp) -CreateProject("Scene/Sky" Atmosphere Atmosphere.cpp) +#CreateProject("Scene/Sky" SkyColor SkyColor.cpp) +#CreateProject("Scene/Sky" Atmosphere Atmosphere.cpp) -CreateProject("Advanced Rendering" OffscreenRender OffscreenRender.cpp) +#CreateProject("Advanced Rendering" OffscreenRender OffscreenRender.cpp) #CreateProject(12.PBRBasic PBRBasic.cpp) #CreateProject(12.Deferred Deferred.cpp) -CreateProject("Advanced Rendering" DeferredRender DeferredRender.cpp) +#CreateProject("Advanced Rendering" DeferredRender DeferredRender.cpp) #CreateProject(14.AutoMaterial auto_material.cpp) -CreateProject("Texture" Cubemap Cubemap.cpp) -CreateProject("Texture" EquirectangularMap EquirectangularMap.cpp) -CreateProject("Picking" RayPicking RayPicking.cpp) +#CreateProject("Texture" Cubemap Cubemap.cpp) +#CreateProject("Texture" EquirectangularMap EquirectangularMap.cpp) +#CreateProject("Picking" RayPicking RayPicking.cpp) -CreateProject("Landscape" TerrainSimple TerrainSimple.cpp) +#CreateProject("Landscape" TerrainSimple TerrainSimple.cpp) diff --git a/example/Vulkan/second_triangle.cpp b/example/Vulkan/second_triangle.cpp index 3b656632..23f5cf1f 100644 --- a/example/Vulkan/second_triangle.cpp +++ b/example/Vulkan/second_triangle.cpp @@ -1,5 +1,5 @@ -// third_triangle -// 该范例主要演示使用2D坐系统直接绘制一个渐变色的三角形 +// second_triangle +// 该范例主要演示使用2D坐系统直接绘制一个渐变色的三角形,使用UBO传递Viewport信息 #include"VulkanAppFramework.h" #include diff --git a/example/Vulkan/third_triangle.cpp b/example/Vulkan/third_triangle.cpp index add1d2a1..5cc5af9a 100644 --- a/example/Vulkan/third_triangle.cpp +++ b/example/Vulkan/third_triangle.cpp @@ -1,4 +1,4 @@ -// second_triangle +// third_triangle // 该范例主要演示使用场景树系统绘制三角形 #include"VulkanAppFramework.h" diff --git a/inc/hgl/graph/mtl/2d/Material2DConfig.h b/inc/hgl/graph/mtl/2d/Material2DConfig.h index 1772a9fc..7d7d7366 100644 --- a/inc/hgl/graph/mtl/2d/Material2DConfig.h +++ b/inc/hgl/graph/mtl/2d/Material2DConfig.h @@ -25,5 +25,6 @@ public: };//struct Material2DConfig:public MaterialConfig MaterialCreateInfo *CreateVertexColor2D(const Material2DConfig *); +MaterialCreateInfo *CreatePureColor2D(const Material2DConfig *); STD_MTL_NAMESPACE_END #endif//HGL_GRAPH_MTL_2D_CONFIG_INCLUDE diff --git a/src/ShaderGen/2d/PureColor2D.cpp b/src/ShaderGen/2d/PureColor2D.cpp index d814543a..5be337dd 100644 --- a/src/ShaderGen/2d/PureColor2D.cpp +++ b/src/ShaderGen/2d/PureColor2D.cpp @@ -1,9 +1,13 @@ #include"Std2DMaterial.h" #include +#include STD_MTL_NAMESPACE_BEGIN namespace { + constexpr const char mi_codes[]="vec4 Color;"; //材质实例代码 + constexpr const uint32_t mi_bytes=sizeof(Vector4f); //材质实例数据大小 + constexpr const char vs_main[]=R"( void main() { @@ -13,20 +17,26 @@ void main() })"; constexpr const char fs_main[]=R"( - - void main() { MaterialInstance mi=GetMI(); Color=mi.Color; -})"; +})";// ^ ^ + // | | + // | +--ps:这里的mi.Color是材质实例中的数据,MaterialInstance结构对应上面C++代码中的mi_codes + // +--ps:这里的Color就是最终的RT class MaterialPureColor2D:public Std2DMaterial { public: - using Std2DMaterial::Std2DMaterial; + MaterialPureColor2D(const Material2DConfig *c):Std2DMaterial(c) + { + mci->SetMaterialInstance( mi_codes, //材质实例glsl代码 + mi_bytes, //材质实例数据大小 + VK_SHADER_STAGE_FRAGMENT_BIT); //只在Fragment Shader中使用材质实例最终数据 + } ~MaterialPureColor2D()=default; bool CreateVertexShader(ShaderCreateInfoVertex *vsc) override diff --git a/src/ShaderGen/2d/VertexColor2D.cpp b/src/ShaderGen/2d/VertexColor2D.cpp index a3b381b1..f9f7c3b1 100644 --- a/src/ShaderGen/2d/VertexColor2D.cpp +++ b/src/ShaderGen/2d/VertexColor2D.cpp @@ -19,7 +19,10 @@ void main() void main() { Color=Input.Color; -})"; +})";// ^ ^ + // | | + // | +--ps:这里的Input.Color就是上一个Shader中的Output.Color + // +--ps:这里的Color就是最终的RT class MaterialVertexColor2D:public Std2DMaterial {