61 if (*vldata ==
NULL) {
62 *vldata =
MEM_callocN(
sizeof(**vldata),
"WORKBENCH_ViewLayerData");
77 float view_matrix[4][4], rot_matrix[4][4];
90 if (
U.edit_studio_light) {
95 for (
int i = 0; i < 4; i++) {
enum eContextObjectMode CTX_data_mode_enum_ex(const struct Object *obedit, const struct Object *ob, eObjectMode object_mode)
bool BKE_scene_uses_blender_workbench(const struct Scene *scene)
@ STUDIOLIGHT_TYPE_MATCAP
@ STUDIOLIGHT_TYPE_STUDIO
struct StudioLight * BKE_studiolight_find(const char *name, int flag)
StudioLight * BKE_studiolight_studio_edit_get(void)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void unit_m4(float m[4][4])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
void axis_angle_to_mat4_single(float R[4][4], char axis, float angle)
MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
MINLINE void copy_v2_v2(float r[2], const float a[2])
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 void negate_v3(float r[3])
MINLINE void swap_v3_v3(float a[3], float b[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void copy_v4_fl(float r[4], float f)
void BLI_memblock_destroy(BLI_memblock *mblk, MemblockValFreeFP free_callback) ATTR_NONNULL(1)
void BLI_memblock_iternew(BLI_memblock *mblk, BLI_memblock_iter *iter) ATTR_NONNULL()
BLI_memblock * BLI_memblock_create_ex(uint elem_size, uint chunk_size) ATTR_WARN_UNUSED_RESULT
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)
void BLI_memblock_clear(BLI_memblock *mblk, MemblockValFreeFP free_callback) ATTR_NONNULL(1)
@ V3D_SHADING_MATERIAL_COLOR
@ V3D_SHADING_OBJECT_COLOR
#define RV3D_GPULIGHT_UPDATE
#define RV3D_CLIPPING_ENABLED(v3d, rv3d)
@ V3D_SHADING_DEPTH_OF_FIELD
@ V3D_SHADING_MATCAP_FLIP_X
#define DRW_UBO_FREE_SAFE(ubo)
#define DRW_TEXTURE_FREE_SAFE(tex)
#define XRAY_ENABLED(v3d)
#define XRAY_FLAG_ENABLED(v3d)
bool DRW_state_is_playback(void)
bool DRW_state_is_navigating(void)
void ** DRW_view_layer_engine_data_ensure_ex(ViewLayer *view_layer, DrawEngineType *engine_type, void(*callback)(void *storage))
const DRWContextState * DRW_context_state_get(void)
const float * DRW_viewport_size_get(void)
bool DRW_state_is_image_render(void)
const float * DRW_viewport_invert_size_get(void)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void *(* MEM_callocN)(size_t len, const char *str)
struct ViewLayer * view_layer
struct Object * object_edit
struct RegionView3D * rv3d
struct SceneDisplay display
SolidLight light[STUDIOLIGHT_MAX_LIGHT]
float object_outline_color[3]
struct GPUUniformBuf * world_ubo
int taa_sample_len_previous
const UserDef * preferences
struct GPUUniformBuf * material_ubo_curr
struct BLI_memblock * material_ubo_data
struct BLI_memblock * material_ubo
eContextObjectMode ctx_mode
struct WORKBENCH_ViewLayerData * vldata
WORKBENCH_UBO_Material * material_ubo_data_curr
StudioLight * studio_light
float background_color[4]
struct WORKBENCH_PrivateData * wpd
WORKBENCH_UBO_Light lights[4]
float viewport_size_inv[2]
float object_outline_color[4]
struct GPUUniformBuf * world_ubo
struct GPUUniformBuf * cavity_sample_ubo
struct BLI_memblock * material_ubo
struct BLI_memblock * material_ubo_data
struct GPUUniformBuf * dof_sample_ubo
struct GPUTexture * cavity_jitter_tx
GPUUniformBuf * workbench_material_ubo_alloc(WORKBENCH_PrivateData *wpd)
static void workbench_view_layer_data_free(void *storage)
void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
static WORKBENCH_ViewLayerData * workbench_view_layer_data_ensure_ex(struct ViewLayer *view_layer)
void workbench_private_data_alloc(WORKBENCH_StorageList *stl)
void workbench_update_world_ubo(WORKBENCH_PrivateData *wpd)
static void workbench_studiolight_data_update(WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd)
static void workbench_ubo_free(void *elem)
void workbench_update_material_ubos(WORKBENCH_PrivateData *UNUSED(wpd))
int workbench_antialiasing_sample_count_get(WORKBENCH_PrivateData *wpd)
void workbench_cavity_data_update(WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd)
void workbench_material_ubo_data(WORKBENCH_PrivateData *wpd, Object *ob, Material *mat, WORKBENCH_UBO_Material *data, eV3DShadingColorType color_type)
void workbench_shadow_data_update(WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd)
#define USE_WORLD_ORIENTATION(wpd)
struct WORKBENCH_UBO_Material WORKBENCH_UBO_Material
#define CULL_BACKFACE_ENABLED(wpd)
BLI_INLINE bool workbench_is_specular_highlight_enabled(WORKBENCH_PrivateData *wpd)