support B10GR11UF format texture files.

This commit is contained in:
hyzboy 2019-12-04 21:05:09 +08:00
parent 776a887911
commit 834cb48fa9
8 changed files with 51 additions and 53 deletions

View File

@ -11,23 +11,22 @@ endmacro()
CreateProject(00.triangle first_triangle.cpp) CreateProject(00.triangle first_triangle.cpp)
CreateProject(01.indices_rect indices_rect.cpp) CreateProject(01.indices_rect indices_rect.cpp)
CreateProject(02.texture_rect texture_rect.cpp) CreateProject(02.TextureFormat TextureFormat.cpp)
CreateProject(03.HQFilterTexture HQFilterTexture.cpp) CreateProject(03.texture_rect texture_rect.cpp)
CreateProject(04.Geometry2D Geometry2D.cpp) CreateProject(04.HQFilterTexture HQFilterTexture.cpp)
CreateProject(05.Geometry3D Geometry3D.cpp) CreateProject(05.Geometry2D Geometry2D.cpp)
CreateProject(06.SceneTree SceneTree.cpp) CreateProject(06.Geometry3D Geometry3D.cpp)
CreateProject(07.SceneTree SceneTree.cpp)
CreateProject(07.LoadModel LoadModel.cpp TGATexture.cpp AssimpLoaderMesh.h AssimpLoaderMesh.cpp ViewModelFramework.h) CreateProject(08.LoadModel LoadModel.cpp AssimpLoaderMesh.h AssimpLoaderMesh.cpp ViewModelFramework.h)
target_link_libraries(07.LoadModel assimp) 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(12.DeferredModel DeferredModel.cpp)
CreateProject(13.TextureFormat TextureFormat.cpp)

View File

