remove vulkan namespace

This commit is contained in:
hyzboy 2020-10-21 12:47:06 +08:00
parent 0e56a6b00c
commit c8955b6f35
45 changed files with 266 additions and 266 deletions

@ -1 +1 @@
Subproject commit 0f92de76507348b9a5a5cdd80a51406bfae00ddd Subproject commit 8d75c2dbfde480c2e8e736c66d9864ca44f64392

View File

@ -35,13 +35,13 @@ private:
Camera cam; Camera cam;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *render_instance =nullptr; RenderableInstance *render_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::GPUBuffer * ubo_color_material =nullptr; GPUBuffer * ubo_color_material =nullptr;
vulkan::GPUBuffer * ubo_line_config =nullptr; GPUBuffer * ubo_line_config =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -61,9 +61,9 @@ private:
return(true); return(true);
} }
vulkan::GPUBuffer *CreateUBO(const AnsiString &name,const VkDeviceSize size,void *data) GPUBuffer *CreateUBO(const AnsiString &name,const VkDeviceSize size,void *data)
{ {
vulkan::GPUBuffer *ubo=db->CreateUBO(size,data); GPUBuffer *ubo=db->CreateUBO(size,data);
if(!ubo) if(!ubo)
return(nullptr); return(nullptr);
@ -97,7 +97,7 @@ private:
bool InitVBO() bool InitVBO()
{ {
vulkan::Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT); Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
if(!render_obj)return(false); if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVAB(VAF_VEC2,VERTEX_COUNT,vertex_data)))return(false); if(!render_obj->Set(VAN::Position, db->CreateVAB(VAF_VEC2,VERTEX_COUNT,vertex_data)))return(false);

View File

@ -37,13 +37,13 @@ private:
SceneNode render_root; SceneNode render_root;
RenderList render_list; RenderList render_list;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::Pipeline * pipeline_solid =nullptr; Pipeline * pipeline_solid =nullptr;
vulkan::GPUBuffer * ubo_atomsphere =nullptr; GPUBuffer * ubo_atomsphere =nullptr;
AtmosphereData atomsphere_data; AtmosphereData atomsphere_data;
vulkan::Renderable * ro_sphere =nullptr; Renderable * ro_sphere =nullptr;
private: private:
@ -53,7 +53,7 @@ private:
if(!material_instance)return(false); if(!material_instance)return(false);
// pipeline_solid=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/sky")); // pipeline_solid=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/sky"));
pipeline_solid=CreatePipeline(material_instance,vulkan::InlinePipeline::Sky); //等同上一行为Framework重载默认使用swapchain的render target pipeline_solid=CreatePipeline(material_instance,InlinePipeline::Sky); //等同上一行为Framework重载默认使用swapchain的render target
if(!pipeline_solid)return(false); if(!pipeline_solid)return(false);
return(true); return(true);

View File

@ -22,7 +22,7 @@ VK_NAMESPACE_END
constexpr uint32_t SCREEN_WIDTH=512; constexpr uint32_t SCREEN_WIDTH=512;
constexpr uint32_t SCREEN_HEIGHT=512; constexpr uint32_t SCREEN_HEIGHT=512;
using Texture2DPointer=vulkan::Texture2D *; using Texture2DPointer=Texture2D *;
class TestApp:public CameraAppFramework class TestApp:public CameraAppFramework
{ {
@ -31,20 +31,20 @@ private:
SceneNode render_root; SceneNode render_root;
RenderList render_list; RenderList render_list;
vulkan::RenderTarget *gbuffer_rt; RenderTarget *gbuffer_rt;
struct SubpassParam struct SubpassParam
{ {
vulkan::Material * material; Material * material;
vulkan::MaterialInstance * material_instance; MaterialInstance * material_instance;
vulkan::Pipeline * pipeline_fan; Pipeline * pipeline_fan;
vulkan::Pipeline * pipeline_triangles; Pipeline * pipeline_triangles;
};// };//
SubpassParam sp_gbuffer; SubpassParam sp_gbuffer;
SubpassParam sp_composition; SubpassParam sp_composition;
vulkan::Renderable *ro_plane, Renderable *ro_plane,
*ro_cube, *ro_cube,
*ro_sphere, *ro_sphere,
*ro_torus, *ro_torus,
@ -53,7 +53,7 @@ private:
*ro_gbc_plane; *ro_gbc_plane;
vulkan::Sampler * sampler=nullptr; Sampler * sampler=nullptr;
struct struct
{ {
@ -61,7 +61,7 @@ private:
Texture2DPointer normal=nullptr; Texture2DPointer normal=nullptr;
}texture; }texture;
vulkan::GPUCmdBuffer *gbuffer_cmd=nullptr; GPUCmdBuffer *gbuffer_cmd=nullptr;
public: public:
@ -101,18 +101,18 @@ private:
bool InitGBufferPipeline(SubpassParam *sp) bool InitGBufferPipeline(SubpassParam *sp)
{ {
sp->pipeline_triangles =db->CreatePipeline(sp->material,gbuffer_rt,vulkan::InlinePipeline::Solid3D,Prim::Triangles); sp->pipeline_triangles =db->CreatePipeline(sp->material,gbuffer_rt,InlinePipeline::Solid3D,Prim::Triangles);
if(!sp->pipeline_triangles) if(!sp->pipeline_triangles)
return(false); return(false);
sp->pipeline_fan =db->CreatePipeline(sp->material,gbuffer_rt,vulkan::InlinePipeline::Solid3D,Prim::Fan); sp->pipeline_fan =db->CreatePipeline(sp->material,gbuffer_rt,InlinePipeline::Solid3D,Prim::Fan);
return sp->pipeline_fan; return sp->pipeline_fan;
} }
bool InitCompositionPipeline(SubpassParam *sp) bool InitCompositionPipeline(SubpassParam *sp)
{ {
sp->pipeline_fan=db->CreatePipeline(sp->material,gbuffer_rt,vulkan::InlinePipeline::Solid2D,Prim::Fan); sp->pipeline_fan=db->CreatePipeline(sp->material,gbuffer_rt,InlinePipeline::Solid2D,Prim::Fan);
return sp->pipeline_fan; return sp->pipeline_fan;
} }
@ -125,8 +125,8 @@ private:
if(!InitGBufferPipeline(&sp_gbuffer))return(false); if(!InitGBufferPipeline(&sp_gbuffer))return(false);
if(!InitCompositionPipeline(&sp_composition))return(false); if(!InitCompositionPipeline(&sp_composition))return(false);
texture.color =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Albedo.Tex2D")); texture.color =CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Albedo.Tex2D"));
texture.normal =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Normal.Tex2D")); texture.normal =CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Normal.Tex2D"));
sampler=device->CreateSampler(); sampler=device->CreateSampler();
@ -144,7 +144,7 @@ private:
return(true); return(true);
} }
void CreateRenderObject(vulkan::Material *mtl) void CreateRenderObject(Material *mtl)
{ {
{ {
struct PlaneCreateInfo pci; struct PlaneCreateInfo pci;

View File

@ -26,12 +26,12 @@ class TestApp:public VulkanApplicationFramework
private: private:
vulkan::Sampler * sampler =nullptr; Sampler * sampler =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::GPUBuffer * ubo_color =nullptr; GPUBuffer * ubo_color =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -59,7 +59,7 @@ private:
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/LumTextureRect2D")); material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/LumTextureRect2D"));
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D,Prim::Rectangles); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Rectangles);
if(!pipeline)return(false); if(!pipeline)return(false);
sampler=db->CreateSampler(); sampler=db->CreateSampler();

View File

@ -38,13 +38,13 @@ class TestApp:public VulkanApplicationFramework
private: private:
vulkan::Sampler * sampler =nullptr; Sampler * sampler =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::Renderable * render_obj =nullptr; Renderable * render_obj =nullptr;
vulkan::RenderableInstance *render_instance =nullptr; RenderableInstance *render_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
public: public:
@ -150,7 +150,7 @@ private:
if(!material_instance) if(!material_instance)
return(false); return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D,Prim::Rectangles); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Rectangles);
sampler=db->CreateSampler(); sampler=db->CreateSampler();

View File

