Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
workbench_private.h File Reference
#include "BKE_studiolight.h"
#include "DNA_image_types.h"
#include "DNA_userdef_types.h"
#include "DNA_view3d_types.h"
#include "DNA_world_types.h"
#include "DRW_render.h"
#include "workbench_engine.h"

Go to the source code of this file.

Classes

struct  WORKBENCH_FramebufferList
 
struct  WORKBENCH_TextureList
 
struct  WORKBENCH_StorageList
 
struct  WORKBENCH_PassList
 
struct  WORKBENCH_Data
 
struct  WORKBENCH_UBO_Light
 
struct  WORKBENCH_UBO_Material
 
struct  WORKBENCH_UBO_World
 
struct  WORKBENCH_Prepass
 
struct  WORKBENCH_PrivateData
 
struct  WORKBENCH_ObjectData
 
struct  WORKBENCH_ViewLayerData
 

Macros

#define WORKBENCH_ENGINE   "BLENDER_WORKBENCH"
 
#define MAX_MATERIAL   (1 << 12)
 
#define DEBUG_SHADOW_VOLUME   0
 
#define STUDIOLIGHT_ENABLED(wpd)   (wpd->shading.light == V3D_LIGHTING_STUDIO)
 
#define MATCAP_ENABLED(wpd)   (wpd->shading.light == V3D_LIGHTING_MATCAP)
 
#define USE_WORLD_ORIENTATION(wpd)   ((wpd->shading.flag & V3D_SHADING_WORLD_ORIENTATION) != 0)
 
#define STUDIOLIGHT_TYPE_WORLD_ENABLED(wpd)    (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_WORLD))
 
#define STUDIOLIGHT_TYPE_STUDIO_ENABLED(wpd)    (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_STUDIO))
 
#define STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd)    (MATCAP_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_MATCAP))
 
#define SSAO_ENABLED(wpd)
 
#define CURVATURE_ENABLED(wpd)
 
#define CAVITY_ENABLED(wpd)   (CURVATURE_ENABLED(wpd) || SSAO_ENABLED(wpd))
 
#define SHADOW_ENABLED(wpd)   (wpd->shading.flag & V3D_SHADING_SHADOW)
 
#define CULL_BACKFACE_ENABLED(wpd)   ((wpd->shading.flag & V3D_SHADING_BACKFACE_CULLING) != 0)
 
#define OBJECT_OUTLINE_ENABLED(wpd)   (wpd->shading.flag & V3D_SHADING_OBJECT_OUTLINE)
 
#define OBJECT_ID_PASS_ENABLED(wpd)   (OBJECT_OUTLINE_ENABLED(wpd) || CURVATURE_ENABLED(wpd))
 
#define NORMAL_ENCODING_ENABLED()   (true)
 
#define WORKBENCH_OBJECT_DATATYPE(ob)    ((ob->type == OB_POINTCLOUD) ? WORKBENCH_DATATYPE_POINTCLOUD : WORKBENCH_DATATYPE_MESH)
 
#define workbench_material_setup(wpd, ob, mat_nr, color_type, r_transp)    workbench_material_setup_ex(wpd, ob, mat_nr, color_type, WORKBENCH_OBJECT_DATATYPE(ob), r_transp)
 
#define workbench_image_setup(wpd, ob, mat_nr, ima, iuser, interp)    workbench_image_setup_ex(wpd, ob, mat_nr, ima, iuser, interp, WORKBENCH_OBJECT_DATATYPE(ob))
 
#define workbench_material_hair_setup(wpd, ob, mat_nr, color_type)    workbench_material_setup_ex(wpd, ob, mat_nr, color_type, WORKBENCH_DATATYPE_HAIR, 0)
 
#define workbench_image_hair_setup(wpd, ob, mat_nr, ima, iuser, interp)    workbench_image_setup_ex(wpd, ob, mat_nr, ima, iuser, interp, WORKBENCH_DATATYPE_HAIR)
 

Typedefs

typedef enum eWORKBENCH_DataType eWORKBENCH_DataType
 
typedef enum eWORKBENCH_VolumeInterpType eWORKBENCH_VolumeInterpType
 
typedef struct WORKBENCH_FramebufferList WORKBENCH_FramebufferList
 
typedef struct WORKBENCH_TextureList WORKBENCH_TextureList
 
typedef struct WORKBENCH_StorageList WORKBENCH_StorageList
 
typedef struct WORKBENCH_PassList WORKBENCH_PassList
 
typedef struct WORKBENCH_Data WORKBENCH_Data
 
typedef struct WORKBENCH_UBO_Light WORKBENCH_UBO_Light
 
typedef struct WORKBENCH_UBO_Material WORKBENCH_UBO_Material
 
typedef struct WORKBENCH_UBO_World WORKBENCH_UBO_World
 
typedef struct WORKBENCH_Prepass WORKBENCH_Prepass
 
typedef struct WORKBENCH_PrivateData WORKBENCH_PrivateData
 
