Blender V4.3
blender::draw::Texture Class Reference

#include <DRW_gpu_wrapper.hh>

Inherits blender::NonCopyable.

Inherited by blender::draw::TextureFromPool, blender::draw::TextureRef, and blender::eevee::UtilityTexture.

Public Member Functions

 Texture (const char *name="gpu::Texture")
 
 Texture (const char *name, eGPUTextureFormat format, eGPUTextureUsage usage, int extent, const float *data=nullptr, bool cubemap=false, int mip_len=1)
 
 Texture (const char *name, eGPUTextureFormat format, eGPUTextureUsage usage, int extent, int layers, const float *data=nullptr, bool cubemap=false, int mip_len=1)
 
 Texture (const char *name, eGPUTextureFormat format, eGPUTextureUsage usage, int2 extent, const float *data=nullptr, int mip_len=1)
 
 Texture (const char *name, eGPUTextureFormat format, eGPUTextureUsage usage, int2 extent, int layers, const float *data=nullptr, int mip_len=1)
 
 Texture (const char *name, eGPUTextureFormat format, eGPUTextureUsage usage, int3 extent, const float *data=nullptr, int mip_len=1)
 
 Texture (Texture &&other)=default
 
 ~Texture ()
 
GPUTexture * gpu_texture ()
 
 operator GPUTexture * () const
 
GPUTexture ** operator& ()
 
Textureptr ()
 
Textureoperator= (Texture &&a)
 
