31 #ifdef DRW_DEBUG_CULLING
54 #define KEY(a) ((((size_t)((a).draw.batch)) >> 6) % ARRAY_SIZE(idx))
57 for (
int i = 0; i < array_len; i++) {
59 if (++idx[
KEY(
array[i])] == array_len) {
68 for (
int src = array_len - 1;
src >= 0;
src--) {
73 memcpy(
array, array_tmp,
sizeof(*
array) * array_len);
80 int ubo_len = 1 + chunk_id - ((elem_id == 0) ? 1 : 0);
93 for (
int i = ubo_len; i < vmempool->
ubo_len; i++) {
98 if (ubo_len != vmempool->
ubo_len) {
105 for (
int i = 0; i < ubo_len; i++) {
126 bool sortable =
true;
205 uni->
pvalue = (
const float *)value;
281 #ifdef DRW_UNUSED_RESOURCE_TRACKING
282 printf(
"%s:%d: Unable to locate binding of shader uniform buffer object: %s.\n",
302 #ifdef DRW_UNUSED_RESOURCE_TRACKING
303 printf(
"%s:%d: Unable to locate binding of shader uniform buffer object: %s.\n",
324 #ifdef DRW_UNUSED_RESOURCE_TRACKING
325 printf(
"%s:%d: Unable to locate binding of shader storage buffer object: %s.\n",
346 #ifdef DRW_UNUSED_RESOURCE_TRACKING
347 printf(
"%s:%d: Unable to locate binding of shader storage buffer object: %s.\n",
491 const float (*value)[4])
495 if (location == -1) {
505 for (
int i = 0; i < 4; i++) {
515 if (location == -1) {
516 #ifdef DRW_UNUSED_RESOURCE_TRACKING
517 printf(
"%s:%d: Unable to locate binding of shader storage buffer object: %s.\n",
522 BLI_assert_msg(0,
"Unable to locate binding of shader storage buffer objects.");
535 if (location == -1) {
536 #ifdef DRW_UNUSED_RESOURCE_TRACKING
537 printf(
"%s:%d: Unable to locate binding of shader storage buffer object: %s.\n",
542 BLI_assert_msg(0,
"Unable to locate binding of shader storage buffer objects.");
555 if (location == -1) {
567 if (location == -1) {
582 float loc[3],
size[3];
583 float *texcoloc =
NULL;
584 float *texcosize =
NULL;
586 switch (
GS(ob_data->
name)) {
602 texcosize = cu->
size;
608 texcosize = mb->
size;
616 if ((texcoloc !=
NULL) && (texcosize !=
NULL)) {
726 return handle & ~(1u << 31);
771 command_type_bits[index / 16] |= ((
uint64_t)
type) << ((index % 16) * 4);
776 return ((command_type_bits[index / 16] >> ((index % 16) * 4)) & 0xF);
901 cmd->
ref = reference;
955 if (bypass_culling) {
989 BLI_assert(groups_x_len > 0 && groups_y_len > 0 && groups_z_len > 0);
1076 #define SCULPT_DEBUG_BUFFERS (G.debug_value == 889)
1090 #define SCULPT_DEBUG_COLOR(id) (sculpt_debug_colors[id % 9])
1092 {1.0f, 0.2f, 0.2f, 1.0f},
1093 {0.2f, 1.0f, 0.2f, 1.0f},
1094 {0.2f, 0.2f, 1.0f, 1.0f},
1095 {1.0f, 1.0f, 0.2f, 1.0f},
1096 {0.2f, 1.0f, 1.0f, 1.0f},
1097 {1.0f, 0.2f, 1.0f, 1.0f},
1098 {1.0f, 0.7f, 0.2f, 1.0f},
1099 {0.2f, 1.0f, 0.7f, 1.0f},
1100 {0.7f, 0.2f, 1.0f, 1.0f},
1125 if (geom !=
NULL && shgrp !=
NULL) {
1139 const float bmin[3],
1140 const float bmax[3],
1171 for (
int i = 0; i < 6; i++) {
1194 float update_planes[6][4];
1195 float draw_planes[6][4];
1200 update_frustum.
planes = update_planes;
1205 update_frustum.
planes = update_planes;
1212 update_frustum.
planes = update_planes;
1217 draw_frustum.
planes = draw_planes;
1230 update_only_visible =
true;
1237 update_only_visible,
1245 int debug_node_nr = 0;
1259 .shading_groups = &shgroup,
1260 .num_shading_groups = 1,
1261 .use_wire = use_wire,
1263 .use_mask = use_mask,
1274 .shading_groups = shgroups,
1275 .num_shading_groups = num_shgroups,
1377 for (
int i = 0; i < attr_len; i++) {
1410 if (view_ubo_location == -1) {
1413 if (model_ubo_location == -1) {
1416 if (info_ubo_location == -1) {
1420 if (chunkid_location != -1) {
1425 if (resourceid_location != -1) {
1430 if (baseinst_location != -1) {
1435 if (model_ubo_location != -1) {
1447 if (modelinverse != -1) {
1453 if (info_ubo_location != -1) {
1464 if (view_ubo_location != -1) {
1489 shgroup->
shader = shader;
1523 *gputex_ref = gputex;
1537 if (
tex->tiled_mapping_name[0]) {
1548 else if (
tex->colorband) {
1560 if (uattrs !=
NULL) {
1572 for (
int i = 0; i < arraysize; i++) {
1576 attrs[i].components,
1650 for (; chunk; chunk = chunk->
next) {
1664 *shgroup_new = *shgroup;
1690 const float (*projmat)[4],
1694 bool is_persp = projmat[3][3] == 0.0f;
1698 &bbox, (
const float[3]){-1.0f, -1.0f, -1.0f}, (
const float[3]){1.0f, 1.0f, 1.0f});
1699 for (
int i = 0; i < 8; i++) {
1706 r_bbox->
vec[0][2] = r_bbox->
vec[3][2] = r_bbox->
vec[7][2] = r_bbox->
vec[4][2] = -near;
1707 r_bbox->
vec[0][0] = r_bbox->
vec[3][0] =
left;
1710 r_bbox->
vec[7][1] = r_bbox->
vec[3][1] =
top;
1714 float sca_far = far / near;
1721 r_bbox->
vec[1][2] = r_bbox->
vec[2][2] = r_bbox->
vec[6][2] = r_bbox->
vec[5][2] = -far;
1722 r_bbox->
vec[1][0] = r_bbox->
vec[2][0] =
left;
1725 r_bbox->
vec[2][1] = r_bbox->
vec[6][1] =
top;
1728 for (
int i = 0; i < 8; i++) {
1744 for (
int p = 0; p < 6; p++) {
1745 frustum_planes[p][3] /=
normalize_v3(frustum_planes[p]);
1750 const float (*viewinv)[4],
1751 const float (*projmat)[4],
1752 const float (*projinv)[4],
1756 if (projmat[3][3] != 0.0f) {
1759 const float *nearpoint = bbox->
vec[0];
1760 const float *farpoint = bbox->
vec[6];
1766 else if (projmat[2][0] == 0.0f && projmat[2][1] == 0.0f) {
1773 float mid_min[3], mid_max[3];
1784 float fac = (4 * h_sq + b_sq - a_sq) / (8 * h_sq);
1788 CLAMP(fac, 0.0f, 1.0f);
1804 float farpoint[3] = {0.0f};
1806 float farcenter[3] = {0.0f};
1815 float corner[3] = {1.0f, 1.0f, 1.0f};
1816 for (
int i = 0; i < 4; i++) {
1847 n = f * s /
e -
len_v2(nearpoint);
1850 z = (
F -
N) / (2.0f * (
e - s +
c * (f - n)));
1852 bsphere->
center[0] = farcenter[0] *
z /
e;
1853 bsphere->
center[1] = farcenter[1] *
z /
e;
1865 const float viewmat[4][4],
1866 const float winmat[4][4])
1877 const bool is_persp = (winmat[3][3] == 0.0f);
1880 storage->
viewvecs[0][3] = (is_persp) ? -winmat[3][2] / (winmat[2][2] - 1.0f) :
1881 -(winmat[3][2] + 1.0f) / winmat[2][2];
1884 storage->
viewvecs[1][3] = (is_persp) ? -winmat[3][2] / (winmat[2][2] + 1.0f) :
1885 -(winmat[3][2] - 1.0f) / winmat[2][2];
1889 float view_vecs[4][3] = {
1890 {-1.0f, -1.0f, -1.0f},
1891 {1.0f, -1.0f, -1.0f},
1892 {-1.0f, 1.0f, -1.0f},
1893 {-1.0f, -1.0f, 1.0f},
1897 for (
int i = 0; i < 4; i++) {
1903 mul_v2_fl(view_vecs[i], 1.0f / view_vecs[i][2]);
1919 storage->
viewvecs[1][0] = view_vecs[1][0] - view_vecs[0][0];
1920 storage->
viewvecs[1][1] = view_vecs[2][1] - view_vecs[0][1];
1921 storage->
viewvecs[1][2] = view_vecs[3][2] - view_vecs[0][2];
1925 const float winmat[4][4],
1926 const float (*culling_viewmat)[4],
1927 const float (*culling_winmat)[4],
1937 view->culling_mask = 0u;
1939 view->clip_planes_len = 0;
1940 view->visibility_fn = visibility_fn;
1951 const float viewmat[4][4],
1952 const float winmat[4][4])
1955 const DRWView *ori_view = parent_view;
1957 ori_view = ori_view->
parent;
1979 view->is_dirty =
true;
1986 const float viewmat[4][4],
1987 const float winmat[4][4],
1988 const float (*culling_viewmat)[4],
1989 const float (*culling_winmat)[4])
1996 view->is_dirty =
true;
2003 #ifdef DRW_DEBUG_CULLING
2007 if (
view->culling_mask != 0) {
2010 if (
G.debug_value == 0) {
2011 copy_m4_m4(
mv[index], culling_viewmat ? culling_viewmat : viewmat);
2012 copy_m4_m4(mw[index], culling_winmat ? culling_winmat : winmat);
2015 culling_winmat = mw[index];
2016 culling_viewmat =
mv[index];
2022 if (culling_winmat) {
2023 winmat = culling_winmat;
2030 float viewinv[4][4];
2031 if (culling_viewmat) {
2032 viewmat = culling_viewmat;
2042 &
view->frustum_corners, viewinv, winmat, wininv, &
view->frustum_bsphere);
2044 #ifdef DRW_DEBUG_CULLING
2045 if (
G.debug_value != 0) {
2047 view->frustum_bsphere.center,
view->frustum_bsphere.radius, (
const float[4]){1, 1, 0, 1});
2074 view->clip_planes_len = plane_len;
2075 if (plane_len > 0) {
2076 memcpy(
view->storage.clip_planes, planes,
sizeof(
float[4]) * plane_len);
2092 memcpy(corners, &
view->frustum_corners,
sizeof(
view->frustum_corners));
2097 memcpy(planes, &
view->frustum_planes,
sizeof(
view->frustum_planes));
2103 return view->storage.winmat[3][3] == 0.0f;
2109 const float(*projmat)[4] =
view->storage.winmat;
2112 return -projmat[3][2] / (projmat[2][2] - 1.0f);
2115 return -(projmat[3][2] + 1.0f) / projmat[2][2];
2121 const float(*projmat)[4] =
view->storage.winmat;
2124 return -projmat[3][2] / (projmat[2][2] + 1.0f);
2127 return -(projmat[3][2] - 1.0f) / projmat[2][2];
2188 first->
next = second;
2236 #define SORT_IMPL_LINKTYPE DRWShadingGroup
2238 #define SORT_IMPL_FUNC shgroup_sort_fn_r
2239 #include "../../blenlib/intern/list_sort_impl.h"
2240 #undef SORT_IMPL_FUNC
2242 #undef SORT_IMPL_LINKTYPE
2259 for (; cmd_chunk && handle == 0; cmd_chunk = cmd_chunk->
next) {
2260 for (
int i = 0; i < cmd_chunk->
command_used && handle == 0; i++) {
2278 shgroup->
z_sorting.original_index = index++;
2280 }
while ((shgroup = shgroup->
next));
2287 while ((last = last->
next)) {
typedef float(TangentPoint)[2]
void BKE_curve_texspace_ensure(struct Curve *cu)
struct GPUTexture * BKE_image_get_gpu_tiles(struct Image *image, struct ImageUser *iuser, struct ImBuf *ibuf)
struct GPUTexture * BKE_image_get_gpu_texture(struct Image *image, struct ImageUser *iuser, struct ImBuf *ibuf)
struct GPUTexture * BKE_image_get_gpu_tilemap(struct Image *image, struct ImageUser *iuser, struct ImBuf *ibuf)
void BKE_mesh_texspace_get_reference(struct Mesh *me, char **r_texflag, float **r_loc, float **r_size)
General operations, lookup, etc. for blender objects.
void BKE_boundbox_init_from_minmax(struct BoundBox *bb, const float min[3], const float max[3])
const struct BoundBox * BKE_object_boundbox_get(struct Object *ob)
struct Paint * BKE_paint_get_active_from_context(const struct bContext *C)
A BVH for high poly meshes.
void BKE_pbvh_set_frustum_planes(PBVH *pbvh, PBVHFrustumPlanes *planes)
void BKE_pbvh_get_frustum_planes(PBVH *pbvh, PBVHFrustumPlanes *planes)
void BKE_pbvh_draw_debug_cb(PBVH *pbvh, void(*draw_fn)(void *user_data, const float bmin[3], const float bmax[3], PBVHNodeFlags flag), void *user_data)
void BKE_pbvh_update_normals(PBVH *pbvh, struct SubdivCCG *subdiv_ccg)
void BKE_pbvh_draw_cb(PBVH *pbvh, bool update_only_visible, PBVHFrustumPlanes *update_frustum, PBVHFrustumPlanes *draw_frustum, void(*draw_fn)(void *user_data, struct GPU_PBVH_Buffers *buffers), void *user_data, bool full_render)
struct BoundBox * BKE_volume_boundbox_get(struct Object *ob)
#define BLI_assert_msg(a, msg)
BLI_INLINE unsigned int BLI_hash_string(const char *str)
BLI_INLINE unsigned int BLI_hash_int_2d(unsigned int kx, unsigned int ky)
Single link-list utility macros. (header only api).
#define BLI_LINKS_PREPEND(list, link)
#define BLI_LINKS_INSERT_AFTER(list, node, link)
#define BLI_LINKS_APPEND(list, link)
void BLI_linklist_reverse(LinkNode **listp) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
MINLINE unsigned int bitscan_forward_uint(unsigned int a)
void projmat_dimensions(const float winmat[4][4], float *r_left, float *r_right, float *r_bottom, float *r_top, float *r_near, float *r_far)
void planes_from_projmat(const float mat[4][4], float left[4], float right[4], float bottom[4], float top[4], float near[4], float far[4])
void mul_project_m4_v3(const float M[4][4], float vec[3])
void mul_v3_project_m4_v3(float r[3], const float mat[4][4], const float vec[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mul_m4_v4(const float M[4][4], float r[4])
void transpose_m4_m4(float R[4][4], const float M[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool is_negative_m4(const float mat[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_squared_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE float normalize_v3(float r[3])
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
MINLINE void negate_v3(float r[3])
MINLINE void invert_v3(float r[3])
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
void * BLI_memblock_elem_get(BLI_memblock *mblk, int chunk, int elem) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_memblock_iternew(BLI_memblock *mblk, BLI_memblock_iter *iter) ATTR_NONNULL()
void * BLI_memblock_iterstep(BLI_memblock_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void * BLI_memblock_alloc(BLI_memblock *mblk) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define UNUSED_VARS_NDEBUG(...)
@ PAINT_SCULPT_DELAY_UPDATES
bool() DRWCallVisibilityFn(bool vis_in, void *user_data)
#define DRW_shgroup_call_no_cull(shgroup, geom, ob)
#define DRW_DEBUG_FILE_LINE_ARGS
@ DRW_STATE_PROGRAM_POINT_SIZE
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
short GPU_pbvh_buffers_material_index_get(GPU_PBVH_Buffers *buffers)
struct GPUBatch * GPU_pbvh_buffers_batch_get(GPU_PBVH_Buffers *buffers, bool fast, bool wires)
bool GPU_pbvh_buffers_has_overlays(GPU_PBVH_Buffers *buffers)
bool GPU_compute_shader_support(void)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble right
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint * textures
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble bottom
GPUUniformAttrList * GPU_material_uniform_attributes(GPUMaterial *material)
ListBase GPU_material_textures(GPUMaterial *material)
struct GPUPass * GPU_material_get_pass(GPUMaterial *material)
struct GPUUniformBuf * GPU_material_uniform_buffer_get(GPUMaterial *material)
int GPU_shader_get_uniform(GPUShader *shader, const char *name)
struct GPUShader GPUShader
int GPU_shader_get_builtin_block(GPUShader *shader, int builtin)
int GPU_shader_get_uniform_block_binding(GPUShader *shader, const char *name)
@ GPU_UNIFORM_VIEWPROJECTION_INV
@ GPU_UNIFORM_RESOURCE_ID
@ GPU_UNIFORM_VIEWPROJECTION
@ GPU_UNIFORM_BASE_INSTANCE
@ GPU_UNIFORM_PROJECTION_INV
@ GPU_UNIFORM_MODELVIEW_INV
@ GPU_UNIFORM_RESOURCE_CHUNK
int GPU_shader_get_texture_binding(GPUShader *shader, const char *name)
int GPU_shader_get_builtin_uniform(GPUShader *shader, int builtin)
int GPU_shader_get_ssbo(GPUShader *shader, const char *name)
@ GPU_UNIFORM_BLOCK_DRW_VIEW
@ GPU_UNIFORM_BLOCK_DRW_MODEL
@ GPU_UNIFORM_BLOCK_MODEL
@ GPU_UNIFORM_BLOCK_DRW_INFOS
struct GPUStorageBuf GPUStorageBuf
struct GPUTexture GPUTexture
void GPU_texture_ref(GPUTexture *tex)
static const int GPU_SAMPLER_MAX
uint GPU_vertbuf_get_vertex_alloc(const GPUVertBuf *verts)
const GPUVertFormat * GPU_vertbuf_get_format(const GPUVertBuf *verts)
void GPU_vertbuf_vert_set(GPUVertBuf *verts, uint v_idx, const void *data)
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_attr_set(GPUVertBuf *, uint a_idx, uint v_idx, const void *data)
void GPU_vertbuf_data_resize(GPUVertBuf *, uint v_len)
#define MEM_recallocN(vmemh, len)
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 Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
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 Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input 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 a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
btMatrix3x3 inverse() const
Return the inverse of the matrix.
DEGForeachIDComponentCallback callback
SyclQueue void void * src
GPUBatch * drw_cache_procedural_points_get(void)
GPUBatch * drw_cache_procedural_triangles_get(void)
GPUBatch * drw_cache_procedural_lines_get(void)
void DRW_debug_modelmat(const float modelmat[4][4])
void DRW_debug_sphere(const float center[3], const float radius, const float color[4])
void DRW_debug_bbox(const BoundBox *bbox, const float color[4])
void DRW_uniform_attrs_pool_flush_all(GHash *table)
GPUVertBuf * DRW_temp_buffer_request(DRWInstanceDataList *idatalist, GPUVertFormat *format, int *vert_len)
GPUBatch * DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, GPUVertBuf *buf, GPUBatch *instancer, GPUBatch *geom)
void drw_uniform_attrs_pool_update(GHash *table, GPUUniformAttrList *key, DRWResourceHandle *handle, Object *ob, Object *dupli_parent, DupliObject *dupli_source)
GPUBatch * DRW_temp_batch_request(DRWInstanceDataList *idatalist, GPUVertBuf *buf, GPUPrimType prim_type)
#define DRW_BUFFER_VERTS_CHUNK
struct Object * DRW_object_get_dupli_parent(const Object *UNUSED(ob))
const DRWContextState * DRW_context_state_get(void)
#define DRW_MAX_DRAW_CMD_TYPE
@ DRW_UNIFORM_VERTEX_BUFFER_AS_TEXTURE_REF
@ DRW_UNIFORM_BLOCK_OBINFOS
@ DRW_UNIFORM_TFEEDBACK_TARGET
@ DRW_UNIFORM_TEXTURE_REF
@ DRW_UNIFORM_MODEL_MATRIX
@ DRW_UNIFORM_VERTEX_BUFFER_AS_STORAGE
@ DRW_UNIFORM_MODEL_MATRIX_INVERSE
@ DRW_UNIFORM_VERTEX_BUFFER_AS_STORAGE_REF
@ DRW_UNIFORM_BASE_INSTANCE
@ DRW_UNIFORM_BLOCK_OBMATS
@ DRW_UNIFORM_RESOURCE_ID
@ DRW_UNIFORM_STORAGE_BLOCK_REF
@ DRW_UNIFORM_VERTEX_BUFFER_AS_TEXTURE
@ DRW_UNIFORM_RESOURCE_CHUNK
@ DRW_UNIFORM_BLOCK_OBATTRS
@ DRW_UNIFORM_STORAGE_BLOCK
BLI_INLINE uint32_t DRW_handle_chunk_get(const DRWResourceHandle *handle)
#define DRW_RESOURCE_CHUNK_LEN
BLI_INLINE void * DRW_memblock_elem_from_handle(struct BLI_memblock *memblock, const DRWResourceHandle *handle)
@ DRW_CMD_COMPUTE_INDIRECT
@ DRW_CMD_DRAW_INSTANCE_RANGE
@ DRW_CMD_DRAW_PROCEDURAL
BLI_INLINE void DRW_handle_increment(DRWResourceHandle *handle)
BLI_INLINE uint32_t DRW_handle_id_get(const DRWResourceHandle *handle)
uint32_t DRWResourceHandle
BLI_INLINE void DRW_handle_negative_scale_enable(DRWResourceHandle *handle)
static void drw_command_compute(DRWShadingGroup *shgroup, int groups_x_len, int groups_y_len, int groups_z_len)
void DRW_shgroup_buffer_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUVertBuf **vertex_buffer)
void DRW_view_frustum_corners_get(const DRWView *view, BoundBox *corners)
DRWShadingGroup * DRW_shgroup_material_create(struct GPUMaterial *material, DRWPass *pass)
float DRW_view_near_distance_get(const DRWView *view)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, const float value)
void DRW_shgroup_vertex_buffer_ex(DRWShadingGroup *shgroup, const char *name, GPUVertBuf *vertex_buffer DRW_DEBUG_FILE_LINE_ARGS)
void drw_resource_buffer_finish(DRWData *vmempool)
void DRW_shgroup_call_ex(DRWShadingGroup *shgroup, Object *ob, float(*obmat)[4], struct GPUBatch *geom, bool bypass_culling, void *user_data)
static void drw_call_calc_orco(Object *ob, float(*r_orcofacs)[4])
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)
static void drw_shgroup_uniform_create_ex(DRWShadingGroup *shgroup, int loc, DRWUniformType type, const void *value, eGPUSamplerState sampler_state, int length, int arraysize)
static void drw_command_draw_range(DRWShadingGroup *shgroup, GPUBatch *batch, DRWResourceHandle handle, uint start, uint count)
static void drw_command_barrier(DRWShadingGroup *shgroup, eGPUBarrier type)
void DRW_shgroup_vertex_buffer_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUVertBuf **vertex_buffer DRW_DEBUG_FILE_LINE_ARGS)
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)
eDRWCommandType command_type_get(const uint64_t *command_type_bits, int index)
static void command_type_set(uint64_t *command_type_bits, int index, eDRWCommandType type)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
static void drw_command_compute_ref(DRWShadingGroup *shgroup, int groups_ref[3])
void DRW_shgroup_uniform_ivec3_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_shgroup_call_instance_range(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, uint i_sta, uint i_num)
static int pass_shgroup_dist_sort(const void *a, const void *b)
static DRWResourceHandle drw_resource_handle(DRWShadingGroup *shgroup, float(*obmat)[4], Object *ob)
void DRW_view_camtexco_get(const DRWView *view, float r_texco[4])
void DRW_shgroup_call_procedural_lines(DRWShadingGroup *shgroup, Object *ob, uint line_count)
struct DRWSculptCallbackData DRWSculptCallbackData
const DRWView * DRW_view_default_get(void)
void DRW_shgroup_call_instances(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, uint count)
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)
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)
static void draw_call_sort(DRWCommand *array, DRWCommand *array_tmp, int array_len)
void DRW_shgroup_state_enable(DRWShadingGroup *shgroup, DRWState state)
void DRW_shgroup_uniform_ivec2_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_pass_link(DRWPass *first, DRWPass *second)
void DRW_shgroup_uniform_vec3_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
bool DRW_view_is_persp_get(const DRWView *view)
DRWCallBuffer * DRW_shgroup_call_buffer_instance(DRWShadingGroup *shgroup, struct GPUVertFormat *format, GPUBatch *geom)
DRWPass * DRW_pass_create_instance(const char *name, DRWPass *original, DRWState state)
void DRW_shgroup_uniform_ivec2(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_shgroup_call_instances_with_attrs(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, struct GPUBatch *inst_attributes)
static void draw_view_matrix_state_update(ViewInfos *storage, const float viewmat[4][4], const float winmat[4][4])
void DRW_shgroup_uniform_texture_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex, eGPUSamplerState sampler_state)
static void drw_call_culling_init(DRWCullingState *cull, Object *ob)
void DRW_shgroup_call_compute(DRWShadingGroup *shgroup, int groups_x_len, int groups_y_len, int groups_z_len)
static void sculpt_draw_cb(DRWSculptCallbackData *scd, GPU_PBVH_Buffers *buffers)
void DRW_shgroup_call_procedural_points(DRWShadingGroup *shgroup, Object *ob, uint point_count)
static void drw_command_set_mutable_state(DRWShadingGroup *shgroup, DRWState enable, DRWState disable)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
void DRW_shgroup_barrier(DRWShadingGroup *shgroup, eGPUBarrier type)
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
static void drw_command_compute_indirect(DRWShadingGroup *shgroup, GPUStorageBuf *indirect_buf)
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_shgroup_uniform_int_copy(DRWShadingGroup *shgroup, const char *name, const int value)
static void drw_shgroup_material_texture(DRWShadingGroup *grp, GPUTexture *gputex, const char *name, eGPUSamplerState state)
void DRW_pass_sort_shgroup_z(DRWPass *pass)
bool DRW_pass_is_empty(DRWPass *pass)
#define SCULPT_DEBUG_BUFFERS
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])
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)
void DRW_shgroup_call_sculpt(DRWShadingGroup *shgroup, Object *ob, bool use_wire, bool use_mask)
void DRW_shgroup_call_compute_ref(DRWShadingGroup *shgroup, int groups_ref[3])
void DRW_shgroup_buffer_texture(DRWShadingGroup *shgroup, const char *name, GPUVertBuf *vertex_buffer)
static void drw_call_obinfos_init(DRWObjectInfos *ob_infos, Object *ob)
void DRW_shgroup_uniform_texture_ex(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex, eGPUSamplerState sampler_state)
void DRW_shgroup_storage_block_ex(DRWShadingGroup *shgroup, const char *name, const GPUStorageBuf *ssbo DRW_DEBUG_FILE_LINE_ARGS)
GPUVertFormat * DRW_shgroup_instance_format_array(const DRWInstanceAttrFormat attrs[], int arraysize)
DRWView * DRW_view_create_sub(const DRWView *parent_view, const float viewmat[4][4], const float winmat[4][4])
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])
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
BLI_INLINE void drw_call_matrix_init(DRWObjectMatrix *ob_mats, Object *ob, float(*obmat)[4])
static float sculpt_debug_colors[9][4]
void DRW_shgroup_uniform_int(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
static void drw_command_set_stencil_mask(DRWShadingGroup *shgroup, uint write_mask, uint reference, uint compare_mask)
DRWCallBuffer * DRW_shgroup_call_buffer(DRWShadingGroup *shgroup, struct GPUVertFormat *format, GPUPrimType prim_type)
static void drw_command_draw_instance(DRWShadingGroup *shgroup, GPUBatch *batch, DRWResourceHandle handle, uint count, bool use_attr)
static void * drw_command_create(DRWShadingGroup *shgroup, eDRWCommandType type)
static void drw_shgroup_uniform(DRWShadingGroup *shgroup, const char *name, DRWUniformType type, const void *value, int length, int arraysize)
DRWShadingGroup * DRW_shgroup_transform_feedback_create(struct GPUShader *shader, DRWPass *pass, GPUVertBuf *tf_target)
void DRW_shgroup_uniform_ivec4(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
float DRW_view_far_distance_get(const DRWView *view)
void DRW_shgroup_add_material_resources(DRWShadingGroup *grp, struct GPUMaterial *material)
void DRW_shgroup_storage_block_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUStorageBuf **ssbo DRW_DEBUG_FILE_LINE_ARGS)
uint32_t DRW_object_resource_id_get(Object *UNUSED(ob))
void DRW_shgroup_uniform_block_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUUniformBuf **ubo DRW_DEBUG_FILE_LINE_ARGS)
void DRW_view_clip_planes_set(DRWView *view, float(*planes)[4], int plane_len)
static void drw_command_draw_procedural(DRWShadingGroup *shgroup, GPUBatch *batch, DRWResourceHandle handle, uint vert_count)
void DRW_pass_foreach_shgroup(DRWPass *pass, void(*callback)(void *userData, DRWShadingGroup *shgrp), void *userData)
static GPUVertFormat inst_select_format
static void drw_command_draw(DRWShadingGroup *shgroup, GPUBatch *batch, DRWResourceHandle handle)
DRWShadingGroup * DRW_shgroup_create_sub(DRWShadingGroup *shgroup)
void DRW_shgroup_uniform_vec4_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
static void drw_command_set_select_id(DRWShadingGroup *shgroup, GPUVertBuf *buf, uint select_id)
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
DRWPass * DRW_pass_create(const char *name, DRWState state)
static DRWShadingGroup * drw_shgroup_material_create_ex(GPUPass *gpupass, DRWPass *pass)
void DRW_shgroup_clear_framebuffer(DRWShadingGroup *shgroup, eGPUFrameBufferBits channels, uchar r, uchar g, uchar b, uchar a, float depth, uchar stencil)
void DRW_shgroup_uniform_bool_copy(DRWShadingGroup *shgroup, const char *name, const bool value)
void DRW_shgroup_uniform_mat4_copy(DRWShadingGroup *shgroup, const char *name, const float(*value)[4])
static DRWShadingGroup * drw_shgroup_create_ex(struct GPUShader *shader, DRWPass *pass)
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)
static void draw_frustum_culling_planes_calc(const float(*persmat)[4], float(*frustum_planes)[4])
void DRW_shgroup_call_sculpt_with_materials(DRWShadingGroup **shgroups, int num_shgroups, Object *ob)
static void draw_frustum_boundbox_calc(const float(*viewinv)[4], const float(*projmat)[4], BoundBox *r_bbox)
void DRW_shgroup_uniform_vec2_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
static void sculpt_debug_cb(void *user_data, const float bmin[3], const float bmax[3], PBVHNodeFlags flag)
static void draw_frustum_bound_sphere_calc(const BoundBox *bbox, const float(*viewinv)[4], const float(*projmat)[4], const float(*projinv)[4], BoundSphere *bsphere)
static void drw_shgroup_call_procedural_add_ex(DRWShadingGroup *shgroup, GPUBatch *geom, Object *ob, uint vert_count)
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)
static void drw_sculpt_generate_calls(DRWSculptCallbackData *scd)
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])
void DRW_shgroup_uniform_vec2(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
void DRW_shgroup_uniform_image(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
static DRWResourceHandle drw_resource_handle_new(float(*obmat)[4], Object *ob)
void DRW_shgroup_call_range(DRWShadingGroup *shgroup, struct Object *ob, GPUBatch *geom, uint v_sta, uint v_num)
void DRW_shgroup_uniform_ivec4_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_view_camtexco_set(DRWView *view, float texco[4])
void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, uint mask)
static void drw_command_draw_intance_range(DRWShadingGroup *shgroup, GPUBatch *batch, DRWResourceHandle handle, uint start, uint count)
static void drw_shgroup_init(DRWShadingGroup *shgroup, GPUShader *shader)
static void drw_sculpt_get_frustum_planes(Object *ob, float planes[6][4])
void DRW_view_reset(void)
static void drw_command_clear(DRWShadingGroup *shgroup, eGPUFrameBufferBits channels, uchar r, uchar g, uchar b, uchar a, float depth, uchar stencil)
#define SCULPT_DEBUG_COLOR(id)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
IMETHOD void random(Vector &a)
addDelta operator for displacement rotational velocity.
GPUShader * GPU_pass_shader_get(GPUPass *pass)
ccl_gpu_kernel_postfix ccl_global float int int int int sh
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN_aligned)(size_t len, size_t alignment, const char *str)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
T length(const vec_base< T, Size > &a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken g("g", pxr::TfToken::Immortal)
unsigned __int64 uint64_t
struct DRWCommandChunk * next
eGPUFrameBufferBits clear_channels
GPUStorageBuf * indirect_buf
const struct bContext * evil_C
struct RegionView3D * rv3d
struct GHash * obattrs_ubo_pool
struct BLI_memblock * images
struct BLI_memblock * commands_small
struct BLI_memblock * obinfos
struct BLI_memblock * commands
struct BLI_memblock * shgroups
struct BLI_memblock * passes
struct BLI_memblock * uniforms
struct GPUUniformBuf ** obinfos_ubo
struct BLI_memblock * obmats
struct GPUUniformBuf ** matrices_ubo
DRWInstanceDataList * idatalist
struct BLI_memblock * views
struct BLI_memblock * callbuffers
struct BLI_memblock * cullstates
struct DupliObject * dupli_source
DRWResourceHandle ob_handle
DRWResourceHandle pass_handle
DRWResourceHandle resource_handle
struct Object * dupli_parent
bool ob_state_obinfo_init
struct DRWPass::@312 shgroups
DRWShadingGroup ** shading_groups
struct DRWCommandChunk * first
struct DRWShadingGroup::@307::@311 z_sorting
struct GPUUniformAttrList * uniform_attrs
struct DRWUniformChunk * uniforms
struct DRWShadingGroup::@306 cmd
DRWResourceHandle pass_handle
struct DRWCommandChunk * last
struct GPUUniformBuf * view_ubo
struct SubdivCCG * subdiv_ccg
struct SculptSession * sculpt