@ -26,11 +26,11 @@ private:
Camera cam; Camera cam;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -41,7 +41,7 @@ private:
if(!material_instance) if(!material_instance)
return(false); return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D,Prim::TriangleStrip); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::TriangleStrip);
if(!pipeline) if(!pipeline)
return(false); return(false);

View File

@ -28,17 +28,17 @@ private:
SceneNode render_root; SceneNode render_root;
RenderList render_list; RenderList render_list;
vulkan::Material * material =nullptr; Material * material =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::Renderable *ro_rectangle =nullptr, Renderable *ro_rectangle =nullptr,
*ro_circle =nullptr, *ro_circle =nullptr,
*ro_round_rectangle =nullptr; *ro_round_rectangle =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::GPUBuffer * ubo_color_material =nullptr; GPUBuffer * ubo_color_material =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -52,7 +52,7 @@ private:
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline=CreatePipeline(material,vulkan::InlinePipeline::Solid2D,Prim::Fan); pipeline=CreatePipeline(material,InlinePipeline::Solid2D,Prim::Fan);
return pipeline; return pipeline;
} }
@ -92,9 +92,9 @@ private:
} }
} }
vulkan::GPUBuffer *CreateUBO(const AnsiString &name,const VkDeviceSize size,void *data) GPUBuffer *CreateUBO(const AnsiString &name,const VkDeviceSize size,void *data)
{ {
vulkan::GPUBuffer *ubo=db->CreateUBO(size,data); GPUBuffer *ubo=db->CreateUBO(size,data);
if(!ubo) if(!ubo)
return(nullptr); return(nullptr);

View File

@ -16,7 +16,7 @@ class TestApp:public CameraAppFramework
{ {
Color4f color; Color4f color;
vulkan::GPUBuffer *ubo_color=nullptr; GPUBuffer *ubo_color=nullptr;
private: private:
@ -25,12 +25,12 @@ private:
struct MDP struct MDP
{ {
vulkan::Material * material =nullptr; Material * material =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
}m3d,m2d; }m3d,m2d;
vulkan::Renderable *ro_plane_grid[3], Renderable *ro_plane_grid[3],
*ro_round_rectangle =nullptr; *ro_round_rectangle =nullptr;
private: private:
@ -43,7 +43,7 @@ private:
mdp->material_instance=db->CreateMaterialInstance(mdp->material); mdp->material_instance=db->CreateMaterialInstance(mdp->material);
if(!mdp->material_instance)return(false); if(!mdp->material_instance)return(false);
mdp->pipeline=CreatePipeline(mdp->material_instance,vulkan::InlinePipeline::Solid3D,primitive); mdp->pipeline=CreatePipeline(mdp->material_instance,InlinePipeline::Solid3D,primitive);
if(!mdp->material_instance->BindUBO("world",GetCameraMatrixBuffer())) if(!mdp->material_instance->BindUBO("world",GetCameraMatrixBuffer()))
return(false); return(false);
@ -52,14 +52,14 @@ private:
return(true); return(true);
} }
void Add(vulkan::Renderable *r,MDP &mdp) void Add(Renderable *r,MDP &mdp)
{ {
auto ri=db->CreateRenderableInstance(r,mdp.material_instance,mdp.pipeline); auto ri=db->CreateRenderableInstance(r,mdp.material_instance,mdp.pipeline);
render_root.Add(ri); render_root.Add(ri);
} }
void Add(vulkan::Renderable *r,MDP &mdp,const Matrix4f &mat) void Add(Renderable *r,MDP &mdp,const Matrix4f &mat)
{ {
auto ri=db->CreateRenderableInstance(r,mdp.material_instance,mdp.pipeline); auto ri=db->CreateRenderableInstance(r,mdp.material_instance,mdp.pipeline);

View File

@ -45,28 +45,28 @@ class TestApp:public VulkanApplicationFramework
{ {
private: private:
vulkan::PipelineData * pipeline_data =nullptr; PipelineData * pipeline_data =nullptr;
vulkan::Renderable * render_obj =nullptr; Renderable * render_obj =nullptr;
vulkan::Sampler * sampler_linear =nullptr; Sampler * sampler_linear =nullptr;
vulkan::Sampler * sampler_nearest =nullptr; Sampler * sampler_nearest =nullptr;
struct MP struct MP
{ {
vulkan::Material * material =nullptr; Material * material =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
}mp_normal,mp_hq; }mp_normal,mp_hq;
struct MIR struct MIR
{ {
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
}mir_nearest,mir_linear,mir_nearest_hq,mir_linear_hq; }mir_nearest,mir_linear,mir_nearest_hq,mir_linear_hq;
vulkan::Texture2D * texture =nullptr; Texture2D * texture =nullptr;
vulkan::VAB * vertex_buffer =nullptr; VAB * vertex_buffer =nullptr;
vulkan::VAB * tex_coord_buffer =nullptr; VAB * tex_coord_buffer =nullptr;
vulkan::IndexBuffer * index_buffer =nullptr; IndexBuffer * index_buffer =nullptr;
SceneNode render_root; SceneNode render_root;
RenderList render_list; RenderList render_list;
@ -110,9 +110,9 @@ private:
return(true); return(true);
} }
vulkan::Sampler *InitSampler(VkFilter filter) Sampler *InitSampler(VkFilter filter)
{ {
vulkan::SamplerCreateInfo sampler_create_info; SamplerCreateInfo sampler_create_info;
sampler_create_info.magFilter = filter; sampler_create_info.magFilter = filter;
sampler_create_info.minFilter = filter; sampler_create_info.minFilter = filter;
@ -135,7 +135,7 @@ private:
bool InitTexture() bool InitTexture()
{ {
texture=vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/heightmap.Tex2D")); texture=CreateTextureFromFile(device,OS_TEXT("res/image/heightmap.Tex2D"));
return texture; return texture;
} }
@ -152,7 +152,7 @@ private:
bool InitMaterial() bool InitMaterial()
{ {
pipeline_data=vulkan::GetPipelineData(vulkan::InlinePipeline::Solid2D); pipeline_data=GetPipelineData(InlinePipeline::Solid2D);
if(!pipeline_data)return(false); if(!pipeline_data)return(false);
if(!InitMaterial(&mp_normal,OS_TEXT("res/material/Texture2DPC")))return(false); if(!InitMaterial(&mp_normal,OS_TEXT("res/material/Texture2DPC")))return(false);
@ -161,7 +161,7 @@ private:
return(true); return(true);
} }
bool InitMIR(struct MIR *mir,vulkan::Sampler *sampler,MP *mp) bool InitMIR(struct MIR *mir,Sampler *sampler,MP *mp)
{ {
mir->material_instance=db->CreateMaterialInstance(mp->material); mir->material_instance=db->CreateMaterialInstance(mp->material);
if(!mir->material_instance)return(false); if(!mir->material_instance)return(false);
@ -239,7 +239,7 @@ public:
int main(int,char **) int main(int,char **)
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(!vulkan::CheckStrideBytesByFormat()) if(!CheckStrideBytesByFormat())
return 0xff; return 0xff;
#endif// #endif//

View File

@ -23,16 +23,16 @@ private:
SceneNode render_root; SceneNode render_root;
RenderList render_list; RenderList render_list;
vulkan::Material * material =nullptr; Material * material =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::PipelineData * pipeline_data =nullptr; PipelineData * pipeline_data =nullptr;
vulkan::Pipeline * pipeline_line =nullptr; Pipeline * pipeline_line =nullptr;
vulkan::Pipeline * pipeline_solid =nullptr; Pipeline * pipeline_solid =nullptr;
vulkan::GPUBuffer * ubo_color =nullptr; GPUBuffer * ubo_color =nullptr;
vulkan::Renderable *ro_plane_grid, Renderable *ro_plane_grid,
*ro_cube, *ro_cube,
*ro_sphere, *ro_sphere,
*ro_dome, *ro_dome,
@ -50,7 +50,7 @@ private:
material_instance=db->CreateMaterialInstance(material); material_instance=db->CreateMaterialInstance(material);
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline_data=vulkan::GetPipelineData(vulkan::InlinePipeline::Solid3D); pipeline_data=GetPipelineData(InlinePipeline::Solid3D);
if(!pipeline_data)return(false); if(!pipeline_data)return(false);
pipeline_line=CreatePipeline(material,pipeline_data,Prim::Lines); pipeline_line=CreatePipeline(material,pipeline_data,Prim::Lines);
@ -155,14 +155,14 @@ private:
return(true); return(true);
} }
void Add(vulkan::Renderable *r,vulkan::Pipeline *pl) void Add(Renderable *r,Pipeline *pl)
{ {
auto ri=db->CreateRenderableInstance(r,material_instance,pl); auto ri=db->CreateRenderableInstance(r,material_instance,pl);
render_root.Add(ri); render_root.Add(ri);
} }
void Add(vulkan::Renderable *r,vulkan::Pipeline *pl,const Matrix4f &mat) void Add(Renderable *r,Pipeline *pl,const Matrix4f &mat)
{ {
auto ri=db->CreateRenderableInstance(r,material_instance,pl); auto ri=db->CreateRenderableInstance(r,material_instance,pl);

View File

@ -15,24 +15,24 @@ class TestApp:public CameraAppFramework
{ {
Camera cam; Camera cam;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
}; };
struct:public RenderObject struct:public RenderObject
{ {
vulkan::RenderTarget * render_taget =nullptr; RenderTarget * render_taget =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
}os; }os;
struct:public RenderObject struct:public RenderObject
{ {
vulkan::Sampler * sampler =nullptr; Sampler * sampler =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
SceneNode scene_root; SceneNode scene_root;
RenderList render_list; RenderList render_list;
@ -70,7 +70,7 @@ public:
os.material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/VertexColor2D")); os.material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/VertexColor2D"));
if(!os.material_instance)return(false); if(!os.material_instance)return(false);
os.pipeline=db->CreatePipeline(os.material_instance,os.render_taget,vulkan::InlinePipeline::Solid2D,Prim::Fan); os.pipeline=db->CreatePipeline(os.material_instance,os.render_taget,InlinePipeline::Solid2D,Prim::Fan);
if(!os.pipeline)return(false); if(!os.pipeline)return(false);
if(!InitUBO(&os,os.render_taget->GetExtent())) if(!InitUBO(&os,os.render_taget->GetExtent()))
@ -86,7 +86,7 @@ public:
cci.center_color.Set(1,1,1,1); cci.center_color.Set(1,1,1,1);
cci.border_color.Set(1,1,1,0); cci.border_color.Set(1,1,1,0);
vulkan::Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetMaterial(),&cci); Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetMaterial(),&cci);
if(!render_obj)return(false); if(!render_obj)return(false);
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline); os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
@ -107,7 +107,7 @@ public:
cube.material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/TextureMask3D")); cube.material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/TextureMask3D"));
if(!cube.material_instance)return(false); if(!cube.material_instance)return(false);
cube.pipeline=CreatePipeline(cube.material_instance,vulkan::InlinePipeline::Solid3D); cube.pipeline=CreatePipeline(cube.material_instance,InlinePipeline::Solid3D);
if(!cube.pipeline)return(false); if(!cube.pipeline)return(false);
cube.sampler=db->CreateSampler(); cube.sampler=db->CreateSampler();
@ -120,7 +120,7 @@ public:
{ {
CubeCreateInfo cci; CubeCreateInfo cci;
vulkan::Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetMaterial(),&cci); Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetMaterial(),&cci);
if(!render_obj)return(false); if(!render_obj)return(false);
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline); cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);

View File

@ -36,14 +36,14 @@ class TestApp:public VulkanApplicationFramework
private: private:
vulkan::Texture2D * texture =nullptr; Texture2D * texture =nullptr;
vulkan::Sampler * sampler =nullptr; Sampler * sampler =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::Renderable * render_obj =nullptr; Renderable * render_obj =nullptr;
vulkan::RenderableInstance *render_instance =nullptr; RenderableInstance *render_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -52,10 +52,10 @@ private:
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/TextureRect2D")); material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/TextureRect2D"));
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D,Prim::Rectangles); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Rectangles);
if(!pipeline)return(false); if(!pipeline)return(false);
texture=vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/lena.Tex2D")); texture=CreateTextureFromFile(device,OS_TEXT("res/image/lena.Tex2D"));
if(!texture)return(false); if(!texture)return(false);
sampler=db->CreateSampler(); sampler=db->CreateSampler();

