Blender V4.3
GPUSamplerState Struct Reference

#include <GPU_texture.hh>

Public Member Functions

void enable_filtering_flag (GPUSamplerFiltering filtering_flags)
 
void disable_filtering_flag (GPUSamplerFiltering filtering_flags)
 
void set_filtering_flag_from_test (GPUSamplerFiltering filtering_flags, bool test)
 
std::string to_string () const
 
bool operator== (GPUSamplerState const &rhs) const
 

Static Public Member Functions

static constexpr GPUSamplerState default_sampler ()
 
static constexpr GPUSamplerState internal_sampler ()
 
static constexpr GPUSamplerState icon_sampler ()
 
static constexpr GPUSamplerState compare_sampler ()
 

Public Attributes

GPUSamplerFiltering filtering: 8
 
GPUSamplerExtendMode extend_x: 4
 
GPUSamplerExtendMode extend_yz: 4
 
GPUSamplerCustomType custom_type: 8
 
GPUSamplerStateType type: 8
 

Detailed Description

The GPUSamplerState specifies the sampler state to bind a texture with.

When the state type is set to GPU_SAMPLER_STATE_TYPE_CUSTOM or GPU_SAMPLER_STATE_TYPE_INTERNAL, the rest of the members of the structure will be ignored. However, we can't turn this structure into a union, because various functions merely temporally change the state type and expect the rest of the members' values to be retained when the state type is changed back to GPU_SAMPLER_STATE_TYPE_PARAMETERS. For the instance, a function might do the following and expect the original sampler state of the texture to be retained after disabling comparison mode:

GPU_texture_compare_mode(texture, true); // Use the texture ... GPU_texture_compare_mode(texture, false);

Definition at line 174 of file GPU_texture.hh.

Member Function Documentation

◆ compare_sampler()

static constexpr GPUSamplerState GPUSamplerState::compare_sampler ( )
inlinestaticconstexpr

Constructs a special sampler state for depth comparison. See the documentation on GPU_SAMPLER_CUSTOM_COMPARE for more information.

GPU_SAMPLER_STATE_TYPE_CUSTOM is set in order to specify a custom sampler type, so the rest of the options before it are ignored and irrelevant, but they are set to sensible defaults in case comparison mode is turned off, in which case, the sampler state will become equivalent to GPUSamplerState::default_sampler().

Definition at line 252 of file GPU_texture.hh.

References GPU_SAMPLER_CUSTOM_COMPARE, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_FILTERING_DEFAULT, and GPU_SAMPLER_STATE_TYPE_CUSTOM.

Referenced by blender::gpu::VKSamplers::init().

◆ default_sampler()

static constexpr GPUSamplerState GPUSamplerState::default_sampler ( )
inlinestaticconstexpr

Constructs a sampler state with default filtering and extended extend in both x and y axis. See the documentation on GPU_SAMPLER_FILTERING_DEFAULT and GPU_SAMPLER_EXTEND_MODE_EXTEND for more information.

GPU_SAMPLER_STATE_TYPE_PARAMETERS is set in order to utilize the aforementioned parameters, so GPU_SAMPLER_CUSTOM_COMPARE is arbitrary, ignored, and irrelevant.

Definition at line 201 of file GPU_texture.hh.

References GPU_SAMPLER_CUSTOM_COMPARE, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_FILTERING_DEFAULT, and GPU_SAMPLER_STATE_TYPE_PARAMETERS.