typedef struct WORKBENCH_ObjectData WORKBENCH_ObjectData
 
typedef struct WORKBENCH_ViewLayerData WORKBENCH_ViewLayerData
 

Enumerations

enum  eWORKBENCH_DataType { WORKBENCH_DATATYPE_MESH = 0 , WORKBENCH_DATATYPE_HAIR , WORKBENCH_DATATYPE_POINTCLOUD , WORKBENCH_DATATYPE_MAX }
 
enum  eWORKBENCH_VolumeInterpType { WORKBENCH_VOLUME_INTERP_LINEAR = 0 , WORKBENCH_VOLUME_INTERP_CUBIC , WORKBENCH_VOLUME_INTERP_CLOSEST }
 

Functions

BLI_INLINE bool workbench_is_specular_highlight_enabled (WORKBENCH_PrivateData *wpd)
 
void workbench_opaque_engine_init (WORKBENCH_Data *data)
 
void workbench_opaque_cache_init (WORKBENCH_Data *data)
 
void workbench_transparent_engine_init (WORKBENCH_Data *data)
 
void workbench_transparent_cache_init (WORKBENCH_Data *data)
 
void workbench_transparent_draw_depth_pass (WORKBENCH_Data *data)
 
void workbench_shadow_data_update (WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd)
 
void workbench_shadow_cache_init (WORKBENCH_Data *data)
 
void workbench_shadow_cache_populate (WORKBENCH_Data *data, Object *ob, bool has_transp_mat)
 
GPUShaderworkbench_shader_opaque_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType data)
 
GPUShaderworkbench_shader_opaque_image_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType data, bool tiled)
 
GPUShaderworkbench_shader_composite_get (WORKBENCH_PrivateData *wpd)
 
GPUShaderworkbench_shader_merge_infront_get (WORKBENCH_PrivateData *wpd)
 
GPUShaderworkbench_shader_transparent_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType data)
 
GPUShaderworkbench_shader_transparent_image_get (WORKBENCH_PrivateData *wpd, eWORKBENCH_DataType data, bool tiled)
 
GPUShaderworkbench_shader_transparent_resolve_get (WORKBENCH_PrivateData *wpd)
 
GPUShaderworkbench_shader_shadow_pass_get (bool manifold)
 
GPUShaderworkbench_shader_shadow_fail_get (bool manifold, bool cap)
 
GPUShaderworkbench_shader_cavity_get (bool cavity, bool curvature)
 
GPUShaderworkbench_shader_outline_get (void)
 
GPUShaderworkbench_shader_antialiasing_accumulation_get (void)
 
GPUShaderworkbench_shader_antialiasing_get (int stage)
 
GPUShaderworkbench_shader_volume_get (bool slice, bool coba, eWORKBENCH_VolumeInterpType interp_type, bool smoke)
 
void workbench_shader_depth_of_field_get (GPUShader **prepare_sh, GPUShader **downsample_sh, GPUShader **blur1_sh, GPUShader **blur2_sh, GPUShader **resolve_sh)
 
void workbench_shader_free (void)
 
int workbench_antialiasing_sample_count_get (WORKBENCH_PrivateData *wpd)
 
void workbench_antialiasing_engine_init (WORKBENCH_Data *vedata)
 
void workbench_antialiasing_cache_init (WORKBENCH_Data *vedata)
 
void workbench_antialiasing_view_updated (WORKBENCH_Data *vedata)
 
bool workbench_antialiasing_setup (WORKBENCH_Data *vedata)
 
void workbench_antialiasing_draw_pass (WORKBENCH_Data *vedata)
 
void workbench_cavity_data_update (WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd)
 
void workbench_cavity_samples_ubo_ensure (WORKBENCH_PrivateData *wpd)
 
void workbench_cavity_cache_init (WORKBENCH_Data *data)
 
void workbench_outline_cache_init (WORKBENCH_Data *data)
 
void workbench_dof_engine_init (WORKBENCH_Data *vedata)
 
void workbench_dof_cache_init (WORKBENCH_Data *vedata)
 
void workbench_dof_draw_pass (WORKBENCH_Data *vedata)
 
void workbench_material_ubo_data (WORKBENCH_PrivateData *wpd, Object *ob, Material *mat, WORKBENCH_UBO_Material *data, eV3DShadingColorType color_type)
 
DRWShadingGroupworkbench_material_setup_ex (WORKBENCH_PrivateData *wpd, Object *ob, int mat_nr, eV3DShadingColorType color_type, eWORKBENCH_DataType datatype, bool *r_transp)
 
DRWShadingGroupworkbench_image_setup_ex (WORKBENCH_PrivateData *wpd, Object *ob, int mat_nr, Image *ima, ImageUser *iuser, eGPUSamplerState sampler, eWORKBENCH_DataType datatype)
 
void workbench_private_data_alloc (WORKBENCH_StorageList *stl)
 
