update 2 examples

This commit is contained in:
hyzboy 2020-01-21 10:48:25 +08:00
parent c5b5486969
commit 9d92ebb8da
5 changed files with 60 additions and 25 deletions

View File

@ -226,10 +226,10 @@ private:
if(!sp->material)
return(false);
sp->desc_sets=sp->material->CreateDescriptorSets();
sp->material_instance=sp->material->CreateInstance();
db->Add(sp->material);
db->Add(sp->desc_sets);
db->Add(sp->material_instance);
return(true);
}
@ -312,16 +312,16 @@ private:
sampler=device->CreateSampler(&sampler_create_info);
InitCameraUBO(sp_gbuffer.desc_sets,sp_gbuffer.material->GetUBO("world"));
InitCameraUBO(sp_gbuffer.material_instance,"world");
sp_gbuffer.desc_sets->BindSampler(sp_gbuffer.material->GetSampler("TextureColor" ),texture.color, sampler);
sp_gbuffer.desc_sets->BindSampler(sp_gbuffer.material->GetSampler("TextureNormal" ),texture.normal, sampler);
sp_gbuffer.desc_sets->Update();
sp_gbuffer.material_instance->BindSampler("TextureColor" ,texture.color, sampler);
sp_gbuffer.material_instance->BindSampler("TextureNormal" ,texture.normal, sampler);
sp_gbuffer.material_instance->Update();
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Position" ),gbuffer.position, sampler);
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Normal" ),gbuffer.normal, sampler);
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Color" ),gbuffer.color, sampler);
sp_composition.desc_sets->Update();
sp_composition.material_instance->BindSampler("GB_Position" ,gbuffer.position, sampler);
sp_composition.material_instance->BindSampler("GB_Normal" ,gbuffer.normal, sampler);
sp_composition.material_instance->BindSampler("GB_Color" ,gbuffer.color, sampler);
sp_composition.material_instance->Update();
return(true);
}
@ -387,12 +387,12 @@ private:
bool InitScene(SubpassParam *sp)
{
CreateRenderObject(sp->material);
render_root.Add(db->CreateRenderableInstance(sp->pipeline_fan,sp->desc_sets,ro_plane),scale(100,100,1));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->desc_sets,ro_torus ),translate(0,0,0));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->desc_sets,ro_sphere ),scale(20,20,20));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->desc_sets,ro_cube ),translate(-30, 0,10)*scale(10,10,10));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->desc_sets,ro_cylinder ),translate( 30, 30,10)*scale(1,1,2));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->desc_sets,ro_cone ),translate( 0,-30, 0)*scale(1,1,2));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_fan, sp->material_instance,ro_plane ),scale(100,100,1));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->material_instance,ro_torus ),translate(0,0,0));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->material_instance,ro_sphere ),scale(20,20,20));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->material_instance,ro_cube ),translate(-30, 0,10)*scale(10,10,10));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->material_instance,ro_cylinder ),translate( 30, 30,10)*scale(1,1,2));
render_root.Add(db->CreateRenderableInstance(sp->pipeline_triangles,sp->material_instance,ro_cone ),translate( 0,-30, 0)*scale(1,1,2));
render_root.RefreshMatrix();
render_root.ExpendToList(&render_list);
@ -460,7 +460,7 @@ public:
{
VulkanApplicationFramework::BuildCommandBuffer( index,
sp_composition.pipeline_triangles,
sp_composition.desc_sets,
sp_composition.material_instance,
ro_gbc_plane);
}
};//class TestApp:public CameraAppFramework

View File

@ -16,6 +16,8 @@ constexpr uint32_t SCREEN_HEIGHT=128;
class TestApp:public CameraAppFramework
{
Color4f color;
private:
SceneNode render_root;
@ -23,6 +25,7 @@ private:
vulkan::Material * material =nullptr;
vulkan::MaterialInstance * material_instance =nullptr;
vulkan::Buffer * ubo_color =nullptr;
vulkan::Renderable *ro_plane_grid,
*ro_cube,
@ -127,6 +130,14 @@ private:
bool InitUBO()
{
color.Set(1,1,1,1);
ubo_color=device->CreateUBO(sizeof(Vector4f),&color);
db->Add(ubo_color);
material_instance->BindUBO("color_material",ubo_color);
if(!InitCameraUBO(material_instance,"world"))
return(false);

View File

@ -2,13 +2,21 @@
layout(location = 0) in vec3 Vertex;
layout(binding = 0) uniform WorldMatrix
layout(binding=0) uniform WorldMatrix // hgl/math/Math.h
{
mat4 two_dim;
mat4 ortho;
mat4 projection;
mat4 inverse_projection;
mat4 modelview;
mat4 inverse_modelview;
mat4 mvp;
mat3 normal;
mat4 inverse_mvp;
vec4 view_pos;
vec2 resolution;
} world;
layout(push_constant) uniform Consts {

View File

@ -1,12 +1,20 @@
#version 450 core
layout(binding = 0) uniform WorldMatrix
layout(binding=0) uniform WorldMatrix // hgl/math/Math.h
{
mat4 ortho;
mat4 projection;
mat4 inverse_projection;
mat4 modelview;
mat4 inverse_modelview;
mat4 mvp;
mat4 inverse_mvp;
vec4 view_pos;
vec2 resolution;
} world;
layout(push_constant) uniform Consts {

View File

@ -5,13 +5,21 @@ layout(location = 1) in vec2 TexCoord;
layout(location = 2) in vec3 Normal;
layout(location = 3) in vec3 Tangent;
layout(binding = 0) uniform WorldMatrix
layout(binding=0) uniform WorldMatrix // hgl/math/Math.h
{
mat4 ortho;
mat4 projection;
mat4 inverse_projection;
mat4 modelview;
mat4 inverse_modelview;
mat4 mvp;
mat4 inverse_mvp;
vec4 view_pos;
vec2 resolution;
} world;
layout(push_constant) uniform Consts {