remove vulkan namespace
This commit is contained in:
parent
0e56a6b00c
commit
c8955b6f35
@ -1 +1 @@
|
|||||||
Subproject commit 0f92de76507348b9a5a5cdd80a51406bfae00ddd
|
Subproject commit 8d75c2dbfde480c2e8e736c66d9864ca44f64392
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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//
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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//
|
||||||
|
|
||||||
|
@ -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//
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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,0,半径为1的球体(三角形)
|
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||||
*/
|
*/
|
||||||
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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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 &); ///<设定当前节点到世界矩阵
|
||||||
|
@ -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;
|
||||||
|
@ -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相关
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
@ -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;}
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ namespace
|
|||||||
GPUDevice *device;
|
GPUDevice *device;
|
||||||
|
|
||||||
VkFormat format;
|
VkFormat format;
|
||||||
vulkan::GPUBuffer *buf;
|
GPUBuffer *buf;
|
||||||
|
|
||||||
Texture2D *tex;
|
Texture2D *tex;
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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++)
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user