37 .default_value({1.0f, 1.0f, 1.0f, 1.0f})
38 .compositor_domain_priority(0);
42 .default_value({0.0f, 0.0f, 0.0f})
46 .compositor_domain_priority(1);
76 if (input.is_single_value()) {
77 input.pass_through(output);
98 input.bind_as_texture(shader,
"input_tx");
102 output.allocate_texture(
Domain(tiles_count));
103 output.bind_as_image(shader,
"output_img");
108 input.unbind_as_texture();
109 output.unbind_as_image();
132 const int size =
sizeof(
uint32_t) * 512 * 512 * 2;
145 return tile_indirection_buffer;
157 input.bind_as_texture(shader,
"input_tx");
160 depth.bind_as_texture(shader,
"depth_tx");
173 output.allocate_texture(domain);
174 output.bind_as_image(shader,
"output_img");
179 input.unbind_as_texture();
180 depth.unbind_as_texture();
183 output.unbind_as_image();
201 ntype.
declare = file_ns::cmp_node_vec_blur_declare;
202 ntype.
draw_buttons = file_ns::node_composit_buts_vecblur;
203 ntype.
initfunc = file_ns::node_composit_init_vecblur;
#define NODE_STORAGE_FUNCS(StorageT)
#define NODE_CLASS_OP_FILTER
void GPU_compute_dispatch(GPUShader *shader, uint groups_x_len, uint groups_y_len, uint groups_z_len)
void GPU_shader_uniform_1i(GPUShader *sh, const char *name, int value)
void GPU_shader_uniform_1f(GPUShader *sh, const char *name, float value)
int GPU_shader_get_ssbo_binding(GPUShader *shader, const char *name)
void GPU_shader_bind(GPUShader *shader)
void GPU_shader_uniform_1b(GPUShader *sh, const char *name, bool value)
void GPU_memory_barrier(eGPUBarrier barrier)
@ GPU_BARRIER_SHADER_STORAGE
void GPU_storagebuf_bind(GPUStorageBuf *ssbo, int slot)
GPUStorageBuf * GPU_storagebuf_create_ex(size_t size, const void *data, GPUUsageType usage, const char *name)
void GPU_storagebuf_unbind(GPUStorageBuf *ssbo)
void GPU_storagebuf_clear_to_zero(GPUStorageBuf *ssbo)
void GPU_storagebuf_free(GPUStorageBuf *ssbo)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
struct GPUShader GPUShader
int compositor_domain_priority() const
GPUStorageBuf * dilate_max_velocity(Result &max_tile_velocity)
Result compute_max_tile_velocity()
void compute_motion_blur(Result &max_tile_velocity, GPUStorageBuf *tile_indirection_buffer)
GPUShader * get_shader(const char *info_name, ResultPrecision precision)
Result create_result(ResultType type, ResultPrecision precision)
NodeOperation(Context &context, DNode node)
const bNode & bnode() const
Result & get_input(StringRef identifier) const
Result & get_result(StringRef identifier)
Context & context() const
virtual Domain compute_domain()
void unbind_as_texture() const
const Domain & domain() const
void bind_as_texture(GPUShader *shader, const char *texture_name) const
local_group_size(16, 16) .push_constant(Type b
void node_type_storage(bNodeType *ntype, const char *storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
void node_register_type(bNodeType *ntype)
VecBase< T, Size > divide_ceil(const VecBase< T, Size > &a, const VecBase< T, Size > &b)
static void node_composit_buts_vecblur(uiLayout *layout, bContext *, PointerRNA *ptr)
static NodeOperation * get_compositor_operation(Context &context, DNode node)
static void node_composit_init_vecblur(bNodeTree *, bNode *node)
static void cmp_node_vec_blur_declare(NodeDeclarationBuilder &b)
void compute_dispatch_threads_at_least(GPUShader *shader, int2 threads_range, int2 local_size=int2(16))
void cmp_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
void register_node_type_cmp_vecblur()
void node_free_standard_storage(bNode *node)
void node_copy_standard_storage(bNodeTree *, bNode *dest_node, const bNode *src_node)
NodeGetCompositorOperationFunction get_compositor_operation
void(* initfunc)(bNodeTree *ntree, bNode *node)
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
NodeDeclareFunction declare