diff --git a/example/Vulkan/CMakeLists.txt b/example/Vulkan/CMakeLists.txt index d885f94b..ee7ebd88 100644 --- a/example/Vulkan/CMakeLists.txt +++ b/example/Vulkan/CMakeLists.txt @@ -11,23 +11,22 @@ endmacro() CreateProject(00.triangle first_triangle.cpp) CreateProject(01.indices_rect indices_rect.cpp) -CreateProject(02.texture_rect texture_rect.cpp) -CreateProject(03.HQFilterTexture HQFilterTexture.cpp) -CreateProject(04.Geometry2D Geometry2D.cpp) -CreateProject(05.Geometry3D Geometry3D.cpp) -CreateProject(06.SceneTree SceneTree.cpp) +CreateProject(02.TextureFormat TextureFormat.cpp) +CreateProject(03.texture_rect texture_rect.cpp) +CreateProject(04.HQFilterTexture HQFilterTexture.cpp) +CreateProject(05.Geometry2D Geometry2D.cpp) +CreateProject(06.Geometry3D Geometry3D.cpp) +CreateProject(07.SceneTree SceneTree.cpp) -CreateProject(07.LoadModel LoadModel.cpp TGATexture.cpp AssimpLoaderMesh.h AssimpLoaderMesh.cpp ViewModelFramework.h) -target_link_libraries(07.LoadModel assimp) +CreateProject(08.LoadModel LoadModel.cpp AssimpLoaderMesh.h AssimpLoaderMesh.cpp ViewModelFramework.h) +target_link_libraries(08.LoadModel assimp) -CreateProject(08.InlineGeometryScene InlineGeometryScene.cpp) +CreateProject(09.InlineGeometryScene InlineGeometryScene.cpp) -CreateProject(09.Atomsphere Atomsphere.cpp) +CreateProject(10.Atomsphere Atomsphere.cpp) -CreateProject(10.PBRBasic PBRBasic.cpp) +CreateProject(11.PBRBasic PBRBasic.cpp) -CreateProject(11.Deferred Deferred.cpp TGATexture.cpp) +#CreateProject(12.Deferred Deferred.cpp) -#CreateProject(12.DeferredModel DeferredModel.cpp TGATexture.cpp) - -CreateProject(13.TextureFormat TextureFormat.cpp) +CreateProject(12.DeferredModel DeferredModel.cpp) diff --git a/example/Vulkan/DeferredModel.cpp b/example/Vulkan/DeferredModel.cpp index b65b5524..1eb3643b 100644 --- a/example/Vulkan/DeferredModel.cpp +++ b/example/Vulkan/DeferredModel.cpp @@ -16,7 +16,7 @@ using namespace hgl; using namespace hgl::graph; VK_NAMESPACE_BEGIN -Texture2D *LoadTGATexture(const OSString &filename,Device *device); +Texture2D *CreateTextureFromFile(Device *device,const OSString &filename); VK_NAMESPACE_END constexpr uint32_t SCREEN_WIDTH=256; @@ -106,7 +106,6 @@ private: { Texture2DPointer color=nullptr; Texture2DPointer normal=nullptr; -// Texture2DPointer specular=nullptr; }texture; vulkan::CommandBuffer *gbuffer_cmd=nullptr; @@ -116,7 +115,6 @@ public: ~TestApp() { SAFE_CLEAR(gbuffer_cmd); - //SAFE_CLEAR(texture.specular); SAFE_CLEAR(texture.normal); SAFE_CLEAR(texture.color); SAFE_CLEAR(sampler); @@ -288,9 +286,8 @@ private: if(!InitGBufferPipeline(&sp_gbuffer))return(false); if(!InitCompositionPipeline(&sp_composition))return(false); - texture.color =vulkan::LoadTGATexture(OS_TEXT("res/image/Brickwall/Albedo.tga"),device); - texture.normal =vulkan::LoadTGATexture(OS_TEXT("res/image/Brickwall/Normal.tga"),device); - //texture.specular=vulkan::LoadTGATexture(OS_TEXT("res/image/APOCWALL029_SPEC.tga"),device); + texture.color =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Albedo.Tex2D")); + texture.normal =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Normal.Tex2D")); VkSamplerCreateInfo sampler_create_info; @@ -386,7 +383,7 @@ private: return ro_gbc_plane; } - + bool InitScene(SubpassParam *sp) { CreateRenderObject(sp->material); diff --git a/example/Vulkan/HQFilterTexture.cpp b/example/Vulkan/HQFilterTexture.cpp index 00dd55f6..c94cefe1 100644 --- a/example/Vulkan/HQFilterTexture.cpp +++ b/example/Vulkan/HQFilterTexture.cpp @@ -10,7 +10,7 @@ using namespace hgl; using namespace hgl::graph; VK_NAMESPACE_BEGIN -Texture2D *CreateTextureFromFile(Device *device,const OSString &filename,bool use_optimar=true); +Texture2D *CreateTextureFromFile(Device *device,const OSString &filename); VK_NAMESPACE_END constexpr uint32_t SCREEN_WIDTH=512; diff --git a/example/Vulkan/SceneTree.cpp b/example/Vulkan/SceneTree.cpp index 20bcd807..d53ecfd3 100644 --- a/example/Vulkan/SceneTree.cpp +++ b/example/Vulkan/SceneTree.cpp @@ -73,7 +73,7 @@ private: } bool InitPipeline() - { + { AutoDelete pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target); pipeline_creater->SetDepthTest(true); diff --git a/example/Vulkan/texture_rect.cpp b/example/Vulkan/texture_rect.cpp index d20bb37b..791ce073 100644 --- a/example/Vulkan/texture_rect.cpp +++ b/example/Vulkan/texture_rect.cpp @@ -10,7 +10,7 @@ using namespace hgl; using namespace hgl::graph; VK_NAMESPACE_BEGIN -Texture2D *CreateTextureFromFile(Device *device,const OSString &filename,bool use_optimar=true); +Texture2D *CreateTextureFromFile(Device *device,const OSString &filename); VK_NAMESPACE_END constexpr uint32_t SCREEN_WIDTH=128; diff --git a/inc/hgl/graph/vulkan/VKFormat.h b/inc/hgl/graph/vulkan/VKFormat.h index eb282b62..0aa39abf 100644 --- a/inc/hgl/graph/vulkan/VKFormat.h +++ b/inc/hgl/graph/vulkan/VKFormat.h @@ -286,32 +286,33 @@ constexpr size_t FMT_YUV_RANGE_SIZE=FMT_YUV_END_RANGE-FMT_YUV_BEGIN_RANGE+1; constexpr size_t FMT_PVRTC_RANGE_SIZE=FMT_PVRTC_END_RANGE-FMT_PVRTC_BEGIN_RANGE+1; //以下为AMD/NVIDIA/INTEL/QUALCOMM/ARM/POWERVR全部可用的通用格式 -#define UFMT_BGRA4 FMT_BGRA4 -#define UFMT_RGB565 FMT_RGB565 -#define UFMT_A1RGB5 FMT_A1RGB5 -#define UFMT_R8 FMT_R8UN -#define UFMT_RG8 FMT_RG8UN -#define UFMT_RGBA8 FMT_RGBA8UN -#define UFMT_ABGR8 FMT_ABGR8UN -#define UFMT_A2BGR10 FMT_A2BGR10UN -#define UFMT_R16 FMT_R16UN -#define UFMT_R16F FMT_R16F -#define UFMT_RG16 FMT_RG16UN -#define UFMT_RG16F FMT_RG16F -#define UFMT_RGBA16 FMT_RGBA16UN -#define UFMT_RGBA16F FMT_RGBA16F -#define UFMT_R32U FMT_R32U -#define UFMT_R32I FMT_R32I -#define UFMT_R32F FMT_R32F -#define UFMT_RG32U FMT_RG32U -#define UFMT_RG32I FMT_RG32I -#define UFMT_RG32F FMT_RG32F -#define UFMT_RGB32U FMT_RGB32U -#define UFMT_RGB32I FMT_RGB32I -#define UFMT_RGB32F FMT_RGB32F -#define UFMT_RGBA32U FMT_RGBA32U -#define UFMT_RGBA32I FMT_RGBA32I -#define UFMT_RGBA32F FMT_RGBA32F +#define UFMT_BGRA4 FMT_BGRA4 +#define UFMT_RGB565 FMT_RGB565 +#define UFMT_A1RGB5 FMT_A1RGB5 +#define UFMT_R8 FMT_R8UN +#define UFMT_RG8 FMT_RG8UN +#define UFMT_RGBA8 FMT_RGBA8UN +#define UFMT_ABGR8 FMT_ABGR8UN +#define UFMT_A2BGR10 FMT_A2BGR10UN +#define UFMT_R16 FMT_R16UN +#define UFMT_R16F FMT_R16F +#define UFMT_RG16 FMT_RG16UN +#define UFMT_RG16F FMT_RG16F +#define UFMT_RGBA16 FMT_RGBA16UN +#define UFMT_RGBA16F FMT_RGBA16F +#define UFMT_R32U FMT_R32U +#define UFMT_R32I FMT_R32I +#define UFMT_R32F FMT_R32F +#define UFMT_RG32U FMT_RG32U +#define UFMT_RG32I FMT_RG32I +#define UFMT_RG32F FMT_RG32F +#define UFMT_RGB32U FMT_RGB32U +#define UFMT_RGB32I FMT_RGB32I +#define UFMT_RGB32F FMT_RGB32F +#define UFMT_RGBA32U FMT_RGBA32U +#define UFMT_RGBA32I FMT_RGBA32I +#define UFMT_RGBA32F FMT_RGBA32F +#define UFMT_B10GR11UF FMT_B10GR11UF enum class TextureCompressType { diff --git a/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp b/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp index 1ae9adf3..b7519715 100644 --- a/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp +++ b/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp @@ -47,7 +47,8 @@ namespace {UFMT_RGB32F, 3,{'R','G','B', 0 },{32,32,32, 0},VulkanDataType::SFLOAT}, {UFMT_RGBA32U, 4,{'R','G','B','A'},{32,32,32,32},VulkanDataType::UINT}, {UFMT_RGBA32I, 4,{'R','G','B','A'},{32,32,32,32},VulkanDataType::SINT}, - {UFMT_RGBA32F, 4,{'R','G','B','A'},{32,32,32,32},VulkanDataType::SFLOAT} + {UFMT_RGBA32F, 4,{'R','G','B','A'},{32,32,32,32},VulkanDataType::SFLOAT}, + {UFMT_B10GR11UF, 3,{'B','G','R', 0 },{10,11,11, 0},VulkanDataType::UFLOAT} }; constexpr uint PixelFormatCount=sizeof(pf_list)/sizeof(PixelFormat); @@ -76,7 +77,7 @@ namespace const PixelFormat *pf=pf_list; for(uint i=0;ichannels)continue; if(datatype!=(uint8)pf->type)continue; diff --git a/src/RenderDevice/Vulkan/VKDescriptorSets.cpp b/src/RenderDevice/Vulkan/VKDescriptorSets.cpp index da97aee9..7dd1399d 100644 --- a/src/RenderDevice/Vulkan/VKDescriptorSets.cpp +++ b/src/RenderDevice/Vulkan/VKDescriptorSets.cpp @@ -48,7 +48,7 @@ bool DescriptorSets::BindUBODynamic(const int binding,const Buffer *buf) writeDescriptorSet.descriptorCount = 1; writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; writeDescriptorSet.pImageInfo = nullptr; - writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();; + writeDescriptorSet.pBufferInfo = buf->GetBufferInfo(); writeDescriptorSet.pTexelBufferView = nullptr; write_desc_sets.Add(writeDescriptorSet);