void workbench_private_data_init (WORKBENCH_PrivateData *wpd)
 
void workbench_update_world_ubo (WORKBENCH_PrivateData *wpd)
 
void workbench_update_material_ubos (WORKBENCH_PrivateData *wpd)
 
struct GPUUniformBufworkbench_material_ubo_alloc (WORKBENCH_PrivateData *wpd)
 
void workbench_volume_engine_init (WORKBENCH_Data *vedata)
 
void workbench_volume_cache_init (WORKBENCH_Data *vedata)
 
void workbench_volume_cache_populate (WORKBENCH_Data *vedata, struct Scene *scene, struct Object *ob, struct ModifierData *md, eV3DShadingColorType color_type)
 
void workbench_volume_draw_pass (WORKBENCH_Data *vedata)
 
void workbench_engine_init (void *ved)
 
void workbench_cache_init (void *ved)
 
void workbench_cache_populate (void *ved, Object *ob)
 
void workbench_cache_finish (void *ved)
 
void workbench_draw_sample (void *ved)
 
void workbench_draw_finish (void *ved)
 
void workbench_render (void *ved, struct RenderEngine *engine, struct RenderLayer *render_layer, const struct rcti *rect)
 
void workbench_render_update_passes (struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
 

Variables

struct DrawEngineType draw_engine_workbench
 

Macro Definition Documentation

◆ CAVITY_ENABLED

#define CAVITY_ENABLED (   wpd)    (CURVATURE_ENABLED(wpd) || SSAO_ENABLED(wpd))

Definition at line 50 of file workbench_private.h.

◆ CULL_BACKFACE_ENABLED

#define CULL_BACKFACE_ENABLED (   wpd)    ((wpd->shading.flag & V3D_SHADING_BACKFACE_CULLING) != 0)

Definition at line 52 of file workbench_private.h.

◆ CURVATURE_ENABLED

#define CURVATURE_ENABLED (   wpd)
Value:
((wpd->shading.flag & V3D_SHADING_CAVITY) && \
((wpd->shading.cavity_type == V3D_SHADING_CAVITY_CURVATURE) || \
(wpd->shading.cavity_type == V3D_SHADING_CAVITY_BOTH)))
@ V3D_SHADING_CAVITY
@ V3D_SHADING_CAVITY_BOTH
@ V3D_SHADING_CAVITY_CURVATURE

Definition at line 46 of file workbench_private.h.

◆ DEBUG_SHADOW_VOLUME

#define DEBUG_SHADOW_VOLUME   0

Definition at line 31 of file workbench_private.h.

◆ MATCAP_ENABLED

#define MATCAP_ENABLED (   wpd)    (wpd->shading.light == V3D_LIGHTING_MATCAP)

Definition at line 34 of file workbench_private.h.

◆ MAX_MATERIAL

#define MAX_MATERIAL   (1 << 12)

Definition at line 29 of file workbench_private.h.

◆ NORMAL_ENCODING_ENABLED

#define NORMAL_ENCODING_ENABLED ( )    (true)

Definition at line 56 of file workbench_private.h.

◆ OBJECT_ID_PASS_ENABLED

#define OBJECT_ID_PASS_ENABLED (   wpd)    (OBJECT_OUTLINE_ENABLED(wpd) || CURVATURE_ENABLED(wpd))

Definition at line 55 of file workbench_private.h.

◆ OBJECT_OUTLINE_ENABLED

#define OBJECT_OUTLINE_ENABLED (   wpd)    (wpd->shading.flag & V3D_SHADING_OBJECT_OUTLINE)

Definition at line 54 of file workbench_private.h.

◆ SHADOW_ENABLED

#define SHADOW_ENABLED (   wpd)    (wpd->shading.flag & V3D_SHADING_SHADOW)

Definition at line 51 of file workbench_private.h.

◆ SSAO_ENABLED

#define SSAO_ENABLED (   wpd)
Value:
((wpd->shading.flag & V3D_SHADING_CAVITY) && \
((wpd->shading.cavity_type == V3D_SHADING_CAVITY_SSAO) || \
(wpd->shading.cavity_type == V3D_SHADING_CAVITY_BOTH)))
@ V3D_SHADING_CAVITY_SSAO

Definition at line 42 of file workbench_private.h.

◆ STUDIOLIGHT_ENABLED

#define STUDIOLIGHT_ENABLED (   wpd)    (wpd->shading.light == V3D_LIGHTING_STUDIO)

Definition at line 33 of file workbench_private.h.

◆ STUDIOLIGHT_TYPE_MATCAP_ENABLED

#define STUDIOLIGHT_TYPE_MATCAP_ENABLED (   wpd)     (MATCAP_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_MATCAP))

Definition at line 40 of file workbench_private.h.

◆ STUDIOLIGHT_TYPE_STUDIO_ENABLED

#define STUDIOLIGHT_TYPE_STUDIO_ENABLED (   wpd)     (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_STUDIO))

Definition at line 38 of file workbench_private.h.

◆ STUDIOLIGHT_TYPE_WORLD_ENABLED

#define STUDIOLIGHT_TYPE_WORLD_ENABLED (   wpd)     (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_WORLD))

Definition at line 36 of file workbench_private.h.

◆ USE_WORLD_ORIENTATION

#define USE_WORLD_ORIENTATION (   wpd)    ((wpd->shading.flag & V3D_SHADING_WORLD_ORIENTATION) != 0)

Definition at line 35 of file workbench_private.h.

◆ WORKBENCH_ENGINE

#define WORKBENCH_ENGINE   "BLENDER_WORKBENCH"

Definition at line 27 of file workbench_private.h.

◆ workbench_image_hair_setup

#define workbench_image_hair_setup (   wpd,
  ob,
  mat_nr,
  ima,
  iuser,
  interp 
)     workbench_image_setup_ex(wpd, ob, mat_nr, ima, iuser, interp, WORKBENCH_DATATYPE_HAIR)

