splited and Created VKDeviceSampler.cpp

This commit is contained in:
hyzboy 2021-12-16 21:02:05 +08:00
parent fb15e1bf5e
commit ecbfc38d0c
3 changed files with 81 additions and 78 deletions

View File

@ -122,6 +122,7 @@ SET(VK_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKDevice.h
Vulkan/VKDeviceBuffer.cpp
Vulkan/VKDeviceImage.cpp
Vulkan/VKDeviceTexture.cpp
Vulkan/VKDeviceSampler.cpp
Vulkan/VKDeviceMaterial.cpp
Vulkan/VKDeviceFramebuffer.cpp
Vulkan/VKDeviceSwapchain.cpp

View File

@ -0,0 +1,80 @@
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKSampler.h>
VK_NAMESPACE_BEGIN
Sampler *GPUDevice::CreateSampler(VkSamplerCreateInfo *sci)
{
static VkSamplerCreateInfo default_sampler_create_info=
{
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
nullptr,
0,
VK_FILTER_LINEAR,
VK_FILTER_LINEAR,
VK_SAMPLER_MIPMAP_MODE_LINEAR,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
0.0f,
false,
1.0f,
false,
VK_COMPARE_OP_NEVER,
0.0f,
0.0f,
VK_BORDER_COLOR_INT_OPAQUE_BLACK,//VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
false
};
if(!sci)
sci=&default_sampler_create_info;
VkSampler sampler;
sci->sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
if(vkCreateSampler(attr->device,sci,nullptr,&sampler)!=VK_SUCCESS)
return(nullptr);
return(new Sampler(attr->device,sampler));
}
Sampler *GPUDevice::CreateSampler(Texture *tex)
{
VkSamplerCreateInfo sci=
{
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
nullptr,
0,
VK_FILTER_LINEAR,
VK_FILTER_LINEAR,
VK_SAMPLER_MIPMAP_MODE_LINEAR,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
0.0f,
false,
1.0f,
false,
VK_COMPARE_OP_NEVER,
0.0f,
0.0f,
VK_BORDER_COLOR_INT_OPAQUE_BLACK,//VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
false
};
VkSampler sampler;
sci.anisotropyEnable = attr->physical_device->SupportSamplerAnisotropy();
if(sci.anisotropyEnable)
sci.maxAnisotropy = attr->physical_device->GetMaxSamplerAnisotropy();
if(tex)
sci.maxLod=tex->GetMipLevel();
if(vkCreateSampler(attr->device,&sci,nullptr,&sampler)!=VK_SUCCESS)
return(nullptr);
return(new Sampler(attr->device,sampler));
}
VK_NAMESPACE_END

View File

@ -1,5 +1,4 @@
#include<hgl/graph/VKTexture.h>
#include<hgl/graph/VKSampler.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKPhysicalDevice.h>
#include<hgl/graph/VKFence.h>
@ -411,81 +410,4 @@ bool GPUDevice::SubmitTexture(const VkCommandBuffer *cmd_bufs,const uint32_t cou
return(true);
}
Sampler *GPUDevice::CreateSampler(VkSamplerCreateInfo *sci)
{
static VkSamplerCreateInfo default_sampler_create_info=
{
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
nullptr,
0,
VK_FILTER_LINEAR,
VK_FILTER_LINEAR,
VK_SAMPLER_MIPMAP_MODE_LINEAR,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
0.0f,
false,
1.0f,
false,
VK_COMPARE_OP_NEVER,
0.0f,
0.0f,
VK_BORDER_COLOR_INT_OPAQUE_BLACK,//VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
false
};
if(!sci)
sci=&default_sampler_create_info;
VkSampler sampler;
sci->sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
if(vkCreateSampler(attr->device,sci,nullptr,&sampler)!=VK_SUCCESS)
return(nullptr);
return(new Sampler(attr->device,sampler));
}
Sampler *GPUDevice::CreateSampler(Texture *tex)
{
VkSamplerCreateInfo sci=
{
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
nullptr,
0,
VK_FILTER_LINEAR,
VK_FILTER_LINEAR,
VK_SAMPLER_MIPMAP_MODE_LINEAR,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
0.0f,
false,
1.0f,
false,
VK_COMPARE_OP_NEVER,
0.0f,
0.0f,
VK_BORDER_COLOR_INT_OPAQUE_BLACK,//VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
false
};
VkSampler sampler;
sci.anisotropyEnable = attr->physical_device->SupportSamplerAnisotropy();
if(sci.anisotropyEnable)
sci.maxAnisotropy = attr->physical_device->GetMaxSamplerAnisotropy();
if(tex)
sci.maxLod=tex->GetMipLevel();
if(vkCreateSampler(attr->device,&sci,nullptr,&sampler)!=VK_SUCCESS)
return(nullptr);
return(new Sampler(attr->device,sampler));
}
VK_NAMESPACE_END