Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_lookdev.c
| Show First 20 Lines • Show All 157 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(); | ||||
| EEVEE_FramebufferList *fbl = vedata->fbl; | |||||
| DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); | DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); | ||||
| 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); | ||||
| Show All 15 Lines | if (psl->lookdev_pass && LOOK_DEV_OVERLAY_ENABLED(draw_ctx->v3d)) { | ||||
| }; | }; | ||||
| /* 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], | ||||
| }; | }; | ||||
| /* Color is rendered in the render size resolution while depth is not */ | |||||
| const float render_scale = DRW_viewport_render_scale_get(); | |||||
| rcti rect_render = rect; | |||||
| rect_render.xmax = (int)(render_scale * rect.xmax); | |||||
| rect_render.ymin = (int)(render_scale * rect.ymin); | |||||
| const int viewport_inset_render[2] = { | |||||
| viewport_inset[0] * render_scale, | |||||
| viewport_inset[1] * render_scale, | |||||
| }; | |||||
| BKE_camera_params_from_view3d(¶ms, draw_ctx->depsgraph, v3d, rv3d); | BKE_camera_params_from_view3d(¶ms, draw_ctx->depsgraph, v3d, rv3d); | ||||
| params.is_ortho = true; | params.is_ortho = true; | ||||
| params.ortho_scale = 3.0f; | params.ortho_scale = 3.0f; | ||||
| params.zoom = CAMERA_PARAM_ZOOM_INIT_PERSP; | params.zoom = CAMERA_PARAM_ZOOM_INIT_PERSP; | ||||
| params.offsetx = 0.0f; | params.offsetx = 0.0f; | ||||
| params.offsety = 0.0f; | params.offsety = 0.0f; | ||||
| params.shiftx = 0.0f; | params.shiftx = 0.0f; | ||||
| params.shifty = 0.0f; | params.shifty = 0.0f; | ||||
| Show All 25 Lines | if (psl->lookdev_pass && LOOK_DEV_OVERLAY_ENABLED(draw_ctx->v3d)) { | ||||
| float persmat_inv[4][4]; | float persmat_inv[4][4]; | ||||
| mul_m4_m4m4(persmat, winmat, viewmat); | mul_m4_m4m4(persmat, winmat, viewmat); | ||||
| invert_m4_m4(persmat_inv, persmat); | invert_m4_m4(persmat_inv, persmat); | ||||
| 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( | GPU_framebuffer_viewport_set(fb, | ||||
| fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | rect_render.xmax - viewport_inset_render[0], | ||||
| rect_render.ymin, | |||||
| viewport_inset_render[0], | |||||
| viewport_inset_render[1]); | |||||
| DRW_draw_pass(psl->lookdev_pass); | DRW_draw_pass(psl->lookdev_pass); | ||||
| fb = dfbl->depth_only_fb; | fb = dfbl->depth_only_fb; | ||||
| GPU_framebuffer_bind(fb); | GPU_framebuffer_bind(fb); | ||||
| GPU_framebuffer_viewport_set( | GPU_framebuffer_viewport_set( | ||||
| fb, rect.xmax - viewport_inset[0], rect.ymin, viewport_inset[0], viewport_inset[1]); | 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(); | ||||
| } | } | ||||
| } | } | ||||