[WIP] render gizmo_move, but model is incorrect.
This commit is contained in:
parent
28fcdb6216
commit
f2a6c61c25
@ -29,9 +29,10 @@ enum class GizmoShape:uint
|
|||||||
ENUM_CLASS_RANGE(Plane,Cylinder)
|
ENUM_CLASS_RANGE(Plane,Cylinder)
|
||||||
};
|
};
|
||||||
|
|
||||||
bool InitGizmoResource(GPUDevice *);
|
bool InitGizmoResource(RenderResource *);
|
||||||
void FreeGizmoResource();
|
void FreeGizmoResource();
|
||||||
|
|
||||||
|
|
||||||
StaticMesh *GetGizmoMoveStaticMesh();
|
StaticMesh *GetGizmoMoveStaticMesh();
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -84,6 +84,7 @@ namespace
|
|||||||
mtl::Material3DCreateConfig cfg(device->GetDeviceAttribute(),"VertexLuminance3D",Prim::Lines);
|
mtl::Material3DCreateConfig cfg(device->GetDeviceAttribute(),"VertexLuminance3D",Prim::Lines);
|
||||||
|
|
||||||
cfg.mtl_name="VertexLuminance3D"; //注意必须用不同名字,未来改名材质文件名+cfg hash名
|
cfg.mtl_name="VertexLuminance3D"; //注意必须用不同名字,未来改名材质文件名+cfg hash名
|
||||||
|
cfg.local_to_world=true;
|
||||||
cfg.position_format=VAT_VEC3;
|
cfg.position_format=VAT_VEC3;
|
||||||
|
|
||||||
mtl::MaterialCreateInfo *mci=CreateVertexLuminance3D(&cfg);
|
mtl::MaterialCreateInfo *mci=CreateVertexLuminance3D(&cfg);
|
||||||
@ -94,6 +95,8 @@ namespace
|
|||||||
gizmo_line.mtl=gizmo_rr->CreateMaterial(mci);
|
gizmo_line.mtl=gizmo_rr->CreateMaterial(mci);
|
||||||
if(!gizmo_line.mtl)
|
if(!gizmo_line.mtl)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
gizmo_line.mtl->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -145,6 +148,8 @@ namespace
|
|||||||
gizmo_triangle.mtl=gizmo_rr->CreateMaterial(mci);
|
gizmo_triangle.mtl=gizmo_rr->CreateMaterial(mci);
|
||||||
if(!gizmo_triangle.mtl)
|
if(!gizmo_triangle.mtl)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
gizmo_triangle.mtl->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -228,12 +233,17 @@ namespace
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
bool InitGizmoResource(GPUDevice *device)
|
bool InitGizmoResource(RenderResource *rr)
|
||||||
{
|
{
|
||||||
|
if(!rr)
|
||||||
|
return(false);
|
||||||
|
|
||||||
if(gizmo_rr)
|
if(gizmo_rr)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
gizmo_rr=new RenderResource(device);
|
gizmo_rr=rr;
|
||||||
|
|
||||||
|
GPUDevice *device=gizmo_rr->GetDevice();
|
||||||
|
|
||||||
if(!InitGizmoResource3D(device))
|
if(!InitGizmoResource3D(device))
|
||||||
return(false);
|
return(false);
|
||||||
@ -258,10 +268,9 @@ void FreeGizmoResource()
|
|||||||
|
|
||||||
SAFE_CLEAR(gizmo_triangle.prim_creater);
|
SAFE_CLEAR(gizmo_triangle.prim_creater);
|
||||||
SAFE_CLEAR(gizmo_triangle.vdm);
|
SAFE_CLEAR(gizmo_triangle.vdm);
|
||||||
// SAFE_CLEAR(gizmo_pipeline_triangles);
|
|
||||||
// SAFE_CLEAR_OBJECT_ARRAY(gizmo_mi_triangles)
|
SAFE_CLEAR(gizmo_line.prim_creater);
|
||||||
//SAFE_CLEAR(gizmo_mtl_triangles);
|
SAFE_CLEAR(gizmo_line.vdm);
|
||||||
SAFE_CLEAR(gizmo_rr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color)
|
Renderable *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color)
|
||||||
@ -283,7 +292,7 @@ StaticMesh *CreateGizmoStaticMesh(SceneNode *root_node)
|
|||||||
if(root_node->IsEmpty())
|
if(root_node->IsEmpty())
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return CreateRRObject<StaticMesh>(gizmo_rr,root_node);
|
return(new StaticMesh(root_node));
|
||||||
}
|
}
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
@ -12,7 +12,7 @@ private:
|
|||||||
|
|
||||||
bool InitGizmo()
|
bool InitGizmo()
|
||||||
{
|
{
|
||||||
if(!InitGizmoResource(device))
|
if(!InitGizmoResource(db))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
sm=GetGizmoMoveStaticMesh();
|
sm=GetGizmoMoveStaticMesh();
|
||||||
@ -34,8 +34,11 @@ public:
|
|||||||
camera_control->SetTarget(Vector3f(0,0,0));
|
camera_control->SetTarget(Vector3f(0,0,0));
|
||||||
camera_control->Refresh();
|
camera_control->Refresh();
|
||||||
|
|
||||||
render_root.RefreshMatrix();
|
SceneNode *sn=sm->GetScene();
|
||||||
render_list->Expend(sm->GetScene());
|
|
||||||
|
sn->RefreshMatrix();
|
||||||
|
|
||||||
|
render_list->Expend(sn);
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,14 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
virtual void BindRenderResource(RenderResource *rr)
|
||||||
|
{
|
||||||
|
if(!rr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
rr->static_descriptor.AddUBO(mtl::SBS_ViewportInfo.name,ubo_vp_info);
|
||||||
|
}
|
||||||
|
|
||||||
virtual ~VulkanApplicationFramework()
|
virtual ~VulkanApplicationFramework()
|
||||||
{
|
{
|
||||||
CloseShaderCompiler();
|
CloseShaderCompiler();
|
||||||
@ -152,10 +160,10 @@ public:
|
|||||||
vp_info.Set(w,h);
|
vp_info.Set(w,h);
|
||||||
|
|
||||||
ubo_vp_info=db->CreateUBO("Viewport",sizeof(ViewportInfo),&vp_info);
|
ubo_vp_info=db->CreateUBO("Viewport",sizeof(ViewportInfo),&vp_info);
|
||||||
|
|
||||||
db->static_descriptor.AddUBO(mtl::SBS_ViewportInfo.name,ubo_vp_info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BindRenderResource(db);
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,6 +489,15 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
virtual void BindRenderResource(RenderResource *rr) override
|
||||||
|
{
|
||||||
|
if(!rr)return;
|
||||||
|
|
||||||
|
VulkanApplicationFramework::BindRenderResource(rr);
|
||||||
|
|
||||||
|
rr->global_descriptor.AddUBO(mtl::SBS_CameraInfo.name,ubo_camera_info);
|
||||||
|
}
|
||||||
|
|
||||||
virtual ~CameraAppFramework()
|
virtual ~CameraAppFramework()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(ckc);
|
SAFE_CLEAR(ckc);
|
||||||
@ -494,6 +511,8 @@ public:
|
|||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
InitCamera(w,h);
|
InitCamera(w,h);
|
||||||
|
|
||||||
|
BindRenderResource(db);
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,8 +535,6 @@ public:
|
|||||||
RefreshCameraInfo(&camera_control->GetCameraInfo(),&vp_info,camera);
|
RefreshCameraInfo(&camera_control->GetCameraInfo(),&vp_info,camera);
|
||||||
|
|
||||||
ubo_camera_info=db->CreateUBO("CameraInfo",sizeof(CameraInfo),&camera_control->GetCameraInfo());
|
ubo_camera_info=db->CreateUBO("CameraInfo",sizeof(CameraInfo),&camera_control->GetCameraInfo());
|
||||||
|
|
||||||
db->global_descriptor.AddUBO(mtl::SBS_CameraInfo.name,ubo_camera_info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(uint w,uint h)override
|
void Resize(uint w,uint h)override
|
||||||
|
@ -9,19 +9,14 @@ class StaticMesh
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
RenderResource *rr;
|
|
||||||
|
|
||||||
SceneNode *root_node;
|
SceneNode *root_node;
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
StaticMesh(RenderResource *,SceneNode *);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
StaticMesh(SceneNode *);
|
||||||
virtual ~StaticMesh();
|
virtual ~StaticMesh();
|
||||||
|
|
||||||
static StaticMesh *CreateNewObject(RenderResource *,SceneNode *);
|
// static StaticMesh *CreateNewObject(RenderResource *,SceneNode *);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -3,27 +3,24 @@
|
|||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
StaticMesh *StaticMesh::CreateNewObject(RenderResource *rr,SceneNode *node)
|
//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)
|
||||||
{
|
{
|
||||||
if(!node)
|
|
||||||
return(nullptr);
|
|
||||||
|
|
||||||
if(node->IsEmpty())
|
|
||||||
return(nullptr);
|
|
||||||
|
|
||||||
return(new StaticMesh(rr,node));
|
|
||||||
}
|
|
||||||
|
|
||||||
StaticMesh::StaticMesh(RenderResource *r,SceneNode *sn)
|
|
||||||
{
|
|
||||||
rr=r;
|
|
||||||
root_node=sn;
|
root_node=sn;
|
||||||
}
|
}
|
||||||
|
|
||||||
StaticMesh::~StaticMesh()
|
StaticMesh::~StaticMesh()
|
||||||
{
|
{
|
||||||
rr->Release(this);
|
|
||||||
|
|
||||||
SAFE_CLEAR(root_node);
|
SAFE_CLEAR(root_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +188,9 @@ void DescriptorSet::Update()
|
|||||||
{
|
{
|
||||||
if(!is_dirty)return;
|
if(!is_dirty)return;
|
||||||
|
|
||||||
vkUpdateDescriptorSets(device,wds_list.GetCount(),wds_list.GetData(),0,nullptr);
|
if(wds_list.GetCount()>0)
|
||||||
|
vkUpdateDescriptorSets(device,wds_list.GetCount(),wds_list.GetData(),0,nullptr);
|
||||||
|
|
||||||
is_dirty=false;
|
is_dirty=false;
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user