8 #include "surfacedescriptor.h"
9 #include "renderutils.h"
10 #include "textureutils.h"
13 #include <nap/resource.h>
14 #include <glm/glm.hpp>
15 #include <nap/numeric.h>
16 #include <rtti/factory.h>
17 #include <nap/signalslot.h>
26 class TextureLinkCube;
45 virtual uint getLayerCount()
const = 0;
50 virtual uint getMipLevels()
const = 0;
55 virtual const ImageData& getHandle()
const = 0;
80 virtual void onDestroy()
override { textureDestroyed(); }
96 virtual void clear(VkCommandBuffer commandBuffer);
106 VkFormat mFormat = VK_FORMAT_UNDEFINED;
107 VkClearColorValue mClearColor = { 0.0f, 0.0f, 0.0f, 0.0f };
169 const glm::vec2
getSize()
const {
return { getWidth(), getHeight() }; }
174 int getWidth()
const {
return mDescriptor.mWidth; }
190 void update(
const void* data,
int width,
int height,
int pitch,
ESurfaceChannels channels);
220 void asyncGetData(
Bitmap& bitmap);
227 void asyncGetData(std::function<
void(
const void*,
size_t)> copyFunction);
230 bool init(
const SurfaceDescriptor& descriptor, EUsage usage,
bool mipCount,
const glm::vec4& clearColor, VkImageUsageFlags requiredFlags,
utility::ErrorState& errorState) =
delete;
253 void upload(VkCommandBuffer commandBuffer);
258 void download(VkCommandBuffer commandBuffer);
263 void notifyDownloadReady(
int frameIndex);
268 void clearDownloads();
274 int mCurrentStagingBufferIndex = -1;
275 size_t mImageSizeInBytes = -1;
309 static constexpr
const uint layerCount = 6;
329 const glm::vec2
getSize()
const {
return { getWidth(), getHeight() }; }
334 int getWidth()
const {
return mDescriptor.mWidth; }
unsigned int uint
Definition: numeric.h:23
virtual bool init(utility::ErrorState &errorState)
Definition: object.h:46
virtual ImageData & getHandle() override
Definition: texture.h:237
virtual ~Texture()
Definition: texture.h:40
virtual uint getLayerCount() const override
Definition: texture.h:203
std::vector< BufferData > mStagingBuffers
All vulkan staging buffers, 1 when static or using dynamic read, no. of frames in flight when dynamic...
Definition: texture.h:273
Definition: texture.h:302
@ Static
Buffer data is uploaded only once from the CPU to the GPU.
@ DynamicRead
Buffer data is uploaded only once from the CPU to the GPU, and frequently read from GPU to CPU.
ImageData mImageData
2D Texture vulkan image buffers
Definition: texture.h:272
ESurfaceChannels
Definition: surfacedescriptor.h:26
const glm::vec2 getSize() const
Definition: texture.h:329
std::vector< int > mDownloadStagingBufferIndices
Staging buffer indices associated with a frameindex.
Definition: texture.h:277
void NAPAPI blit(VkCommandBuffer commandBuffer, Texture2D &srcTexture, Texture2D &dstTexture)
const SurfaceDescriptor & getDescriptor() const
Definition: texture.h:65
virtual const ImageData & getHandle() const override
Definition: texture.h:354
RenderService & getRenderService()
Definition: texture.h:70
Definition: errorstate.h:19
void NAPAPI copy(VkCommandBuffer commandBuffer, Texture2D &srcTexture, Texture2D &dstTexture)
EUsage
Definition: texture.h:129
nap::Signal textureDestroyed
Signal that is triggered before texture is destroyed.
Definition: texture.h:82
Definition: texturelink.h:73
uint32_t uint32
Definition: numeric.h:20
Definition: texture.h:117
Definition: imagedata.h:23
Definition: signalslot.h:25
Definition: surfacedescriptor.h:46
Definition: renderservice.h:198
VkFormat getFormat() const
Definition: texture.h:60
@ DynamicWrite
Buffer data is updated more than once from the CPU to the GPU.
std::function< void(void *data, size_t sizeInBytes)> TextureReadCallback
Definition: texture.h:270
virtual void onDestroy() override
Definition: texture.h:80
virtual uint getMipLevels() const override
Definition: texture.h:208
RenderService & mRenderService
Reference to the render service.
Definition: texture.h:104
int getWidth() const
Definition: texture.h:174
int getWidth() const
Definition: texture.h:334
Definition: templateapp.h:17
const RenderService & getRenderService() const
Definition: texture.h:75
std::vector< TextureReadCallback > mReadCallbacks
Number of callbacks based on number of frames in flight.
Definition: texture.h:276
static constexpr const uint layerCount
Definition: texture.h:309
Definition: resource.h:19
virtual const ImageData & getHandle() const override
Definition: texture.h:213
Definition: texturelink.h:18
virtual uint getMipLevels() const override
Definition: texture.h:349
int getHeight() const
Definition: texture.h:339
int getHeight() const
Definition: texture.h:179
EUsage mUsage
Intented texture usage.
Definition: texture.h:279
const glm::vec2 getSize() const
Definition: texture.h:169
virtual ImageData & getHandle() override
Definition: texture.h:360
SurfaceDescriptor mDescriptor
Texture description.
Definition: texture.h:105
virtual uint getLayerCount() const override
Definition: texture.h:344