diff --git a/inc/hgl/graph/StaticMesh.h b/inc/hgl/graph/StaticMesh.h deleted file mode 100644 index 17d4f8f6..00000000 --- a/inc/hgl/graph/StaticMesh.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include -#include -#include - -VK_NAMESPACE_BEGIN - -class SceneNode; - -class StaticMesh -{ -protected: - - StaticMeshLODPolicy lod_policy; ///GetScene():root_node; } ///<取得阴影渲染节点 - SceneNode *GetPhysicNode() { return physic_proxy_static_mesh?physic_proxy_static_mesh->GetScene():root_node; } ///<取得物理渲染节点 - -};//class StaticMesh -VK_NAMESPACE_END diff --git a/inc/hgl/graph/StaticMeshLODPolicy.h b/inc/hgl/graph/StaticMeshLODPolicy.h deleted file mode 100644 index 31d60d8f..00000000 --- a/inc/hgl/graph/StaticMeshLODPolicy.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include -#include - -VK_NAMESPACE_BEGIN - -/** - * 静态模型LOD策略 - */ -enum class StaticMeshLODPolicy:uint8 -{ - None=0, ///<无LOD - - DiscardDetail, ///<丢弃细节 - - AnotherMesh, ///<另一个模型 - - Billboard, ///<广告牌 - - //Voxel, ///<体素 - - //MeshSDF, ///<网格SDF - - //MeshCard, ///<网格卡片 - - ENUM_CLASS_RANGE(None,Billboard) -};//enum class StaticMeshLODPolicy - -VK_NAMESPACE_END diff --git a/inc/hgl/graph/StaticRenderManager.h b/inc/hgl/graph/StaticRenderManager.h deleted file mode 100644 index 8a188c16..00000000 --- a/inc/hgl/graph/StaticRenderManager.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef HGL_GRAPH_STATIC_RENDER_MANAGER_INCLUDE -#define HGL_GRAPH_STATIC_RENDER_MANAGER_INCLUDE - -#include - -VK_NAMESPACE_BEGIN - -class RawMesh -{ -}; - -/** -* 静态渲染管理器
-* 静态渲染指的是不会产生资源变动的内容,而不是指不会动的内容。 -*/ -class StaticRenderManager -{ - -public: - - virtual ~StaticRenderManager()=default; - -};//class StaticRenderManager -VK_NAMESPACE_END -#endif//HGL_GRAPH_STATIC_RENDER_MANAGER_INCLUDE diff --git a/src/SceneGraph/StaticMesh.cpp b/src/SceneGraph/StaticMesh.cpp deleted file mode 100644 index 52086f25..00000000 --- a/src/SceneGraph/StaticMesh.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -VK_NAMESPACE_BEGIN - -//StaticMesh *StaticMesh::CreateNewObject(RenderResource *rr,SceneNode *node) -//{ -// if(!node) -// return(nullptr); -// -// if(node->IsEmpty()) -// return(nullptr); -// -// return(new StaticMesh(rr,node)); -//} - -StaticMesh::StaticMesh(SceneNode *sn) -{ - root_node=sn; -} - -StaticMesh::~StaticMesh() -{ - SAFE_CLEAR(root_node); -} - -VK_NAMESPACE_END diff --git a/src/SceneGraph/StaticRenderManage.md b/src/SceneGraph/StaticRenderManage.md deleted file mode 100644 index 7708e765..00000000 --- a/src/SceneGraph/StaticRenderManage.md +++ /dev/null @@ -1,58 +0,0 @@ -# 静态渲染管理 - -## 静态渲染的意义是什么? - - 静态渲染管理中的“静态”并不是指在场景中静止不动的所有物件,而是说大部分时间都会出现在场景中的物件。它包含地形、花草树木、房屋、常见人物,武器装备等等。如果归划好,可以将绝大部分的物件都划入静态渲染中。 - - 它的意义为的是所有添加进管理器的模型原始资源,都会一直存在。与它们本身是否显示在画面中,并无关联。为的是避开对显存资源的动态调配。 - - 在静态渲染管理器中的所有模型,会根据顶点数据格式(Vertex Input Format)分类。每种格式所有模型共用一套超大VBO(Vertex Buffer Object),以达到在渲染时渲染不同模型不会切换VBO的效果,并进一步达成“一个格式,一次Drawcall全部画完”的极致效果。 - -## 材质的定义 - - 1.Material 材质可以简单理解为是Shader的包装。 - - 2.Material Instance 材质实例是指同一材质下,不同的参数配置。 - -## 我们需要做什么? - -1.在Shader中,建立两个UBO或SSBO - -```glsl -//一个用于存所有Local to World矩阵的数组 - -#define MI_MAX_COUNT (UBORange/sizeof(mat4)) - -layout(set=?,binding=?) uniform LocalToWorldData -{ - mat4 mats[L2W_MAX_COUNT]; -}l2w; -``` - -```glsl -//一个用于存所有MaterialInstance数据的数组 - -#define MI_MAX_COUNT (UBORange/sizeof(MaterialInstance)) - -layout(set=?,binding=?) uniform MaterialInstanceData -{ - MaterialInstance mi_array[MI_MAX_COUNT]; -}mi; -``` - -2.建立一个RG8UI或RG16UI的Vertex Input Stream,用于保存访问LocalToWorld/MaterialInstance的索引 - -```glsl -layout(location=?) in uvec2 Assign; //Local To World矩阵ID与材质ID输入数据流 - -mat4 GetLocalToWorld() -{ - return l2w.mats[Assign.x]; -} - -MaterialInstance GetMaterialInstance() -{ - return mi.mi_array[Assign.y]; -} -``` -