|
Blender V5.0
|
#include <draw_pass.hh>
Inherited by blender::draw::detail::Pass< command::DrawCommandBuf >, blender::draw::detail::Pass< command::DrawMultiBuf >, and blender::draw::detail::Pass< DrawCommandBufType >.
Public Member Functions | |
| 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) |
State Implementation | |
| 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) |
Clear Implementation | |
| 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) |
Draw calls | |
| 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) |
Indirect draw calls | |
| 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}) |
Compute Dispatch Implementation | |
| 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) |
Barrier Implementation | |
| void | barrier (GPUBarrier type) |
Push Constant Implementation | |
| 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) |
Public Attributes | |
| const char * | debug_name |
| bool | use_custom_ids |
Protected Member Functions | |
| bool | has_generated_commands () const |
Protected Attributes | |
| Vector< command::Header, 0 > | headers_ |
| Vector< command::Undetermined, 0 > | commands_ |
| DrawCommandBufType & | draw_commands_buf_ |
| SubPassVector< PassBase< DrawCommandBufType > > & | sub_passes_ |
| gpu::Shader * | shader_ |
| uint64_t | manager_fingerprint_ = 0 |
| uint64_t | view_fingerprint_ = 0 |
| bool | is_empty_ = true |
Friends | |
| std::ostream & | operator<< (std::ostream &stream, const PassBase &pass) |
PassBase Implementation | |
| 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 | clear (GPUFrameBufferBits planes, float4 color, float depth, uint8_t stencil) |
| gpu::Batch * | procedural_batch_get (GPUPrimType primitive) |
| command::Undetermined & | create_command (command::Type type) |
| void | warm_shader_specialization (command::RecordingState &state) const |
| void | submit (command::RecordingState &state) const |
Resource bind Implementation | |
| 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) |
| int | push_constant_offset (const char *name) |
Public API of a draw pass.
| DrawCommandBufType | Type of command buffer used to create the draw calls. |
Definition at line 128 of file draw_pass.hh.
|
inline |
Definition at line 157 of file draw_pass.hh.
References debug_name, draw_commands_buf_, false, name, PassBase(), shader_, sub_passes_, and use_custom_ids.
Referenced by init(), operator<<, blender::draw::detail::Pass< command::DrawCommandBuf >::Pass(), PassBase(), sub(), and blender::draw::PassSortable::sub().
|
inline |
Record a barrier call to synchronize arbitrary load/store operation between draw calls.
Definition at line 1078 of file draw_pass.hh.
References blender::draw::command::Barrier, barrier(), and create_command().
Referenced by barrier(), blender::eevee::SphereProbeModule::begin_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), blender::draw::CurvesModule::evaluate_curve_length_intercept(), blender::eevee::VelocityModule::geometry_steps_fill(), blender::eevee::Precompute::Precompute(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::VolumeLayer::sync(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_lib(), blender::draw::test_draw_curves_topology(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::draw::TestAlloc::TestAlloc(), blender::draw::TestDefrag::TestDefrag(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1405 of file draw_pass.hh.
References bind_image(), BLI_assert, GPU_shader_get_sampler_binding(), name, and shader_.
|
inline |
Bind a shader resource.
Reference versions are to be used when the resource might be resize / realloc or even change between the time it is referenced and the time it is dereferenced for drawing.
IMPORTANT: Will keep a reference to the data and dereference it upon drawing. Make sure data still alive until pass submission.
Definition at line 1286 of file draw_pass.hh.
References bind_image(), BLI_assert, GPU_shader_get_sampler_binding(), name, and shader_.
Referenced by blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::eevee::SphereProbeModule::begin_sync(), bind_image(), bind_image(), bind_image(), bind_image(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::eevee::Precompute::Precompute(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::WorldPipeline::sync(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_tilemap_amend(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1431 of file draw_pass.hh.
References blender::draw::as_image(), bind_image(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1378 of file draw_pass.hh.
References blender::draw::as_image(), bind_image(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Custom resource binding. Syntactic sugar to avoid calling resources.bind_resources(pass) which is semantically less pleasing. U type must have a bind_resources<Pass<T> &pass>() method.
Definition at line 449 of file draw_pass.hh.
References U.
Referenced by blender::eevee::DeferredProbePipeline::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::eevee::ForwardPipeline::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::VolumeLayer::sync(), and blender::eevee::WorldPipeline::sync().
|
inline |
Definition at line 1247 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1241 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1384 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1205 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
Referenced by blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), blender::draw::overlay::ShapeInstanceBuf< ExtraInstanceData >::end_sync(), blender::draw::overlay::ShapeInstanceBuf< ExtraInstanceData >::end_sync(), blender::draw::overlay::VertexPrimitiveBuf::end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), blender::draw::CurvesModule::evaluate_curve_length_intercept(), blender::draw::CurvesModule::evaluate_topology_indirection(), blender::eevee::VelocityModule::geometry_steps_fill(), blender::workbench::MeshPass::init_pass(), blender::draw::select::SelectBuf::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::eevee::IrradianceBake::surfels_create(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::WorldPipeline::sync(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_lib(), blender::draw::test_draw_curves_topology(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_page_mask_ex(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::draw::TestAlloc::TestAlloc(), and blender::draw::TestDefrag::TestDefrag().
|
inline |
Definition at line 1217 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1211 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1229 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1223 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1235 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, GPU_shader_get_ssbo_binding(), name, and shader_.
|
inline |
Definition at line 1340 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind::IndexAsStorageBuf, and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1333 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind::IndexAsStorageBuf, and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1411 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1292 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1305 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind, and blender::draw::command::ResourceBind::UniformAsStorageBuf.
|
inline |
Definition at line 1298 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind, and blender::draw::command::ResourceBind::UniformAsStorageBuf.
|
inline |
Definition at line 1319 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind, and blender::draw::command::ResourceBind::VertexAsStorageBuf.
|
inline |
Definition at line 1312 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind, and blender::draw::command::ResourceBind::VertexAsStorageBuf.
|
inline |
Definition at line 1326 of file draw_pass.hh.
References bind_ssbo(), BLI_assert, create_command(), blender::draw::command::ResourceBind, and blender::draw::command::ResourceBind::VertexAsStorageBuf.
|
inline |
Definition at line 1397 of file draw_pass.hh.
References bind_texture(), BLI_assert, GPU_shader_get_sampler_binding(), name, shader_, state, and texture().
|
inline |
Definition at line 1260 of file draw_pass.hh.
References bind_texture(), BLI_assert, GPU_shader_get_sampler_binding(), name, shader_, state, and texture().
Referenced by blender::draw::gpencil::Instance::begin_sync(), blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::Lattices::begin_sync(), blender::draw::overlay::Meshes::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), blender::eevee::DeferredProbePipeline::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), blender::draw::overlay::GreasePencil::draw_grease_pencil(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::workbench::MeshPass::get_subpass(), blender::workbench::MeshPass::init_pass(), material_set(), blender::draw::overlay::Fluids::object_sync(), blender::workbench::VolumePass::object_sync_modifier(), blender::workbench::VolumePass::object_sync_volume(), blender::workbench::CavityEffect::setup_resolve_pass(), blender::eevee::ForwardPipeline::sync(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::VolumeLayer::sync(), blender::eevee::WorldPipeline::sync(), blender::draw::test_draw_curves_lib(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_draw_visibility(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1274 of file draw_pass.hh.
References bind_texture(), BLI_assert, GPU_shader_get_sampler_binding(), name, and shader_.
|
inline |
Definition at line 1268 of file draw_pass.hh.
References bind_texture(), BLI_assert, GPU_shader_get_sampler_binding(), name, and shader_.
|
inline |
Definition at line 1280 of file draw_pass.hh.
References bind_texture(), BLI_assert, GPU_shader_get_sampler_binding(), name, and shader_.
|
inline |
Definition at line 1425 of file draw_pass.hh.
References bind_texture(), BLI_assert, create_command(), blender::draw::command::ResourceBind, state, and texture().
|
inline |
Definition at line 1354 of file draw_pass.hh.
References bind_texture(), BLI_assert, create_command(), blender::draw::command::ResourceBind, state, and texture().
|
inline |
Definition at line 1366 of file draw_pass.hh.
References bind_texture(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1360 of file draw_pass.hh.
References bind_texture(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1372 of file draw_pass.hh.
References bind_texture(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1390 of file draw_pass.hh.
References bind_ubo(), BLI_assert, GPU_shader_get_ubo_binding(), name, and shader_.
|
inline |
Definition at line 1253 of file draw_pass.hh.
References bind_ubo(), BLI_assert, GPU_shader_get_ubo_binding(), name, and shader_.
Referenced by blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::Cameras::begin_sync(), blender::draw::overlay::Empties::begin_sync(), blender::draw::overlay::Meshes::begin_sync(), blender::draw::overlay::MotionPath::begin_sync(), bind_ubo(), bind_ubo(), bind_ubo(), bind_ubo(), blender::draw::overlay::Empties::end_sync(), blender::workbench::MeshPass::init_pass(), material_set(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::workbench::CavityEffect::setup_resolve_pass(), blender::eevee::MotionBlurModule::sync(), blender::workbench::ShadowPass::sync(), blender::draw::test_draw_curves_lib(), and blender::draw::test_draw_pass_all_commands().
|
inline |
Definition at line 1418 of file draw_pass.hh.
References bind_ubo(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inline |
Definition at line 1347 of file draw_pass.hh.
References bind_ubo(), BLI_assert, create_command(), and blender::draw::command::ResourceBind.
|
inlineprotected |
Definition at line 658 of file draw_pass.hh.
References blender::draw::command::Clear, clear(), and create_command().
Referenced by clear().
|
inline |
Clear the current frame-buffer.
Definition at line 1046 of file draw_pass.hh.
References clear(), clear_color(), and GPU_COLOR_BIT.
Referenced by clear_color().
|
inline |
Definition at line 1067 of file draw_pass.hh.
References clear(), clear_color_depth_stencil(), GPU_COLOR_BIT, GPU_DEPTH_BIT, and GPU_STENCIL_BIT.
Referenced by clear_color_depth_stencil(), and blender::draw::test_draw_pass_all_commands().
|
inline |
Definition at line 1051 of file draw_pass.hh.
References clear(), clear_depth(), and GPU_DEPTH_BIT.
Referenced by clear_depth().
|
inline |
Definition at line 1061 of file draw_pass.hh.
References clear(), clear_depth_stencil(), GPU_DEPTH_BIT, and GPU_STENCIL_BIT.
Referenced by clear_depth_stencil().
|
inline |
Clear each color attachment with different values. Span needs to be appropriately sized. IMPORTANT: The source is dereference on pass submission.
Definition at line 666 of file draw_pass.hh.
References clear_multi(), blender::draw::command::ClearMulti, create_command(), blender::Span< T >::data(), and blender::Span< T >::size().
Referenced by clear_multi().
|
inline |
Definition at line 1056 of file draw_pass.hh.
References clear(), clear_stencil(), and GPU_STENCIL_BIT.
Referenced by clear_stencil(), and blender::eevee::VolumeLayer::sync().
|
inlineprotected |
Return a new command recorded with the given type.
Definition at line 634 of file draw_pass.hh.
References blender::draw::command::Barrier, BLI_assert_msg, blender::draw::command::Clear, blender::draw::command::ClearMulti, commands_, create_command(), blender::draw::command::Dispatch, blender::draw::command::DispatchIndirect, blender::draw::command::Draw, blender::draw::command::DrawIndirect, ELEM, has_generated_commands(), headers_, and is_empty_.
Referenced by barrier(), bind_image(), bind_image(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_ubo(), bind_ubo(), clear(), clear_multi(), create_command(), dispatch(), dispatch(), dispatch(), dispatch(), dispatch(), draw_indirect(), framebuffer_set(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), shader_set(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), state_set(), state_stencil(), and subpass_transition().
|
inline |
Record a compute dispatch call.
Definition at line 1009 of file draw_pass.hh.
References BLI_assert, create_command(), blender::draw::command::Dispatch, dispatch(), and shader_.
Referenced by blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), dispatch(), dispatch(), dispatch(), dispatch(), dispatch(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::eevee::VelocityModule::geometry_steps_fill(), blender::eevee::Precompute::Precompute(), blender::eevee::IrradianceBake::surfels_create(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_topology(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_page_mask_ex(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::draw::TestAlloc::TestAlloc(), blender::draw::TestDefrag::TestDefrag(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1015 of file draw_pass.hh.
References BLI_assert, create_command(), blender::draw::command::Dispatch, dispatch(), and shader_.
|
inline |
Definition at line 1027 of file draw_pass.hh.
References BLI_assert, create_command(), blender::draw::command::Dispatch, dispatch(), and shader_.
|
inline |
Definition at line 1021 of file draw_pass.hh.
References BLI_assert, create_command(), blender::draw::command::Dispatch, dispatch(), and shader_.
|
inline |
Definition at line 1034 of file draw_pass.hh.
References BLI_assert, create_command(), dispatch(), blender::draw::command::DispatchIndirect, and shader_.
|
inline |
Shorter version for the common case.
Definition at line 919 of file draw_pass.hh.
|
inline |
Record a draw call.
Definition at line 893 of file draw_pass.hh.
References batch, BLI_assert, commands_, draw(), draw_commands_buf_, GPU_PRIM_NONE, headers_, is_empty_, and shader_.
Referenced by draw(), draw(), blender::draw::overlay::GreasePencil::draw_grease_pencil(), draw_procedural(), blender::draw::edit_select::Instance::edit_mesh_sync(), blender::draw::overlay::ShapeInstanceBuf< ExtraInstanceData >::end_sync(), blender::eevee::geometry_call(), init(), blender::draw::external::Prepass::object_sync(), blender::draw::overlay::Prepass::object_sync(), blender::draw::overlay::Wireframe::object_sync_ex(), blender::eevee::SyncModule::sync_curves(), blender::eevee::SyncModule::sync_pointcloud(), blender::eevee::SyncModule::sync_volume(), blender::draw::test_draw_curves_lib(), and blender::eevee::volume_call().
|
inline |
Shorter version for the common case.
Definition at line 952 of file draw_pass.hh.
References batch, and draw_expand().
|
inline |
Record a regular draw call but replaces each original primitive by a set of the given primitive. Geometry attributes are still sourced from a gpu::Batch, however, the attributes indexing needs to be done manually inside the shader.
Definition at line 925 of file draw_pass.hh.
References batch, BLI_assert, commands_, draw_commands_buf_, draw_expand(), headers_, is_empty_, and shader_.
Referenced by blender::draw::overlay::Cursor::begin_sync(), draw_expand(), draw_expand(), blender::draw::overlay::ShapeInstanceBuf< ExtraInstanceData >::end_sync(), blender::draw::overlay::Prepass::object_sync(), and blender::workbench::ShadowPass::object_sync().
|
inline |
Indirect variants.
Definition at line 986 of file draw_pass.hh.
References batch, BLI_assert, create_command(), draw_indirect(), blender::draw::command::DrawIndirect, and shader_.
Referenced by draw_indirect(), and draw_procedural_indirect().
|
inline |
Record a procedural draw call. Geometry is NOT source from a gpu::Batch.
Definition at line 964 of file draw_pass.hh.
References draw(), draw_procedural(), and procedural_batch_get().
Referenced by blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::draw::gpencil::Instance::begin_sync(), blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), draw_procedural(), blender::draw::overlay::VertexPrimitiveBuf::end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::draw::overlay::Fluids::object_sync(), blender::eevee::WorldPipeline::sync(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_draw_pass_multi_draw(), blender::draw::test_draw_pass_simple_draw(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_submit_only(), and blender::draw::test_draw_visibility().
|
inline |
Definition at line 995 of file draw_pass.hh.
References draw_indirect(), draw_procedural_indirect(), and procedural_batch_get().
Referenced by draw_procedural_indirect(), and blender::eevee::ShadowPipeline::sync().
|
inline |
Bind a framebuffer. This is equivalent to a deferred GPU_framebuffer_bind() call.
Definition at line 1112 of file draw_pass.hh.
References create_command(), framebuffer_set(), and blender::draw::command::FramebufferBind.
Referenced by blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::ShadowModule::end_sync(), framebuffer_set(), blender::draw::test_draw_curves_lib(), and blender::draw::test_draw_pass_all_commands().
|
inlineprotected |
Definition at line 488 of file draw_pass.hh.
References manager_fingerprint_.
Referenced by create_command(), and blender::draw::Manager::submit().
| void blender::draw::detail::PassBase< DrawCommandBufType >::init | ( | ) |
Reset the pass command pool.
References batch, draw(), name, PassBase(), and state.
|
inline |
Returns true if the pass and its sub-passes don't contain any draw or dispatch command.
Definition at line 616 of file draw_pass.hh.
References headers_, is_empty(), is_empty_, sub_passes_, and blender::draw::command::SubPass.
Referenced by blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), is_empty(), blender::draw::Manager::submit(), blender::draw::Manager::submit(), blender::draw::Manager::submit(), blender::draw::Manager::submit(), blender::draw::Manager::submit_only(), blender::draw::Manager::warm_shader_specialization(), and blender::draw::Manager::warm_shader_specialization().
|
inline |
Bind a material shader along with its associated resources. Any following bind() or push_constant() call will use its interface. IMPORTANT: Assumes material is compiled and can be used (no compilation error).
Definition at line 1137 of file draw_pass.hh.
References blender::draw::Manager::acquire_texture(), bind_texture(), bind_ubo(), BKE_image_get_gpu_material_texture(), BKE_image_get_gpu_material_texture_try(), GPU_material_get_pass(), GPU_material_textures(), GPU_material_uniform_buffer_get(), GPU_NODE_TREE_UBO_SLOT, GPU_pass_shader_get(), material_set(), blender::gpu::Texture::sampler_state, shader_set(), ImageGPUTextures::texture, and ImageGPUTextures::tile_mapping.
Referenced by blender::eevee::VolumeLayer::material_add(), material_set(), blender::eevee::ForwardPipeline::material_transparent_add(), blender::eevee::VolumeLayer::occupancy_add(), blender::eevee::ForwardPipeline::prepass_transparent_add(), and blender::eevee::WorldPipeline::sync().
|
inlineprotected |
Definition at line 672 of file draw_pass.hh.
References BLI_assert_unreachable, GPU_batch_procedural_lines_get(), GPU_batch_procedural_points_get(), GPU_batch_procedural_triangle_strips_get(), GPU_batch_procedural_triangles_get(), GPU_PRIM_LINES, GPU_PRIM_POINTS, GPU_PRIM_TRI_STRIP, GPU_PRIM_TRIS, and procedural_batch_get().
Referenced by draw_procedural(), draw_procedural_indirect(), and procedural_batch_get().
|
inline |
Definition at line 1483 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Update a shader constant.
Reference versions are to be used when the resource might change between the time it is referenced and the time it is dereferenced for drawing.
IMPORTANT: Will keep a reference to the data and dereference it upon drawing. Make sure data still alive until pass submission.
Definition at line 1443 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
Referenced by blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::draw::gpencil::Instance::begin_sync(), blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::Cameras::begin_sync(), blender::draw::overlay::Cursor::begin_sync(), blender::draw::overlay::Empties::begin_sync(), blender::draw::overlay::Fade::begin_sync(), blender::draw::overlay::Meshes::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), blender::draw::overlay::GreasePencil::draw_grease_pencil(), blender::draw::edit_select::Instance::edit_mesh_sync(), blender::draw::overlay::VertexPrimitiveBuf::end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), blender::draw::CurvesModule::evaluate_curve_length_intercept(), blender::draw::CurvesModule::evaluate_topology_indirection(), blender::eevee::VelocityModule::geometry_steps_fill(), blender::workbench::MeshPass::get_subpass(), blender::draw::overlay::Fluids::object_sync(), blender::workbench::VolumePass::object_sync_modifier(), blender::workbench::VolumePass::object_sync_volume(), blender::eevee::VolumeLayer::occupancy_add(), blender::eevee::Precompute::Precompute(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), blender::eevee::CapturePipeline::surface_material_add(), blender::eevee::IrradianceBake::surfels_create(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::WorldPipeline::sync(), blender::eevee::SyncModule::sync_pointcloud(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_topology(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_draw_pass_sub_ordering(), blender::draw::test_eevee_shadow_page_mask_ex(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1489 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1448 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1495 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1453 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1501 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1458 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1507 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1541 of file draw_pass.hh.
References blender::draw::command::PushConstant::array_len, blender::draw::command::PushConstant::comp_len, create_command(), data, blender::draw::command::PushConstant::float4_value, blender::draw::command::PushConstant::FloatValue, blender::draw::command::PushConstant::location, name, blender::draw::command::None, blender::draw::command::Undetermined::push_constant, push_constant(), push_constant_offset(), blender::draw::command::PushConstant, and blender::draw::command::PushConstant::type.
|
inline |
Definition at line 1536 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1463 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1513 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1468 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1519 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1473 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1525 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1478 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inline |
Definition at line 1531 of file draw_pass.hh.
References create_command(), data, name, push_constant(), push_constant_offset(), and blender::draw::command::PushConstant.
|
inlineprotected |
Internal Helpers
Definition at line 1200 of file draw_pass.hh.
References GPU_shader_get_uniform(), name, push_constant_offset(), and shader_.
Referenced by push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), push_constant(), and push_constant_offset().
| std::string blender::draw::detail::PassBase< T >::serialize | ( | std::string | line_prefix = "" | ) | const |
Turn the pass into a string for inspection.
Definition at line 823 of file draw_pass.hh.
References blender::draw::command::Barrier, blender::draw::command::Clear, blender::draw::command::ClearMulti, commands_, debug_name, blender::draw::command::Dispatch, blender::draw::command::DispatchIndirect, blender::draw::command::Draw, blender::draw::command::DrawIndirect, blender::draw::command::DrawMulti, blender::draw::command::FramebufferBind, headers_, blender::draw::command::None, blender::draw::command::PushConstant, blender::draw::command::ResourceBind, serialize(), blender::draw::command::ShaderBind, blender::draw::command::StateSet, blender::draw::command::StencilSet, sub_passes_, blender::draw::command::SubPass, and blender::draw::command::SubPassTransition.
Referenced by operator<<, serialize(), blender::draw::PassSortable::serialize(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_draw_pass_multi_draw(), blender::draw::test_draw_pass_simple_draw(), and blender::draw::test_draw_pass_sub_ordering().
|
inline |
Bind a shader. Any following bind() or push_constant() call will use its interface.
Definition at line 1106 of file draw_pass.hh.
References create_command(), shader_, shader_set(), and blender::draw::command::ShaderBind.
Referenced by blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::draw::gpencil::Instance::begin_sync(), blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::Cameras::begin_sync(), blender::draw::overlay::Cursor::begin_sync(), blender::draw::overlay::Empties::begin_sync(), blender::draw::overlay::Lattices::begin_sync(), blender::draw::overlay::Meshes::begin_sync(), blender::draw::overlay::MotionPath::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), blender::draw::overlay::Cameras::end_sync(), blender::draw::overlay::Empties::end_sync(), blender::draw::overlay::LightProbes::end_sync(), blender::draw::overlay::Lights::end_sync(), blender::draw::overlay::Relations::end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), blender::draw::CurvesModule::evaluate_curve_length_intercept(), blender::draw::CurvesModule::evaluate_topology_indirection(), blender::eevee::VelocityModule::geometry_steps_fill(), material_set(), blender::workbench::VolumePass::object_sync_modifier(), blender::workbench::VolumePass::object_sync_volume(), blender::eevee::Precompute::Precompute(), shader_set(), blender::eevee::CapturePipeline::surface_material_add(), blender::eevee::IrradianceBake::surfels_create(), blender::eevee::HiZBuffer::sync(), blender::eevee::IrradianceBake::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::workbench::ShadowPass::sync(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_lib(), blender::draw::test_draw_curves_topology(), blender::draw::test_draw_pass_all_commands(), blender::draw::test_draw_pass_multi_draw(), blender::draw::test_draw_pass_simple_draw(), blender::draw::test_draw_pass_sub_ordering(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_submit_only(), blender::draw::test_draw_visibility(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_page_mask_ex(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::draw::TestAlloc::TestAlloc(), blender::draw::TestDefrag::TestDefrag(), and blender::eevee::Film::write_viewport_compositor_passes().
|
inline |
Definition at line 1594 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Definition at line 1630 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Update a shader specialization constant.
IMPORTANT: Non-specialized constants can have undefined values. Specialize every constant before binding a shader.
Reference versions are to be used when the resource might change between the time it is referenced and the time it is dereferenced for drawing.
IMPORTANT: Will keep a reference to the data and dereference it upon drawing. Make sure data still alive until pass submission.
Definition at line 1585 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
Referenced by blender::eevee::SphereProbeModule::begin_sync(), blender::eevee::DeferredLayer::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), specialize_constant(), blender::eevee::HiZBuffer::sync(), blender::eevee::RayTraceModule::sync(), blender::draw::test_draw_curves_interpolate_attributes(), and blender::draw::test_draw_curves_interpolate_position().
|
inline |
Definition at line 1621 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Definition at line 1567 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Definition at line 1603 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Definition at line 1576 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Definition at line 1612 of file draw_pass.hh.
References create_command(), GPU_shader_get_constant(), specialize_constant(), and blender::draw::command::SpecializeConstant.
|
inline |
Changes the fixed function pipeline state. Starts as DRW_STATE_NO_DRAW at the start of a Pass submission. SubPass inherit previous pass state.
IMPORTANT: This does not set the stencil mask/reference values. Add a call to state_stencil() to ensure correct behavior of stencil aware draws.
TODO(fclem): clip_plane_count should be part of shader state.
Definition at line 1089 of file draw_pass.hh.
References create_command(), DRW_STATE_CLIP_PLANES, DRW_STATE_PROGRAM_POINT_SIZE, state, state_set(), and blender::draw::command::StateSet.
Referenced by blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::draw::gpencil::Instance::begin_sync(), blender::draw::overlay::AntiAliasing::begin_sync(), blender::draw::overlay::Cameras::begin_sync(), blender::draw::overlay::Cursor::begin_sync(), blender::draw::overlay::Empties::begin_sync(), blender::draw::overlay::Meshes::begin_sync(), blender::draw::overlay::MotionPath::begin_sync(), blender::draw::overlay::XrayFade::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::image_engine::ScreenSpaceDrawingMode::begin_sync(), blender::draw::overlay::Axes::end_sync(), blender::draw::overlay::Cameras::end_sync(), blender::draw::overlay::Empties::end_sync(), blender::draw::overlay::LightProbes::end_sync(), blender::draw::overlay::Lights::end_sync(), blender::draw::overlay::Relations::end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::PlanarProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::eevee::VelocityModule::geometry_steps_fill(), blender::workbench::MeshPass::init_pass(), blender::eevee::ForwardPipeline::material_transparent_add(), blender::eevee::ForwardPipeline::prepass_transparent_add(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), blender::draw::select::SelectMap::select_bind(), state_set(), blender::eevee::ShadowPipeline::sync(), blender::eevee::VolumeLayer::sync(), blender::eevee::WorldPipeline::sync(), and blender::draw::test_draw_pass_all_commands().
|
inline |
Reminders:
This will modify the stencil state until another call to this function. If not specified before any draw-call, these states will be undefined.
For more information see: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOpState.html
Definition at line 1101 of file draw_pass.hh.
References create_command(), state_stencil(), and blender::draw::command::StencilSet.
Referenced by blender::eevee::ShadowModule::begin_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredLayer::material_add(), state_stencil(), blender::eevee::VolumeLayer::sync(), and blender::draw::test_draw_pass_all_commands().
|
inline |
Create a sub-pass inside this pass.
Definition at line 690 of file draw_pass.hh.
References draw_commands_buf_, headers_, name, PassBase(), shader_, sub(), sub_passes_, and blender::draw::command::SubPass.
Referenced by blender::draw::overlay::Empties::begin_sync(), blender::draw::overlay::MotionPath::begin_sync(), blender::eevee::DeferredProbePipeline::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::draw::CurvesModule::evaluate_curve_attribute(), blender::workbench::MeshPass::get_subpass(), blender::eevee::DeferredLayer::material_add(), blender::eevee::DeferredProbePipeline::material_add(), blender::eevee::PlanarProbePipeline::material_add(), blender::eevee::ForwardPipeline::material_opaque_add(), blender::eevee::DeferredLayer::prepass_add(), blender::eevee::DeferredProbePipeline::prepass_add(), blender::eevee::PlanarProbePipeline::prepass_add(), blender::eevee::ForwardPipeline::prepass_opaque_add(), sub(), blender::eevee::ShadowPipeline::surface_material_add(), blender::eevee::IrradianceBake::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::VolumeLayer::sync(), blender::workbench::ShadowPass::sync(), blender::eevee::SyncModule::sync_pointcloud(), blender::draw::test_draw_pass_simple_draw(), and blender::draw::test_draw_pass_sub_ordering().
|
protected |
Definition at line 753 of file draw_pass.hh.
References blender::draw::command::Barrier, blender::draw::command::Clear, blender::draw::command::ClearMulti, commands_, debug_name, blender::draw::command::Dispatch, blender::draw::command::DispatchIndirect, blender::draw::command::Draw, blender::draw::command::DrawIndirect, blender::draw::command::DrawMulti, blender::draw::command::FramebufferBind, GPU_debug_group_begin(), GPU_debug_group_end(), headers_, blender::draw::command::None, blender::draw::command::PushConstant, blender::draw::command::ResourceBind, blender::draw::command::ShaderBind, blender::draw::command::SpecializeConstant, state, blender::draw::command::StateSet, blender::draw::command::StencilSet, sub_passes_, submit(), blender::draw::command::SubPass, and blender::draw::command::SubPassTransition.
Referenced by blender::eevee::CapturePipeline::render(), submit(), blender::draw::Manager::submit(), and blender::draw::Manager::submit_only().
|
inline |
Start a new sub-pass and change framebuffer attachments status.
Definition at line 1118 of file draw_pass.hh.
References create_command(), GPU_ATTACHMENT_IGNORE, i, blender::Span< T >::index_range(), subpass_transition(), and blender::draw::command::SubPassTransition.
Referenced by blender::eevee::DeferredLayer::end_sync(), subpass_transition(), blender::eevee::ShadowPipeline::sync(), and blender::draw::test_draw_pass_all_commands().
|
protected |
Make sure the shader specialization constants are already compiled. This avoid stalling the real submission call because of specialization.
Definition at line 699 of file draw_pass.hh.
References blender::draw::command::Barrier, blender::draw::command::Clear, blender::draw::command::ClearMulti, commands_, blender::draw::command::Dispatch, blender::draw::command::DispatchIndirect, blender::draw::command::Draw, blender::draw::command::DrawIndirect, blender::draw::command::DrawMulti, blender::draw::command::FramebufferBind, GPU_debug_group_begin(), GPU_debug_group_end(), headers_, blender::draw::command::None, blender::draw::command::PushConstant, blender::draw::command::ResourceBind, blender::draw::command::ShaderBind, blender::draw::command::SpecializeConstant, state, blender::draw::command::StateSet, blender::draw::command::StencilSet, sub_passes_, blender::draw::command::SubPass, blender::draw::command::SubPassTransition, and warm_shader_specialization().
Referenced by warm_shader_specialization(), blender::draw::Manager::warm_shader_specialization(), and blender::draw::Manager::warm_shader_specialization().
|
friend |
Definition at line 459 of file draw_pass.hh.
References PassBase(), and serialize().
|
protected |
Commands referenced by headers (which contains their types).
Definition at line 139 of file draw_pass.hh.
Referenced by create_command(), draw(), draw_expand(), blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), serialize(), submit(), and warm_shader_specialization().
| const char* blender::draw::detail::PassBase< DrawCommandBufType >::debug_name |
Definition at line 153 of file draw_pass.hh.
Referenced by PassBase(), serialize(), and submit().
|
protected |
Reference to draw commands buffer. Either own or from parent pass.
Definition at line 141 of file draw_pass.hh.
Referenced by draw(), draw_expand(), blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), PassBase(), sub(), blender::draw::PassSortable::sub(), blender::draw::Manager::submit(), blender::draw::Manager::submit_debug(), blender::draw::Manager::submit_debug(), and blender::draw::Manager::submit_only().
|
protected |
Highest level of the command stream. Split command stream in different command types.
Definition at line 137 of file draw_pass.hh.
Referenced by create_command(), draw(), draw_expand(), blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), is_empty(), serialize(), blender::draw::PassSortable::sort(), sub(), blender::draw::PassSortable::sub(), submit(), and warm_shader_specialization().
|
protected |
Definition at line 150 of file draw_pass.hh.
Referenced by create_command(), draw(), draw_expand(), and is_empty().
|
protected |
Definition at line 147 of file draw_pass.hh.
Referenced by blender::draw::Manager::generate_commands(), blender::draw::Manager::generate_commands(), has_generated_commands(), blender::draw::Manager::submit(), and blender::draw::Manager::submit_only().
|
protected |
Currently bound shader. Used for interface queries.
Definition at line 145 of file draw_pass.hh.
Referenced by bind_image(), bind_image(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_ssbo(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_texture(), bind_ubo(), bind_ubo(), dispatch(), dispatch(), dispatch(), dispatch(), dispatch(), draw(), draw_expand(), draw_indirect(), PassBase(), push_constant_offset(), shader_set(), sub(), and blender::draw::PassSortable::sub().
|
protected |
Reference to sub-pass commands buffer. Either own or from parent pass.
Definition at line 143 of file draw_pass.hh.
Referenced by blender::draw::Manager::generate_commands(), is_empty(), PassBase(), serialize(), sub(), blender::draw::PassSortable::sub(), submit(), and warm_shader_specialization().
| bool blender::draw::detail::PassBase< DrawCommandBufType >::use_custom_ids |
Definition at line 155 of file draw_pass.hh.
Referenced by blender::draw::Manager::generate_commands(), blender::workbench::MeshPass::init_pass(), PassBase(), blender::draw::select::SelectMap::select_bind(), and blender::draw::select::SelectMap::select_bind().
|
protected |
Definition at line 148 of file draw_pass.hh.
Referenced by blender::draw::Manager::generate_commands(), blender::draw::Manager::submit(), and blender::draw::Manager::submit_only().