|
Blender V4.5
|
#include "BLI_sys_types.h"Go to the source code of this file.
Macros | |
| #define | GPU_uniformbuf_create(size) |
| #define | GPU_UBO_BLOCK_NAME "node_tree" |
| #define | GPU_ATTRIBUTE_UBO_BLOCK_NAME "unf_attrs" |
| #define | GPU_LAYER_ATTRIBUTE_UBO_BLOCK_NAME "drw_layer_attrs" |
| #define | GPU_UBO_FREE_SAFE(ubo) |
Functions | |
| GPUUniformBuf * | GPU_uniformbuf_create_ex (size_t size, const void *data, const char *name) |
| GPUUniformBuf * | GPU_uniformbuf_create_from_list (ListBase *inputs, const char *name) |
| void | GPU_uniformbuf_free (GPUUniformBuf *ubo) |
| void | GPU_uniformbuf_update (GPUUniformBuf *ubo, const void *data) |
| void | GPU_uniformbuf_bind (GPUUniformBuf *ubo, int slot) |
| void | GPU_uniformbuf_bind_as_ssbo (GPUUniformBuf *ubo, int slot) |
| void | GPU_uniformbuf_unbind (GPUUniformBuf *ubo) |
| void | GPU_uniformbuf_debug_unbind_all () |
| void | GPU_uniformbuf_clear_to_zero (GPUUniformBuf *ubo) |
Variables | |
| static constexpr int | GPU_NODE_TREE_UBO_SLOT = 0 |
Uniform buffers API. Used to handle many uniforms update at once. Make sure that the data structure is compatible with what the implementation expect. (see "7.6.2.2 Standard Uniform Block Layout" from the OpenGL spec for more info about std140 layout) Rule of thumb: Padding to 16bytes, don't use vec3, don't use arrays of anything that is not vec4 aligned.
Definition in file GPU_uniform_buffer.hh.
| #define GPU_ATTRIBUTE_UBO_BLOCK_NAME "unf_attrs" |
Definition at line 52 of file GPU_uniform_buffer.hh.
Referenced by blender::gpu::shader::GPUCodegen::generate_resources(), and blender::eevee::ShaderModule::material_create_info_amend().
| #define GPU_LAYER_ATTRIBUTE_UBO_BLOCK_NAME "drw_layer_attrs" |
Definition at line 53 of file GPU_uniform_buffer.hh.
| #define GPU_UBO_BLOCK_NAME "node_tree" |
Definition at line 51 of file GPU_uniform_buffer.hh.
Referenced by blender::gpu::shader::GPUCodegen::generate_resources().
| #define GPU_UBO_FREE_SAFE | ( | ubo | ) |
Definition at line 56 of file GPU_uniform_buffer.hh.
| #define GPU_uniformbuf_create | ( | size | ) |
Definition at line 34 of file GPU_uniform_buffer.hh.
Referenced by blender::draw::gpencil::gpencil_light_pool_add(), blender::draw::gpencil::gpencil_material_pool_add(), blender::ocio::internal::GPUCurveMappping::initialize_common(), blender::ed::vse::StripsDrawBatch::StripsDrawBatch(), and blender::ed::vse::ThumbsDrawBatch::ThumbsDrawBatch().
| void GPU_uniformbuf_bind | ( | GPUUniformBuf * | ubo, |
| int | slot ) |
Definition at line 238 of file gpu_uniform_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::View::bind(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_gpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_mask_gpu(), blender::draw::View::compute_procedural_bounds(), blender::draw::View::compute_visibility(), blender::draw::draw_subdiv_ubo_update_and_bind(), blender::draw::command::ResourceBind::execute(), blender::ed::vse::StripsDrawBatch::flush_batch(), blender::ed::vse::ThumbsDrawBatch::flush_batch(), immBindUniformBuf(), pygpu_shader_uniform_block(), and blender::draw::Manager::resource_bind().
| void GPU_uniformbuf_bind_as_ssbo | ( | GPUUniformBuf * | ubo, |
| int | slot ) |
Definition at line 243 of file gpu_uniform_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::View::compute_procedural_bounds(), and blender::draw::command::ResourceBind::execute().
| void GPU_uniformbuf_clear_to_zero | ( | GPUUniformBuf * | ubo | ) |
Definition at line 258 of file gpu_uniform_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::eevee::ShadowModule::set_view().
| GPUUniformBuf * GPU_uniformbuf_create_ex | ( | size_t | size, |
| const void * | data, | ||
| const char * | name ) |
Definition at line 194 of file gpu_uniform_buffer.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::data(), data, G, G_DEBUG_GPU, blender::gpu::GPUBackend::get(), size(), blender::gpu::GPUBackend::uniformbuf_alloc(), blender::gpu::UniformBuf::update(), and blender::gpu::wrap().
Referenced by blender::ocio::GPUShaderBinder::create_gpu_shader(), blender::ed::greasepencil::image_render::create_shader_ubo(), blender::draw::draw_subdiv_ubo_update_and_bind(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::execute_gpu(), GPU_material_from_nodetree(), blender::ed::space_node::node_draw_link_bezier_ex(), blender::ed::space_node::nodelink_batch_draw(), pygpu_uniformbuffer__tp_new(), blender::ed::vse::StripsDrawBatch::StripsDrawBatch(), ui_draw_but_UNITVEC(), and blender::draw::detail::UniformCommon< T, len, device_only >::UniformCommon().
| GPUUniformBuf * GPU_uniformbuf_create_from_list | ( | ListBase * | inputs, |
| const char * | name ) |
Create UBO from inputs list. Return nullptr if failed to create or if
| inputs | is empty. |
| inputs | ListBase of BLI_genericNodeN(GPUInput). |
Definition at line 210 of file gpu_uniform_buffer.cc.
References blender::gpu::UniformBuf::attach_data(), BLI_listbase_is_empty(), buffer_fill_from_list(), buffer_from_list_inputs_sort(), buffer_size_from_list(), data, blender::gpu::GPUBackend::get(), inputs, MEM_mallocN(), blender::gpu::GPUBackend::uniformbuf_alloc(), and blender::gpu::wrap().
Referenced by GPU_material_uniform_buffer_create().
| void GPU_uniformbuf_debug_unbind_all | ( | ) |
Resets the internal slot usage tracking. But there is no guarantee that this actually undo the bindings for the next draw call. Only has effect when G_DEBUG_GPU is set.
Definition at line 253 of file gpu_uniform_buffer.cc.
References blender::gpu::Context::debug_unbind_all_ubo(), and blender::gpu::Context::get().
Referenced by blender::draw::command::RecordingState::cleanup(), blender::compositor::ShaderOperation::execute(), and blender::draw::command::StateSet::set().
| void GPU_uniformbuf_free | ( | GPUUniformBuf * | ubo | ) |
Definition at line 228 of file gpu_uniform_buffer.cc.
References blender::gpu::unwrap().
Referenced by BPyGPUUniformBuf__tp_dealloc(), blender::ed::greasepencil::image_render::draw_grease_pencil_stroke(), blender::draw::draw_subdiv_cache_free(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::execute_gpu(), blender::ed::space_node::node_draw_link_bezier_ex(), blender::ed::space_node::nodelink_batch_draw(), ui_draw_but_UNITVEC(), blender::ocio::internal::GPUCurveMappping::~GPUCurveMappping(), blender::ocio::internal::GPUDisplayShader::~GPUDisplayShader(), GPUMaterial::~GPUMaterial(), blender::ocio::internal::GPUTextures::~GPUTextures(), blender::ed::vse::StripsDrawBatch::~StripsDrawBatch(), blender::ed::vse::ThumbsDrawBatch::~ThumbsDrawBatch(), and blender::draw::detail::UniformCommon< T, len, device_only >::~UniformCommon().
| void GPU_uniformbuf_unbind | ( | GPUUniformBuf * | ubo | ) |
Definition at line 248 of file gpu_uniform_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_gpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_mask_gpu(), blender::ed::space_node::node_draw_link_bezier_ex(), blender::ed::space_node::nodelink_batch_draw(), blender::gpu::MTLContext::~MTLContext(), blender::ed::vse::StripsDrawBatch::~StripsDrawBatch(), and blender::ed::vse::ThumbsDrawBatch::~ThumbsDrawBatch().
| void GPU_uniformbuf_update | ( | GPUUniformBuf * | ubo, |
| const void * | data ) |
Definition at line 233 of file gpu_uniform_buffer.cc.
References data, and blender::gpu::unwrap().
Referenced by blender::draw::draw_subdiv_ubo_update_and_bind(), blender::draw::gpencil::Instance::end_sync(), blender::ed::vse::StripsDrawBatch::flush_batch(), blender::ed::vse::ThumbsDrawBatch::flush_batch(), blender::draw::detail::UniformCommon< T, len, device_only >::push_update(), and pygpu_uniformbuffer_update().
|
staticconstexpr |
Definition at line 54 of file GPU_uniform_buffer.hh.
Referenced by blender::gpu::shader::GPUCodegen::generate_resources(), and blender::draw::detail::PassBase< DrawCommandBufType >::material_set().