Definition at line 511 of file workbench_private.h.

◆ workbench_image_setup

#define workbench_image_setup (   wpd,
  ob,
  mat_nr,
  ima,
  iuser,
  interp 
)     workbench_image_setup_ex(wpd, ob, mat_nr, ima, iuser, interp, WORKBENCH_OBJECT_DATATYPE(ob))

Definition at line 506 of file workbench_private.h.

◆ workbench_material_hair_setup

#define workbench_material_hair_setup (   wpd,
  ob,
  mat_nr,
  color_type 
)     workbench_material_setup_ex(wpd, ob, mat_nr, color_type, WORKBENCH_DATATYPE_HAIR, 0)

Definition at line 509 of file workbench_private.h.

◆ workbench_material_setup

#define workbench_material_setup (   wpd,
  ob,
  mat_nr,
  color_type,
  r_transp 
)     workbench_material_setup_ex(wpd, ob, mat_nr, color_type, WORKBENCH_OBJECT_DATATYPE(ob), r_transp)

Definition at line 504 of file workbench_private.h.

◆ WORKBENCH_OBJECT_DATATYPE

#define WORKBENCH_OBJECT_DATATYPE (   ob)     ((ob->type == OB_POINTCLOUD) ? WORKBENCH_DATATYPE_POINTCLOUD : WORKBENCH_DATATYPE_MESH)

Definition at line 501 of file workbench_private.h.

Typedef Documentation

◆ eWORKBENCH_DataType

◆ eWORKBENCH_VolumeInterpType

◆ WORKBENCH_Data

◆ WORKBENCH_FramebufferList

◆ WORKBENCH_ObjectData

◆ WORKBENCH_PassList

◆ WORKBENCH_Prepass

◆ WORKBENCH_PrivateData

◆ WORKBENCH_StorageList

◆ WORKBENCH_TextureList

◆ WORKBENCH_UBO_Light

◆ WORKBENCH_UBO_Material

◆ WORKBENCH_UBO_World

◆ WORKBENCH_ViewLayerData

Enumeration Type Documentation

◆ eWORKBENCH_DataType

Enumerator
WORKBENCH_DATATYPE_MESH 
WORKBENCH_DATATYPE_HAIR 
WORKBENCH_DATATYPE_POINTCLOUD 
WORKBENCH_DATATYPE_MAX 

Definition at line 63 of file workbench_private.h.

◆ eWORKBENCH_VolumeInterpType

Enumerator
WORKBENCH_VOLUME_INTERP_LINEAR 
WORKBENCH_VOLUME_INTERP_CUBIC 
WORKBENCH_VOLUME_INTERP_CLOSEST 

Definition at line 72 of file workbench_private.h.

Function Documentation

◆ workbench_antialiasing_cache_init()

void workbench_antialiasing_cache_init ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_draw_pass()

void workbench_antialiasing_draw_pass ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_engine_init()

void workbench_antialiasing_engine_init ( WORKBENCH_Data vedata)

Definition at line 146 of file workbench_effect_antialiasing.c.

