Blender V5.0
blender::draw::PassSortable Class Reference

#include <draw_pass.hh>

Inherits blender::draw::detail::Pass< command::DrawMultiBuf >.

Public Member Functions

 PassSortable (const char *name_)
void init ()
PassMain::Subsub (const char *name, float sorting_value)
std::string serialize (std::string line_prefix="") const
Public Member Functions inherited from blender::draw::detail::Pass< command::DrawMultiBuf >
 Pass (const char *name)
void init ()
Public Member Functions inherited from blender::draw::detail::PassBase< DrawCommandBufType >
 PassBase (const char *name, DrawCommandBufType &draw_command_buf, SubPassVector< PassBase< DrawCommandBufType > > &sub_passes, gpu::Shader *shader=nullptr)
void init ()
template<class U>
void bind_resources (U &resources)
void state_set (DRWState state, int clip_plane_count=0)
void state_stencil (uint8_t write_mask, uint8_t reference, uint8_t compare_mask)
void shader_set (gpu::Shader *shader)
void framebuffer_set (gpu::FrameBuffer **framebuffer)
void subpass_transition (GPUAttachmentState depth_attachment, Span< GPUAttachmentState > color_attachments)
void material_set (Manager &manager, GPUMaterial *material, bool deferred_texture_loading=false)
void clear_color (float4 color)
void clear_depth (float depth)
void clear_stencil (uint8_t stencil)
void clear_depth_stencil (float depth, uint8_t stencil)
void clear_color_depth_stencil (float4 color, float depth, uint8_t stencil)
void draw (gpu::Batch *batch, uint instance_len=-1, uint vertex_len=-1, uint vertex_first=-1, ResourceIndexRange res_index={}, uint custom_id=0)
void draw (gpu::Batch *batch, ResourceIndexRange res_index, uint custom_id=0)
void draw_procedural (GPUPrimType primitive, uint instance_len, uint vertex_len, uint vertex_first=-1, ResourceIndexRange res_index={}, uint custom_id=0)
void draw_expand (gpu::Batch *batch, GPUPrimType primitive_type, uint primitive_len, uint instance_len, uint vertex_len, uint vertex_first, ResourceIndexRange res_index={}, uint custom_id=0)
void draw_expand (gpu::Batch *batch, GPUPrimType primitive_type, uint primitive_len, uint instance_len, ResourceIndexRange res_index={}, uint custom_id=0)
void draw_indirect (gpu::Batch *batch, StorageBuffer< DrawCommand, true > &indirect_buffer, ResourceIndex res_index={0})
void draw_procedural_indirect (GPUPrimType primitive, StorageBuffer< DrawCommand, true > &indirect_buffer, ResourceIndex res_index={0})
void dispatch (int group_len)
void dispatch (int2 group_len)
void dispatch (int3 group_len)
void dispatch (int3 *group_len)
void dispatch (StorageBuffer< DispatchCommand > &indirect_buffer)
void barrier (GPUBarrier type)
void push_constant (const char *name, const float &data)
void push_constant (const char *name, const float2 &data)
void push_constant (const char *name, const float3 &data)
void push_constant (const char *name, const float4 &data)
void push_constant (const char *name, const int &data)
void push_constant (const char *name, const int2 &data)
void push_constant (const char *name, const int3 &data)
void push_constant (const char *name, const int4 &data)
void push_constant (const char *name, const bool &data)
void push_constant (const char *name, const float4x4 &data)
void push_constant (const char *name, const float *data, int array_len=1)
void push_constant (const char *name, const float2 *data, int array_len=1)
void push_constant (const char *name, const float3 *data, int array_len=1)
void push_constant (const char *name, const float4 *data, int array_len=1)
void push_constant (const char *name, const int *data, int array_len=1)
void push_constant (const char *name, const int2 *data, int array_len=1)
void push_constant (const char *name, const int3 *data, int array_len=1)
void push_constant (const char *name, const int4 *data, int array_len=1)
void push_constant (const char *name, const float4x4 *data)
bool is_empty () const
PassBase< DrawCommandBufType > & sub (const char *name)
void clear_multi (Span< float4 > colors)
std::string serialize (std::string line_prefix="") const
void bind_image (const char *name, gpu::Texture *image)
void bind_image (const char *name, gpu::Texture **image)
void bind_image (int slot, gpu::Texture *image)
void bind_image (int slot, gpu::Texture **image)
void bind_texture (const char *name, gpu::Texture *texture, GPUSamplerState state=sampler_auto)
void bind_texture (const char *name, gpu::Texture **texture, GPUSamplerState state=sampler_auto)
void bind_texture (const char *name, gpu::VertBuf *buffer)
void bind_texture (const char *name, gpu::VertBuf **buffer)
void bind_texture (const char *name, gpu::VertBufPtr &buffer)
void bind_texture (int slot, gpu::Texture *texture, GPUSamplerState state=sampler_auto)
void bind_texture (int slot, gpu::Texture **texture, GPUSamplerState state=sampler_auto)
void bind_texture (int slot, gpu::VertBuf *buffer)
void bind_texture (int slot, gpu::VertBuf **buffer)
void bind_texture (int slot, gpu::VertBufPtr &buffer)
void bind_ssbo (const char *name, gpu::StorageBuf *buffer)
void bind_ssbo (const char *name, gpu::StorageBuf **buffer)
void bind_ssbo (int slot, gpu::StorageBuf *buffer)
void bind_ssbo (int slot, gpu::StorageBuf **buffer)
void bind_ssbo (const char *name, gpu::UniformBuf *buffer)
void bind_ssbo (const char *name, gpu::UniformBuf **buffer)
void bind_ssbo (int slot, gpu::UniformBuf *buffer)
void bind_ssbo (int slot, gpu::UniformBuf **buffer)
void bind_ssbo (const char *name, gpu::VertBuf *buffer)
void bind_ssbo (const char *name, gpu::VertBuf **buffer)
void bind_ssbo (const char *name, gpu::VertBufPtr &buffer)
void bind_ssbo (int slot, gpu::VertBuf *buffer)
void bind_ssbo (int slot, gpu::VertBuf **buffer)
void bind_ssbo (int slot, gpu::VertBufPtr &buffer)
void bind_ssbo (const char *name, gpu::IndexBuf *buffer)
void bind_ssbo (const char *name, gpu::IndexBuf **buffer)
void bind_ssbo (int slot, gpu::IndexBuf *buffer)
void bind_ssbo (int slot, gpu::IndexBuf **buffer)
void bind_ubo (const char *name, gpu::UniformBuf *buffer)
void bind_ubo (const char *name, gpu::UniformBuf **buffer)
void bind_ubo (int slot, gpu::UniformBuf *buffer)
void bind_ubo (int slot, gpu::UniformBuf **buffer)
void specialize_constant (gpu::Shader *shader, const char *name, const float &data)
void specialize_constant (gpu::Shader *shader, const char *name, const int &data)
void specialize_constant (gpu::Shader *shader, const char *name, const uint &data)
void specialize_constant (gpu::Shader *shader, const char *name, const bool &data)
void specialize_constant (gpu::Shader *shader, const char *name, const float *data)
void specialize_constant (gpu::Shader *shader, const char *name, const int *data)
void specialize_constant (gpu::Shader *shader, const char *name, const uint *data)
void specialize_constant (gpu::Shader *shader, const char *name, const bool *data)

