update 2 examples
This commit is contained in:
parent
c5b5486969
commit
9d92ebb8da
@ -226,10 +226,10 @@ private:
|
|||||||
if(!sp->material)
|
if(!sp->material)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
sp->desc_sets=sp->material->CreateDescriptorSets();
|
sp->material_instance=sp->material->CreateInstance();
|
||||||
|
|
||||||
db->Add(sp->material);
|
db->Add(sp->material);
|
||||||
db->Add(sp->desc_sets);
|
db->Add(sp->material_instance);
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,16 +312,16 @@ private:
|
|||||||
|
|
||||||
sampler=device->CreateSampler(&sampler_create_info);
|
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.material_instance->BindSampler("TextureColor" ,texture.color, sampler);
|
||||||
sp_gbuffer.desc_sets->BindSampler(sp_gbuffer.material->GetSampler("TextureNormal" ),texture.normal, sampler);
|
sp_gbuffer.material_instance->BindSampler("TextureNormal" ,texture.normal, sampler);
|
||||||
sp_gbuffer.desc_sets->Update();
|
sp_gbuffer.material_instance->Update();
|
||||||
|
|
||||||
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Position" ),gbuffer.position, sampler);
|
sp_composition.material_instance->BindSampler("GB_Position" ,gbuffer.position, sampler);
|
||||||
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Normal" ),gbuffer.normal, sampler);
|
sp_composition.material_instance->BindSampler("GB_Normal" ,gbuffer.normal, sampler);
|
||||||
sp_composition.desc_sets->BindSampler(sp_composition.material->GetSampler("GB_Color" ),gbuffer.color, sampler);
|
sp_composition.material_instance->BindSampler("GB_Color" ,gbuffer.color, sampler);
|
||||||
sp_composition.desc_sets->Update();
|
sp_composition.material_instance->Update();
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
@ -387,12 +387,12 @@ private:
|
|||||||
bool InitScene(SubpassParam *sp)
|
bool InitScene(SubpassParam *sp)
|
||||||
{
|
{
|
||||||
CreateRenderObject(sp->material);
|
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_fan, sp->material_instance,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->material_instance,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->material_instance,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->material_instance,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->material_instance,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_triangles,sp->material_instance,ro_cone ),translate( 0,-30, 0)*scale(1,1,2));
|
||||||
|
|
||||||
render_root.RefreshMatrix();
|
render_root.RefreshMatrix();
|
||||||
render_root.ExpendToList(&render_list);
|
render_root.ExpendToList(&render_list);
|
||||||
@ -460,7 +460,7 @@ public:
|
|||||||
{
|
{
|
||||||
VulkanApplicationFramework::BuildCommandBuffer( index,
|
VulkanApplicationFramework::BuildCommandBuffer( index,
|
||||||
sp_composition.pipeline_triangles,
|
sp_composition.pipeline_triangles,
|
||||||
sp_composition.desc_sets,
|
sp_composition.material_instance,
|
||||||
ro_gbc_plane);
|
ro_gbc_plane);
|
||||||
}
|
}
|
||||||
};//class TestApp:public CameraAppFramework
|
};//class TestApp:public CameraAppFramework
|
||||||
|
@ -16,6 +16,8 @@ constexpr uint32_t SCREEN_HEIGHT=128;
|
|||||||
|
|
||||||
class TestApp:public CameraAppFramework
|
class TestApp:public CameraAppFramework
|
||||||
{
|
{
|
||||||
|
Color4f color;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
SceneNode render_root;
|
SceneNode render_root;
|
||||||
@ -23,6 +25,7 @@ private:
|
|||||||
|
|
||||||
vulkan::Material * material =nullptr;
|
vulkan::Material * material =nullptr;
|
||||||
vulkan::MaterialInstance * material_instance =nullptr;
|
vulkan::MaterialInstance * material_instance =nullptr;
|
||||||
|
vulkan::Buffer * ubo_color =nullptr;
|
||||||
|
|
||||||
vulkan::Renderable *ro_plane_grid,
|
vulkan::Renderable *ro_plane_grid,
|
||||||
*ro_cube,
|
*ro_cube,
|
||||||
@ -127,6 +130,14 @@ private:
|
|||||||
|
|
||||||
bool InitUBO()
|
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"))
|
if(!InitCameraUBO(material_instance,"world"))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
@ -2,13 +2,21 @@
|
|||||||
|
|
||||||
layout(location = 0) in vec3 Vertex;
|
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 projection;
|
||||||
|
mat4 inverse_projection;
|
||||||
|
|
||||||
mat4 modelview;
|
mat4 modelview;
|
||||||
|
mat4 inverse_modelview;
|
||||||
|
|
||||||
mat4 mvp;
|
mat4 mvp;
|
||||||
mat3 normal;
|
mat4 inverse_mvp;
|
||||||
|
|
||||||
|
vec4 view_pos;
|
||||||
|
vec2 resolution;
|
||||||
} world;
|
} world;
|
||||||
|
|
||||||
layout(push_constant) uniform Consts {
|
layout(push_constant) uniform Consts {
|
||||||
|
@ -1,12 +1,20 @@
|
|||||||
#version 450 core
|
#version 450 core
|
||||||
|
|
||||||
layout(binding = 0) uniform WorldMatrix
|
layout(binding=0) uniform WorldMatrix // hgl/math/Math.h
|
||||||
{
|
{
|
||||||
mat4 ortho;
|
mat4 ortho;
|
||||||
|
|
||||||
mat4 projection;
|
mat4 projection;
|
||||||
|
mat4 inverse_projection;
|
||||||
|
|
||||||
mat4 modelview;
|
mat4 modelview;
|
||||||
|
mat4 inverse_modelview;
|
||||||
|
|
||||||
mat4 mvp;
|
mat4 mvp;
|
||||||
|
mat4 inverse_mvp;
|
||||||
|
|
||||||
vec4 view_pos;
|
vec4 view_pos;
|
||||||
|
vec2 resolution;
|
||||||
} world;
|
} world;
|
||||||
|
|
||||||
layout(push_constant) uniform Consts {
|
layout(push_constant) uniform Consts {
|
||||||
@ -27,10 +35,10 @@ void main()
|
|||||||
vec3 pos =texture(GB_Position, FragmentPosition).xyz;
|
vec3 pos =texture(GB_Position, FragmentPosition).xyz;
|
||||||
vec3 normal =texture(GB_Normal, FragmentPosition).xyz;
|
vec3 normal =texture(GB_Normal, FragmentPosition).xyz;
|
||||||
vec3 color =texture(GB_Color, FragmentPosition).xyz;
|
vec3 color =texture(GB_Color, FragmentPosition).xyz;
|
||||||
|
|
||||||
vec3 sun_light_direction=vec3(1,1,1);
|
vec3 sun_light_direction=vec3(1,1,1);
|
||||||
|
|
||||||
float sun_light_intensity=max(dot(normal,sun_light_direction),0.0);
|
float sun_light_intensity=max(dot(normal,sun_light_direction),0.0);
|
||||||
|
|
||||||
FragColor=vec4(color*sun_light_intensity,1.0);
|
FragColor=vec4(color*sun_light_intensity,1.0);
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,21 @@ layout(location = 1) in vec2 TexCoord;
|
|||||||
layout(location = 2) in vec3 Normal;
|
layout(location = 2) in vec3 Normal;
|
||||||
layout(location = 3) in vec3 Tangent;
|
layout(location = 3) in vec3 Tangent;
|
||||||
|
|
||||||
layout(binding = 0) uniform WorldMatrix
|
layout(binding=0) uniform WorldMatrix // hgl/math/Math.h
|
||||||
{
|
{
|
||||||
mat4 ortho;
|
mat4 ortho;
|
||||||
|
|
||||||
mat4 projection;
|
mat4 projection;
|
||||||
|
mat4 inverse_projection;
|
||||||
|
|
||||||
mat4 modelview;
|
mat4 modelview;
|
||||||
|
mat4 inverse_modelview;
|
||||||
|
|
||||||
mat4 mvp;
|
mat4 mvp;
|
||||||
|
mat4 inverse_mvp;
|
||||||
|
|
||||||
vec4 view_pos;
|
vec4 view_pos;
|
||||||
|
vec2 resolution;
|
||||||
} world;
|
} world;
|
||||||
|
|
||||||
layout(push_constant) uniform Consts {
|
layout(push_constant) uniform Consts {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user