References WORKBENCH_FramebufferList::antialiasing_fb, WORKBENCH_FramebufferList::antialiasing_in_front_fb, AREATEX_HEIGHT, AREATEX_WIDTH, areaTexBytes, copy_m4_m4(), WORKBENCH_TextureList::depth_buffer_in_front_tx, WORKBENCH_TextureList::depth_buffer_tx, DRW_TEX_FILTER, DRW_texture_ensure_fullscreen_2d(), DRW_TEXTURE_FREE_SAFE, DRW_texture_pool_query_fullscreen(), DRW_view_persmat_get(), equals_m4m4(), WORKBENCH_Data::fbl, GPU_DATA_UBYTE, GPU_DEPTH24_STENCIL8, GPU_R8, GPU_RG8, GPU_RGBA16F, GPU_RGBA8, GPU_texture_create_2d(), GPU_texture_filter_mode(), GPU_texture_update(), WORKBENCH_TextureList::history_buffer_tx, WORKBENCH_PrivateData::is_navigating, WORKBENCH_PrivateData::is_playback, WORKBENCH_PrivateData::last_mat, NULL, WORKBENCH_PrivateData::reset_next_sample, SEARCHTEX_HEIGHT, SEARCHTEX_WIDTH, searchTexBytes, WORKBENCH_TextureList::smaa_area_tx, WORKBENCH_FramebufferList::smaa_edge_fb, WORKBENCH_PrivateData::smaa_edge_tx, WORKBENCH_TextureList::smaa_search_tx, WORKBENCH_FramebufferList::smaa_weight_fb, WORKBENCH_PrivateData::smaa_weight_tx, WORKBENCH_Data::stl, WORKBENCH_PrivateData::taa_sample, WORKBENCH_PrivateData::taa_sample_len, WORKBENCH_PrivateData::taa_sample_len_previous, WORKBENCH_Data::txl, WORKBENCH_PrivateData::valid_history, WORKBENCH_PrivateData::view, WORKBENCH_PrivateData::view_updated, workbench_in_front_history_needed(), workbench_taa_jitter_init(), and WORKBENCH_StorageList::wpd.

Referenced by workbench_engine_init().

◆ workbench_antialiasing_sample_count_get()

int workbench_antialiasing_sample_count_get ( WORKBENCH_PrivateData wpd)

◆ workbench_antialiasing_setup()

bool workbench_antialiasing_setup ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_view_updated()

void workbench_antialiasing_view_updated ( WORKBENCH_Data vedata)

◆ workbench_cache_finish()

void workbench_cache_finish ( void ved)

◆ workbench_cache_init()

void workbench_cache_init ( void ved)

◆ workbench_cache_populate()

void workbench_cache_populate ( void ved,
Object ob 
)

◆ workbench_cavity_cache_init()

void workbench_cavity_cache_init ( WORKBENCH_Data data)

◆ workbench_cavity_data_update()

void workbench_cavity_data_update ( WORKBENCH_PrivateData wpd,
WORKBENCH_UBO_World wd 
)

◆ workbench_cavity_samples_ubo_ensure()

void workbench_cavity_samples_ubo_ensure ( WORKBENCH_PrivateData wpd)

◆ workbench_dof_cache_init()

void workbench_dof_cache_init ( WORKBENCH_Data vedata)

Definition at line 241 of file workbench_effect_dof.c.