bool ensure_1d (eGPUTextureFormat format, int extent, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_1d_array (eGPUTextureFormat format, int extent, int layers, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_2d (eGPUTextureFormat format, int2 extent, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_2d_array (eGPUTextureFormat format, int2 extent, int layers, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_3d (eGPUTextureFormat format, int3 extent, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_cube (eGPUTextureFormat format, int extent, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, float *data=nullptr, int mip_len=1)
 
bool ensure_cube_array (eGPUTextureFormat format, int extent, int layers, eGPUTextureUsage usage=GPU_TEXTURE_USAGE_GENERAL, const float *data=nullptr, int mip_len=1)
 
bool ensure_mip_views (bool cube_as_array=false)
 
GPUTexture * mip_view (int miplvl)
 
int mip_count () const
 
bool ensure_layer_views (bool cube_as_array=false)
 
GPUTexture * layer_view (int layer)
 
GPUTexture * stencil_view (bool cube_as_array=false)
 
GPUTexture * layer_range_view (int layer_start, int layer_len, bool cube_as_array=false)
 
bool is_valid () const
 
int width () const
 
int height () const
 
int depth () const
 
int pixel_count () const
 
bool is_depth () const
 
bool is_stencil () const
 
bool is_integer () const
 
bool is_cube () const
 
bool is_array () const
 
int3 size (int miplvl=0) const
 
void clear (float4 values)
 
void clear (uint4 values)
 
void clear (int4 values)
 
void debug_clear ()
 
template<typename T >
Tread (eGPUDataFormat format, int miplvl=0)
 
void filter_mode (bool do_filter)
 
void free ()
 

Static Public Member Functions

static void swap (Texture &a, Texture &b)
 

Protected Attributes

GPUTexture * tx_ = nullptr
 
GPUTexture * stencil_view_ = nullptr
 
Vector< GPUTexture *, 0 > mip_views_
 
Vector< GPUTexture *, 0 > layer_views_
 
GPUTexture * layer_range_view_ = nullptr
 
const char * name_
 

Detailed Description

Definition at line 526 of file DRW_gpu_wrapper.hh.

Constructor & Destructor Documentation

◆ Texture() [1/7]

blender::draw::Texture::Texture ( const char * name = "gpu::Texture")
inline

Definition at line 536 of file DRW_gpu_wrapper.hh.

◆ Texture() [2/7]

blender::draw::Texture::Texture ( const char * name,
eGPUTextureFormat format,
eGPUTextureUsage usage,
int extent,
const float * data = nullptr,
bool cubemap = false,
int mip_len = 1 )
inline

Definition at line 538 of file DRW_gpu_wrapper.hh.

References tx_.

◆ Texture() [3/7]

blender::draw::Texture::Texture ( const char * name,
eGPUTextureFormat format,
eGPUTextureUsage usage,
int extent,
int layers,
const float * data = nullptr,
bool cubemap = false,
int mip_len = 1 )
inline

Definition at line 550 of file DRW_gpu_wrapper.hh.

References tx_.

◆ Texture() [4/7]

blender::draw::Texture::Texture ( const char * name,
eGPUTextureFormat format,
eGPUTextureUsage usage,
int2 extent,
const float * data = nullptr,
int mip_len = 1 )
inline

Definition at line 563 of file DRW_gpu_wrapper.hh.

References tx_, and UNPACK2.

◆ Texture() [5/7]

blender::draw::Texture::Texture ( const char * name,
eGPUTextureFormat format,
eGPUTextureUsage usage,
int2 extent,
int layers,
const float * data = nullptr,
int mip_len = 1 )
inline

Definition at line 574 of file DRW_gpu_wrapper.hh.

References tx_, and UNPACK2.

◆ Texture() [6/7]

blender::draw::Texture::Texture ( const char * name,
eGPUTextureFormat format,
eGPUTextureUsage usage,
int3 extent,
const float * data = nullptr,
int mip_len = 1 )
inline

Definition at line 586 of file DRW_gpu_wrapper.hh.

References tx_, and UNPACK3.

◆ Texture() [7/7]

blender::draw::Texture::Texture ( Texture && other)
default

◆ ~Texture()

blender::draw::Texture::~Texture ( )
inline

Definition at line 598 of file DRW_gpu_wrapper.hh.

References free().

Member Function Documentation

◆ clear() [1/3]

◆ clear() [2/3]

void blender::draw::Texture::clear ( int4 values)
inline

Clear the entirety of the texture using one pixel worth of data.

Definition at line 922 of file DRW_gpu_wrapper.hh.

References GPU_DATA_INT, GPU_texture_clear(), and tx_.

◆ clear() [3/3]

void blender::draw::Texture::clear ( uint4 values)
inline

Clear the entirety of the texture using one pixel worth of data.

Definition at line 914 of file DRW_gpu_wrapper.hh.

References GPU_DATA_UINT, GPU_texture_clear(), and tx_.

◆ debug_clear()

void blender::draw::Texture::debug_clear ( )
inline

Clear the texture to NaN for floats, or a to debug value for integers. (For debugging uninitialized data issues)

Definition at line 931 of file DRW_gpu_wrapper.hh.

References clear(), GPU_texture_has_float_format(), GPU_texture_has_integer_format(), GPU_texture_has_normalized_format(), GPU_texture_has_signed_format(), and NAN_FLT.

Referenced by blender::draw::TextureFromPool::acquire().

◆ depth()

int blender::draw::Texture::depth ( ) const
inline

Definition at line 861 of file DRW_gpu_wrapper.hh.

References GPU_texture_depth(), and tx_.

◆ ensure_1d()

bool blender::draw::Texture::ensure_1d ( eGPUTextureFormat format,
int extent,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
const float * data = nullptr,
int mip_len = 1 )
inline

Ensure the texture has the correct properties. Recreating it if needed. Return true if a texture has been created.

Definition at line 653 of file DRW_gpu_wrapper.hh.

Referenced by blender::workbench::VolumePass::sync().

◆ ensure_1d_array()

bool blender::draw::Texture::ensure_1d_array ( eGPUTextureFormat format,
int extent,
int layers,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
const float * data = nullptr,
int mip_len = 1 )
inline

Ensure the texture has the correct properties. Recreating it if needed. Return true if a texture has been created.

Definition at line 666 of file DRW_gpu_wrapper.hh.

References BLI_assert.

Referenced by blender::workbench::SceneResources::init().

◆ ensure_2d()

◆ ensure_2d_array()

bool blender::draw::Texture::ensure_2d_array ( eGPUTextureFormat format,
int2 extent,
int layers,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
const float * data = nullptr,
int mip_len = 1 )
inline

◆ ensure_3d()

bool blender::draw::Texture::ensure_3d ( eGPUTextureFormat format,
int3 extent,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
const float * data = nullptr,
int mip_len = 1 )
inline

Ensure the texture has the correct properties. Recreating it if needed. Return true if a texture has been created.

Definition at line 709 of file DRW_gpu_wrapper.hh.

References UNPACK3.

Referenced by blender::eevee::VolumeModule::end_sync(), blender::eevee::VolumeProbeModule::init(), blender::eevee::Precompute::Precompute(), blender::workbench::VolumePass::sync(), and blender::eevee::VolumeModule::VolumeModule().

◆ ensure_cube()

bool blender::draw::Texture::ensure_cube ( eGPUTextureFormat format,
int extent,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
float * data = nullptr,
int mip_len = 1 )
inline

Ensure the texture has the correct properties. Recreating it if needed. Return true if a texture has been created.

Definition at line 722 of file DRW_gpu_wrapper.hh.

◆ ensure_cube_array()

bool blender::draw::Texture::ensure_cube_array ( eGPUTextureFormat format,
int extent,
int layers,
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_GENERAL,
const float * data = nullptr,
int mip_len = 1 )
inline

Ensure the texture has the correct properties. Recreating it if needed. Return true if a texture has been created.

Definition at line 735 of file DRW_gpu_wrapper.hh.

◆ ensure_layer_views()

bool blender::draw::Texture::ensure_layer_views ( bool cube_as_array = false)
inline

◆ ensure_mip_views()

bool blender::draw::Texture::ensure_mip_views ( bool cube_as_array = false)
inline

◆ filter_mode()

void blender::draw::Texture::filter_mode ( bool do_filter)
inline

◆ free()

◆ gpu_texture()

GPUTexture * blender::draw::Texture::gpu_texture ( )
inline

Definition at line 603 of file DRW_gpu_wrapper.hh.

References tx_.

Referenced by blender::draw::compositor::Context::get_input_texture().

◆ height()

int blender::draw::Texture::height ( ) const
inline

◆ is_array()

bool blender::draw::Texture::is_array ( ) const
inline

Definition at line 891 of file DRW_gpu_wrapper.hh.

References GPU_texture_is_array(), and tx_.

◆ is_cube()

bool blender::draw::Texture::is_cube ( ) const
inline

Definition at line 886 of file DRW_gpu_wrapper.hh.

References GPU_texture_is_cube(), and tx_.

◆ is_depth()

bool blender::draw::Texture::is_depth ( ) const
inline

Definition at line 871 of file DRW_gpu_wrapper.hh.

References GPU_texture_has_depth_format(), and tx_.

◆ is_integer()

bool blender::draw::Texture::is_integer ( ) const
inline

Definition at line 881 of file DRW_gpu_wrapper.hh.

References GPU_texture_has_integer_format(), and tx_.

◆ is_stencil()

bool blender::draw::Texture::is_stencil ( ) const
inline

Definition at line 876 of file DRW_gpu_wrapper.hh.

References GPU_texture_has_stencil_format(), and tx_.

◆ is_valid()

◆ layer_range_view()

GPUTexture * blender::draw::Texture::layer_range_view ( int layer_start,
int layer_len,
bool cube_as_array = false )
inline

Layer range view cover only the given range. This can only called to create one range. View is recreated if:

  • The source texture is recreated.
  • The layer_len is different from the last call the this function. IMPORTANT: It is not recreated if the layer_start is different from the last call. IMPORTANT: If this view is recreated any reference to it should be updated.

Definition at line 825 of file DRW_gpu_wrapper.hh.

References BLI_assert, BLI_assert_msg, GPU_texture_create_view(), GPU_texture_format(), GPU_TEXTURE_FREE_SAFE, GPU_texture_layer_count(), is_valid(), layer_range_view_, name_, and tx_.

Referenced by blender::eevee::GBuffer::acquire().

◆ layer_view()

◆ mip_count()

int blender::draw::Texture::mip_count ( ) const
inline

Definition at line 774 of file DRW_gpu_wrapper.hh.

References GPU_texture_mip_count(), and tx_.

◆ mip_view()

GPUTexture * blender::draw::Texture::mip_view ( int miplvl)
inline

◆ operator GPUTexture *()

blender::draw::Texture::operator GPUTexture * ( ) const
inline

Definition at line 609 of file DRW_gpu_wrapper.hh.

References BLI_assert, and tx_.

◆ operator&()

GPUTexture ** blender::draw::Texture::operator& ( )
inline

Definition at line 616 of file DRW_gpu_wrapper.hh.

References tx_.

◆ operator=()

Texture & blender::draw::Texture::operator= ( Texture && a)
inline

Definition at line 627 of file DRW_gpu_wrapper.hh.

References free().

◆ pixel_count()

int blender::draw::Texture::pixel_count ( ) const
inline

Definition at line 866 of file DRW_gpu_wrapper.hh.

References GPU_texture_height(), GPU_texture_width(), and tx_.

Referenced by blender::eevee::DepthOfField::sync().

◆ ptr()

Texture * blender::draw::Texture::ptr ( )
inline

WORKAROUND: used when needing a ref to the Texture and not the GPUTexture.

Definition at line 622 of file DRW_gpu_wrapper.hh.

◆ read()

template<typename T >
T * blender::draw::Texture::read ( eGPUDataFormat format,
int miplvl = 0 )
inline

Returns a buffer containing the texture data for the specified miplvl. The memory block needs to be manually freed by MEM_freeN().

Definition at line 950 of file DRW_gpu_wrapper.hh.

References GPU_texture_read(), and tx_.

Referenced by blender::eevee::Precompute::Precompute(), blender::draw::test_eevee_shadow_finalize(), and blender::draw::test_eevee_shadow_tilemap_amend().

◆ size()

◆ stencil_view()

GPUTexture * blender::draw::Texture::stencil_view ( bool cube_as_array = false)
inline

◆ swap()

static void blender::draw::Texture::swap ( Texture & a,
Texture & b )
inlinestatic

Swap the content of the two textures.

Definition at line 981 of file DRW_gpu_wrapper.hh.

References b.

Referenced by blender::draw::TextureFromPool::swap(), and blender::draw::TextureFromPool::swap().

◆ width()

int blender::draw::Texture::width ( ) const
inline

Member Data Documentation

◆ layer_range_view_

GPUTexture* blender::draw::Texture::layer_range_view_ = nullptr
protected

Definition at line 532 of file DRW_gpu_wrapper.hh.

Referenced by free(), and layer_range_view().

◆ layer_views_

Vector<GPUTexture *, 0> blender::draw::Texture::layer_views_
protected

Definition at line 531 of file DRW_gpu_wrapper.hh.

Referenced by ensure_layer_views(), free(), and layer_view().

◆ mip_views_

Vector<GPUTexture *, 0> blender::draw::Texture::mip_views_
protected

Definition at line 530 of file DRW_gpu_wrapper.hh.

Referenced by ensure_mip_views(), free(), and mip_view().

◆ name_

const char* blender::draw::Texture::name_
protected

◆ stencil_view_

GPUTexture* blender::draw::Texture::stencil_view_ = nullptr
protected

Definition at line 529 of file DRW_gpu_wrapper.hh.

Referenced by free(), and stencil_view().

◆ tx_


The documentation for this class was generated from the following file: