comments few codes and then start next step.
This commit is contained in:
parent
9661336325
commit
6e8932fc2f
2
CMCore
2
CMCore
@ -1 +1 @@
|
|||||||
Subproject commit d644ec4ab01e6fcede9ed3af37ff0090a19cf857
|
Subproject commit 6a21b387f52699840fc6245291bcc93a3a797a6a
|
@ -67,7 +67,7 @@ private:
|
|||||||
material_instance[i]->SetFloat4(0,color_data[i]);
|
material_instance[i]->SetFloat4(0,color_data[i]);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
|
// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
|
||||||
// pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles); //等同上一行,为Framework重载,默认使用swapchain的render target
|
// pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles); //等同上一行,为Framework重载,默认使用swapchain的render target
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// third_triangle
|
// third_triangle
|
||||||
// 该范例主要演示使用场景树系统绘制三角形
|
// 该范例主要演示使用场景树系统绘制多个三角形,并利用RenderList进行排序以及自动合并进行Instance渲染
|
||||||
|
|
||||||
#include"VulkanAppFramework.h"
|
#include"VulkanAppFramework.h"
|
||||||
#include<hgl/math/Math.h>
|
#include<hgl/math/Math.h>
|
||||||
|
@ -35,7 +35,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
MaterialInstanceSets mi_set;
|
MaterialInstanceSets mi_set;
|
||||||
List<RenderItem> ri_list;
|
DataArray<RenderItem> ri_array;
|
||||||
uint ri_count;
|
uint ri_count;
|
||||||
|
|
||||||
void Stat();
|
void Stat();
|
||||||
|
@ -50,8 +50,6 @@ protected:
|
|||||||
|
|
||||||
VIL *vil;
|
VIL *vil;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material * GetMaterial () {return material;}
|
Material * GetMaterial () {return material;}
|
||||||
|
@ -128,12 +128,12 @@ void MaterialRenderList::Stat()
|
|||||||
const uint count=rn_list.GetCount();
|
const uint count=rn_list.GetCount();
|
||||||
RenderNode *rn=rn_list.GetData();
|
RenderNode *rn=rn_list.GetData();
|
||||||
|
|
||||||
ri_list.Clear();
|
ri_array.Clear();
|
||||||
ri_list.PreAlloc(count);
|
ri_array.Alloc(count);
|
||||||
|
|
||||||
mi_set.Clear();
|
mi_set.Clear();
|
||||||
|
|
||||||
RenderItem *ri=ri_list.GetData();
|
RenderItem *ri=ri_array.GetData();
|
||||||
|
|
||||||
ri_count=1;
|
ri_count=1;
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ void MaterialRenderList::Render(RenderCmdBuffer *rcb)
|
|||||||
|
|
||||||
cmd_buf=rcb;
|
cmd_buf=rcb;
|
||||||
|
|
||||||
RenderItem *ri=ri_list.GetData();
|
RenderItem *ri=ri_array.GetData();
|
||||||
|
|
||||||
last_pipeline =nullptr;
|
last_pipeline =nullptr;
|
||||||
last_mi =nullptr;
|
last_mi =nullptr;
|
||||||
|
@ -27,13 +27,13 @@ VK_NAMESPACE_BEGIN
|
|||||||
struct RenderExtraBuffer
|
struct RenderExtraBuffer
|
||||||
{
|
{
|
||||||
uint node_count; ///<渲染节点数量
|
uint node_count; ///<渲染节点数量
|
||||||
uint mi_count; ///<材质实例数量
|
// uint mi_count; ///<材质实例数量
|
||||||
|
|
||||||
uint mi_size; ///<单个材质实例数量长度
|
//uint mi_size; ///<单个材质实例数量长度
|
||||||
DeviceBuffer *mi_data_buffer; ///<材质实例数据UBO/SSBO
|
//DeviceBuffer *mi_data_buffer; ///<材质实例数据UBO/SSBO
|
||||||
|
|
||||||
VBO *mi_id;
|
//VBO *mi_id;
|
||||||
VkBuffer mi_id_buffer;
|
//VkBuffer mi_id_buffer;
|
||||||
|
|
||||||
// VBO *bone_id,*bone_weight;
|
// VBO *bone_id,*bone_weight;
|
||||||
// VkBuffer bone_id_buffer,bone_weight_buffer;
|
// VkBuffer bone_id_buffer,bone_weight_buffer;
|
||||||
@ -62,18 +62,18 @@ public:
|
|||||||
node_count=0;
|
node_count=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearMI()
|
//void ClearMI()
|
||||||
{
|
//{
|
||||||
SAFE_CLEAR(mi_id)
|
// SAFE_CLEAR(mi_id)
|
||||||
SAFE_CLEAR(mi_data_buffer);
|
// SAFE_CLEAR(mi_data_buffer);
|
||||||
mi_count=0;
|
// mi_count=0;
|
||||||
mi_size=0;
|
// mi_size=0;
|
||||||
}
|
//}
|
||||||
|
|
||||||
void Clear()
|
void Clear()
|
||||||
{
|
{
|
||||||
ClearNode();
|
ClearNode();
|
||||||
ClearMI();
|
// ClearMI();
|
||||||
|
|
||||||
// SAFE_CLEAR(bone_id)
|
// SAFE_CLEAR(bone_id)
|
||||||
// SAFE_CLEAR(bone_weight)
|
// SAFE_CLEAR(bone_weight)
|
||||||
@ -91,19 +91,19 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MIAlloc(GPUDevice *dev,const uint c,const uint mis)
|
//void MIAlloc(GPUDevice *dev,const uint c,const uint mis)
|
||||||
{
|
//{
|
||||||
ClearMI();
|
// ClearMI();
|
||||||
if(c<=0||mi_size<=0)return;
|
// if(c<=0||mi_size<=0)return;
|
||||||
|
//
|
||||||
mi_count=power_to_2(c);
|
// mi_count=power_to_2(c);
|
||||||
mi_size=mis;
|
// mi_size=mis;
|
||||||
|
|
||||||
mi_id=dev->CreateVBO(VF_V1U8,mi_count);
|
// mi_id=dev->CreateVBO(VF_V1U8,mi_count);
|
||||||
mi_id_buffer=mi_id->GetBuffer();
|
// 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)
|
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)
|
//void WriteMaterialInstance(RenderNode *render_node,const uint count,const MaterialInstanceSets &mi_set)
|
||||||
{
|
//{
|
||||||
//MaterialInstance ID
|
// //MaterialInstance ID
|
||||||
{
|
// {
|
||||||
uint8 *tp=(uint8 *)(mi_id->Map());
|
// uint8 *tp=(uint8 *)(mi_id->Map());
|
||||||
|
|
||||||
for(uint i=0;i<count;i++)
|
// for(uint i=0;i<count;i++)
|
||||||
{
|
// {
|
||||||
*tp=mi_set.Find(render_node->ri->GetMaterialInstance());
|
// *tp=mi_set.Find(render_node->ri->GetMaterialInstance());
|
||||||
++tp;
|
// ++tp;
|
||||||
++render_node;
|
// ++render_node;
|
||||||
}
|
// }
|
||||||
mi_id->Unmap();
|
// mi_id->Unmap();
|
||||||
}
|
// }
|
||||||
|
|
||||||
//MaterialInstance Data
|
// //MaterialInstance Data
|
||||||
{
|
// {
|
||||||
//const uint count=mi_set.GetCount();
|
// //const uint count=mi_set.GetCount();
|
||||||
|
|
||||||
//uint8 *tp=(uint8 *)(mi_data_buffer->Map());
|
// //uint8 *tp=(uint8 *)(mi_data_buffer->Map());
|
||||||
//const MaterialInstance **mi=mi_set.GetData();
|
// //const MaterialInstance **mi=mi_set.GetData();
|
||||||
|
|
||||||
//for(uint i=0;i<count;i++)
|
// //for(uint i=0;i<count;i++)
|
||||||
//{
|
// //{
|
||||||
// memcpy(tp,(*mi)->GetData(),mi_size);
|
// // memcpy(tp,(*mi)->GetData(),mi_size);
|
||||||
|
//
|
||||||
// ++mi;
|
// // ++mi;
|
||||||
// tp+=mi_size;
|
// // tp+=mi_size;
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//mi_data_buffer->Unmap();
|
// //mi_data_buffer->Unmap();
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
};//struct RenderExtraBuffer
|
};//struct RenderExtraBuffer
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user