Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_lookdev.c
| Show First 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void EEVEE_lookdev_draw_background(EEVEE_Data *vedata) | void EEVEE_lookdev_draw_background(EEVEE_Data *vedata) | ||||
| { | { | ||||
| EEVEE_PassList *psl = vedata->psl; | EEVEE_PassList *psl = vedata->psl; | ||||
| EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl; | EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl; | ||||
| EEVEE_EffectsInfo *effects = stl->effects; | EEVEE_EffectsInfo *effects = stl->effects; | ||||
| EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure(); | EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure(); | ||||
| DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); | EEVEE_FramebufferList *fbl = vedata->fbl; | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | const DRWContextState *draw_ctx = DRW_context_state_get(); | ||||
| if (psl->lookdev_pass && LOOK_DEV_OVERLAY_ENABLED(draw_ctx->v3d)) { | if (psl->lookdev_pass && LOOK_DEV_OVERLAY_ENABLED(draw_ctx->v3d)) { | ||||
| DRW_stats_group_start("Look Dev"); | DRW_stats_group_start("Look Dev"); | ||||
| CameraParams params; | CameraParams params; | ||||
| BKE_camera_params_init(¶ms); | BKE_camera_params_init(¶ms); | ||||
| View3D *v3d = draw_ctx->v3d; | View3D *v3d = draw_ctx->v3d; | ||||
| RegionView3D *rv3d = draw_ctx->rv3d; | RegionView3D *rv3d = draw_ctx->rv3d; | ||||
| ARegion *ar = draw_ctx->ar; | ARegion *ar = draw_ctx->ar; | ||||
| const float *viewport_size = DRW_viewport_size_get(); | const float *viewport_size = DRW_viewport_render_size_get(); | ||||
| rcti rect; | rcti rect; | ||||
| ED_region_visible_rect(draw_ctx->ar, &rect); | ED_region_visible_rect(draw_ctx->ar, &rect); | ||||
| const float render_scale = DRW_viewport_render_scale_get(); | |||||
| rect.xmin = (int)(render_scale * rect.xmin); | |||||
| rect.xmax = (int)(render_scale * rect.xmax); | |||||
| rect.ymin = (int)(render_scale * rect.ymin); | |||||
| rect.ymax = (int)(render_scale * rect.ymax); | |||||
| const int min_size = (int)(300 * render_scale); | |||||
| const float viewport_size_target[2] = { | const float viewport_size_target[2] = { | ||||
| viewport_size[0] / 4, | viewport_size[0] / 4, | ||||
| viewport_size[1] / 4, | viewport_size[1] / 4, | ||||
| }; | }; | ||||
| const int viewport_inset[2] = { | const int viewport_inset[2] = { | ||||
| max_ii(viewport_size_target[0], 300), | max_ii(viewport_size_target[0], min_size), | ||||
| max_ii(viewport_size_target[0], 300) / 2, /* intentionally use 'x' here for 'y' value. */ | max_ii(viewport_size_target[0], min_size) / 2, /* intentionally use 'x' here for 'y' value. */ | ||||
| }; | }; | ||||
| /* minimum size for preview spheres viewport */ | /* minimum size for preview spheres viewport */ | ||||
| const float aspect[2] = { | const float aspect[2] = { | ||||
| viewport_inset[0] / viewport_size_target[0], | viewport_inset[0] / viewport_size_target[0], | ||||
| viewport_inset[1] / viewport_size_target[1], | viewport_inset[1] / viewport_size_target[1], | ||||
| }; | }; | ||||
| Show All 36 Lines | if (psl->lookdev_pass && LOOK_DEV_OVERLAY_ENABLED(draw_ctx->v3d)) { | ||||
| DRW_viewport_matrix_override_set(persmat, DRW_MAT_PERS); | DRW_viewport_matrix_override_set(persmat, DRW_MAT_PERS); | ||||
| DRW_viewport_matrix_override_set(persmat_inv, DRW_MAT_PERSINV); | DRW_viewport_matrix_override_set(persmat_inv, DRW_MAT_PERSINV); | ||||
| GPUFrameBuffer *fb = effects->final_fb; | GPUFrameBuffer *fb = effects->final_fb; | ||||
| GPU_framebuffer_bind(fb); | GPU_framebuffer_bind(fb); | ||||
| GPU_framebuffer_viewport_set(fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | GPU_framebuffer_viewport_set(fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | ||||
| DRW_draw_pass(psl->lookdev_pass); | DRW_draw_pass(psl->lookdev_pass); | ||||
| fb = dfbl->depth_only_fb; | fb = fbl->main_depth_fb; | ||||
| GPU_framebuffer_bind(fb); | GPU_framebuffer_bind(fb); | ||||
| GPU_framebuffer_viewport_set(fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | GPU_framebuffer_viewport_set(fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | ||||
| DRW_draw_pass(psl->lookdev_pass); | DRW_draw_pass(psl->lookdev_pass); | ||||
| DRW_viewport_matrix_override_unset_all(); | DRW_viewport_matrix_override_unset_all(); | ||||
| DRW_stats_group_end(); | DRW_stats_group_end(); | ||||
| } | } | ||||
| } | } | ||||