View File

@ -35,7 +35,7 @@ constexpr char *data_type_name[]
"SRGB" "SRGB"
};// };//
vulkan::VulkanInstance *InitVulkanInstance() VulkanInstance *InitVulkanInstance()
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(!CheckStrideBytesByFormat()) if(!CheckStrideBytesByFormat())
@ -56,15 +56,15 @@ vulkan::VulkanInstance *InitVulkanInstance()
cili.lunarg.standard_validation=true; cili.lunarg.standard_validation=true;
cili.khronos.validation=true; cili.khronos.validation=true;
return vulkan::CreateInstance("VulkanTest",nullptr,&cili); return CreateInstance("VulkanTest",nullptr,&cili);
} }
int main(int,char **) int main(int,char **)
{ {
Window * win =nullptr; Window * win =nullptr;
vulkan::VulkanInstance * inst =nullptr; VulkanInstance * inst =nullptr;
vulkan::GPUDevice * device =nullptr; GPUDevice * device =nullptr;
const vulkan::GPUPhysicalDevice *physical_device =nullptr; const GPUPhysicalDevice *physical_device =nullptr;
inst=InitVulkanInstance(); inst=InitVulkanInstance();

View File

@ -32,11 +32,11 @@ private:
Camera cam; Camera cam;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *render_instance =nullptr; RenderableInstance *render_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -48,7 +48,7 @@ private:
return(false); return(false);
// 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,vulkan::InlinePipeline::Solid2D); //等同上一行为Framework重载默认使用swapchain的render target pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D); //等同上一行为Framework重载默认使用swapchain的render target
return pipeline; return pipeline;
} }
@ -74,7 +74,7 @@ private:
bool InitVBO() bool InitVBO()
{ {
vulkan::Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT); Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
if(!render_obj)return(false); if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVAB(VAF_VEC2,VERTEX_COUNT,vertex_data)))return(false); if(!render_obj->Set(VAN::Position, db->CreateVAB(VAF_VEC2,VERTEX_COUNT,vertex_data)))return(false);

View File

@ -36,11 +36,11 @@ private:
Camera cam; Camera cam;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -49,7 +49,7 @@ private:
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/FragColor")); material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/FragColor"));
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D);
return(true); return(true);
} }
@ -124,7 +124,7 @@ public:
int main(int,char **) int main(int,char **)
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(!vulkan::CheckStrideBytesByFormat()) if(!CheckStrideBytesByFormat())
return 0xff; return 0xff;
#endif// #endif//

View File

@ -49,12 +49,12 @@ class TestApp:public VulkanApplicationFramework
private: private:
vulkan::Texture2D * texture =nullptr; Texture2D * texture =nullptr;
vulkan::Sampler * sampler =nullptr; Sampler * sampler =nullptr;
vulkan::MaterialInstance * material_instance =nullptr; MaterialInstance * material_instance =nullptr;
vulkan::RenderableInstance *renderable_instance =nullptr; RenderableInstance *renderable_instance =nullptr;
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr; Pipeline * pipeline =nullptr;
private: private:
@ -63,10 +63,10 @@ private:
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/Texture2D")); material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/Texture2D"));
if(!material_instance)return(false); if(!material_instance)return(false);
pipeline=CreatePipeline(material_instance,vulkan::InlinePipeline::Solid2D); pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D);
if(!pipeline)return(false); if(!pipeline)return(false);
texture=vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/lena.Tex2D")); texture=CreateTextureFromFile(device,OS_TEXT("res/image/lena.Tex2D"));
if(!texture)return(false); if(!texture)return(false);
db->Add(texture); db->Add(texture);
@ -148,7 +148,7 @@ public:
int main(int,char **) int main(int,char **)
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(!vulkan::CheckStrideBytesByFormat()) if(!CheckStrideBytesByFormat())
return 0xff; return 0xff;
#endif// #endif//

View File

