renamed to RenderAssignBuffer from RenderExtraBuffer
This commit is contained in:
parent
8bb742f3f4
commit
28b2b53d03
@ -1,12 +1,12 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include<hgl/graph/RenderNode.h>
|
#include<hgl/graph/RenderNode.h>
|
||||||
#include<hgl/graph/VKVBOList.h>
|
#include<hgl/graph/VKVBOList.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
struct RenderExtraBuffer;
|
struct RenderAssignBuffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同一材质的对象渲染列表
|
* 同一材质的对象渲染列表
|
||||||
*/
|
*/
|
||||||
class MaterialRenderList
|
class MaterialRenderList
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ class MaterialRenderList
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
RenderExtraBuffer *extra_buffer;
|
RenderAssignBuffer *assign_buffer;
|
||||||
|
|
||||||
struct RenderItem
|
struct RenderItem
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ SET(SCENE_GRAPH_HEADER ${SG_INCLUDE_PATH}/SceneInfo.h
|
|||||||
|
|
||||||
SET(SCENE_GRAPH_SOURCE RenderList.cpp
|
SET(SCENE_GRAPH_SOURCE RenderList.cpp
|
||||||
MaterialRenderList.cpp
|
MaterialRenderList.cpp
|
||||||
RenderExtraBuffer.h
|
RenderAssignBuffer.h
|
||||||
SceneNode.cpp
|
SceneNode.cpp
|
||||||
SceneOrient.cpp)
|
SceneOrient.cpp)
|
||||||
|
|
||||||
|
@ -3,8 +3,9 @@
|
|||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include<hgl/graph/VKCommandBuffer.h>
|
#include<hgl/graph/VKCommandBuffer.h>
|
||||||
#include<hgl/graph/VKVertexInput.h>
|
#include<hgl/graph/VKVertexInput.h>
|
||||||
|
#include<hgl/graph/mtl/UBOCommon.h>
|
||||||
#include<hgl/util/sort/Sort.h>
|
#include<hgl/util/sort/Sort.h>
|
||||||
#include"RenderExtraBuffer.h"
|
#include"RenderAssignBuffer.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -60,7 +61,7 @@ MaterialRenderList::MaterialRenderList(GPUDevice *d,Material *m)
|
|||||||
device=d;
|
device=d;
|
||||||
cmd_buf=nullptr;
|
cmd_buf=nullptr;
|
||||||
mtl=m;
|
mtl=m;
|
||||||
extra_buffer=nullptr;
|
assign_buffer=nullptr;
|
||||||
|
|
||||||
vbo_list=new VBOList(mtl->GetVertexInput()->GetCount());
|
vbo_list=new VBOList(mtl->GetVertexInput()->GetCount());
|
||||||
}
|
}
|
||||||
@ -68,7 +69,7 @@ MaterialRenderList::MaterialRenderList(GPUDevice *d,Material *m)
|
|||||||
MaterialRenderList::~MaterialRenderList()
|
MaterialRenderList::~MaterialRenderList()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(vbo_list);
|
SAFE_CLEAR(vbo_list);
|
||||||
SAFE_CLEAR(extra_buffer)
|
SAFE_CLEAR(assign_buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaterialRenderList::Add(Renderable *ri,const Matrix4f &mat)
|
void MaterialRenderList::Add(Renderable *ri,const Matrix4f &mat)
|
||||||
@ -90,24 +91,24 @@ void MaterialRenderList::End()
|
|||||||
|
|
||||||
if(node_count<=0)return;
|
if(node_count<=0)return;
|
||||||
|
|
||||||
if(!extra_buffer)
|
if(!assign_buffer)
|
||||||
extra_buffer=new RenderExtraBuffer;
|
assign_buffer=new RenderAssignBuffer;
|
||||||
|
|
||||||
if(extra_buffer->node_count<node_count)
|
if(assign_buffer->node_count<node_count)
|
||||||
extra_buffer->NodeAlloc(device,node_count);
|
assign_buffer->NodeAlloc(device,node_count);
|
||||||
|
|
||||||
Stat();
|
Stat();
|
||||||
|
|
||||||
//写入LocalToWorld数据
|
//写入LocalToWorld数据
|
||||||
extra_buffer->WriteLocalToWorld(rn_list.GetData(),node_count);
|
assign_buffer->WriteLocalToWorld(rn_list.GetData(),node_count);
|
||||||
|
|
||||||
const uint mi_count=mi_set.GetCount();
|
const uint mi_count=mi_set.GetCount();
|
||||||
|
|
||||||
if(mi_count<=0)return;
|
if(mi_count<=0)return;
|
||||||
|
|
||||||
//if(extra_buffer->mi_count<mi_count)
|
//if(assign_buffer->mi_count<mi_count)
|
||||||
// extra_buffer->MIAlloc(device,mi_count,);
|
// assign_buffer->MIAlloc(device,mi_count,);
|
||||||
//extra_buffer->WriteMaterialInstance(rn_list.GetData(),node_count,mi_set);
|
//assign_buffer->WriteMaterialInstance(rn_list.GetData(),node_count,mi_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaterialRenderList::RenderItem::Set(Renderable *ri)
|
void MaterialRenderList::RenderItem::Set(Renderable *ri)
|
||||||
@ -182,8 +183,8 @@ void MaterialRenderList::Bind(MaterialInstance *mi)
|
|||||||
|
|
||||||
if(assign_binding_count>0)
|
if(assign_binding_count>0)
|
||||||
{
|
{
|
||||||
mi->BindUBO(DescriptorSetType::PerFrame,"l2w",extra_buffer->assigns_l2w);
|
mi->BindUBO(DescriptorSetType::PerFrame,mtl::SBS_LocalToWorld.name,assign_buffer->assigns_l2w);
|
||||||
// mi->BindUBO(DescriptorSetType::PerFrame,"Assign",extra_buffer->assigns_mi);
|
// mi->BindUBO(DescriptorSetType::PerFrame,"Assign",assign_buffer->assigns_mi);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_buf->BindDescriptorSets(mi->GetMaterial());
|
cmd_buf->BindDescriptorSets(mi->GetMaterial());
|
||||||
@ -242,7 +243,7 @@ bool MaterialRenderList::Bind(const VertexInputData *vid,const uint ri_index)
|
|||||||
// if(l2w_binding_count!=4)
|
// if(l2w_binding_count!=4)
|
||||||
// return(false);
|
// 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++)
|
// for(uint i=0;i<4;i++)
|
||||||
// buffer_offset[count+i]=ri_index*16; //mat4每列都是rgba32f,自然是16字节
|
// 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)
|
if(assign_binding_count!=1)
|
||||||
return(false);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
/*
|
/*
|
||||||
* 渲染节点额外提供的数据
|
* 渲染节点额外提供的数据
|
||||||
*/
|
*/
|
||||||
struct RenderExtraBuffer
|
struct RenderAssignBuffer
|
||||||
{
|
{
|
||||||
uint node_count; ///<渲染节点数量
|
uint node_count; ///<渲染节点数量
|
||||||
// uint mi_count; ///<材质实例数量
|
// uint mi_count; ///<材质实例数量
|
||||||
@ -54,12 +54,12 @@ struct RenderExtraBuffer
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
RenderExtraBuffer()
|
RenderAssignBuffer()
|
||||||
{
|
{
|
||||||
hgl_zero(*this);
|
hgl_zero(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
~RenderExtraBuffer()
|
~RenderAssignBuffer()
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
@ -205,5 +205,5 @@ public:
|
|||||||
// //mi_data_buffer->Unmap();
|
// //mi_data_buffer->Unmap();
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
};//struct RenderExtraBuffer
|
};//struct RenderAssignBuffer
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
Loading…
x
Reference in New Issue
Block a user