Blender  V2.93
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
blender::gpu::Texture Class Referenceabstract

#include <gpu_texture_private.hh>

Inherited by blender::gpu::GLTexture.

Public Member Functions

virtual void generate_mipmap (void)=0
 
virtual void copy_to (Texture *tex)=0
 
virtual void clear (eGPUDataFormat format, const void *data)=0
 
virtual void swizzle_set (const char swizzle_mask[4])=0
 
virtual void mip_range_set (int min, int max)=0
 
virtual void * read (int mip, eGPUDataFormat format)=0
 
virtual void update_sub (int mip, int offset[3], int extent[3], eGPUDataFormat format, const void *data)=0
 
virtual uint gl_bindcode_get (void) const =0
 
int width_get (void) const
 
int height_get (void) const
 
int depth_get (void) const
 
void mip_size_get (int mip, int r_size[3]) const
 
int mip_width_get (int mip) const
 
int mip_height_get (int mip) const
 
int mip_depth_get (int mip) const
 
int dimensions_count (void) const
 
int layer_count (void) const
 
eGPUTextureFormat format_get (void) const
 
eGPUTextureFormatFlag format_flag_get (void) const
 
eGPUTextureType type_get (void) const
 
GPUAttachmentType attachment_type (int slot) const
 
Creation & Deletion
 Texture (const char *name)
 
virtual ~Texture ()
 
bool init_1D (int w, int layers, eGPUTextureFormat format)
 
bool init_2D (int w, int h, int layers, eGPUTextureFormat format)
 
bool init_3D (int w, int h, int d, eGPUTextureFormat format)
 
bool init_cubemap (int w, int layers, eGPUTextureFormat format)
 
bool init_buffer (GPUVertBuf *vbo, eGPUTextureFormat format)
 
Operation
void attach_to (FrameBuffer *fb, GPUAttachmentType type)
 
void detach_from (FrameBuffer *fb)
 
void update (eGPUDataFormat format, const void *data)
 

Public Attributes

eGPUSamplerState sampler_state = GPU_SAMPLER_DEFAULT
 
int refcount = 1
 
int src_w = 0
 
int src_h = 0
 

Protected Member Functions

virtual bool init_internal (void)=0
 
virtual bool init_internal (GPUVertBuf *vbo)=0
 

Protected Attributes

int w_
 
int h_
 
int d_
 
eGPUTextureFormat format_
 
eGPUTextureFormatFlag format_flag_
 
eGPUTextureType type_
 
int mipmaps_ = -1
 
int mip_min_ = 0
 
int mip_max_ = 0
 
char name_ [DEBUG_NAME_LEN]
 
GPUAttachmentType fb_attachment_ [GPU_TEX_MAX_FBO_ATTACHED]
 
FrameBufferfb_ [GPU_TEX_MAX_FBO_ATTACHED]
 

Detailed Description

Implementation of Textures. Base class which is then specialized for each implementation (GL, VK, ...).

Definition at line 75 of file gpu_texture_private.hh.

Constructor & Destructor Documentation

◆ Texture()

blender::gpu::Texture::Texture ( const char *  name)

Definition at line 42 of file gpu_texture.cc.

References ARRAY_SIZE, BLI_strncpy(), fb_, and name_.

◆ ~Texture()

blender::gpu::Texture::~Texture ( )
virtual

Member Function Documentation

◆ attach_to()

void blender::gpu::Texture::attach_to ( FrameBuffer fb,
GPUAttachmentType  type 
)

Definition at line 142 of file gpu_texture.cc.

References ARRAY_SIZE, BLI_assert, fb(), fb_, fb_attachment_, and type.

◆ attachment_type()

GPUAttachmentType blender::gpu::Texture::attachment_type ( int  slot) const
inline

◆ clear()

virtual void blender::gpu::Texture::clear ( eGPUDataFormat  format,
const void *  data 
)
pure virtual

Implemented in blender::gpu::GLTexture.

◆ copy_to()

virtual void blender::gpu::Texture::copy_to ( Texture tex)
pure virtual

Implemented in blender::gpu::GLTexture.

Referenced by GPU_texture_copy().

◆ depth_get()

int blender::gpu::Texture::depth_get ( void  ) const
inline

Definition at line 144 of file gpu_texture_private.hh.

References d_.

◆ detach_from()

void blender::gpu::Texture::detach_from ( FrameBuffer fb)

◆ dimensions_count()

int blender::gpu::Texture::dimensions_count ( void  ) const
inline

◆ format_flag_get()

eGPUTextureFormatFlag blender::gpu::Texture::format_flag_get ( void  ) const
inline

Definition at line 218 of file gpu_texture_private.hh.

References format_flag_.

◆ format_get()

eGPUTextureFormat blender::gpu::Texture::format_get ( void  ) const
inline

Definition at line 214 of file gpu_texture_private.hh.

References format_.

◆ generate_mipmap()

virtual void blender::gpu::Texture::generate_mipmap ( void  )
pure virtual

Implemented in blender::gpu::GLTexture.

◆ gl_bindcode_get()

virtual uint blender::gpu::Texture::gl_bindcode_get ( void  ) const
pure virtual

Implemented in blender::gpu::GLTexture.

◆ height_get()

int blender::gpu::Texture::height_get ( void  ) const
inline

Definition at line 140 of file gpu_texture_private.hh.

References h_.

◆ init_1D()

bool blender::gpu::Texture::init_1D ( int  w,
int  layers,
eGPUTextureFormat  format 
)

◆ init_2D()

bool blender::gpu::Texture::init_2D ( int  w,
int  h,
int  layers,
eGPUTextureFormat  format 
)

