From e4a3559aaac701ecae86d70385b408694225256a Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 8 Jul 2019 18:18:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BA=B9=E7=90=86=E7=BB=91?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/Deferred.cpp | 41 ++++++++++++++++++++++++---------- inc/hgl/math/Matrix.h | 1 - res/shader/gbuffer_opaque.vert | 1 + 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/example/Vulkan/Deferred.cpp b/example/Vulkan/Deferred.cpp index 74559e6e..bd37bc51 100644 --- a/example/Vulkan/Deferred.cpp +++ b/example/Vulkan/Deferred.cpp @@ -238,7 +238,36 @@ private: texture.color =vulkan::LoadTGATexture(OS_TEXT("cardboardPlainStain.tga"),device); texture.normal =vulkan::LoadTGATexture(OS_TEXT("APOCWALL029_NRM.tga"),device); texture.specular=vulkan::LoadTGATexture(OS_TEXT("APOCWALL029_SPEC.tga"),device); + + VkSamplerCreateInfo sampler_create_info; + sampler_create_info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; + sampler_create_info.pNext = nullptr; + sampler_create_info.flags = 0; + sampler_create_info.magFilter = VK_FILTER_LINEAR; + sampler_create_info.minFilter = VK_FILTER_LINEAR; + sampler_create_info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; + sampler_create_info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + sampler_create_info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + sampler_create_info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + sampler_create_info.mipLodBias = 0.0f; + sampler_create_info.anisotropyEnable = false; + sampler_create_info.maxAnisotropy = 0; + sampler_create_info.compareEnable = false; + sampler_create_info.compareOp = VK_COMPARE_OP_NEVER; + sampler_create_info.minLod = 0.0f; + sampler_create_info.maxLod = 1.0f; + sampler_create_info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; + sampler_create_info.unnormalizedCoordinates = false; + + sampler=device->CreateSampler(&sampler_create_info); + + 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); + + InitCameraUBO(sp_gbuffer.desc_sets,sp_gbuffer.material->GetUBO("world")); + + sp_gbuffer.desc_sets->Update(); return(true); } @@ -249,20 +278,8 @@ private: ro_cube=CreateRenderableCube(db,mtl,&cci); } - bool InitUBO(SubpassParam *sp) - { - if(!InitCameraUBO(sp->desc_sets,sp->material->GetUBO("world"))) - return(false); - - sp->desc_sets->Update(); - return(true); - } - bool InitScene(SubpassParam *sp) { - if(!InitUBO(sp)) - return(false); - CreateRenderObject(sp->material); render_root.Add(db->CreateRenderableInstance(sp->pipeline,sp->desc_sets,ro_cube),scale(1000)); diff --git a/inc/hgl/math/Matrix.h b/inc/hgl/math/Matrix.h index 07a8d73d..21bd3075 100644 --- a/inc/hgl/math/Matrix.h +++ b/inc/hgl/math/Matrix.h @@ -19,7 +19,6 @@ namespace hgl // alignas(16) Matrix4f inverse_projection; alignas(16) Matrix4f modelview; alignas(16) Matrix4f mvp; - alignas(16) Matrix3f normal; alignas(16) Vector4f view_pos; //眼睛坐标 };//struct WorldMatrix diff --git a/res/shader/gbuffer_opaque.vert b/res/shader/gbuffer_opaque.vert index d27bc5dd..9f171ed5 100644 --- a/res/shader/gbuffer_opaque.vert +++ b/res/shader/gbuffer_opaque.vert @@ -11,6 +11,7 @@ layout(binding = 0) uniform WorldMatrix mat4 projection; mat4 modelview; mat4 mvp; + vec4 view_pos; } world; layout(push_constant) uniform Consts {