@ -16,7 +16,7 @@ using namespace hgl;
using namespace hgl::graph; using namespace hgl::graph;
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
Texture2D *LoadTGATexture(const OSString &filename,Device *device); Texture2D *CreateTextureFromFile(Device *device,const OSString &filename);
VK_NAMESPACE_END VK_NAMESPACE_END
constexpr uint32_t SCREEN_WIDTH=256; constexpr uint32_t SCREEN_WIDTH=256;
@ -106,7 +106,6 @@ private:
{ {
Texture2DPointer color=nullptr; Texture2DPointer color=nullptr;
Texture2DPointer normal=nullptr; Texture2DPointer normal=nullptr;
// Texture2DPointer specular=nullptr;
}texture; }texture;
vulkan::CommandBuffer *gbuffer_cmd=nullptr; vulkan::CommandBuffer *gbuffer_cmd=nullptr;
@ -116,7 +115,6 @@ public:
~TestApp() ~TestApp()
{ {
SAFE_CLEAR(gbuffer_cmd); SAFE_CLEAR(gbuffer_cmd);
//SAFE_CLEAR(texture.specular);
SAFE_CLEAR(texture.normal); SAFE_CLEAR(texture.normal);
SAFE_CLEAR(texture.color); SAFE_CLEAR(texture.color);
SAFE_CLEAR(sampler); SAFE_CLEAR(sampler);
@ -288,9 +286,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::LoadTGATexture(OS_TEXT("res/image/Brickwall/Albedo.tga"),device); texture.color =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Albedo.Tex2D"));
texture.normal =vulkan::LoadTGATexture(OS_TEXT("res/image/Brickwall/Normal.tga"),device); texture.normal =vulkan::CreateTextureFromFile(device,OS_TEXT("res/image/Brickwall/Normal.Tex2D"));
//texture.specular=vulkan::LoadTGATexture(OS_TEXT("res/image/APOCWALL029_SPEC.tga"),device);
VkSamplerCreateInfo sampler_create_info; VkSamplerCreateInfo sampler_create_info;
@ -386,7 +383,7 @@ private:
return ro_gbc_plane; return ro_gbc_plane;
} }
bool InitScene(SubpassParam *sp) bool InitScene(SubpassParam *sp)
{ {
CreateRenderObject(sp->material); CreateRenderObject(sp->material);

View File

@ -10,7 +10,7 @@ using namespace hgl;
using namespace hgl::graph; using namespace hgl::graph;
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
Texture2D *CreateTextureFromFile(Device *device,const OSString &filename,bool use_optimar=true); Texture2D *CreateTextureFromFile(Device *device,const OSString &filename);
VK_NAMESPACE_END VK_NAMESPACE_END
constexpr uint32_t SCREEN_WIDTH=512; constexpr uint32_t SCREEN_WIDTH=512;

View File

@ -73,7 +73,7 @@ private:
} }
bool InitPipeline() bool InitPipeline()
{ {
AutoDelete<vulkan::PipelineCreater> AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target); pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->SetDepthTest(true); pipeline_creater->SetDepthTest(true);

View File

@ -10,7 +10,7 @@ using namespace hgl;
using namespace hgl::graph; using namespace hgl::graph;
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
Texture2D *CreateTextureFromFile(Device *device,const OSString &filename,bool use_optimar=true); Texture2D *CreateTextureFromFile(Device *device,const OSString &filename);
VK_NAMESPACE_END VK_NAMESPACE_END
constexpr uint32_t SCREEN_WIDTH=128; constexpr uint32_t SCREEN_WIDTH=128;

View File

@ -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; constexpr size_t FMT_PVRTC_RANGE_SIZE=FMT_PVRTC_END_RANGE-FMT_PVRTC_BEGIN_RANGE+1;
//以下为AMD/NVIDIA/INTEL/QUALCOMM/ARM/POWERVR全部可用的通用格式 //以下为AMD/NVIDIA/INTEL/QUALCOMM/ARM/POWERVR全部可用的通用格式
#define UFMT_BGRA4 FMT_BGRA4 #define UFMT_BGRA4 FMT_BGRA4
#define UFMT_RGB565 FMT_RGB565 #define UFMT_RGB565 FMT_RGB565
#define UFMT_A1RGB5 FMT_A1RGB5 #define UFMT_A1RGB5 FMT_A1RGB5
#define UFMT_R8 FMT_R8UN #define UFMT_R8 FMT_R8UN
#define UFMT_RG8 FMT_RG8UN #define UFMT_RG8 FMT_RG8UN
#define UFMT_RGBA8 FMT_RGBA8UN #define UFMT_RGBA8 FMT_RGBA8UN
#define UFMT_ABGR8 FMT_ABGR8UN #define UFMT_ABGR8 FMT_ABGR8UN
#define UFMT_A2BGR10 FMT_A2BGR10UN #define UFMT_A2BGR10 FMT_A2BGR10UN
#define UFMT_R16 FMT_R16UN #define UFMT_R16 FMT_R16UN
#define UFMT_R16F FMT_R16F #define UFMT_R16F FMT_R16F
#define UFMT_RG16 FMT_RG16UN #define UFMT_RG16 FMT_RG16UN
#define UFMT_RG16F FMT_RG16F #define UFMT_RG16F FMT_RG16F
#define UFMT_RGBA16 FMT_RGBA16UN #define UFMT_RGBA16 FMT_RGBA16UN
#define UFMT_RGBA16F FMT_RGBA16F #define UFMT_RGBA16F FMT_RGBA16F
#define UFMT_R32U FMT_R32U #define UFMT_R32U FMT_R32U
#define UFMT_R32I FMT_R32I #define UFMT_R32I FMT_R32I
#define UFMT_R32F FMT_R32F #define UFMT_R32F FMT_R32F
#define UFMT_RG32U FMT_RG32U #define UFMT_RG32U FMT_RG32U
#define UFMT_RG32I FMT_RG32I #define UFMT_RG32I FMT_RG32I
#define UFMT_RG32F FMT_RG32F #define UFMT_RG32F FMT_RG32F
#define UFMT_RGB32U FMT_RGB32U #define UFMT_RGB32U FMT_RGB32U
#define UFMT_RGB32I FMT_RGB32I #define UFMT_RGB32I FMT_RGB32I
#define UFMT_RGB32F FMT_RGB32F #define UFMT_RGB32F FMT_RGB32F
#define UFMT_RGBA32U FMT_RGBA32U #define UFMT_RGBA32U FMT_RGBA32U
#define UFMT_RGBA32I FMT_RGBA32I #define UFMT_RGBA32I FMT_RGBA32I
#define UFMT_RGBA32F FMT_RGBA32F #define UFMT_RGBA32F FMT_RGBA32F
#define UFMT_B10GR11UF FMT_B10GR11UF
enum class TextureCompressType enum class TextureCompressType
{ {

View File

@ -47,7 +47,8 @@ namespace
{UFMT_RGB32F, 3,{'R','G','B', 0 },{32,32,32, 0},VulkanDataType::SFLOAT}, {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_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_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); constexpr uint PixelFormatCount=sizeof(pf_list)/sizeof(PixelFormat);
@ -76,7 +77,7 @@ namespace
const PixelFormat *pf=pf_list; const PixelFormat *pf=pf_list;
for(uint i=0;i<PixelFormatCount;i++,++pf) for(uint i=0;i<PixelFormatCount;i++,++pf)
{ {
if(channels!=pf->channels)continue; if(channels!=pf->channels)continue;
if(datatype!=(uint8)pf->type)continue; if(datatype!=(uint8)pf->type)continue;

View File

@ -48,7 +48,7 @@ bool DescriptorSets::BindUBODynamic(const int binding,const Buffer *buf)
writeDescriptorSet.descriptorCount = 1; writeDescriptorSet.descriptorCount = 1;
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
writeDescriptorSet.pImageInfo = nullptr; writeDescriptorSet.pImageInfo = nullptr;
writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();; writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();
writeDescriptorSet.pTexelBufferView = nullptr; writeDescriptorSet.pTexelBufferView = nullptr;
write_desc_sets.Add(writeDescriptorSet); write_desc_sets.Add(writeDescriptorSet);