Protected Member Functions

void sort ()
Protected Member Functions inherited from blender::draw::detail::PassBase< DrawCommandBufType >
bool has_generated_commands () const
void clear (GPUFrameBufferBits planes, float4 color, float depth, uint8_t stencil)
gpu::Batch * procedural_batch_get (GPUPrimType primitive)
command::Undeterminedcreate_command (command::Type type)
void warm_shader_specialization (command::RecordingState &state) const
void submit (command::RecordingState &state) const
int push_constant_offset (const char *name)

Additional Inherited Members

Public Types inherited from blender::draw::detail::Pass< command::DrawMultiBuf >
using Sub
Public Attributes inherited from blender::draw::detail::PassBase< DrawCommandBufType >
const char * debug_name
bool use_custom_ids
Protected Attributes inherited from blender::draw::detail::PassBase< DrawCommandBufType >
Vector< command::Header, 0 > headers_
Vector< command::Undetermined, 0 > commands_
DrawCommandBufType & draw_commands_buf_
SubPassVector< PassBase< DrawCommandBufType > > & sub_passes_
gpu::Shadershader_
uint64_t manager_fingerprint_ = 0
uint64_t view_fingerprint_ = 0
bool is_empty_ = true

Detailed Description

Normal pass type. No visibility or draw-call optimization. Main pass type. Optimized for many draw calls and sub-pass.

IMPORTANT: To be used only for passes containing lots of draw calls since it has a potentially high overhead due to batching and culling optimizations. Special pass type for rendering transparent objects. The base level can only be composed of sub passes that will be ordered by a sorting value.

Definition at line 549 of file draw_pass.hh.

Constructor & Destructor Documentation

◆ PassSortable()

blender::draw::PassSortable::PassSortable ( const char * name_)
inline

Definition at line 559 of file draw_pass.hh.

Referenced by serialize().

Member Function Documentation

◆ init()

void blender::draw::PassSortable::init ( )
inline

◆ serialize()

std::string blender::draw::PassSortable::serialize ( std::string line_prefix = "") const
inline

◆ sort()

void blender::draw::PassSortable::sort ( )
inlineprotected

◆ sub()


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