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