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

#include <gpu_texture_private.hh>

Inheritance diagram for blender::gpu::Texture:
blender::gpu::GLTexture blender::gpu::MTLTexture

Public Member Functions

virtual void generate_mipmap ()=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 stencil_texture_mode_set (bool use_stencil)=0
 
virtual void mip_range_set (int min, int max)=0
 
virtual voidread (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 () const =0
 
int width_get () const
 
int height_get () const
 
int depth_get () 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 () const
 
int layer_count () const
 
int mip_count () const
 
eGPUTextureFormat format_get () const
 
eGPUTextureFormatFlag format_flag_get () const
 
eGPUTextureType type_get () const
 
GPUAttachmentType attachment_type (int slot) const
 
Creation & Deletion
 Texture (const char *name)
 
virtual ~Texture ()
 
bool init_1D (int w, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_2D (int w, int h, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_3D (int w, int h, int d, int mip_len, eGPUTextureFormat format)
 
bool init_cubemap (int w, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_buffer (GPUVertBuf *vbo, eGPUTextureFormat format)
 
bool init_view (const GPUTexture *src, eGPUTextureFormat format, int mip_start, int mip_len, int layer_start, int layer_len, bool cube_as_array)
 
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
 
void ** py_ref = nullptr
 

Protected Member Functions

virtual bool init_internal ()=0
 
virtual bool init_internal (GPUVertBuf *vbo)=0
 
virtual bool init_internal (const GPUTexture *src, int mip_offset, int layer_offset)=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 59 of file gpu_texture_private.hh.

Constructor & Destructor Documentation

◆ Texture()

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

Definition at line 25 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 182 of file gpu_texture.cc.

References ARRAY_SIZE, BLI_assert_msg, 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

◆ copy_to()

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

◆ depth_get()

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

Definition at line 142 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 ( ) const
inline

◆ format_flag_get()

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

Definition at line 221 of file gpu_texture_private.hh.

References format_flag_.

◆ format_get()

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

◆ generate_mipmap()

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

◆ gl_bindcode_get()

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

◆ height_get()

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

◆ init_1D()

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

◆ init_2D()

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

◆ init_3D()

bool blender::gpu::Texture::init_3D ( int  w,
int  h,
int  d,
int  mip_len,
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,
int  mip_len,
eGPUTextureFormat  format 
)

◆ init_internal() [1/3]

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

◆ init_internal() [2/3]

virtual bool blender::gpu::Texture::init_internal ( const GPUTexture src,
int  mip_offset,
int  layer_offset 
)
protectedpure virtual

◆ init_internal() [3/3]

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

◆ init_view()

bool blender::gpu::Texture::init_view ( const GPUTexture src,
eGPUTextureFormat  format,
int  mip_start,
int  mip_len,
int  layer_start,
int  layer_len,
bool  cube_as_array 
)

◆ layer_count()

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

◆ mip_count()

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

Definition at line 212 of file gpu_texture_private.hh.

References mipmaps_.

◆ 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 172 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

◆ 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 168 of file gpu_texture_private.hh.

References max_ii(), and w_.

◆ read()

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

◆ stencil_texture_mode_set()

virtual void blender::gpu::Texture::stencil_texture_mode_set ( bool  use_stencil)
pure virtual

◆ swizzle_set()

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

◆ type_get()

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

Definition at line 225 of file gpu_texture_private.hh.

References type_.

◆ update()

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

Definition at line 206 of file gpu_texture.cc.

References data, mip_size_get(), offset, 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, and blender::gpu::MTLTexture.

Referenced by update().

◆ width_get()

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

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 96 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

◆ name_

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

◆ py_ref

void** blender::gpu::Texture::py_ref = nullptr

Reference of a pointer that needs to be cleaned when deallocating the texture. Points to BPyGPUTexture.tex

Definition at line 72 of file gpu_texture_private.hh.

Referenced by ~Texture().

◆ refcount

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

Reference counter.

Definition at line 64 of file gpu_texture_private.hh.

◆ sampler_state

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

Internal Sampler state.

Definition at line 62 of file gpu_texture_private.hh.

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

◆ src_h

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

Definition at line 66 of file gpu_texture_private.hh.

◆ src_w

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

Width & Height (of source data), optional.

Definition at line 66 of file gpu_texture_private.hh.

◆ type_

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

◆ w_

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

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