From 1696c27cbbd468e099806128e5ac9ce1edc66caf Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 8 May 2021 18:14:44 +0800 Subject: [PATCH] use CameraInfo instead of CameraMatrix --- CMCMakeModule | 2 +- CMCore | 2 +- CMSceneGraph | 2 +- example/2dVector/line.cpp | 2 +- example/Vulkan/DrawText.cpp | 2 +- example/Vulkan/DrawTile.cpp | 2 +- example/Vulkan/FragCoordTest.cpp | 2 +- example/Vulkan/Geometry2D.cpp | 2 +- example/Vulkan/OffscreenRender.cpp | 2 +- example/Vulkan/RectanglePrimitive.cpp | 2 +- example/Vulkan/first_triangle.cpp | 2 +- example/Vulkan/indices_rect.cpp | 2 +- example/Vulkan/texture_rect.cpp | 2 +- example/Vulkan/two_triangle.cpp | 2 +- example/common/VulkanAppFramework.h | 2 +- inc/hgl/graph/RenderList.h | 2 +- inc/hgl/graph/SceneTreeToRenderList.h | 2 +- inc/hgl/graph/VKArrayBuffer.h | 10 ++++++++-- src/SceneGraph/CMakeLists.txt | 5 +++-- src/SceneGraph/RenderList.cpp | 2 +- 20 files changed, 29 insertions(+), 22 deletions(-) diff --git a/CMCMakeModule b/CMCMakeModule index 4b71f19e..63077049 160000 --- a/CMCMakeModule +++ b/CMCMakeModule @@ -1 +1 @@ -Subproject commit 4b71f19e46167c9bb70bb11cf19b8f8c335d40b3 +Subproject commit 630770496d8d78dd6c06511ba180dbe4ddf14f94 diff --git a/CMCore b/CMCore index 0a7b1ff3..374da41a 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 0a7b1ff3afd95e2c41a4476c1c00dec6511ad447 +Subproject commit 374da41a24097e2350d2f8221540d961667ab1f4 diff --git a/CMSceneGraph b/CMSceneGraph index fd6fefe9..e107c2ab 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit fd6fefe93ebf844945c6366d6927447549727bf1 +Subproject commit e107c2abd33ef3fa4176c3ba273618d4bac6dc54 diff --git a/example/2dVector/line.cpp b/example/2dVector/line.cpp index b062a14d..819f47d5 100644 --- a/example/2dVector/line.cpp +++ b/example/2dVector/line.cpp @@ -88,7 +88,7 @@ private: cam.Refresh(); - ubo_camera_matrix =CreateUBO("camera", sizeof(CameraMatrix), &cam.matrix); + ubo_camera_matrix =CreateUBO("camera", sizeof(CameraInfo), &cam.matrix); ubo_color_material =CreateUBO("color_material",sizeof(Vector4f), &color); ubo_line_config =CreateUBO("line2d_config", sizeof(Line2DConfig), &line_2d_config); diff --git a/example/Vulkan/DrawText.cpp b/example/Vulkan/DrawText.cpp index 4076d0d3..0ec7cf7e 100644 --- a/example/Vulkan/DrawText.cpp +++ b/example/Vulkan/DrawText.cpp @@ -81,7 +81,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/DrawTile.cpp b/example/Vulkan/DrawTile.cpp index 59be091f..066102c4 100644 --- a/example/Vulkan/DrawTile.cpp +++ b/example/Vulkan/DrawTile.cpp @@ -170,7 +170,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/FragCoordTest.cpp b/example/Vulkan/FragCoordTest.cpp index aad25bcb..7dce7ec0 100644 --- a/example/Vulkan/FragCoordTest.cpp +++ b/example/Vulkan/FragCoordTest.cpp @@ -58,7 +58,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/Geometry2D.cpp b/example/Vulkan/Geometry2D.cpp index 9efc7c24..6b00ddb1 100644 --- a/example/Vulkan/Geometry2D.cpp +++ b/example/Vulkan/Geometry2D.cpp @@ -118,7 +118,7 @@ private: cam.Refresh(); - ubo_camera_matrix =CreateUBO("camera", sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix =CreateUBO("camera", sizeof(CameraInfo),&cam.matrix); ubo_color_material =CreateUBO("color_material",sizeof(Vector4f),&color); material_instance->Update(); diff --git a/example/Vulkan/OffscreenRender.cpp b/example/Vulkan/OffscreenRender.cpp index 95019b20..bbdaaec3 100644 --- a/example/Vulkan/OffscreenRender.cpp +++ b/example/Vulkan/OffscreenRender.cpp @@ -65,7 +65,7 @@ public: ro->cam.Refresh(); - ro->ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&ro->cam.matrix); + ro->ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&ro->cam.matrix); if(!ro->ubo_camera_matrix) return(false); diff --git a/example/Vulkan/RectanglePrimitive.cpp b/example/Vulkan/RectanglePrimitive.cpp index 94b85aae..f531090a 100644 --- a/example/Vulkan/RectanglePrimitive.cpp +++ b/example/Vulkan/RectanglePrimitive.cpp @@ -77,7 +77,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/first_triangle.cpp b/example/Vulkan/first_triangle.cpp index b20865de..cf0d6925 100644 --- a/example/Vulkan/first_triangle.cpp +++ b/example/Vulkan/first_triangle.cpp @@ -62,7 +62,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/indices_rect.cpp b/example/Vulkan/indices_rect.cpp index 85264c8e..fe127673 100644 --- a/example/Vulkan/indices_rect.cpp +++ b/example/Vulkan/indices_rect.cpp @@ -62,7 +62,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/texture_rect.cpp b/example/Vulkan/texture_rect.cpp index 71c2da18..30a2ef9e 100644 --- a/example/Vulkan/texture_rect.cpp +++ b/example/Vulkan/texture_rect.cpp @@ -85,7 +85,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/Vulkan/two_triangle.cpp b/example/Vulkan/two_triangle.cpp index 5d89568e..ddc2449f 100644 --- a/example/Vulkan/two_triangle.cpp +++ b/example/Vulkan/two_triangle.cpp @@ -65,7 +65,7 @@ private: cam.Refresh(); - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&cam.matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&cam.matrix); if(!ubo_camera_matrix) return(false); diff --git a/example/common/VulkanAppFramework.h b/example/common/VulkanAppFramework.h index 7a400e36..37c00bb2 100644 --- a/example/common/VulkanAppFramework.h +++ b/example/common/VulkanAppFramework.h @@ -340,7 +340,7 @@ public: camera->Refresh(); //更新矩阵计算 - ubo_camera_matrix=db->CreateUBO(sizeof(CameraMatrix),&camera->matrix); + ubo_camera_matrix=db->CreateUBO(sizeof(CameraInfo),&camera->matrix); } void Resize(int w,int h)override diff --git a/inc/hgl/graph/RenderList.h b/inc/hgl/graph/RenderList.h index 80aca4c5..bc34fa64 100644 --- a/inc/hgl/graph/RenderList.h +++ b/inc/hgl/graph/RenderList.h @@ -54,7 +54,7 @@ namespace hgl void Begin (); void Add (SceneNode *); - void End (CameraMatrix *); + void End (CameraInfo *); bool Render (RenderCmdBuffer *); };//class RenderList diff --git a/inc/hgl/graph/SceneTreeToRenderList.h b/inc/hgl/graph/SceneTreeToRenderList.h index 25904b9f..c6ef00b9 100644 --- a/inc/hgl/graph/SceneTreeToRenderList.h +++ b/inc/hgl/graph/SceneTreeToRenderList.h @@ -27,7 +27,7 @@ namespace hgl protected: Camera * camera; - CameraMatrix * camera_matrix; + CameraInfo * camera_matrix; Frustum frustum; protected: diff --git a/inc/hgl/graph/VKArrayBuffer.h b/inc/hgl/graph/VKArrayBuffer.h index 4bb87752..47fcef75 100644 --- a/inc/hgl/graph/VKArrayBuffer.h +++ b/inc/hgl/graph/VKArrayBuffer.h @@ -20,7 +20,7 @@ namespace hgl GPUDevice *device; VkBufferUsageFlags buffer_usage_flags; - Collection *coll; + Collection *coll; public: @@ -29,7 +29,13 @@ namespace hgl device=dev; buffer_usage_flags=flags; - coll=new Collection(new MemoryBlock(new VKMemoryAllocator(device,buffer_usage_flags))); + { + const size_t unit_size=sizeof(T); + VKMemoryAllocator *ma=new VKMemoryAllocator(device,buffer_usage_flags); + MemoryBlock *mb=new MemoryBlock(ma); + + coll=new Collection(unit_size,mb); + } } virtual ~GPUArrayBuffer() diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 91ac1bbd..1315873a 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -107,11 +107,12 @@ SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h ${SG_INCLUDE_PATH}/VKBuffer.h ${SG_INCLUDE_PATH}/VKVertexAttribBuffer.h ${SG_INCLUDE_PATH}/VKIndexBuffer.h - ${SG_INCLUDE_PATH}/VKArrayBuffer.h +# ${SG_INCLUDE_PATH}/VKArrayBuffer.h Vulkan/VKMemory.cpp Vulkan/VKMemoryAllocator.cpp Vulkan/VKBuffer.cpp - Vulkan/VKArrayBuffer.cpp) +# Vulkan/VKArrayBuffer.cpp + ) SET(VK_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKDevice.h ${SG_INCLUDE_PATH}/VKDeviceAttribute.h diff --git a/src/SceneGraph/RenderList.cpp b/src/SceneGraph/RenderList.cpp index 0c1595ce..02a6ada5 100644 --- a/src/SceneGraph/RenderList.cpp +++ b/src/SceneGraph/RenderList.cpp @@ -57,7 +57,7 @@ namespace hgl scene_node_list.Add(node); } - void RenderList::End(CameraMatrix *camera_matrix) + void RenderList::End(CameraInfo *camera_matrix) { //清0计数器 uint32_t mvp_count=0; //local to world矩阵总数量