@ -27,8 +27,8 @@ class VulkanApplicationFramework
{ {
private: private:
Window * win =nullptr; Window * win =nullptr;
vulkan::VulkanInstance * inst =nullptr; VulkanInstance * inst =nullptr;
void OnKeyDown (KeyboardButton kb){key_status[kb]=true;} void OnKeyDown (KeyboardButton kb){key_status[kb]=true;}
void OnKeyUp (KeyboardButton kb){key_status[kb]=false;} void OnKeyUp (KeyboardButton kb){key_status[kb]=false;}
@ -46,20 +46,20 @@ protected:
protected: protected:
vulkan::GPUDevice * device =nullptr; GPUDevice * device =nullptr;
vulkan::SwapchainRenderTarget * sc_render_target =nullptr; SwapchainRenderTarget * sc_render_target =nullptr;
protected: protected:
int32_t swap_chain_count =0; int32_t swap_chain_count =0;
vulkan::GPUCmdBuffer ** cmd_buf =nullptr; GPUCmdBuffer ** cmd_buf =nullptr;
Color4f clear_color; Color4f clear_color;
protected: protected:
vulkan::RenderResource * db =nullptr; RenderResource * db =nullptr;
bool key_status[kbRangeSize]; bool key_status[kbRangeSize];
@ -82,7 +82,7 @@ public:
clear_color.Zero(); clear_color.Zero();
#ifdef _DEBUG #ifdef _DEBUG
if(!vulkan::CheckStrideBytesByFormat()) if(!CheckStrideBytesByFormat())
return(false); return(false);
#endif// #endif//
@ -106,7 +106,7 @@ public:
cili.khronos.validation = true; cili.khronos.validation = true;
cili.RenderDoc.Capture = true; cili.RenderDoc.Capture = true;
inst=vulkan::CreateInstance("VulkanTest",nullptr,&cili); inst=CreateInstance("VulkanTest",nullptr,&cili);
if(!inst) if(!inst)
return(false); return(false);
@ -117,7 +117,7 @@ public:
if(!device) if(!device)
return(false); return(false);
db=new vulkan::RenderResource(device); db=new RenderResource(device);
InitCommandBuffer(); InitCommandBuffer();
@ -161,20 +161,20 @@ public:
{ {
const VkExtent2D extent=sc_render_target->GetExtent(); const VkExtent2D extent=sc_render_target->GetExtent();
cmd_buf=hgl_zero_new<vulkan::GPUCmdBuffer *>(swap_chain_count); cmd_buf=hgl_zero_new<GPUCmdBuffer *>(swap_chain_count);
for(int32_t i=0;i<swap_chain_count;i++) for(int32_t i=0;i<swap_chain_count;i++)
cmd_buf[i]=device->CreateCommandBuffer(extent,2); cmd_buf[i]=device->CreateCommandBuffer(extent,2);
} }
} }
void BuildCommandBuffer(vulkan::RenderTarget *rt,vulkan::RenderableInstance *ri) void BuildCommandBuffer(RenderTarget *rt,RenderableInstance *ri)
{ {
if(!rt||!ri) if(!rt||!ri)
return; return;
vulkan::GPUCmdBuffer *cb=rt->GetCommandBuffer(); GPUCmdBuffer *cb=rt->GetCommandBuffer();
const vulkan::IndexBuffer *ib=ri->GetIndexBuffer(); const IndexBuffer *ib=ri->GetIndexBuffer();
cb->Begin(); cb->Begin();
cb->BindFramebuffer(rt); cb->BindFramebuffer(rt);
@ -196,14 +196,14 @@ public:
clear_color.Use(cc,1.0); clear_color.Use(cc,1.0);
} }
void BuildCommandBuffer(uint32_t index,vulkan::RenderableInstance *ri) void BuildCommandBuffer(uint32_t index,RenderableInstance *ri)
{ {
if(!ri) if(!ri)
return; return;
const vulkan::IndexBuffer *ib=ri->GetIndexBuffer(); const IndexBuffer *ib=ri->GetIndexBuffer();
vulkan::GPUCmdBuffer *cb=cmd_buf[index]; GPUCmdBuffer *cb=cmd_buf[index];
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b); cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
@ -222,13 +222,13 @@ public:
cb->End(); cb->End();
} }
void BuildCommandBuffer(vulkan::RenderableInstance *ri) void BuildCommandBuffer(RenderableInstance *ri)
{ {
for(int32_t i=0;i<swap_chain_count;i++) for(int32_t i=0;i<swap_chain_count;i++)
BuildCommandBuffer(i,ri); BuildCommandBuffer(i,ri);
} }
void BuildCurrentCommandBuffer(vulkan::RenderableInstance *ri) void BuildCurrentCommandBuffer(RenderableInstance *ri)
{ {
BuildCommandBuffer(sc_render_target->GetCurrentFrameIndices(),ri); BuildCommandBuffer(sc_render_target->GetCurrentFrameIndices(),ri);
} }
@ -237,7 +237,7 @@ public:
{ {
if(!rl)return; if(!rl)return;
vulkan::GPUCmdBuffer *cb=cmd_buf[index]; GPUCmdBuffer *cb=cmd_buf[index];
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b); cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
@ -297,32 +297,32 @@ public:
public: //pipeline public: //pipeline
vulkan::Pipeline *CreatePipeline(vulkan::Material *mtl,const vulkan::InlinePipeline &ip,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(Material *mtl,const InlinePipeline &ip,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mtl,sc_render_target,ip,prim,prim_restart); return db->CreatePipeline(mtl,sc_render_target,ip,prim,prim_restart);
} }
vulkan::Pipeline *CreatePipeline(vulkan::MaterialInstance *mi,const vulkan::InlinePipeline &ip,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(MaterialInstance *mi,const InlinePipeline &ip,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mi,sc_render_target,ip,prim,prim_restart); return db->CreatePipeline(mi,sc_render_target,ip,prim,prim_restart);
} }
vulkan::Pipeline *CreatePipeline(vulkan::Material *mtl,vulkan::PipelineData *pd,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(Material *mtl,PipelineData *pd,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mtl,sc_render_target,pd,prim,prim_restart); return db->CreatePipeline(mtl,sc_render_target,pd,prim,prim_restart);
} }
vulkan::Pipeline *CreatePipeline(vulkan::MaterialInstance *mi,vulkan::PipelineData *pd,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(MaterialInstance *mi,PipelineData *pd,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mi,sc_render_target,pd,prim,prim_restart); return db->CreatePipeline(mi,sc_render_target,pd,prim,prim_restart);
} }
vulkan::Pipeline *CreatePipeline(vulkan::Material *mtl,const OSString &pipeline_name,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(Material *mtl,const OSString &pipeline_name,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mtl,sc_render_target,pipeline_name,prim,prim_restart); return db->CreatePipeline(mtl,sc_render_target,pipeline_name,prim,prim_restart);
} }
vulkan::Pipeline *CreatePipeline(vulkan::MaterialInstance *mi,const OSString &pipeline_name,const Prim &prim=Prim::Triangles,const bool prim_restart=false) Pipeline *CreatePipeline(MaterialInstance *mi,const OSString &pipeline_name,const Prim &prim=Prim::Triangles,const bool prim_restart=false)
{ {
return db->CreatePipeline(mi,sc_render_target,pipeline_name,prim,prim_restart); return db->CreatePipeline(mi,sc_render_target,pipeline_name,prim,prim_restart);
} }
@ -332,7 +332,7 @@ class CameraAppFramework:public VulkanApplicationFramework
{ {
private: private:
vulkan::GPUBuffer * ubo_world_matrix =nullptr; GPUBuffer * ubo_world_matrix =nullptr;
protected: protected:
@ -375,7 +375,7 @@ public:
camera.height=h; camera.height=h;
} }
vulkan::GPUBuffer *GetCameraMatrixBuffer() GPUBuffer *GetCameraMatrixBuffer()
{ {
return ubo_world_matrix; return ubo_world_matrix;
} }

View File