References WORKBENCH_ViewLayerData::cavity_jitter_tx, WORKBENCH_TextureList::coc_halfres_tx, WORKBENCH_PrivateData::coc_temp_tx, WORKBENCH_PrivateData::coc_tiles_tx, DefaultTextureList::color, DefaultTextureList::depth, WORKBENCH_PrivateData::dof_aperturesize, WORKBENCH_PassList::dof_blur1_ps, WORKBENCH_PassList::dof_blur2_ps, WORKBENCH_PrivateData::dof_blur_tx, WORKBENCH_PassList::dof_dilate_h_ps, WORKBENCH_PassList::dof_dilate_v_ps, WORKBENCH_PassList::dof_down2_ps, WORKBENCH_PassList::dof_down_ps, WORKBENCH_PrivateData::dof_enabled, WORKBENCH_PassList::dof_flatten_h_ps, WORKBENCH_PassList::dof_flatten_v_ps, WORKBENCH_PrivateData::dof_near_far, WORKBENCH_PassList::dof_resolve_ps, WORKBENCH_ViewLayerData::dof_sample_ubo, WORKBENCH_TextureList::dof_source_tx, downsample_sh, DRW_pass_create(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ex(), DRW_shgroup_uniform_vec2(), DRW_shgroup_uniform_vec3(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, DRW_viewport_invert_size_get(), DRW_viewport_texture_list_get(), float(), GPU_SAMPLER_DEFAULT, max_ii(), NULL, offset, WORKBENCH_Data::psl, WORKBENCH_Data::stl, WORKBENCH_PrivateData::taa_sample, WORKBENCH_PrivateData::taa_sample_len, WORKBENCH_Data::txl, WORKBENCH_PrivateData::vldata, workbench_cavity_samples_ubo_ensure(), workbench_shader_depth_of_field_get(), and WORKBENCH_StorageList::wpd.

Referenced by workbench_cache_init().

◆ workbench_dof_draw_pass()

void workbench_dof_draw_pass ( WORKBENCH_Data vedata)

◆ workbench_dof_engine_init()

void workbench_dof_engine_init ( WORKBENCH_Data vedata)

Definition at line 111 of file workbench_effect_dof.c.

References CameraDOFSettings::aperture_blades, CameraDOFSettings::aperture_fstop, CameraDOFSettings::aperture_ratio, CameraDOFSettings::aperture_rotation, BKE_camera_object_dof_distance(), BKE_camera_sensor_size(), CAM_DOF_ENABLED, WORKBENCH_PrivateData::cam_original_ob, View3D::camera, camera, ceilf, Camera::clip_end, Camera::clip_start, WORKBENCH_TextureList::coc_halfres_tx, WORKBENCH_PrivateData::coc_temp_tx, WORKBENCH_PrivateData::coc_tiles_tx, Camera::dof, WORKBENCH_PrivateData::dof_aperturesize, WORKBENCH_PrivateData::dof_blades, WORKBENCH_FramebufferList::dof_blur1_fb, WORKBENCH_FramebufferList::dof_blur2_fb, WORKBENCH_PrivateData::dof_blur_tx, WORKBENCH_FramebufferList::dof_coc_dilate_fb, WORKBENCH_FramebufferList::dof_coc_tile_h_fb, WORKBENCH_FramebufferList::dof_coc_tile_v_fb, WORKBENCH_PrivateData::dof_distance, WORKBENCH_FramebufferList::dof_downsample_fb, WORKBENCH_PrivateData::dof_enabled, WORKBENCH_PrivateData::dof_invsensorsize, WORKBENCH_PrivateData::dof_near_far, WORKBENCH_PrivateData::dof_ratio, WORKBENCH_PrivateData::dof_rotation, WORKBENCH_ViewLayerData::dof_sample_ubo, WORKBENCH_TextureList::dof_source_tx, WORKBENCH_StorageList::dof_ubo_data, draw_engine_workbench, DRW_context_state_get(), DRW_TEX_FILTER, DRW_TEX_MIPMAP, DRW_texture_ensure_2d(), DRW_TEXTURE_FREE_SAFE, DRW_texture_pool_query_2d(), DRW_viewport_size_get(), fabsf, WORKBENCH_Data::fbl, CameraDOFSettings::flag, View3DShading::flag, GPU_RG8, GPU_RGBA16F, Camera::lens, max_ii(), NULL, OB_CAMERA, RegionView3D::persp, DRWContextState::rv3d, RV3D_CAMOB, Camera::sensor_fit, Camera::sensor_x, Camera::sensor_y, WORKBENCH_PrivateData::shading, size(), WORKBENCH_Data::stl, WORKBENCH_Data::txl, DRWContextState::v3d, V3D_SHADING_DEPTH_OF_FIELD, RegionView3D::viewcamtexcofac, WORKBENCH_PrivateData::vldata, workbench_dof_setup_samples(), and WORKBENCH_StorageList::wpd.

Referenced by workbench_engine_init().

◆ workbench_draw_finish()

void workbench_draw_finish ( void ved)

◆ workbench_draw_sample()

void workbench_draw_sample ( void ved)

◆ workbench_engine_init()

void workbench_engine_init ( void ved)

◆ workbench_image_setup_ex()

DRWShadingGroup* workbench_image_setup_ex ( WORKBENCH_PrivateData wpd,
Object ob,
int  mat_nr,
Image ima,
ImageUser iuser,
eGPUSamplerState  sampler,
eWORKBENCH_DataType  datatype 
)

◆ workbench_is_specular_highlight_enabled()

BLI_INLINE bool workbench_is_specular_highlight_enabled ( WORKBENCH_PrivateData wpd)

◆ workbench_material_setup_ex()

DRWShadingGroup* workbench_material_setup_ex ( WORKBENCH_PrivateData wpd,
Object ob,
int  mat_nr,
eV3DShadingColorType  color_type,
eWORKBENCH_DataType  datatype,
bool r_transp 
)

◆ workbench_material_ubo_alloc()

struct GPUUniformBuf* workbench_material_ubo_alloc ( WORKBENCH_PrivateData wpd)

◆ workbench_material_ubo_data()

void workbench_material_ubo_data ( WORKBENCH_PrivateData wpd,
Object ob,
Material mat,
WORKBENCH_UBO_Material data,
eV3DShadingColorType  color_type 
)

◆ workbench_opaque_cache_init()

void workbench_opaque_cache_init ( WORKBENCH_Data data)

Definition at line 45 of file workbench_opaque.c.

References BKE_studiolight_ensure_flag(), BLI_ghash_ptr_new(), WORKBENCH_PrivateData::clip_state, WORKBENCH_Prepass::common_shgrp, WORKBENCH_PassList::composite_ps, WORKBENCH_PrivateData::cull_state, data, DefaultTextureList::depth_in_front, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_create_sub(), DRW_shgroup_state_disable(), DRW_shgroup_state_enable(), DRW_shgroup_stencil_mask(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_int_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_DEPTH_ALWAYS, DRW_STATE_DEPTH_GREATER, DRW_STATE_DEPTH_LESS_EQUAL, DRW_STATE_STENCIL_ALWAYS, DRW_STATE_STENCIL_EQUAL, DRW_STATE_STENCIL_NEQUAL, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_STATE_WRITE_STENCIL, DRW_viewport_texture_list_get(), StudioLightImage::gputexture, WORKBENCH_Prepass::image_shgrp, WORKBENCH_Prepass::image_tiled_shgrp, View3DShading::light, StudioLight::matcap_diffuse, StudioLight::matcap_specular, WORKBENCH_PrivateData::material_buffer_tx, WORKBENCH_Prepass::material_hash, WORKBENCH_PrivateData::material_ubo_curr, WORKBENCH_PassList::merge_infront_ps, WORKBENCH_PrivateData::normal_buffer_tx, NULL, WORKBENCH_PassList::opaque_infront_ps, WORKBENCH_PassList::opaque_ps, WORKBENCH_PrivateData::prepass, WORKBENCH_Data::psl, sh, WORKBENCH_PrivateData::shading, SHADOW_ENABLED, state, WORKBENCH_Data::stl, WORKBENCH_PrivateData::studio_light, STUDIOLIGHT_MATCAP_DIFFUSE_GPUTEXTURE, STUDIOLIGHT_MATCAP_SPECULAR_GPUTEXTURE, STUDIOLIGHT_TYPE_MATCAP_ENABLED, V3D_LIGHTING_MATCAP, WORKBENCH_Prepass::vcol_shgrp, WORKBENCH_DATATYPE_MAX, workbench_is_specular_highlight_enabled(), workbench_shader_composite_get(), workbench_shader_merge_infront_get(), workbench_shader_opaque_get(), workbench_shader_opaque_image_get(), WORKBENCH_PrivateData::world_ubo, and WORKBENCH_StorageList::wpd.

Referenced by workbench_cache_init().

◆ workbench_opaque_engine_init()

void workbench_opaque_engine_init ( WORKBENCH_Data data)

◆ workbench_outline_cache_init()

void workbench_outline_cache_init ( WORKBENCH_Data data)

◆ workbench_private_data_alloc()

void workbench_private_data_alloc ( WORKBENCH_StorageList stl)

◆ workbench_private_data_init()

void workbench_private_data_init ( WORKBENCH_PrivateData wpd)

Definition at line 134 of file workbench_data.c.

References RenderData::alphamode, WORKBENCH_PrivateData::background_color, BKE_scene_uses_blender_workbench(), BKE_studiolight_find(), BLI_memblock_alloc(), WORKBENCH_PrivateData::clip_state, View3DShading::color_type, copy_v4_fl(), copy_v4_fl4(), CTX_data_mode_enum_ex(), WORKBENCH_PrivateData::ctx_mode, CULL_BACKFACE_ENABLED, WORKBENCH_PrivateData::cull_state, Scene::display, DRW_context_state_get(), DRW_STATE_CLIP_PLANES, DRW_STATE_CULL_BACK, DRW_state_is_navigating(), DRW_state_is_playback(), View3DShading::flag, World::horb, World::horg, World::horr, WORKBENCH_PrivateData::is_navigating, WORKBENCH_PrivateData::is_playback, View3DShading::light, View3DShading::matcap, WORKBENCH_PrivateData::material_chunk_count, WORKBENCH_PrivateData::material_chunk_curr, WORKBENCH_PrivateData::material_index, WORKBENCH_PrivateData::material_ubo, WORKBENCH_ViewLayerData::material_ubo, WORKBENCH_PrivateData::material_ubo_curr, WORKBENCH_PrivateData::material_ubo_data, WORKBENCH_ViewLayerData::material_ubo_data, WORKBENCH_PrivateData::material_ubo_data_curr, NULL, OB_RENDER, OB_SOLID, DRWContextState::obact, DRWContextState::object_edit, DRWContextState::object_mode, WORKBENCH_PrivateData::preferences, Scene::r, R_ALPHAPREMUL, RegionView3D::rflag, DRWContextState::rv3d, RV3D_CLIPPING_ENABLED, RV3D_GPULIGHT_UPDATE, scene, WORKBENCH_PrivateData::scene, DRWContextState::scene, WORKBENCH_PrivateData::sh_cfg, DRWContextState::sh_cfg, WORKBENCH_PrivateData::shading, SceneDisplay::shading, View3D::shading, WORKBENCH_PrivateData::studio_light, View3DShading::studio_light, STUDIOLIGHT_TYPE_MATCAP, STUDIOLIGHT_TYPE_STUDIO, WORKBENCH_PrivateData::taa_sample_len, View3DShading::type, U, UNLIKELY, DRWContextState::v3d, V3D_LIGHTING_FLAT, V3D_LIGHTING_MATCAP, V3D_SHADING_CAVITY, V3D_SHADING_DEPTH_OF_FIELD, V3D_SHADING_MATERIAL_COLOR, V3D_SHADING_OBJECT_COLOR, V3D_SHADING_SHADOW, DRWContextState::view_layer, WORKBENCH_PrivateData::view_updated, WORKBENCH_PrivateData::vldata, WORKBENCH_PrivateData::volumes_do, workbench_antialiasing_sample_count_get(), workbench_material_ubo_alloc(), workbench_material_ubo_data(), workbench_view_layer_data_ensure_ex(), Scene::world, WORKBENCH_PrivateData::world_ubo, WORKBENCH_ViewLayerData::world_ubo, XRAY_ALPHA, View3DShading::xray_alpha, XRAY_ENABLED, and XRAY_FLAG_ENABLED.

Referenced by workbench_engine_init().

◆ workbench_render()

void workbench_render ( void ved,
struct RenderEngine engine,
struct RenderLayer render_layer,
const struct rcti rect 
)

◆ workbench_render_update_passes()

void workbench_render_update_passes ( struct RenderEngine engine,
struct Scene scene,
struct ViewLayer view_layer 
)

Definition at line 214 of file workbench_render.c.

References RE_engine_register_pass(), RE_PASSNAME_COMBINED, scene, and SOCK_RGBA.

◆ workbench_shader_antialiasing_accumulation_get()

GPUShader* workbench_shader_antialiasing_accumulation_get ( void  )

◆ workbench_shader_antialiasing_get()

GPUShader* workbench_shader_antialiasing_get ( int  stage)

◆ workbench_shader_cavity_get()

GPUShader* workbench_shader_cavity_get ( bool  cavity,
bool  curvature 
)

◆ workbench_shader_composite_get()

GPUShader* workbench_shader_composite_get ( WORKBENCH_PrivateData wpd)

◆ workbench_shader_depth_of_field_get()

void workbench_shader_depth_of_field_get ( GPUShader **  prepare_sh,
GPUShader **  downsample_sh,
GPUShader **  blur1_sh,
GPUShader **  blur2_sh,
GPUShader **  resolve_sh 
)

◆ workbench_shader_free()

void workbench_shader_free ( void  )

◆ workbench_shader_merge_infront_get()

GPUShader* workbench_shader_merge_infront_get ( WORKBENCH_PrivateData wpd)

◆ workbench_shader_opaque_get()

GPUShader* workbench_shader_opaque_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  data 
)

◆ workbench_shader_opaque_image_get()

GPUShader* workbench_shader_opaque_image_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  data,
bool  tiled 
)

◆ workbench_shader_outline_get()

GPUShader* workbench_shader_outline_get ( void  )

◆ workbench_shader_shadow_fail_get()

GPUShader* workbench_shader_shadow_fail_get ( bool  manifold,
bool  cap 
)

◆ workbench_shader_shadow_pass_get()

GPUShader* workbench_shader_shadow_pass_get ( bool  manifold)

◆ workbench_shader_transparent_get()

GPUShader* workbench_shader_transparent_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  data 
)

