From ecbfc38d0c80ed35dfd25a5c97deb026b6ac9c45 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 16 Dec 2021 21:02:05 +0800 Subject: [PATCH] splited and Created VKDeviceSampler.cpp --- src/SceneGraph/CMakeLists.txt | 1 + src/SceneGraph/Vulkan/VKDeviceSampler.cpp | 80 +++++++++++++++++++++++ src/SceneGraph/Vulkan/VKDeviceTexture.cpp | 78 ---------------------- 3 files changed, 81 insertions(+), 78 deletions(-) create mode 100644 src/SceneGraph/Vulkan/VKDeviceSampler.cpp diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index c21e92c1..280bc94f 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -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 diff --git a/src/SceneGraph/Vulkan/VKDeviceSampler.cpp b/src/SceneGraph/Vulkan/VKDeviceSampler.cpp new file mode 100644 index 00000000..e305ddf1 --- /dev/null +++ b/src/SceneGraph/Vulkan/VKDeviceSampler.cpp @@ -0,0 +1,80 @@ +#include +#include +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 diff --git a/src/SceneGraph/Vulkan/VKDeviceTexture.cpp b/src/SceneGraph/Vulkan/VKDeviceTexture.cpp index 8a9d2c81..9dc61f1d 100644 --- a/src/SceneGraph/Vulkan/VKDeviceTexture.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceTexture.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -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