diff --git a/inc/hgl/graph/MaterialRenderList.h b/inc/hgl/graph/MaterialRenderList.h index 1f4120d7..f1314af5 100644 --- a/inc/hgl/graph/MaterialRenderList.h +++ b/inc/hgl/graph/MaterialRenderList.h @@ -1,12 +1,12 @@ -#pragma once +#pragma once #include #include VK_NAMESPACE_BEGIN -struct RenderExtraBuffer; +struct RenderAssignBuffer; /** -* ͬһʵĶȾб +* 同一材质的对象渲染列表 */ class MaterialRenderList { @@ -19,7 +19,7 @@ class MaterialRenderList private: - RenderExtraBuffer *extra_buffer; + RenderAssignBuffer *assign_buffer; struct RenderItem { diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index ae51b5f5..987b0d43 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -44,7 +44,7 @@ SET(SCENE_GRAPH_HEADER ${SG_INCLUDE_PATH}/SceneInfo.h SET(SCENE_GRAPH_SOURCE RenderList.cpp MaterialRenderList.cpp - RenderExtraBuffer.h + RenderAssignBuffer.h SceneNode.cpp SceneOrient.cpp) diff --git a/src/SceneGraph/MaterialRenderList.cpp b/src/SceneGraph/MaterialRenderList.cpp index 28c4a319..b3973add 100644 --- a/src/SceneGraph/MaterialRenderList.cpp +++ b/src/SceneGraph/MaterialRenderList.cpp @@ -3,8 +3,9 @@ #include #include #include +#include #include -#include"RenderExtraBuffer.h" +#include"RenderAssignBuffer.h" /** * @@ -60,7 +61,7 @@ MaterialRenderList::MaterialRenderList(GPUDevice *d,Material *m) device=d; cmd_buf=nullptr; mtl=m; - extra_buffer=nullptr; + assign_buffer=nullptr; vbo_list=new VBOList(mtl->GetVertexInput()->GetCount()); } @@ -68,7 +69,7 @@ MaterialRenderList::MaterialRenderList(GPUDevice *d,Material *m) MaterialRenderList::~MaterialRenderList() { SAFE_CLEAR(vbo_list); - SAFE_CLEAR(extra_buffer) + SAFE_CLEAR(assign_buffer) } void MaterialRenderList::Add(Renderable *ri,const Matrix4f &mat) @@ -90,24 +91,24 @@ void MaterialRenderList::End() if(node_count<=0)return; - if(!extra_buffer) - extra_buffer=new RenderExtraBuffer; + if(!assign_buffer) + assign_buffer=new RenderAssignBuffer; - if(extra_buffer->node_countNodeAlloc(device,node_count); + if(assign_buffer->node_countNodeAlloc(device,node_count); Stat(); //写入LocalToWorld数据 - extra_buffer->WriteLocalToWorld(rn_list.GetData(),node_count); + assign_buffer->WriteLocalToWorld(rn_list.GetData(),node_count); const uint mi_count=mi_set.GetCount(); if(mi_count<=0)return; - //if(extra_buffer->mi_countMIAlloc(device,mi_count,); - //extra_buffer->WriteMaterialInstance(rn_list.GetData(),node_count,mi_set); + //if(assign_buffer->mi_countMIAlloc(device,mi_count,); + //assign_buffer->WriteMaterialInstance(rn_list.GetData(),node_count,mi_set); } void MaterialRenderList::RenderItem::Set(Renderable *ri) @@ -182,8 +183,8 @@ void MaterialRenderList::Bind(MaterialInstance *mi) if(assign_binding_count>0) { - mi->BindUBO(DescriptorSetType::PerFrame,"l2w",extra_buffer->assigns_l2w); -// mi->BindUBO(DescriptorSetType::PerFrame,"Assign",extra_buffer->assigns_mi); + mi->BindUBO(DescriptorSetType::PerFrame,mtl::SBS_LocalToWorld.name,assign_buffer->assigns_l2w); +// mi->BindUBO(DescriptorSetType::PerFrame,"Assign",assign_buffer->assigns_mi); } cmd_buf->BindDescriptorSets(mi->GetMaterial()); @@ -242,7 +243,7 @@ bool MaterialRenderList::Bind(const VertexInputData *vid,const uint ri_index) // if(l2w_binding_count!=4) // return(false); - // hgl_cpy(buffer_list+count,extra_buffer->l2w_buffer,4); + // hgl_cpy(buffer_list+count,assign_buffer->l2w_buffer,4); // for(uint i=0;i<4;i++) // buffer_offset[count+i]=ri_index*16; //mat4每列都是rgba32f,自然是16字节 @@ -260,7 +261,7 @@ bool MaterialRenderList::Bind(const VertexInputData *vid,const uint ri_index) if(assign_binding_count!=1) return(false); - vbo_list->Add(extra_buffer->assigns_vbo->GetBuffer(),extra_buffer->assigns_vbo_strip*ri_index); + vbo_list->Add(assign_buffer->assigns_vbo->GetBuffer(),assign_buffer->assigns_vbo_strip*ri_index); } } diff --git a/src/SceneGraph/RenderExtraBuffer.h b/src/SceneGraph/RenderAssignBuffer.h similarity index 98% rename from src/SceneGraph/RenderExtraBuffer.h rename to src/SceneGraph/RenderAssignBuffer.h index c3e34460..0d8caee3 100644 --- a/src/SceneGraph/RenderExtraBuffer.h +++ b/src/SceneGraph/RenderAssignBuffer.h @@ -24,7 +24,7 @@ VK_NAMESPACE_BEGIN /* * 渲染节点额外提供的数据 */ -struct RenderExtraBuffer +struct RenderAssignBuffer { uint node_count; ///<渲染节点数量 // uint mi_count; ///<材质实例数量 @@ -54,12 +54,12 @@ struct RenderExtraBuffer public: - RenderExtraBuffer() + RenderAssignBuffer() { hgl_zero(*this); } - ~RenderExtraBuffer() + ~RenderAssignBuffer() { Clear(); } @@ -205,5 +205,5 @@ public: // //mi_data_buffer->Unmap(); // } //} -};//struct RenderExtraBuffer +};//struct RenderAssignBuffer VK_NAMESPACE_END