◆ workbench_shader_transparent_image_get()

GPUShader* workbench_shader_transparent_image_get ( WORKBENCH_PrivateData wpd,
eWORKBENCH_DataType  data,
bool  tiled 
)

◆ workbench_shader_transparent_resolve_get()

GPUShader* workbench_shader_transparent_resolve_get ( WORKBENCH_PrivateData wpd)

◆ workbench_shader_volume_get()

GPUShader* workbench_shader_volume_get ( bool  slice,
bool  coba,
eWORKBENCH_VolumeInterpType  interp_type,
bool  smoke 
)

◆ workbench_shadow_cache_init()

void workbench_shadow_cache_init ( WORKBENCH_Data data)

◆ workbench_shadow_cache_populate()

void workbench_shadow_cache_populate ( WORKBENCH_Data data,
Object ob,
bool  has_transp_mat 
)

◆ workbench_shadow_data_update()

void workbench_shadow_data_update ( WORKBENCH_PrivateData wpd,
WORKBENCH_UBO_World wd 
)

◆ workbench_transparent_cache_init()

void workbench_transparent_cache_init ( WORKBENCH_Data data)

◆ workbench_transparent_draw_depth_pass()

void workbench_transparent_draw_depth_pass ( WORKBENCH_Data data)

◆ workbench_transparent_engine_init()

void workbench_transparent_engine_init ( WORKBENCH_Data data)

◆ workbench_update_material_ubos()

void workbench_update_material_ubos ( WORKBENCH_PrivateData wpd)

◆ workbench_update_world_ubo()

void workbench_update_world_ubo ( WORKBENCH_PrivateData wpd)

◆ workbench_volume_cache_init()

void workbench_volume_cache_init ( WORKBENCH_Data vedata)

◆ workbench_volume_cache_populate()

void workbench_volume_cache_populate ( WORKBENCH_Data vedata,
struct Scene scene,
struct Object ob,
struct ModifierData md,
eV3DShadingColorType  color_type 
)

◆ workbench_volume_draw_pass()

void workbench_volume_draw_pass ( WORKBENCH_Data vedata)

◆ workbench_volume_engine_init()

void workbench_volume_engine_init ( WORKBENCH_Data vedata)

Variable Documentation

◆ draw_engine_workbench

struct DrawEngineType draw_engine_workbench
extern