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),
795 void (*callback)(
void *storage));
797 void (*callback)(
void *storage));
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.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
struct GPUShader GPUShader
BPy_StructRNA * depsgraph
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
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
Simple API to draw debug shapes in the viewport. IMPORTANT: This is the legacy API for C....
ccl_device_inline float4 mask(const int4 mask, const float4 a)
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)