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(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)

View File

@ -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);

View File

@ -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;

View File

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

View File

@ -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;

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;
//以下为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
{

View File

@ -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;i<PixelFormatCount;i++,++pf)
{
{
if(channels!=pf->channels)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.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);