27 float *camera_z_axis = viewinv[2];
28 float *camera_pos = viewinv[3];
84 GPU_framebuffer_ensure_config(
86 {GPU_ATTACHMENT_TEXTURE(txl->temp_depth_tx), GPU_ATTACHMENT_TEXTURE(txl->outlines_id_tx)});
92 GPU_ATTACHMENT_TEXTURE(txl->overlay_color_tx),
93 GPU_ATTACHMENT_TEXTURE(txl->overlay_line_tx),
100 GPU_ATTACHMENT_TEXTURE(dtxl->color_overlay),
115 const bool do_expand = (
U.pixelsize > 1.0) || (outline_width > 2.0f);
190 float thickness_scale = (is_screenspace) ? -1.0f : (gpd->
pixfactor / 2000.0f);
317 if (dupli && !init_dupli) {
340 if (shgroup && geom) {
360 const float clearcol[4] = {0.0f, 0.0f, 0.0f, 0.0f};
void BKE_gpencil_visible_stroke_advanced_iter(struct ViewLayer *view_layer, struct Object *ob, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk, bool do_onion, int cfra)
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
General operations, lookup, etc. for blender objects.
void BKE_boundbox_calc_size_aabb(const struct BoundBox *bb, float r_size[3])
void BKE_boundbox_calc_center_aabb(const struct BoundBox *bb, float r_cent[3])
const struct BoundBox * BKE_object_boundbox_get(struct Object *ob)
void plane_from_point_normal_v3(float r_plane[4], const float plane_co[3], const float plane_no[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
bool invert_m4(float R[4][4])
void unit_m4(float m[4][4])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
void rescale_m4(float mat[4][4], const float scale[3])
float mat4_to_scale(const float M[4][4])
void transpose_m4(float R[4][4])
MINLINE void add_v3_fl(float r[3], float f)
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
@ GP_DATA_STROKE_KEEPTHICKNESS
#define GPENCIL_ANY_MODE(gpd)
@ GP_MATERIAL_STROKE_SHOW
#define V3D_SELECT_OUTLINE
@ DRW_STATE_DEPTH_LESS_EQUAL
@ DRW_STATE_BLEND_ALPHA_PREMUL
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
#define DRW_shgroup_call(shgroup, geom, ob)
NSNotificationCenter * center
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
struct GPUShader GPUShader
float UI_GetThemeValuef(int colorid)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
GPUBatch * DRW_cache_object_edge_detection_get(Object *ob, bool *r_is_manifold)
GPUBatch * DRW_cache_volume_selection_surface_get(Object *ob)
GPUBatch * DRW_cache_object_surface_get(Object *ob)
struct GPUBatch * DRW_cache_gpencil_strokes_get(struct Object *ob, int cfra)
struct GPUBatch * DRW_cache_gpencil_fills_get(struct Object *ob, int cfra)
bool DRW_object_is_flat(Object *ob, int *r_axis)
bool DRW_object_axis_orthogonal_to_view(Object *ob, int axis)
struct DRWShadingGroup * DRW_shgroup_curves_create_sub(struct Object *object, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
bool DRW_state_is_fbo(void)
const DRWContextState * DRW_context_state_get(void)
DefaultTextureList * DRW_viewport_texture_list_get(void)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, const float value)
void DRW_shgroup_call_instance_range(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, uint i_sta, uint i_num)
bool DRW_view_is_persp_get(const DRWView *view)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
bool DRW_pass_is_empty(DRWPass *pass)
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
DRWShadingGroup * DRW_shgroup_create_sub(DRWShadingGroup *shgroup)
void DRW_shgroup_uniform_vec4_copy(DRWShadingGroup *shgroup, const char *name, const float *value)
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
void DRW_shgroup_uniform_bool_copy(DRWShadingGroup *shgroup, const char *name, const bool value)
void DRW_shgroup_call_range(DRWShadingGroup *shgroup, struct Object *ob, GPUBatch *geom, uint v_sta, uint v_num)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_draw_pass(DRWPass *pass)
void DRW_stats_group_start(const char *name)
void DRW_stats_group_end(void)
void DRW_texture_ensure_fullscreen_2d(GPUTexture **tex, eGPUTextureFormat format, DRWTextureFlag flags)
ccl_gpu_kernel_postfix ccl_global float int int int int sh
static void gpencil_stroke_cache_populate(bGPDlayer *UNUSED(gpl), bGPDframe *UNUSED(gpf), bGPDstroke *gps, void *thunk)
static void gpencil_depth_plane(Object *ob, float r_plane[4])
static void OVERLAY_outline_curves(OVERLAY_PrivateData *pd, Object *ob)
void OVERLAY_outline_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, bool init_dupli)
void OVERLAY_outline_draw(OVERLAY_Data *vedata)
static void OVERLAY_outline_gpencil(OVERLAY_PrivateData *pd, Object *ob)
void OVERLAY_outline_init(OVERLAY_Data *vedata)
void OVERLAY_outline_cache_init(OVERLAY_Data *vedata)
static void OVERLAY_outline_volume(OVERLAY_PrivateData *pd, Object *ob)
static void gpencil_layer_cache_populate(bGPDlayer *gpl, bGPDframe *UNUSED(gpf), bGPDstroke *UNUSED(gps), void *thunk)
GPUShader * OVERLAY_shader_outline_prepass(bool use_wire)
GPUShader * OVERLAY_shader_outline_prepass_gpencil(void)
GPUShader * OVERLAY_shader_outline_prepass_pointcloud(void)
GPUShader * OVERLAY_shader_outline_detect(void)
GPUShader * OVERLAY_shader_outline_prepass_curves(void)
struct RegionView3D * rv3d
struct GPUUniformBuf * block_ubo
struct GPUTexture * depth
OVERLAY_StorageList * stl
OVERLAY_FramebufferList * fbl
OVERLAY_TextureList * txl
DRWShadingGroup * outline_shgrp
struct GPUBatch * outline_geom
struct GPUFrameBuffer * outlines_resolve_fb
struct GPUFrameBuffer * outlines_prepass_fb
DRWPass * outlines_detect_ps
DRWPass * outlines_prepass_ps
struct OVERLAY_PrivateData::@249 antialiasing
DRWShadingGroup * outlines_gpencil_grp
bool xray_enabled_and_not_wire
DRWShadingGroup * outlines_grp
DRWShadingGroup * outlines_curves_grp
DRWShadingGroup * outlines_ptcloud_grp
struct OVERLAY_PrivateData * pd
struct GPUTexture * outlines_id_tx
struct GPUTexture * temp_depth_tx
bGPDstroke_Runtime runtime
DRWShadingGroup * fill_grp
DRWShadingGroup * stroke_grp