58#ifdef DRW_UNUSED_RESOURCE_TRACKING
59# define DRW_DEBUG_FILE_LINE_ARGS , const char *file, int line
61# define DRW_DEBUG_FILE_LINE_ARGS
99#define DRW_VIEWPORT_LIST_SIZE(list) \
100 (sizeof(list) == sizeof(DRWViewportEmptyList) ? 0 : (sizeof(list) / sizeof(void *)))
103#define DRW_VIEWPORT_DATA_SIZE(ty) \
105 DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->fbl)), \
106 DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->txl)), \
107 DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->psl)), \
108 DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->stl)), \
169 const float *fpixels);
179 const float *fpixels);
200 const float *fpixels);
206 const float *fpixels);
213 const float *fpixels);
220 const float *fpixels);
225 const float *fpixels);
231 const float *fpixels);
246#define DRW_TEXTURE_FREE_SAFE(tex) \
248 if (tex != nullptr) { \
249 DRW_texture_free(tex); \
254#define DRW_UBO_FREE_SAFE(ubo) \
256 if (ubo != nullptr) { \
257 GPU_uniformbuf_free(ubo); \
270 const bool is_volume_shader,
279 const bool is_volume_shader,
286#define DRW_SHADER_FREE_SAFE(shader) \
288 if (shader != nullptr) { \
289 DRW_shader_free(shader); \
309#define DRW_shgroup_instance_format(format, ...) \
311 if (format == nullptr) { \
312 DRWInstanceAttrFormat drw_format[] = __VA_ARGS__; \
313 format = DRW_shgroup_instance_format_array( \
314 drw_format, (sizeof(drw_format) / sizeof(DRWInstanceAttrFormat))); \
334 const float (*obmat)[4],
335 blender::gpu::Batch *geom,
342#define DRW_shgroup_call(shgroup, geom, ob) \
343 DRW_shgroup_call_ex(shgroup, ob, nullptr, geom, false, nullptr)
348#define DRW_shgroup_call_obmat(shgroup, geom, obmat) \
349 DRW_shgroup_call_ex(shgroup, nullptr, obmat, geom, false, nullptr)
353#define DRW_shgroup_call_with_callback(shgroup, geom, ob, user_data) \
354 DRW_shgroup_call_ex(shgroup, ob, nullptr, geom, false, user_data)
359#define DRW_shgroup_call_no_cull(shgroup, geom, ob) \
360 DRW_shgroup_call_ex(shgroup, ob, nullptr, geom, true, nullptr)
388 GPUStorageBuf *indirect_buf);
395 blender::gpu::Batch *geom,
402 blender::gpu::Batch *geom,
403 blender::gpu::Batch *inst_attributes);
423 blender::gpu::Batch *geom);
428#define DRW_buffer_add_entry(buffer, ...) \
430 const void *array[] = {__VA_ARGS__}; \
431 DRW_buffer_add_entry_array(buffer, array, (sizeof(array) / sizeof(*array))); \
480 const GPUTexture *
tex,
488 const GPUTexture *
tex);
556 const float (*value)[4]);
571#ifdef DRW_UNUSED_RESOURCE_TRACKING
572# define DRW_shgroup_vertex_buffer(shgroup, name, vert) \
573 DRW_shgroup_vertex_buffer_ex(shgroup, name, vert, __FILE__, __LINE__)
574# define DRW_shgroup_vertex_buffer_ref(shgroup, name, vert) \
575 DRW_shgroup_vertex_buffer_ref_ex(shgroup, name, vert, __FILE__, __LINE__)
576# define DRW_shgroup_uniform_block(shgroup, name, ubo) \
577 DRW_shgroup_uniform_block_ex(shgroup, name, ubo, __FILE__, __LINE__)
578# define DRW_shgroup_uniform_block_ref(shgroup, name, ubo) \
579 DRW_shgroup_uniform_block_ref_ex(shgroup, name, ubo, __FILE__, __LINE__)
580# define DRW_shgroup_storage_block(shgroup, name, ssbo) \
581 DRW_shgroup_storage_block_ex(shgroup, name, ssbo, __FILE__, __LINE__)
582# define DRW_shgroup_storage_block_ref(shgroup, name, ssbo) \
583 DRW_shgroup_storage_block_ref_ex(shgroup, name, ssbo, __FILE__, __LINE__)
585# define DRW_shgroup_vertex_buffer(shgroup, name, vert) \
586 DRW_shgroup_vertex_buffer_ex(shgroup, name, vert)
587# define DRW_shgroup_vertex_buffer_ref(shgroup, name, vert) \
588 DRW_shgroup_vertex_buffer_ref_ex(shgroup, name, vert)
589# define DRW_shgroup_uniform_block(shgroup, name, ubo) \
590 DRW_shgroup_uniform_block_ex(shgroup, name, ubo)
591# define DRW_shgroup_uniform_block_ref(shgroup, name, ubo) \
592 DRW_shgroup_uniform_block_ref_ex(shgroup, name, ubo)
593# define DRW_shgroup_storage_block(shgroup, name, ssbo) \
594 DRW_shgroup_storage_block_ex(shgroup, name, ssbo)
595# define DRW_shgroup_storage_block_ref(shgroup, name, ssbo) \
596 DRW_shgroup_storage_block_ref_ex(shgroup, name, ssbo)
628#define DRW_PASS_CREATE(pass, state) (pass = DRW_pass_create(#pass, state))
629#define DRW_PASS_INSTANCE_CREATE(pass, original, state) \
630 (pass = DRW_pass_create_instance(#pass, (original), state))
638 const float winmat[4][4],
639 const float (*culling_viewmat)[4],
640 const float (*culling_winmat)[4],
646 const float viewmat[4][4],
647 const float winmat[4][4]);
653 const float viewmat[4][4],
654 const float winmat[4][4],
655 const float (*culling_viewmat)[4],
656 const float (*culling_winmat)[4]);
777 void (*
callback)(
void *vedata,
void *user_data),
General operations, lookup, etc. for materials.
void(* DrawDataFreeCb)(struct DrawData *engine_data)
void(* DrawDataInitCb)(struct DrawData *engine_data)
Object is a sort of wrapper for general info.
const DRWView * DRW_view_default_get()
DRWShadingGroup * DRW_shgroup_create(GPUShader *shader, DRWPass *pass)
GPUTexture * DRW_texture_create_1d(int w, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
void DRW_view_frustum_corners_get(const DRWView *view, BoundBox *corners)
GPUTexture * DRW_texture_pool_query_fullscreen_ex(eGPUTextureFormat format, eGPUTextureUsage usage, DrawEngineType *engine_type)
float DRW_view_near_distance_get(const DRWView *view)
void DRW_texture_generate_mipmaps(GPUTexture *tex)
DrawData * DRW_drawdata_get(ID *id, DrawEngineType *engine_type)
struct DRWInterface DRWInterface
DupliObject * DRW_object_get_dupli(const Object *ob)
const float * DRW_viewport_invert_size_get()
GPUTexture * DRW_texture_create_cube_ex(int w, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
const float * DRW_viewport_pixelsize_get()
bool DRW_state_show_text()
void DRW_texture_free(GPUTexture *tex)
void DRW_shgroup_call_ex(DRWShadingGroup *shgroup, const Object *ob, const float(*obmat)[4], blender::gpu::Batch *geom, bool bypass_culling, void *user_data)
void DRW_view_persmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_shgroup_state_disable(DRWShadingGroup *shgroup, DRWState state)
bool DRW_shgroup_is_empty(DRWShadingGroup *shgroup)
char DRWViewportEmptyList
void DRW_shgroup_uniform_texture_ex(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex, GPUSamplerState sampler_state)
GPUTexture * DRW_texture_create_cube_array(int w, int d, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
void DRW_shgroup_buffer_texture(DRWShadingGroup *shgroup, const char *name, blender::gpu::VertBuf *vertex_buffer)
bool DRW_state_draw_background()
bool DRW_culling_plane_test(const DRWView *view, const float plane[4])
void DRW_view_frustum_planes_get(const DRWView *view, float planes[6][4])
void DRW_shgroup_uniform_vec4(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
GPUTexture * DRW_texture_create_2d_ex(int w, int h, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void * DRW_view_layer_engine_data_get(DrawEngineType *engine_type)
void DRW_shgroup_uniform_ivec3_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_shgroup_uniform_bool_copy(DRWShadingGroup *shgroup, const char *name, bool value)
bool DRW_state_is_viewport_image_render()
GPUMaterial * DRW_shader_from_material(Material *ma, bNodeTree *ntree, eGPUMaterialEngine engine, const uint64_t shader_id, const bool is_volume_shader, bool deferred, GPUCodegenCallbackFn callback, void *thunk, GPUMaterialPassReplacementCallbackFn pass_replacement_cb=nullptr)
#define DRW_DEBUG_FILE_LINE_ARGS
void DRW_shgroup_call_instances_with_attrs(DRWShadingGroup *shgroup, const Object *ob, blender::gpu::Batch *geom, blender::gpu::Batch *inst_attributes)
void DRW_buffer_add_entry_struct(DRWCallBuffer *callbuf, const void *data)
void DRW_shgroup_stencil_set(DRWShadingGroup *shgroup, uint write_mask, uint reference, uint compare_mask)
GPUTexture * DRW_texture_create_3d_ex(int w, int h, int d, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
DefaultFramebufferList * DRW_viewport_framebuffer_list_get()
bool DRW_culling_sphere_test(const DRWView *view, const BoundSphere *bsphere)
DRWPass * DRW_pass_create(const char *name, DRWState state)
void DRW_shgroup_call_instances(DRWShadingGroup *shgroup, const Object *ob, blender::gpu::Batch *geom, uint count)
void DRW_shgroup_call_compute_indirect(DRWShadingGroup *shgroup, GPUStorageBuf *indirect_buf)
void DRW_buffer_add_entry_array(DRWCallBuffer *callbuf, const void *attr[], uint attr_len)
void DRW_shgroup_state_enable(DRWShadingGroup *shgroup, DRWState state)
void DRW_texture_ensure_fullscreen_2d(GPUTexture **tex, eGPUTextureFormat format, DRWTextureFlag flags)
GPUMaterial * DRW_shader_from_world(World *wo, bNodeTree *ntree, eGPUMaterialEngine engine, const uint64_t shader_id, const bool is_volume_shader, bool deferred, GPUCodegenCallbackFn callback, void *thunk)
void DRW_shader_free(GPUShader *shader)
void DRW_shader_queue_optimize_material(GPUMaterial *mat)
bool DRW_object_is_in_edit_mode(const Object *ob)
void DRW_shgroup_uniform_ivec2_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
bool DRW_state_is_material_select()
DRWCallBuffer * DRW_shgroup_call_buffer_instance(DRWShadingGroup *shgroup, GPUVertFormat *format, blender::gpu::Batch *geom)
blender::draw::TextureFromPool & DRW_viewport_pass_texture_get(const char *pass_name)
void DRW_pass_link(DRWPass *first, DRWPass *second)
void DRW_render_viewport_size_set(const int size[2])
void DRW_shgroup_uniform_vec3_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
void ** DRW_view_layer_engine_data_ensure_ex(ViewLayer *view_layer, DrawEngineType *engine_type, void(*callback)(void *storage))
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
bool DRW_view_is_persp_get(const DRWView *view)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, float value)
void DRW_shgroup_call_procedural_lines(DRWShadingGroup *sh, const Object *ob, uint line_count)
void DRW_draw_pass(DRWPass *pass)
const float * DRW_viewport_size_get()
void DRW_shgroup_call_sculpt(DRWShadingGroup *shgroup, Object *ob, bool use_wire, bool use_mask, bool use_fset, bool use_color, bool use_uv)
void DRW_pass_foreach_shgroup(DRWPass *pass, void(*callback)(void *user_data, DRWShadingGroup *shgroup), void *user_data)
GPUTexture * DRW_texture_create_2d_array(int w, int h, int d, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
void DRW_view_set_active(const DRWView *view)
void DRW_shgroup_uniform_ivec2(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
uint32_t DRW_object_resource_id_get(Object *ob)
GPUTexture * DRW_texture_create_3d(int w, int h, int d, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
bool DRW_object_use_hide_faces(const Object *ob)
bool DRWCallVisibilityFn(bool vis_in, void *user_data)
void DRW_shgroup_call_procedural_points(DRWShadingGroup *sh, const Object *ob, uint point_count)
void DRW_sculpt_debug_cb(blender::bke::pbvh::Node *node, void *user_data, const float bmin[3], const float bmax[3], PBVHNodeFlags flag)
void DRW_culling_frustum_planes_get(const DRWView *view, float planes[6][4])
void DRW_draw_callbacks_pre_scene()
DRWShadingGroup * DRW_shgroup_create_sub(DRWShadingGroup *shgroup)
void DRW_shgroup_call_compute(DRWShadingGroup *shgroup, int groups_x_len, int groups_y_len, int groups_z_len)
bool DRW_object_is_renderable(const Object *ob)
DrawData * DRW_drawdata_ensure(ID *id, DrawEngineType *engine_type, size_t size, DrawDataInitCb init_cb, DrawDataFreeCb free_cb)
void DRW_culling_frustum_corners_get(const DRWView *view, BoundBox *corners)
DRWView * DRW_view_create_sub(const DRWView *parent_view, const float viewmat[4][4], const float winmat[4][4])
GPUTexture * DRW_texture_pool_query_fullscreen(eGPUTextureFormat format, DrawEngineType *engine_type)
GPUTexture * DRW_texture_pool_query_2d(int w, int h, eGPUTextureFormat format, DrawEngineType *engine_type)
void DRW_shgroup_barrier(DRWShadingGroup *shgroup, eGPUBarrier type)
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_render_instance_buffer_finish()
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_custom_pipeline(DrawEngineType *draw_engine_type, Depsgraph *depsgraph, void(*callback)(void *vedata, void *user_data), void *user_data)
void DRW_pass_sort_shgroup_z(DRWPass *pass)
bool DRW_pass_is_empty(DRWPass *pass)
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_shgroup_uniform_mat3(DRWShadingGroup *shgroup, const char *name, const float(*value)[3])
int DRW_object_visibility_in_active_context(const Object *ob)
bool DRW_state_is_image_render()
GPUTexture * DRW_texture_pool_query_2d_ex(int w, int h, eGPUTextureFormat format, eGPUTextureUsage usage, DrawEngineType *engine_type)
void DRW_shgroup_call_compute_ref(DRWShadingGroup *shgroup, int groups_ref[3])
GPUVertFormat * DRW_shgroup_instance_format_array(const DRWInstanceAttrFormat attrs[], int arraysize)
bool DRW_state_is_painting()
void DRW_shgroup_storage_block_ex(DRWShadingGroup *shgroup, const char *name, const GPUStorageBuf *ssbo DRW_DEBUG_FILE_LINE_ARGS)
Object * DRW_object_get_dupli_parent(const Object *ob)
void DRW_view_update(DRWView *view, const float viewmat[4][4], const float winmat[4][4], const float(*culling_viewmat)[4], const float(*culling_winmat)[4])
void DRW_shgroup_call_instance_range(DRWShadingGroup *shgroup, const Object *ob, blender::gpu::Batch *geom, uint i_sta, uint i_num)
void DRW_shgroup_uniform_int(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
bool DRW_state_is_scene_render()
GPUTexture * DRW_texture_create_2d(int w, int h, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
void DRW_texture_ensure_2d_ex(GPUTexture **tex, int w, int h, eGPUTextureFormat format, eGPUTextureUsage usage, DRWTextureFlag flags)
void DRW_shgroup_call_range(DRWShadingGroup *shgroup, const Object *ob, blender::gpu::Batch *geom, uint v_sta, uint v_num)
void DRW_shgroup_add_material_resources(DRWShadingGroup *grp, GPUMaterial *material)
DefaultTextureList * DRW_viewport_texture_list_get()
GPUTexture * DRW_texture_create_2d_array_ex(int w, int h, int d, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
void DRW_shgroup_uniform_ivec4(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_shgroup_buffer_texture_ref(DRWShadingGroup *shgroup, const char *name, blender::gpu::VertBuf **vertex_buffer)
float DRW_view_far_distance_get(const DRWView *view)
void DRW_shgroup_call_sculpt_with_materials(DRWShadingGroup **shgroups, GPUMaterial **gpumats, int num_shgroups, const Object *ob)
void DRW_texture_ensure_fullscreen_2d_ex(GPUTexture **tex, eGPUTextureFormat format, eGPUTextureUsage usage, DRWTextureFlag flags)
void DRW_shgroup_storage_block_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUStorageBuf **ssbo DRW_DEBUG_FILE_LINE_ARGS)
void DRW_shgroup_uniform_block_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUUniformBuf **ubo DRW_DEBUG_FILE_LINE_ARGS)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *sh, const Object *ob, uint tri_count)
void DRW_view_clip_planes_set(DRWView *view, float(*planes)[4], int plane_len)
void DRW_render_to_image(RenderEngine *engine, Depsgraph *depsgraph)
void DRW_shgroup_call_procedural_indirect(DRWShadingGroup *shgroup, GPUPrimType primitive_type, Object *ob, GPUStorageBuf *indirect_buf)
void DRW_state_reset_ex(DRWState state)
GPUTexture * DRW_texture_create_1d_ex(int w, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
void DRW_shgroup_uniform_vec4_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
void DRW_texture_ensure_2d(GPUTexture **tex, int w, int h, eGPUTextureFormat format, DRWTextureFlag flags)
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
void ** DRW_view_layer_engine_data_ensure(DrawEngineType *engine_type, void(*callback)(void *storage))
void DRW_shgroup_clear_framebuffer(DRWShadingGroup *shgroup, eGPUFrameBufferBits channels, uchar r, uchar g, uchar b, uchar a, float depth, uchar stencil)
void DRW_draw_pass_subset(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group)
void DRW_shgroup_uniform_mat4_copy(DRWShadingGroup *shgroup, const char *name, const float(*value)[4])
void ** DRW_duplidata_get(void *vedata)
void DRW_shgroup_uniform_mat4(DRWShadingGroup *shgroup, const char *name, const float(*value)[4])
void DRW_shgroup_uniform_image_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
void DRW_render_set_time(RenderEngine *engine, Depsgraph *depsgraph, int frame, float subframe)
const DRWContextState * DRW_context_state_get()
bool DRW_state_draw_support()
void DRW_shgroup_uniform_vec2_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
void DRW_draw_callbacks_post_scene()
void DRW_state_lock(DRWState state)
void DRW_shgroup_uniform_texture_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex, GPUSamplerState sampler_state)
DRWShadingGroup * DRW_shgroup_transform_feedback_create(GPUShader *shader, DRWPass *pass, blender::gpu::VertBuf *tf_target)
void DRW_view_default_set(const DRWView *view)
void DRW_shgroup_uniform_block_ex(DRWShadingGroup *shgroup, const char *name, const GPUUniformBuf *ubo DRW_DEBUG_FILE_LINE_ARGS)
bool DRW_is_viewport_compositor_enabled()
GPUTexture * DRW_texture_create_cube_array_ex(int w, int d, eGPUTextureFormat format, eGPUTextureUsage usage_flags, DRWTextureFlag flags, const float *fpixels)
void DRW_mesh_batch_cache_get_attributes(Object *object, Mesh *mesh, blender::draw::DRW_Attributes **r_attrs, blender::draw::DRW_MeshCDMask **r_cd_needed)
void DRW_viewport_request_redraw()
DRWCallBuffer * DRW_shgroup_call_buffer(DRWShadingGroup *shgroup, GPUVertFormat *format, GPUPrimType prim_type)
void DRW_pass_sort_shgroup_reverse(DRWPass *pass)
void DRW_view_update_sub(DRWView *view, const float viewmat[4][4], const float winmat[4][4])
bool DRW_culling_min_max_test(const DRWView *view, float obmat[4][4], float min[3], float max[3])
void DRW_custom_pipeline_end()
void DRW_render_object_iter(void *vedata, RenderEngine *engine, Depsgraph *depsgraph, void(*callback)(void *vedata, Object *ob, RenderEngine *engine, Depsgraph *depsgraph))
void DRW_shgroup_vertex_buffer_ref_ex(DRWShadingGroup *shgroup, const char *name, blender::gpu::VertBuf **vertex_buffer DRW_DEBUG_FILE_LINE_ARGS)
void DRW_shgroup_uniform_vec2(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
bool DRW_state_is_select()
bool DRW_culling_box_test(const DRWView *view, const BoundBox *bbox)
void DRW_shgroup_uniform_image(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
GPUTexture * DRW_texture_create_cube(int w, eGPUTextureFormat format, DRWTextureFlag flags, const float *fpixels)
void DRW_select_load_id(uint id)
void DRW_shgroup_uniform_ivec4_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
const DRWView * DRW_view_get_active()
void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, uint mask)
DRWShadingGroup * DRW_shgroup_material_create(GPUMaterial *material, DRWPass *pass)
bool DRW_state_is_navigating()
bool DRW_state_is_playback()
void DRW_shgroup_vertex_buffer_ex(DRWShadingGroup *shgroup, const char *name, blender::gpu::VertBuf *vertex_buffer DRW_DEBUG_FILE_LINE_ARGS)
DRWView * DRW_view_create(const float viewmat[4][4], const float winmat[4][4], const float(*culling_viewmat)[4], const float(*culling_winmat)[4], DRWCallVisibilityFn *visibility_fn)
DRWPass * DRW_pass_create_instance(const char *name, DRWPass *original, DRWState state)
void DRW_custom_pipeline_begin(DrawEngineType *draw_engine_type, Depsgraph *depsgraph)
bool DRW_state_is_depth()
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_shgroup_uniform_int_copy(DRWShadingGroup *shgroup, const char *name, int value)
struct DRWShaderLibrary DRWShaderLibrary
void(*)(void *thunk, GPUMaterial *mat, GPUCodegenOutput *codegen) GPUCodegenCallbackFn
GPUPass *(*)(void *thunk, GPUMaterial *mat) GPUMaterialPassReplacementCallbackFn
Read Guarded memory(de)allocation.
struct GPUShader GPUShader
btMatrix3x3 inverse() const
Return the inverse of the matrix.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
local_group_size(16, 16) .push_constant(Type b
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
Simple API to draw debug shapes in the viewport. IMPORTANT: This is the legacy API for C....
unsigned __int64 uint64_t
RenderEngineType * engine_type
void(* render_to_image)(void *vedata, RenderEngine *engine, RenderLayer *layer, const rcti *rect)
void(* cache_populate)(void *vedata, Object *ob)
void(* instance_free)(void *instance_data)
void(* id_update)(void *vedata, ID *id)
void(* engine_init)(void *vedata)
void(* store_metadata)(void *vedata, RenderResult *render_result)
const DrawEngineDataSize * vedata_size
void(* draw_scene)(void *vedata)
void(* view_update)(void *vedata)
void(* cache_init)(void *vedata)
void(* cache_finish)(void *vedata)