Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/workbench/workbench_private.h
| Show First 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | #define OIT_ENABLED(wpd) \ | ||||
| (ELEM(wpd->shading.color_type, \ | (ELEM(wpd->shading.color_type, \ | ||||
| V3D_SHADING_MATERIAL_COLOR, \ | V3D_SHADING_MATERIAL_COLOR, \ | ||||
| V3D_SHADING_OBJECT_COLOR, \ | V3D_SHADING_OBJECT_COLOR, \ | ||||
| V3D_SHADING_TEXTURE_COLOR, \ | V3D_SHADING_TEXTURE_COLOR, \ | ||||
| V3D_SHADING_VERTEX_COLOR)) | V3D_SHADING_VERTEX_COLOR)) | ||||
| #define IS_NAVIGATING(wpd) \ | #define IS_NAVIGATING(wpd) \ | ||||
| ((DRW_context_state_get()->rv3d) && (DRW_context_state_get()->rv3d->rflag & RV3D_NAVIGATING)) | ((DRW_context_state_get()->rv3d) && (DRW_context_state_get()->rv3d->rflag & RV3D_NAVIGATING)) | ||||
| #define FXAA_ENABLED(wpd) \ | |||||
| ((!DRW_state_is_opengl_render()) && \ | |||||
| (IN_RANGE(wpd->preferences->gpu_viewport_quality, \ | |||||
| GPU_VIEWPORT_QUALITY_FXAA, \ | |||||
| GPU_VIEWPORT_QUALITY_TAA8) || \ | |||||
| ((IS_NAVIGATING(wpd) || wpd->is_playback) && \ | |||||
| (wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8)))) | |||||
| #define TAA_ENABLED(wpd) \ | |||||
| ((DRW_state_is_image_render() && DRW_context_state_get()->scene->r.mode & R_OSA) || \ | |||||
| (!DRW_state_is_image_render() && \ | |||||
| wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8 && !IS_NAVIGATING(wpd) && \ | |||||
| !wpd->is_playback)) | |||||
| #define SPECULAR_HIGHLIGHT_ENABLED(wpd) \ | #define SPECULAR_HIGHLIGHT_ENABLED(wpd) \ | ||||
| (STUDIOLIGHT_ENABLED(wpd) && (wpd->shading.flag & V3D_SHADING_SPECULAR_HIGHLIGHT) && \ | (STUDIOLIGHT_ENABLED(wpd) && (wpd->shading.flag & V3D_SHADING_SPECULAR_HIGHLIGHT) && \ | ||||
| (!STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd))) | (!STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd))) | ||||
| #define OBJECT_OUTLINE_ENABLED(wpd) (wpd->shading.flag & V3D_SHADING_OBJECT_OUTLINE) | #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 OBJECT_ID_PASS_ENABLED(wpd) (OBJECT_OUTLINE_ENABLED(wpd) || CURVATURE_ENABLED(wpd)) | ||||
| #define MATDATA_PASS_ENABLED(wpd) \ | #define MATDATA_PASS_ENABLED(wpd) \ | ||||
| (wpd->shading.color_type != V3D_SHADING_SINGLE_COLOR || MATCAP_ENABLED(wpd)) | (wpd->shading.color_type != V3D_SHADING_SINGLE_COLOR || MATCAP_ENABLED(wpd)) | ||||
| #define NORMAL_VIEWPORT_COMP_PASS_ENABLED(wpd) \ | #define NORMAL_VIEWPORT_COMP_PASS_ENABLED(wpd) \ | ||||
| ▲ Show 20 Lines • Show All 223 Lines • ▼ Show 20 Lines | typedef struct WORKBENCH_ObjectData { | ||||
| /* Min, max in shadow space */ | /* Min, max in shadow space */ | ||||
| float shadow_min[3], shadow_max[3]; | float shadow_min[3], shadow_max[3]; | ||||
| BoundBox shadow_bbox; | BoundBox shadow_bbox; | ||||
| bool shadow_bbox_dirty; | bool shadow_bbox_dirty; | ||||
| int object_id; | int object_id; | ||||
| } WORKBENCH_ObjectData; | } WORKBENCH_ObjectData; | ||||
| /* inline helper functions */ | |||||
| BLI_INLINE bool workbench_is_taa_enabled(WORKBENCH_PrivateData *wpd) | |||||
fclem: aren't we supposed to use BLI_INLINE ? | |||||
| { | |||||
| if (DRW_state_is_image_render()) { | |||||
| return DRW_context_state_get()->scene->display.render_aa > SCE_DISPLAY_AA_FXAA; | |||||
| } | |||||
| else { | |||||
| return DRW_context_state_get()->scene->display.viewport_aa > SCE_DISPLAY_AA_FXAA && | |||||
| wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8 && | |||||
| !wpd->is_playback; | |||||
| } | |||||
| } | |||||
| BLI_INLINE bool workbench_is_fxaa_enabled(WORKBENCH_PrivateData *wpd) | |||||
| { | |||||
| if (DRW_state_is_image_render()) { | |||||
| return DRW_context_state_get()->scene->display.render_aa == SCE_DISPLAY_AA_FXAA; | |||||
| } | |||||
| else { | |||||
| if (wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_FXAA && | |||||
| DRW_context_state_get()->scene->display.viewport_aa == SCE_DISPLAY_AA_FXAA) { | |||||
| return true; | |||||
| } | |||||
| /* when navigating or animation playback use FXAA. */ | |||||
| return (IS_NAVIGATING(wpd) || wpd->is_playback) && workbench_is_taa_enabled(wpd); | |||||
| } | |||||
| } | |||||
| /* workbench_deferred.c */ | /* workbench_deferred.c */ | ||||
| void workbench_deferred_engine_init(WORKBENCH_Data *vedata); | void workbench_deferred_engine_init(WORKBENCH_Data *vedata); | ||||
| void workbench_deferred_engine_free(void); | void workbench_deferred_engine_free(void); | ||||
| void workbench_deferred_draw_background(WORKBENCH_Data *vedata); | void workbench_deferred_draw_background(WORKBENCH_Data *vedata); | ||||
| void workbench_deferred_draw_scene(WORKBENCH_Data *vedata); | void workbench_deferred_draw_scene(WORKBENCH_Data *vedata); | ||||
| void workbench_deferred_draw_finish(WORKBENCH_Data *vedata); | void workbench_deferred_draw_finish(WORKBENCH_Data *vedata); | ||||
| void workbench_deferred_cache_init(WORKBENCH_Data *vedata); | void workbench_deferred_cache_init(WORKBENCH_Data *vedata); | ||||
| void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob); | void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob); | ||||
| Show All 33 Lines | |||||
| /* workbench_effect_taa.c */ | /* workbench_effect_taa.c */ | ||||
| void workbench_taa_engine_init(WORKBENCH_Data *vedata); | void workbench_taa_engine_init(WORKBENCH_Data *vedata); | ||||
| void workbench_taa_engine_free(void); | void workbench_taa_engine_free(void); | ||||
| DRWPass *workbench_taa_create_pass(WORKBENCH_Data *vedata, GPUTexture **color_buffer_tx); | DRWPass *workbench_taa_create_pass(WORKBENCH_Data *vedata, GPUTexture **color_buffer_tx); | ||||
| void workbench_taa_draw_scene_start(WORKBENCH_Data *vedata); | void workbench_taa_draw_scene_start(WORKBENCH_Data *vedata); | ||||
| void workbench_taa_draw_scene_end(WORKBENCH_Data *vedata); | void workbench_taa_draw_scene_end(WORKBENCH_Data *vedata); | ||||
| void workbench_taa_view_updated(WORKBENCH_Data *vedata); | void workbench_taa_view_updated(WORKBENCH_Data *vedata); | ||||
| int workbench_taa_calculate_num_iterations(WORKBENCH_Data *vedata); | int workbench_taa_calculate_num_iterations(WORKBENCH_Data *vedata); | ||||
| int workbench_num_viewport_rendering_iterations(WORKBENCH_Data *vedata); | |||||
| /* workbench_effect_dof.c */ | /* workbench_effect_dof.c */ | ||||
| void workbench_dof_engine_init(WORKBENCH_Data *vedata, Object *camera); | void workbench_dof_engine_init(WORKBENCH_Data *vedata, Object *camera); | ||||
| void workbench_dof_engine_free(void); | void workbench_dof_engine_free(void); | ||||
| void workbench_dof_create_pass(WORKBENCH_Data *vedata, | void workbench_dof_create_pass(WORKBENCH_Data *vedata, | ||||
| GPUTexture **dof_input, | GPUTexture **dof_input, | ||||
| GPUTexture *noise_tex); | GPUTexture *noise_tex); | ||||
| void workbench_dof_draw_pass(WORKBENCH_Data *vedata); | void workbench_dof_draw_pass(WORKBENCH_Data *vedata); | ||||
| ▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines | |||||
aren't we supposed to use BLI_INLINE ?