Referenced by blender::eevee::PlanarProbeModule::bind_resources(), draw_tile(), DRW_shgroup_add_material_resources(), DRW_shgroup_buffer_texture(), DRW_shgroup_buffer_texture_ref(), drw_shgroup_init(), DRW_shgroup_storage_block_ex(), DRW_shgroup_storage_block_ref_ex(), DRW_shgroup_transform_feedback_create(), drw_shgroup_uniform(), DRW_shgroup_uniform_block_ex(), DRW_shgroup_uniform_block_ref_ex(), DRW_shgroup_uniform_image(), DRW_shgroup_uniform_image_ref(), DRW_shgroup_uniform_mat4_copy(), DRW_shgroup_vertex_buffer_ex(), DRW_shgroup_vertex_buffer_ref_ex(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::MTLContext::get_default_sampler_state(), gpencil_vfx_pixelize(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), blender::gpu::GLFrameBuffer::subpass_transition_impl(), blender::gpu::VKFrameBuffer::subpass_transition_impl(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::gpu::VKStateManager::texel_buffer_bind(), and blender::gpu::BindSpaceTextures::unbind().

◆ disable_filtering_flag()

void GPUSamplerState::disable_filtering_flag ( GPUSamplerFiltering filtering_flags)
inline

Disables the given filtering flags.

Definition at line 272 of file GPU_texture.hh.

References filtering.

Referenced by blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), and set_filtering_flag_from_test().

◆ enable_filtering_flag()

void GPUSamplerState::enable_filtering_flag ( GPUSamplerFiltering filtering_flags)
inline

Enables the given filtering flags.

Definition at line 264 of file GPU_texture.hh.

References filtering.

Referenced by set_filtering_flag_from_test().

◆ icon_sampler()

static constexpr GPUSamplerState GPUSamplerState::icon_sampler ( )
inlinestaticconstexpr

Constructs a special sampler state that can be used sampler icons. See the documentation on GPU_SAMPLER_CUSTOM_ICON for more information.

GPU_SAMPLER_STATE_TYPE_CUSTOM is set in order to specify a custom sampler type, so the rest of the options before it are arbitrary, ignored, and irrelevant.

Definition at line 234 of file GPU_texture.hh.

References GPU_SAMPLER_CUSTOM_ICON, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_FILTERING_DEFAULT, and GPU_SAMPLER_STATE_TYPE_CUSTOM.

Referenced by blender::gpu::VKSamplers::init().

◆ internal_sampler()

static constexpr GPUSamplerState GPUSamplerState::internal_sampler ( )
inlinestaticconstexpr

Constructs a sampler state that can be used to signal that the internal sampler of the texture should be used instead. See the documentation on GPU_SAMPLER_STATE_TYPE_INTERNAL for more information.

GPU_SAMPLER_STATE_TYPE_INTERNAL is set in order to signal the use of the internal sampler of the texture, so the rest of the options before it are arbitrary, ignored, and irrelevant.

Definition at line 218 of file GPU_texture.hh.

References GPU_SAMPLER_CUSTOM_COMPARE, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_FILTERING_DEFAULT, and GPU_SAMPLER_STATE_TYPE_INTERNAL.

Referenced by DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), gpencil_vfx_pixelize(), and GPU_color_band().

◆ operator==()

bool GPUSamplerState::operator== ( GPUSamplerState const & rhs) const
inline

Definition at line 381 of file GPU_texture.hh.

References custom_type, extend_x, extend_yz, filtering, and rhs.

◆ set_filtering_flag_from_test()

void GPUSamplerState::set_filtering_flag_from_test ( GPUSamplerFiltering filtering_flags,
bool test )
inline

Enables the given filtering flags if the given test is true, otherwise, disables the given filtering flags.

Definition at line 281 of file GPU_texture.hh.

References disable_filtering_flag(), and enable_filtering_flag().

Referenced by blender::workbench::ObjectState::ObjectState().

◆ to_string()

Member Data Documentation

◆ custom_type

◆ extend_x

◆ extend_yz

GPUSamplerExtendMode GPUSamplerState::extend_yz

Specifies how the texture will be extrapolated for out-of-bound texture sampling along both the y and z axis. There is no individual control for the z axis because 3D textures have limited use, and when used, their extend mode is typically the same for all axis.

Definition at line 187 of file GPU_texture.hh.

Referenced by blender::gpu::VKSampler::create(), blender::gpu::VKSamplers::get(), blender::gpu::GLTexture::get_sampler(), blender::gpu::MTLContext::get_sampler_from_state(), blender::gpu::VKSamplers::init(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), blender::workbench::ObjectState::ObjectState(), blender::gpu::MTLSamplerState::operator uint(), blender::gpu::MTLSamplerState::operator uint64_t(), operator==(), and to_string().

◆ filtering

◆ type


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