@ -17,12 +17,12 @@ namespace hgl
RectScope2f scope; RectScope2f scope;
};//struct RectangleCreateInfo };//struct RectangleCreateInfo
vulkan::Renderable *CreateRenderableRectangle(vulkan::RenderResource *db,vulkan::Material *mtl,const RectangleCreateInfo *rci); Renderable *CreateRenderableRectangle(RenderResource *db,Material *mtl,const RectangleCreateInfo *rci);
/** /**
* *
*/ */
vulkan::Renderable *CreateRenderableGBufferComposition(vulkan::RenderResource *db,vulkan::Material *mtl); Renderable *CreateRenderableGBufferComposition(RenderResource *db,Material *mtl);
/** /**
* (/线) * (/线)
@ -33,7 +33,7 @@ namespace hgl
uint32_t round_per; ///<圆角精度 uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo };//struct RoundRectangleCreateInfo:public RectangleCreateInfo
vulkan::Renderable *CreateRenderableRoundRectangle(vulkan::RenderResource *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci); Renderable *CreateRenderableRoundRectangle(RenderResource *db,Material *mtl,const RoundRectangleCreateInfo *rci);
/** /**
* *
@ -53,7 +53,7 @@ namespace hgl
/** /**
* 2D圆形(/线) * 2D圆形(/线)
*/ */
vulkan::Renderable *CreateRenderableCircle(vulkan::RenderResource *db,vulkan::Material *mtl,const CircleCreateInfo *cci); Renderable *CreateRenderableCircle(RenderResource *db,Material *mtl,const CircleCreateInfo *cci);
/** /**
* *
@ -72,7 +72,7 @@ namespace hgl
/** /**
* (线) * (线)
*/ */
vulkan::Renderable *CreateRenderablePlaneGrid(vulkan::RenderResource *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci); Renderable *CreateRenderablePlaneGrid(RenderResource *db,Material *mtl,const PlaneGridCreateInfo *pgci);
struct PlaneCreateInfo struct PlaneCreateInfo
{ {
@ -89,7 +89,7 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderablePlane(vulkan::RenderResource *db,vulkan::Material *mtl,const PlaneCreateInfo *pci); Renderable *CreateRenderablePlane(RenderResource *db,Material *mtl,const PlaneCreateInfo *pci);
struct CubeCreateInfo struct CubeCreateInfo
{ {
@ -129,17 +129,17 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderableCube(vulkan::RenderResource *db,vulkan::Material *mtl,const CubeCreateInfo *cci); Renderable *CreateRenderableCube(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
/** /**
* (线) * (线)
*/ */
vulkan::Renderable *CreateRenderableBoundingBox(vulkan::RenderResource *db,vulkan::Material *mtl,const CubeCreateInfo *cci); Renderable *CreateRenderableBoundingBox(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
/** /**
* 0,0,01() * 0,0,01()
*/ */
vulkan::Renderable *CreateRenderableSphere(vulkan::RenderResource *db,vulkan::Material *mtl,const uint numberSlices); Renderable *CreateRenderableSphere(RenderResource *db,Material *mtl,const uint numberSlices);
struct DomeCreateInfo struct DomeCreateInfo
{ {
@ -150,7 +150,7 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderableDome(vulkan::RenderResource *db,vulkan::Material *mtl, const DomeCreateInfo *); Renderable *CreateRenderableDome(RenderResource *db,Material *mtl, const DomeCreateInfo *);
struct TorusCreateInfo struct TorusCreateInfo
{ {
@ -164,7 +164,7 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderableTorus(vulkan::RenderResource *db,vulkan::Material *mtl,const TorusCreateInfo *tci); Renderable *CreateRenderableTorus(RenderResource *db,Material *mtl,const TorusCreateInfo *tci);
struct CylinderCreateInfo struct CylinderCreateInfo
{ {
@ -176,7 +176,7 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderableCylinder(vulkan::RenderResource *db,vulkan::Material *mtl,const CylinderCreateInfo *cci); Renderable *CreateRenderableCylinder(RenderResource *db,Material *mtl,const CylinderCreateInfo *cci);
struct ConeCreateInfo struct ConeCreateInfo
{ {
@ -189,7 +189,7 @@ namespace hgl
/** /**
* () * ()
*/ */
vulkan::Renderable *CreateRenderableCone(vulkan::RenderResource *db,vulkan::Material *mtl,const ConeCreateInfo *cci); Renderable *CreateRenderableCone(RenderResource *db,Material *mtl,const ConeCreateInfo *cci);
struct AxisCreateInfo struct AxisCreateInfo
{ {
@ -229,7 +229,7 @@ namespace hgl
/** /**
* 线(线) * 线(线)
*/ */
vulkan::Renderable *CreateRenderableAxis(vulkan::RenderResource *db,vulkan::Material *mtl,const AxisCreateInfo *aci); Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci);
}//namespace graph }//namespace graph
};//namespace hgl };//namespace hgl
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE #endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE

View File

@ -11,19 +11,19 @@ namespace hgl
{ {
class RenderList class RenderList
{ {
vulkan::GPUCmdBuffer *cmd_buf; GPUCmdBuffer *cmd_buf;
private: private:
List<SceneNode *> scene_node_list; List<SceneNode *> scene_node_list;
vulkan::PushConstant * last_pc; PushConstant * last_pc;
vulkan::Pipeline * last_pipeline; Pipeline * last_pipeline;
vulkan::MaterialInstance * last_mat_inst; MaterialInstance * last_mat_inst;
vulkan::RenderableInstance *last_ri; RenderableInstance *last_ri;
void Render(SceneNode *,vulkan::RenderableInstance *); void Render(SceneNode *,RenderableInstance *);
void Render(SceneNode *,List<vulkan::RenderableInstance *> &); void Render(SceneNode *,List<RenderableInstance *> &);
public: public:
@ -41,7 +41,7 @@ namespace hgl
void Add (SceneNode *node) {if(node)scene_node_list.Add(node);} void Add (SceneNode *node) {if(node)scene_node_list.Add(node);}
void Clear () {scene_node_list.ClearData();} void Clear () {scene_node_list.ClearData();}
bool Render(vulkan::GPUCmdBuffer *); bool Render(GPUCmdBuffer *);
};//class RenderList };//class RenderList
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl

View File

@ -13,7 +13,7 @@ namespace hgl
AnsiString name; AnsiString name;
uint binding; uint binding;
VAD * data =nullptr; VAD * data =nullptr;
vulkan::VAB * vab =nullptr; VAB * vab =nullptr;
public: public:
@ -32,25 +32,25 @@ namespace hgl
{ {
protected: protected:
vulkan::RenderResource *db; RenderResource *db;
vulkan::Material *mtl; Material *mtl;
const vulkan::VertexShaderModule *vsm; const VertexShaderModule *vsm;
protected: protected:
uint32 vertices_number; uint32 vertices_number;
vulkan::IndexBuffer * ibo; IndexBuffer * ibo;
VADMaps vab_maps; VADMaps vab_maps;
protected: protected:
virtual VAD *CreateVAD(const AnsiString &name,const vulkan::ShaderStage *ss); ///<创建一个顶点属性缓冲区 virtual VAD *CreateVAD(const AnsiString &name,const ShaderStage *ss); ///<创建一个顶点属性缓冲区
public: public:
RenderableCreater(vulkan::RenderResource *sdb,vulkan::Material *m); RenderableCreater(RenderResource *sdb,Material *m);
virtual ~RenderableCreater()=default; virtual ~RenderableCreater()=default;
virtual bool Init(const uint32 count); ///<初始化,参数为顶点数量 virtual bool Init(const uint32 count); ///<初始化,参数为顶点数量
@ -60,7 +60,7 @@ namespace hgl
template<typename T> template<typename T>
T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器 T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器
{ {
const vulkan::ShaderStage *ss=vsm->GetStageInput(name); const ShaderStage *ss=vsm->GetStageInput(name);
if(!ss) if(!ss)
return(nullptr); return(nullptr);
@ -85,7 +85,7 @@ namespace hgl
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区 uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区 uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
virtual vulkan::Renderable * Finish(); ///<结束并创建可渲染对象 virtual Renderable * Finish(); ///<结束并创建可渲染对象
};//class RenderableCreater };//class RenderableCreater
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl

View File

@ -40,7 +40,7 @@ namespace hgl
ObjectList<SceneNode> SubNode; ///<子节点 ObjectList<SceneNode> SubNode; ///<子节点
List<vulkan::RenderableInstance *> renderable_instances; ///<可渲染实例 List<RenderableInstance *> renderable_instances; ///<可渲染实例
public: public:
@ -74,9 +74,9 @@ namespace hgl
void Add(SceneNode *n){if(n)SubNode.Add(n);} ///<增加一个子节点 void Add(SceneNode *n){if(n)SubNode.Add(n);} ///<增加一个子节点
void ClearSubNode(){SubNode.ClearData();} ///<清除子节点 void ClearSubNode(){SubNode.ClearData();} ///<清除子节点
void Add(vulkan::RenderableInstance *ri){if(ri)renderable_instances.Add(ri);} ///<增加渲染实例 void Add(RenderableInstance *ri){if(ri)renderable_instances.Add(ri);} ///<增加渲染实例
void Add(vulkan::RenderableInstance *ri,const Matrix4f &mat) void Add(RenderableInstance *ri,const Matrix4f &mat)
{ {
SceneNode *sn=new SceneNode(mat); SceneNode *sn=new SceneNode(mat);

View File

@ -24,14 +24,14 @@ namespace hgl
Matrix4f InverseLocalMatrix; ///<反向当前矩阵 Matrix4f InverseLocalMatrix; ///<反向当前矩阵
Matrix4f InverseLocalToWorldMatrix; ///<反向当前到世界矩阵 Matrix4f InverseLocalToWorldMatrix; ///<反向当前到世界矩阵
vulkan::PushConstant pc; PushConstant pc;
public: public:
SceneOrient(); SceneOrient();
virtual ~SceneOrient()=default; virtual ~SceneOrient()=default;
vulkan::PushConstant *GetPushConstant(){return &pc;} PushConstant *GetPushConstant(){return &pc;}
Matrix4f & SetLocalMatrix (const Matrix4f &); ///<设定当前节点矩阵 Matrix4f & SetLocalMatrix (const Matrix4f &); ///<设定当前节点矩阵
Matrix4f & SetLocalToWorldMatrix (const Matrix4f &); ///<设定当前节点到世界矩阵 Matrix4f & SetLocalToWorldMatrix (const Matrix4f &); ///<设定当前节点到世界矩阵

View File

@ -48,7 +48,7 @@ namespace hgl
protected: protected:
vulkan::GPUBuffer *tile_buffer; ///<Tile暂存缓冲区 GPUBuffer *tile_buffer; ///<Tile暂存缓冲区
List<ImageRegion> commit_list; List<ImageRegion> commit_list;
uint8 *commit_ptr; uint8 *commit_ptr;

View File

@ -261,7 +261,7 @@ public: //Command GPUBuffer 相关
const VkImageLayout depth_final_layout=VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL); const VkImageLayout depth_final_layout=VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
GPUFence * CreateFence(bool); GPUFence * CreateFence(bool);
vulkan::GPUSemaphore * CreateSemaphore(); GPUSemaphore * CreateSemaphore();
public: //FrameBuffer相关 public: //FrameBuffer相关

View File

@ -25,7 +25,7 @@ public:
~MaterialInstance(); ~MaterialInstance();
bool BindUBO(const AnsiString &name,vulkan::GPUBuffer *ubo); bool BindUBO(const AnsiString &name,GPUBuffer *ubo);
bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler); bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler);
void Update(); void Update();

View File

@ -23,8 +23,8 @@ public:
bool WaitQueue(); bool WaitQueue();
bool WaitFence(const bool wait_all=true,const uint64_t time_out=HGL_NANO_SEC_PER_SEC); bool WaitFence(const bool wait_all=true,const uint64_t time_out=HGL_NANO_SEC_PER_SEC);
bool Submit(const VkCommandBuffer &cmd_buf,vulkan::GPUSemaphore *wait_sem,vulkan::GPUSemaphore *complete_sem); bool Submit(const VkCommandBuffer &cmd_buf,GPUSemaphore *wait_sem,GPUSemaphore *complete_sem);
bool Submit(const VkCommandBuffer *cmd_buf,const uint32_t count,vulkan::GPUSemaphore *wait_sem,vulkan::GPUSemaphore *complete_sem); bool Submit(const VkCommandBuffer *cmd_buf,const uint32_t count,GPUSemaphore *wait_sem,GPUSemaphore *complete_sem);
};//class SumbitQueue };//class SumbitQueue
VK_NAMESPACE_END VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_SUBMIT_QUEUE_INCLUDE #endif//HGL_GRAPH_VULKAN_SUBMIT_QUEUE_INCLUDE

View File

@ -29,9 +29,9 @@ public:
virtual ~RenderableInstance(); virtual ~RenderableInstance();
vulkan::Pipeline * GetPipeline (){return pipeline;} Pipeline * GetPipeline (){return pipeline;}
vulkan::MaterialInstance * GetMaterialInstance (){return mat_inst;} MaterialInstance * GetMaterialInstance (){return mat_inst;}
vulkan::Renderable * GetRenderable (){return render_obj;} Renderable * GetRenderable (){return render_obj;}
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();} const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
const uint32_t GetBufferCount ()const{return buffer_count;} const uint32_t GetBufferCount ()const{return buffer_count;}

View File

@ -9,19 +9,19 @@ namespace hgl
/** /**
* *
*/ */
class TextRenderable:public vulkan::Renderable class TextRenderable:public Renderable
{ {
vulkan::GPUDevice * device; GPUDevice * device;
vulkan::Material * mtl; Material * mtl;
uint max_count; ///<缓冲区最大容量 uint max_count; ///<缓冲区最大容量
vulkan::VAB * vab_position; VAB * vab_position;
vulkan::VAB * vab_tex_coord; VAB * vab_tex_coord;
public: public:
TextRenderable(vulkan::GPUDevice *,vulkan::Material *,uint mc=1024); TextRenderable(GPUDevice *,Material *,uint mc=1024);
virtual ~TextRenderable(); virtual ~TextRenderable();
public: public:
@ -30,7 +30,7 @@ namespace hgl
bool WriteVertex (const float *fp); bool WriteVertex (const float *fp);
bool WriteTexCoord (const float *fp); bool WriteTexCoord (const float *fp);
};//class TextRenderable:public vulkan::Renderable };//class TextRenderable:public Renderable
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl
#endif//HGL_GRAPH_TEXT_RENDERABLE_INCLUDE #endif//HGL_GRAPH_TEXT_RENDERABLE_INCLUDE

View File

@ -17,13 +17,13 @@ namespace hgl
{ {
protected: protected:
vulkan::GPUDevice *device; GPUDevice *device;
MapObject<Form *,ThemeForm> form_list; MapObject<Form *,ThemeForm> form_list;
public: public:
ThemeEngine(vulkan::GPUDevice *dev){device=dev;} ThemeEngine(GPUDevice *dev){device=dev;}
virtual ~ThemeEngine()=default; virtual ~ThemeEngine()=default;
virtual bool Init()=0; virtual bool Init()=0;

View File

@ -13,13 +13,13 @@ namespace hgl
protected: protected:
Form *form; Form *form;
hgl::graph::vulkan::RenderTarget *render_target; hgl::graph::RenderTarget *render_target;
public: public:
ThemeForm(Form *); ThemeForm(Form *);
void SetRenderTarget(hgl::graph::vulkan::RenderTarget *); void SetRenderTarget(hgl::graph::RenderTarget *);
};//class ThemeForm };//class ThemeForm
}//namespace gui }//namespace gui
}//namespace hgl }//namespace hgl

View File

@ -4,7 +4,7 @@ namespace hgl
{ {
namespace gui namespace gui
{ {
ThemeEngine *CreateDefaultThemeEngine(vulkan::GPUDevice *dev) ThemeEngine *CreateDefaultThemeEngine(GPUDevice *dev)
{ {
return(new default_theme::DefaultThemeEngine(dev)); return(new default_theme::DefaultThemeEngine(dev));
} }

View File

@ -23,13 +23,13 @@ namespace hgl
//struct //struct
//{ //{
// vulkan::Material * m; // Material * m;
// vulkan::MaterialInstance * mi; // MaterialInstance * mi;
//}panel; //}panel;
public: public:
DefaultThemeEngine(vulkan::GPUDevice *dev):ThemeEngine(dev){} DefaultThemeEngine(GPUDevice *dev):ThemeEngine(dev){}
virtual ~DefaultThemeEngine() override; virtual ~DefaultThemeEngine() override;
bool Init() override; bool Init() override;

View File

@ -10,9 +10,9 @@ namespace hgl
ThemeEngine *default_theme_engine=nullptr; ThemeEngine *default_theme_engine=nullptr;
}//namespace }//namespace
ThemeEngine *CreateDefaultThemeEngine(vulkan::GPUDevice *dev); ThemeEngine *CreateDefaultThemeEngine(GPUDevice *dev);
ThemeEngine *GetDefaultThemeEngine(vulkan::GPUDevice *dev) ThemeEngine *GetDefaultThemeEngine(GPUDevice *dev)
{ {
if(!default_theme_engine) if(!default_theme_engine)
default_theme_engine=CreateDefaultThemeEngine(dev); default_theme_engine=CreateDefaultThemeEngine(dev);
@ -20,7 +20,7 @@ namespace hgl
return default_theme_engine; return default_theme_engine;
} }
ThemeEngine *CreateThemeEngine(vulkan::GPUDevice *dev) ThemeEngine *CreateThemeEngine(GPUDevice *dev)
{ {
return GetDefaultThemeEngine(); return GetDefaultThemeEngine();
} }

View File

@ -92,7 +92,7 @@ GPUFence *GPUDevice::CreateFence(bool create_signaled)
return(new GPUFence(attr->device,fence)); return(new GPUFence(attr->device,fence));
} }
vulkan::GPUSemaphore *GPUDevice::CreateSemaphore() GPUSemaphore *GPUDevice::CreateSemaphore()
{ {
SemaphoreCreateInfo SemaphoreCreateInfo; SemaphoreCreateInfo SemaphoreCreateInfo;
@ -101,6 +101,6 @@ vulkan::GPUSemaphore *GPUDevice::CreateSemaphore()
if(vkCreateSemaphore(attr->device, &SemaphoreCreateInfo, nullptr, &sem)!=VK_SUCCESS) if(vkCreateSemaphore(attr->device, &SemaphoreCreateInfo, nullptr, &sem)!=VK_SUCCESS)
return(nullptr); return(nullptr);
return(new vulkan::GPUSemaphore(attr->device,sem)); return(new GPUSemaphore(attr->device,sem));
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -431,7 +431,7 @@ GPUDevice *CreateRenderDevice(VkInstance inst,const GPUPhysicalDevice *physical_
return(new GPUDevice(device_attr)); return(new GPUDevice(device_attr));
} }
GPUDevice *CreateRenderDevice(vulkan::VulkanInstance *inst,Window *win,const vulkan::GPUPhysicalDevice *pd) GPUDevice *CreateRenderDevice(VulkanInstance *inst,Window *win,const GPUPhysicalDevice *pd)
{ {
if(!inst) if(!inst)
return(nullptr); return(nullptr);

View File

@ -15,7 +15,7 @@ MaterialInstance::~MaterialInstance()
delete descriptor_sets; delete descriptor_sets;
} }
bool MaterialInstance::BindUBO(const AnsiString &name,vulkan::GPUBuffer *ubo) bool MaterialInstance::BindUBO(const AnsiString &name,GPUBuffer *ubo)
{ {
if(name.IsEmpty()||!ubo) if(name.IsEmpty()||!ubo)
return(false); return(false);

View File

@ -50,7 +50,7 @@ bool GPUQueue::WaitFence(const bool wait_all,uint64_t time_out)
return(true); return(true);
} }
bool GPUQueue::Submit(const VkCommandBuffer *cmd_buf,const uint32_t cb_count,vulkan::GPUSemaphore *wait_sem,vulkan::GPUSemaphore *complete_sem) bool GPUQueue::Submit(const VkCommandBuffer *cmd_buf,const uint32_t cb_count,GPUSemaphore *wait_sem,GPUSemaphore *complete_sem)
{ {
VkSemaphore ws; VkSemaphore ws;
VkSemaphore cs; VkSemaphore cs;
@ -93,7 +93,7 @@ bool GPUQueue::Submit(const VkCommandBuffer *cmd_buf,const uint32_t cb_count,vul
return(result==VK_SUCCESS); return(result==VK_SUCCESS);
} }
bool GPUQueue::Submit(const VkCommandBuffer &cmd_buf,vulkan::GPUSemaphore *wait_sem,vulkan::GPUSemaphore *complete_sem) bool GPUQueue::Submit(const VkCommandBuffer &cmd_buf,GPUSemaphore *wait_sem,GPUSemaphore *complete_sem)
{ {
return Submit(&cmd_buf,1,wait_sem,complete_sem); return Submit(&cmd_buf,1,wait_sem,complete_sem);
} }

View File

@ -109,7 +109,7 @@ Pipeline *RenderResource::CreatePipeline(MaterialInstance *mi,RenderTarget *rt,P
Pipeline *RenderResource::CreatePipeline(Material *mtl,RenderTarget *rt,const OSString &pipeline_filename,const Prim &prim,const bool prim_restart) Pipeline *RenderResource::CreatePipeline(Material *mtl,RenderTarget *rt,const OSString &pipeline_filename,const Prim &prim,const bool prim_restart)
{ {
PipelineData *pd=vulkan::GetPipelineData(pipeline_filename); PipelineData *pd=GetPipelineData(pipeline_filename);
if(!pd)return(nullptr); if(!pd)return(nullptr);

View File

@ -93,7 +93,7 @@ namespace
GPUDevice *device; GPUDevice *device;
VkFormat format; VkFormat format;
vulkan::GPUBuffer *buf; GPUBuffer *buf;
Texture2D *tex; Texture2D *tex;

View File

@ -12,7 +12,7 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
vulkan::Renderable *CreateRenderableRectangle(vulkan::RenderResource *db,vulkan::Material *mtl,const RectangleCreateInfo *rci) Renderable *CreateRenderableRectangle(RenderResource *db,Material *mtl,const RectangleCreateInfo *rci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -29,7 +29,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableGBufferComposition(vulkan::RenderResource *db,vulkan::Material *mtl) Renderable *CreateRenderableGBufferComposition(RenderResource *db,Material *mtl)
{ {
RectangleCreateInfo rci; RectangleCreateInfo rci;
@ -38,7 +38,7 @@ namespace hgl
return CreateRenderableRectangle(db,mtl,&rci); return CreateRenderableRectangle(db,mtl,&rci);
} }
vulkan::Renderable *CreateRenderableRoundRectangle(vulkan::RenderResource *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci) Renderable *CreateRenderableRoundRectangle(RenderResource *db,Material *mtl,const RoundRectangleCreateInfo *rci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -112,7 +112,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableCircle(vulkan::RenderResource *db,vulkan::Material *mtl,const CircleCreateInfo *cci) Renderable *CreateRenderableCircle(RenderResource *db,Material *mtl,const CircleCreateInfo *cci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -160,7 +160,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderablePlaneGrid(vulkan::RenderResource *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci) Renderable *CreateRenderablePlaneGrid(RenderResource *db,Material *mtl,const PlaneGridCreateInfo *pgci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -207,7 +207,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderablePlane(vulkan::RenderResource *db,vulkan::Material *mtl,const PlaneCreateInfo *pci) Renderable *CreateRenderablePlane(RenderResource *db,Material *mtl,const PlaneCreateInfo *pci)
{ {
const float xy_vertices [] = { -0.5f,-0.5f,0.0f, +0.5f,-0.5f,0.0f, +0.5f,+0.5f,0.0f, -0.5f,+0.5f,0.0f }; const float xy_vertices [] = { -0.5f,-0.5f,0.0f, +0.5f,-0.5f,0.0f, +0.5f,+0.5f,0.0f, -0.5f,+0.5f,0.0f };
float xy_tex_coord[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f }; float xy_tex_coord[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f };
@ -248,7 +248,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableCube(vulkan::RenderResource *db,vulkan::Material *mtl,const CubeCreateInfo *cci) Renderable *CreateRenderableCube(RenderResource *db,Material *mtl,const CubeCreateInfo *cci)
{ // Points of a cube. { // Points of a cube.
/* 4 5 */ const float points[]={ -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, -0.5f, +0.5f, +0.5f, /* 4 5 */ const float points[]={ -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, -0.5f, +0.5f, +0.5f,
/* *------------* */ +0.5f, +0.5f, +0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, -0.5f, -0.5f, /* *------------* */ +0.5f, +0.5f, +0.5f, +0.5f, +0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, +0.5f, -0.5f, +0.5f, +0.5f, -0.5f, +0.5f, -0.5f, -0.5f,
@ -426,7 +426,7 @@ namespace hgl
* @param numberSlices * @param numberSlices
* @return * @return
*/ */
vulkan::Renderable *CreateRenderableSphere(vulkan::RenderResource *db,vulkan::Material *mtl,const uint numberSlices) Renderable *CreateRenderableSphere(RenderResource *db,Material *mtl,const uint numberSlices)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -502,7 +502,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableDome(vulkan::RenderResource *db,vulkan::Material *mtl,const DomeCreateInfo *dci) Renderable *CreateRenderableDome(RenderResource *db,Material *mtl,const DomeCreateInfo *dci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -621,7 +621,7 @@ namespace hgl
} }
}//namespace }//namespace
vulkan::Renderable *CreateRenderableTorus(vulkan::RenderResource *db,vulkan::Material *mtl,const TorusCreateInfo *tci) Renderable *CreateRenderableTorus(RenderResource *db,Material *mtl,const TorusCreateInfo *tci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -777,7 +777,7 @@ namespace hgl
} }
}//namespace }//namespace
vulkan::Renderable *CreateRenderableCylinder(vulkan::RenderResource *db,vulkan::Material *mtl,const CylinderCreateInfo *cci) Renderable *CreateRenderableCylinder(RenderResource *db,Material *mtl,const CylinderCreateInfo *cci)
{ {
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6; uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
@ -996,7 +996,7 @@ namespace hgl
} }
}//namespace }//namespace
vulkan::Renderable *CreateRenderableCone(vulkan::RenderResource *db,vulkan::Material *mtl,const ConeCreateInfo *cci) Renderable *CreateRenderableCone(RenderResource *db,Material *mtl,const ConeCreateInfo *cci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -1123,7 +1123,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableAxis(vulkan::RenderResource *db,vulkan::Material *mtl,const AxisCreateInfo *aci) Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci)
{ {
RenderableCreater rc(db,mtl); RenderableCreater rc(db,mtl);
@ -1148,7 +1148,7 @@ namespace hgl
return rc.Finish(); return rc.Finish();
} }
vulkan::Renderable *CreateRenderableBoundingBox(vulkan::RenderResource *db,vulkan::Material *mtl,const CubeCreateInfo *cci) Renderable *CreateRenderableBoundingBox(RenderResource *db,Material *mtl,const CubeCreateInfo *cci)
{ {
// Points of a cube. // Points of a cube.
/* 4 5 */ const float points[]={ -0.5,-0.5, 0.5, 0.5,-0.5,0.5, 0.5,-0.5,-0.5, -0.5,-0.5,-0.5, /* 4 5 */ const float points[]={ -0.5,-0.5, 0.5, 0.5,-0.5,0.5, 0.5,-0.5,-0.5, -0.5,-0.5,-0.5,

View File

@ -27,7 +27,7 @@ namespace hgl
// return (((Frustum *)fc)->BoxIn(node->GetWorldBoundingBox())!=Frustum::OUTSIDE); // return (((Frustum *)fc)->BoxIn(node->GetWorldBoundingBox())!=Frustum::OUTSIDE);
//} //}
void RenderList::Render(SceneNode *node,vulkan::RenderableInstance *ri) void RenderList::Render(SceneNode *node,RenderableInstance *ri)
{ {
if(last_pipeline!=ri->GetPipeline()) if(last_pipeline!=ri->GetPipeline())
{ {
@ -49,7 +49,7 @@ namespace hgl
{ {
last_pc=node->GetPushConstant(); last_pc=node->GetPushConstant();
cmd_buf->PushConstants(last_pc,sizeof(vulkan::PushConstant)); cmd_buf->PushConstants(last_pc,sizeof(PushConstant));
} }
//更新fin_mvp //更新fin_mvp
@ -61,7 +61,7 @@ namespace hgl
last_ri=ri; last_ri=ri;
} }
const vulkan::IndexBuffer *ib=ri->GetIndexBuffer(); const IndexBuffer *ib=ri->GetIndexBuffer();
if(ib) if(ib)
{ {
@ -73,10 +73,10 @@ namespace hgl
} }
} }
void RenderList::Render(SceneNode *node,List<vulkan::RenderableInstance *> &ri_list) void RenderList::Render(SceneNode *node,List<RenderableInstance *> &ri_list)
{ {
const int count=ri_list.GetCount(); const int count=ri_list.GetCount();
vulkan::RenderableInstance **ri=ri_list.GetData(); RenderableInstance **ri=ri_list.GetData();
for(int i=0;i<count;i++) for(int i=0;i<count;i++)
{ {
@ -85,7 +85,7 @@ namespace hgl
} }
} }
bool RenderList::Render(vulkan::GPUCmdBuffer *cb) bool RenderList::Render(GPUCmdBuffer *cb)
{ {
if(!cb) if(!cb)
return(false); return(false);

View File

@ -5,7 +5,7 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
RenderableCreater::RenderableCreater(vulkan::RenderResource *sdb,vulkan::Material *m) RenderableCreater::RenderableCreater(RenderResource *sdb,Material *m)
{ {
db =sdb; db =sdb;
mtl =m; mtl =m;
@ -24,7 +24,7 @@ namespace hgl
return(true); return(true);
} }
VAD *RenderableCreater::CreateVAD(const AnsiString &name,const vulkan::ShaderStage *ss) VAD *RenderableCreater::CreateVAD(const AnsiString &name,const ShaderStage *ss)
{ {
if(!ss)return(nullptr); if(!ss)return(nullptr);
@ -51,7 +51,7 @@ namespace hgl
if(!vsm)return(nullptr); if(!vsm)return(nullptr);
if(name.IsEmpty())return(nullptr); if(name.IsEmpty())return(nullptr);
const vulkan::ShaderStage *ss=vsm->GetStageInput(name); const ShaderStage *ss=vsm->GetStageInput(name);
if(!ss) if(!ss)
return(nullptr); return(nullptr);
@ -71,7 +71,7 @@ namespace hgl
if(vab_maps.Get(name,ssb)) if(vab_maps.Get(name,ssb))
return false; return false;
const vulkan::ShaderStage *ss=vsm->GetStageInput(name); const ShaderStage *ss=vsm->GetStageInput(name);
if(!ss) if(!ss)
return(false); return(false);
@ -108,14 +108,14 @@ namespace hgl
return (uint32 *)ibo->Map(); return (uint32 *)ibo->Map();
} }
vulkan::Renderable *RenderableCreater::Finish() Renderable *RenderableCreater::Finish()
{ {
const uint si_count=vsm->GetStageInputCount(); const uint si_count=vsm->GetStageInputCount();
if(vab_maps.GetCount()!=si_count) if(vab_maps.GetCount()!=si_count)
return(nullptr); return(nullptr);
vulkan::Renderable *render_obj=db->CreateRenderable(vertices_number); Renderable *render_obj=db->CreateRenderable(vertices_number);
const auto *sp=vab_maps.GetDataList(); const auto *sp=vab_maps.GetDataList();
for(uint i=0;i<si_count;i++) for(uint i=0;i<si_count;i++)

View File

@ -9,7 +9,7 @@ namespace hgl
if(!type||!type->Check()) if(!type||!type->Check())
return(nullptr); return(nullptr);
VkFormat fmt=vulkan::GetVulkanFormat(type); VkFormat fmt=GetVulkanFormat(type);
return(new VertexAttribData(vertex_count,type->vec_size,type->GetStride(),fmt)); return(new VertexAttribData(vertex_count,type->vec_size,type->GetStride(),fmt));
} }

View File

@ -6,7 +6,7 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
TextRenderable::TextRenderable(vulkan::GPUDevice *dev,vulkan::Material *m,uint mc):vulkan::Renderable(mc) TextRenderable::TextRenderable(GPUDevice *dev,Material *m,uint mc):Renderable(mc)
{ {
device=dev; device=dev;
mtl=m; mtl=m;