◆ init_3D()

bool blender::gpu::Texture::init_3D ( int  w,
int  h,
int  d,
eGPUTextureFormat  format 
)

◆ init_buffer()

bool blender::gpu::Texture::init_buffer ( GPUVertBuf vbo,
eGPUTextureFormat  format 
)

◆ init_cubemap()

bool blender::gpu::Texture::init_cubemap ( int  w,
int  layers,
eGPUTextureFormat  format 
)

◆ init_internal() [1/2]

virtual bool blender::gpu::Texture::init_internal ( GPUVertBuf vbo)
protectedpure virtual

Implemented in blender::gpu::GLTexture.

◆ init_internal() [2/2]

virtual bool blender::gpu::Texture::init_internal ( void  )
protectedpure virtual

◆ layer_count()

int blender::gpu::Texture::layer_count ( void  ) const
inline

◆ mip_depth_get()

int blender::gpu::Texture::mip_depth_get ( int  mip) const
inline

◆ mip_height_get()

int blender::gpu::Texture::mip_height_get ( int  mip) const
inline

Definition at line 174 of file gpu_texture_private.hh.

References blender::gpu::GPU_TEXTURE_1D_ARRAY, h_, max_ii(), and type_.

◆ mip_range_set()

virtual void blender::gpu::Texture::mip_range_set ( int  min,
int  max 
)
pure virtual

Implemented in blender::gpu::GLTexture.

◆ mip_size_get()

void blender::gpu::Texture::mip_size_get ( int  mip,
int  r_size[3] 
) const
inline

◆ mip_width_get()

int blender::gpu::Texture::mip_width_get ( int  mip) const
inline

Definition at line 170 of file gpu_texture_private.hh.

References max_ii(), and w_.

◆ read()

virtual void* blender::gpu::Texture::read ( int  mip,
eGPUDataFormat  format 
)
pure virtual

Implemented in blender::gpu::GLTexture.

◆ swizzle_set()

virtual void blender::gpu::Texture::swizzle_set ( const char  swizzle_mask[4])
pure virtual

Implemented in blender::gpu::GLTexture.

◆ type_get()

eGPUTextureType blender::gpu::Texture::type_get ( void  ) const
inline

Definition at line 222 of file gpu_texture_private.hh.

References type_.

◆ update()

void blender::gpu::Texture::update ( eGPUDataFormat  format,
const void *  data 
)

Definition at line 166 of file gpu_texture.cc.

References data, mip_size_get(), and update_sub().

◆ update_sub()

virtual void blender::gpu::Texture::update_sub ( int  mip,
int  offset[3],
int  extent[3],
eGPUDataFormat  format,
const void *  data 
)
pure virtual

Implemented in blender::gpu::GLTexture.

Referenced by update().

◆ width_get()

int blender::gpu::Texture::width_get ( void  ) const
inline

Definition at line 136 of file gpu_texture_private.hh.

References w_.

Member Data Documentation

◆ d_

int blender::gpu::Texture::d_
protected

◆ fb_

FrameBuffer* blender::gpu::Texture::fb_[GPU_TEX_MAX_FBO_ATTACHED]
protected

◆ fb_attachment_

GPUAttachmentType blender::gpu::Texture::fb_attachment_[GPU_TEX_MAX_FBO_ATTACHED]
protected

Frame-buffer references to update on deletion.

Definition at line 105 of file gpu_texture_private.hh.

Referenced by attach_to(), blender::gpu::GLTexture::check_feedback_loop(), detach_from(), and ~Texture().

◆ format_

eGPUTextureFormat blender::gpu::Texture::format_
protected

◆ format_flag_

eGPUTextureFormatFlag blender::gpu::Texture::format_flag_
protected

◆ h_

int blender::gpu::Texture::h_
protected

◆ mip_max_

int blender::gpu::Texture::mip_max_ = 0
protected

◆ mip_min_

int blender::gpu::Texture::mip_min_ = 0
protected

◆ mipmaps_

int blender::gpu::Texture::mipmaps_ = -1
protected

Number of mipmaps this texture has (Max miplvl).

Definition at line 97 of file gpu_texture_private.hh.

Referenced by blender::gpu::GLTexture::mip_range_set(), blender::gpu::GLTexture::read(), and blender::gpu::GLTexture::update_sub().

◆ name_

char blender::gpu::Texture::name_[DEBUG_NAME_LEN]
protected

◆ refcount

int blender::gpu::Texture::refcount = 1

Reference counter.

Definition at line 80 of file gpu_texture_private.hh.

◆ sampler_state

eGPUSamplerState blender::gpu::Texture::sampler_state = GPU_SAMPLER_DEFAULT

Internal Sampler state.

Definition at line 78 of file gpu_texture_private.hh.

Referenced by init_1D(), init_2D(), init_3D(), and init_cubemap().

◆ src_h

int blender::gpu::Texture::src_h = 0

Definition at line 82 of file gpu_texture_private.hh.

◆ src_w

int blender::gpu::Texture::src_w = 0

Width & Height (of source data), optional.

Definition at line 82 of file gpu_texture_private.hh.

◆ type_

eGPUTextureType blender::gpu::Texture::type_
protected

◆ w_

int blender::gpu::Texture::w_
protected

Width & Height & Depth. For cube-map arrays, d is number of face-layers.

Definition at line 87 of file gpu_texture_private.hh.

Referenced by blender::gpu::GLTexture::copy_to(), init_1D(), init_2D(), init_3D(), init_buffer(), init_cubemap(), mip_size_get(), mip_width_get(), and width_get().


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