comments few codes and then start next step.

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-09-05 10:28:03 +08:00
parent 9661336325
commit 6e8932fc2f
7 changed files with 60 additions and 62 deletions

2
CMCore

@ -1 +1 @@
Subproject commit d644ec4ab01e6fcede9ed3af37ff0090a19cf857
Subproject commit 6a21b387f52699840fc6245291bcc93a3a797a6a

View File

@ -1,5 +1,5 @@
// third_triangle
// 该范例主要演示使用场景树系统绘制三角形
// 该范例主要演示使用场景树系统绘制多个三角形并利用RenderList进行排序以及自动合并进行Instance渲染
#include"VulkanAppFramework.h"
#include<hgl/math/Math.h>

View File

@ -35,7 +35,7 @@ private:
};
MaterialInstanceSets mi_set;
List<RenderItem> ri_list;
DataArray<RenderItem> ri_array;
uint ri_count;
void Stat();

View File

@ -50,8 +50,6 @@ protected:
VIL *vil;
public:
Material * GetMaterial () {return material;}

View File

@ -128,12 +128,12 @@ void MaterialRenderList::Stat()
const uint count=rn_list.GetCount();
RenderNode *rn=rn_list.GetData();
ri_list.Clear();
ri_list.PreAlloc(count);
ri_array.Clear();
ri_array.Alloc(count);
mi_set.Clear();
RenderItem *ri=ri_list.GetData();
RenderItem *ri=ri_array.GetData();
ri_count=1;
@ -324,7 +324,7 @@ void MaterialRenderList::Render(RenderCmdBuffer *rcb)
cmd_buf=rcb;
RenderItem *ri=ri_list.GetData();
RenderItem *ri=ri_array.GetData();
last_pipeline =nullptr;
last_mi =nullptr;

View File

@ -27,13 +27,13 @@ VK_NAMESPACE_BEGIN
struct RenderExtraBuffer
{
uint node_count; ///<渲染节点数量
uint mi_count; ///<材质实例数量
// uint mi_count; ///<材质实例数量
uint mi_size; ///<单个材质实例数量长度
DeviceBuffer *mi_data_buffer; ///<材质实例数据UBO/SSBO
//uint mi_size; ///<单个材质实例数量长度
//DeviceBuffer *mi_data_buffer; ///<材质实例数据UBO/SSBO
VBO *mi_id;
VkBuffer mi_id_buffer;
//VBO *mi_id;
//VkBuffer mi_id_buffer;
// VBO *bone_id,*bone_weight;
// VkBuffer bone_id_buffer,bone_weight_buffer;
@ -62,18 +62,18 @@ public:
node_count=0;
}
void ClearMI()
{
SAFE_CLEAR(mi_id)
SAFE_CLEAR(mi_data_buffer);
mi_count=0;
mi_size=0;
}
//void ClearMI()
//{
// SAFE_CLEAR(mi_id)
// SAFE_CLEAR(mi_data_buffer);
// mi_count=0;
// mi_size=0;
//}
void Clear()
{
ClearNode();
ClearMI();
// ClearMI();
// SAFE_CLEAR(bone_id)
// SAFE_CLEAR(bone_weight)
@ -91,19 +91,19 @@ public:
}
}
void MIAlloc(GPUDevice *dev,const uint c,const uint mis)
{
ClearMI();
if(c<=0||mi_size<=0)return;
//void MIAlloc(GPUDevice *dev,const uint c,const uint mis)
//{
// ClearMI();
// if(c<=0||mi_size<=0)return;
//
// mi_count=power_to_2(c);
// mi_size=mis;
mi_count=power_to_2(c);
mi_size=mis;
// mi_id=dev->CreateVBO(VF_V1U8,mi_count);
// mi_id_buffer=mi_id->GetBuffer();
mi_id=dev->CreateVBO(VF_V1U8,mi_count);
mi_id_buffer=mi_id->GetBuffer();
mi_data_buffer=dev->CreateUBO(mi_count*mi_size);
}
// mi_data_buffer=dev->CreateUBO(mi_count*mi_size);
//}
void WriteLocalToWorld(RenderNode *render_node,const uint count)
{
@ -127,38 +127,38 @@ public:
}
}
void WriteMaterialInstance(RenderNode *render_node,const uint count,const MaterialInstanceSets &mi_set)
{
//MaterialInstance ID
{
uint8 *tp=(uint8 *)(mi_id->Map());
//void WriteMaterialInstance(RenderNode *render_node,const uint count,const MaterialInstanceSets &mi_set)
//{
// //MaterialInstance ID
// {
// uint8 *tp=(uint8 *)(mi_id->Map());
for(uint i=0;i<count;i++)
{
*tp=mi_set.Find(render_node->ri->GetMaterialInstance());
++tp;
++render_node;
}
mi_id->Unmap();
}
// for(uint i=0;i<count;i++)
// {
// *tp=mi_set.Find(render_node->ri->GetMaterialInstance());
// ++tp;
// ++render_node;
// }
// mi_id->Unmap();
// }
//MaterialInstance Data
{
//const uint count=mi_set.GetCount();
// //MaterialInstance Data
// {
// //const uint count=mi_set.GetCount();
//uint8 *tp=(uint8 *)(mi_data_buffer->Map());
//const MaterialInstance **mi=mi_set.GetData();
// //uint8 *tp=(uint8 *)(mi_data_buffer->Map());
// //const MaterialInstance **mi=mi_set.GetData();
//for(uint i=0;i<count;i++)
//{
// memcpy(tp,(*mi)->GetData(),mi_size);
// //for(uint i=0;i<count;i++)
// //{
// // memcpy(tp,(*mi)->GetData(),mi_size);
//
// // ++mi;
// // tp+=mi_size;
// //}
// ++mi;
// tp+=mi_size;
//}
//mi_data_buffer->Unmap();
}
}
// //mi_data_buffer->Unmap();
// }
//}
};//struct RenderExtraBuffer
VK_NAMESPACE_END