Fix upload of prefilterred maps
This commit is contained in:
parent
c13de68d4a
commit
08f41596be
2 changed files with 22 additions and 18 deletions
|
|
@ -367,22 +367,26 @@ void VkTextureManager::CreatePrefiltermap(int size, int count, TArray<uint16_t>&
|
|||
.Execute(cmdbuffer);
|
||||
|
||||
int offset = 0;
|
||||
for (int level = 0; level < miplevels; level++)
|
||||
for (int i = 0; i < 6; ++i)
|
||||
{
|
||||
int mipwidth = std::max(w >> level, 1);
|
||||
int mipheight = std::max(h >> level, 1);
|
||||
for (int level = 0; level < miplevels; level++)
|
||||
{
|
||||
int mipwidth = std::max(w >> level, 1);
|
||||
int mipheight = std::max(h >> level, 1);
|
||||
|
||||
VkBufferImageCopy region = {};
|
||||
region.bufferOffset = offset;
|
||||
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
region.imageSubresource.layerCount = count;
|
||||
region.imageSubresource.mipLevel = level;
|
||||
region.imageExtent.depth = 1;
|
||||
region.imageExtent.width = mipwidth;
|
||||
region.imageExtent.height = mipheight;
|
||||
cmdbuffer->copyBufferToImage(stagingBuffer->buffer, Prefiltermap.Image.Image->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion);
|
||||
VkBufferImageCopy region = {};
|
||||
region.bufferOffset = offset;
|
||||
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
region.imageSubresource.layerCount = 1;
|
||||
region.imageSubresource.baseArrayLayer = i;
|
||||
region.imageSubresource.mipLevel = level;
|
||||
region.imageExtent.depth = 1;
|
||||
region.imageExtent.width = mipwidth;
|
||||
region.imageExtent.height = mipheight;
|
||||
cmdbuffer->copyBufferToImage(stagingBuffer->buffer, Prefiltermap.Image.Image->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion);
|
||||
|
||||
offset += mipwidth * mipheight * count * pixelsize;
|
||||
offset += mipwidth * mipheight * pixelsize;
|
||||
}
|
||||
}
|
||||
|
||||
fb->GetCommands()->TransferDeleteList->Add(std::move(stagingBuffer));
|
||||
|
|
|
|||
|
|
@ -377,11 +377,11 @@ void VkLightprober::CreatePrefilterMap()
|
|||
.MaxSets(6 * prefilterMap.maxlevels)
|
||||
.Create(fb->GetDevice());
|
||||
|
||||
for (int level = 0; level < prefilterMap.maxlevels; level++)
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
for (int i = 0; i < 6; i++)
|
||||
for (int level = 0; level < prefilterMap.maxlevels; level++)
|
||||
{
|
||||
int idx = level * 6 + i;
|
||||
int idx = i * prefilterMap.maxlevels + level;
|
||||
|
||||
prefilterMap.images[idx] = ImageBuilder()
|
||||
.Size(128 >> level, 128 >> level)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue