Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/space_view3d.c
| Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | |||||
| #include "BKE_library.h" | #include "BKE_library.h" | ||||
| #include "BKE_main.h" | #include "BKE_main.h" | ||||
| #include "BKE_object.h" | #include "BKE_object.h" | ||||
| #include "BKE_scene.h" | #include "BKE_scene.h" | ||||
| #include "BKE_screen.h" | #include "BKE_screen.h" | ||||
| #include "ED_space_api.h" | #include "ED_space_api.h" | ||||
| #include "ED_screen.h" | #include "ED_screen.h" | ||||
| #include "ED_view3d.h" | |||||
| #include "GPU_compositing.h" | #include "GPU_compositing.h" | ||||
| #include "GPU_framebuffer.h" | #include "GPU_framebuffer.h" | ||||
| #include "GPU_material.h" | #include "GPU_material.h" | ||||
| #include "GPU_viewport.h" | #include "GPU_viewport.h" | ||||
| #include "BIF_gl.h" | #include "BIF_gl.h" | ||||
| ▲ Show 20 Lines • Show All 242 Lines • ▼ Show 20 Lines | void ED_view3d_shade_update(Main *bmain, Scene *scene, View3D *v3d, ScrArea *sa) | ||||
| else if (scene->obedit != NULL && scene->obedit->type == OB_MESH) { | else if (scene->obedit != NULL && scene->obedit->type == OB_MESH) { | ||||
| /* Tag mesh to load edit data. */ | /* Tag mesh to load edit data. */ | ||||
| DAG_id_tag_update(scene->obedit->data, 0); | DAG_id_tag_update(scene->obedit->data, 0); | ||||
| } | } | ||||
| } | } | ||||
| /* ******************** default callbacks for view3d space ***************** */ | /* ******************** default callbacks for view3d space ***************** */ | ||||
| static void view3d_display_layer_data_init(DisplayLayerData *display, int type, int subtype, const char *name) | |||||
| { | |||||
| display->type = type; | |||||
| display->subtype = subtype; | |||||
| BLI_strncpy(display->name, name, sizeof(display->name)); | |||||
| } | |||||
| /** | |||||
| * If we add a new display layer we need to update: | |||||
| * preset.py::AddDisplayPresetViewport::preset_values | |||||
| */ | |||||
| void ED_view3d_display_layers_init(View3D *v3d) | |||||
| { | |||||
| GridAxesDisplayLayer *grid; | |||||
| DisplayLayer *background_images, *grease_pencil, *motion_tracking; | |||||
| DisplayLayer *solid, *helper, *volumetric, *hair_particles; | |||||
| DisplayLayer *depth_of_field, *reflections; | |||||
| v3d->active_drawing_support = 0; | |||||
| v3d->active_scene_elements = -1; | |||||
| v3d->active_screen_effects = -1; | |||||
| v3d->flag3 |= V3D_SHOW_ALL_LAYERS; | |||||
| /* Drawing Support */ | |||||
| grid = MEM_callocN(sizeof(GridAxesDisplayLayer), "Grid & Axes display layer"); | |||||
| view3d_display_layer_data_init(&grid->display, eDisplayLayerType_DrawingSupport, eDrawingSupportType_GridAxes, "Grid & Axes"); | |||||
| grid->grid = 1.0f; | |||||
| grid->gridlines = 16; | |||||
| grid->gridsubdiv = 10; | |||||
| grid->gridflag = V3D_SHOW_X | V3D_SHOW_Y | V3D_SHOW_FLOOR; | |||||
| BLI_addtail(&v3d->drawing_support, grid); | |||||
| background_images = MEM_callocN(sizeof(DisplayLayer), "Background Images display layer"); | |||||
| view3d_display_layer_data_init(&background_images->display, eDisplayLayerType_DrawingSupport, eDrawingSupportType_BackgroundImages, "Background Images"); | |||||
| BLI_addtail(&v3d->drawing_support, background_images); | |||||
| grease_pencil = MEM_callocN(sizeof(DisplayLayer), "Grease Pencil display layer"); | |||||
| view3d_display_layer_data_init(&grease_pencil->display, eDisplayLayerType_DrawingSupport, eDrawingSupportType_GreasePencil, "Grease Pencil"); | |||||
| BLI_addtail(&v3d->drawing_support, grease_pencil); | |||||
| motion_tracking = MEM_callocN(sizeof(DisplayLayer), "Motion Tracking display layer"); | |||||
| view3d_display_layer_data_init(&motion_tracking->display, eDisplayLayerType_DrawingSupport, eDrawingSupportType_MotionTracking, "Motion Tracking"); | |||||
| BLI_addtail(&v3d->drawing_support, motion_tracking); | |||||
| /* Scene Elements */ | |||||
| solid = MEM_callocN(sizeof(DisplayLayer), "Solid Objects display layer"); | |||||
| view3d_display_layer_data_init(&solid->display, eDisplayLayerType_SceneElements, eSceneElementsType_Solid, "Solid Objects"); | |||||
| BLI_addtail(&v3d->scene_elements, solid); | |||||
| helper = MEM_callocN(sizeof(DisplayLayer), "Helper Objects display layer"); | |||||
| view3d_display_layer_data_init(&helper->display, eDisplayLayerType_SceneElements, eSceneElementsType_Helper, "Helper Objects"); | |||||
| BLI_addtail(&v3d->scene_elements, helper); | |||||
| volumetric = MEM_callocN(sizeof(DisplayLayer), "Volumetric Objects display layer"); | |||||
| view3d_display_layer_data_init(&volumetric->display, eDisplayLayerType_SceneElements, eSceneElementsType_Volumetric, "Volumetric Objects"); | |||||
| BLI_addtail(&v3d->scene_elements, volumetric); | |||||
| hair_particles = MEM_callocN(sizeof(DisplayLayer), "Hair Particles display layer"); | |||||
| view3d_display_layer_data_init(&hair_particles->display, eDisplayLayerType_SceneElements, eSceneElementsType_HairParticles, "Hair Particles"); | |||||
| BLI_addtail(&v3d->scene_elements, hair_particles); | |||||
| /* Screen Effect */ | |||||
| depth_of_field = MEM_callocN(sizeof(DisplayLayer), "Depth of Field display layer"); | |||||
| view3d_display_layer_data_init(&depth_of_field->display, eDisplayLayerType_ScreenEffects, eScreenEffectsType_DepthOfField, "Depth of Field"); | |||||
| BLI_addtail(&v3d->screen_effects, depth_of_field); | |||||
| reflections = MEM_callocN(sizeof(DisplayLayer), "Reflections display layer"); | |||||
| view3d_display_layer_data_init(&reflections->display, eDisplayLayerType_ScreenEffects, eScreenEffectsType_Reflections, "Reflections"); | |||||
| BLI_addtail(&v3d->screen_effects, reflections); | |||||
| } | |||||
| static SpaceLink *view3d_new(const bContext *C) | static SpaceLink *view3d_new(const bContext *C) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| ARegion *ar; | ARegion *ar; | ||||
| View3D *v3d; | View3D *v3d; | ||||
| RegionView3D *rv3d; | RegionView3D *rv3d; | ||||
| v3d = MEM_callocN(sizeof(View3D), "initview3d"); | v3d = MEM_callocN(sizeof(View3D), "initview3d"); | ||||
| Show All 27 Lines | static SpaceLink *view3d_new(const bContext *C) | ||||
| v3d->bundle_drawtype = OB_PLAINAXES; | v3d->bundle_drawtype = OB_PLAINAXES; | ||||
| /* stereo */ | /* stereo */ | ||||
| v3d->stereo3d_camera = STEREO_3D_ID; | v3d->stereo3d_camera = STEREO_3D_ID; | ||||
| v3d->stereo3d_flag |= V3D_S3D_DISPPLANE; | v3d->stereo3d_flag |= V3D_S3D_DISPPLANE; | ||||
| v3d->stereo3d_convergence_alpha = 0.15f; | v3d->stereo3d_convergence_alpha = 0.15f; | ||||
| v3d->stereo3d_volume_alpha = 0.05f; | v3d->stereo3d_volume_alpha = 0.05f; | ||||
| /* display layers */ | |||||
| ED_view3d_display_layers_init(v3d); | |||||
| /* header */ | /* header */ | ||||
| ar = MEM_callocN(sizeof(ARegion), "header for view3d"); | ar = MEM_callocN(sizeof(ARegion), "header for view3d"); | ||||
| BLI_addtail(&v3d->regionbase, ar); | BLI_addtail(&v3d->regionbase, ar); | ||||
| ar->regiontype = RGN_TYPE_HEADER; | ar->regiontype = RGN_TYPE_HEADER; | ||||
| ar->alignment = RGN_ALIGN_BOTTOM; | ar->alignment = RGN_ALIGN_BOTTOM; | ||||
| /* tool shelf */ | /* tool shelf */ | ||||
| Show All 27 Lines | static SpaceLink *view3d_new(const bContext *C) | ||||
| ar->regiontype = RGN_TYPE_WINDOW; | ar->regiontype = RGN_TYPE_WINDOW; | ||||
| ar->regiondata = MEM_callocN(sizeof(RegionView3D), "region view3d"); | ar->regiondata = MEM_callocN(sizeof(RegionView3D), "region view3d"); | ||||
| rv3d = ar->regiondata; | rv3d = ar->regiondata; | ||||
| rv3d->viewquat[0] = 1.0f; | rv3d->viewquat[0] = 1.0f; | ||||
| rv3d->persp = RV3D_PERSP; | rv3d->persp = RV3D_PERSP; | ||||
| rv3d->view = RV3D_VIEW_USER; | rv3d->view = RV3D_VIEW_USER; | ||||
| rv3d->dist = 10.0; | rv3d->dist = 10.0; | ||||
| return (SpaceLink *)v3d; | return (SpaceLink *)v3d; | ||||
| } | } | ||||
| /* not spacelink itself */ | /* not spacelink itself */ | ||||
| static void view3d_free(SpaceLink *sl) | static void view3d_free(SpaceLink *sl) | ||||
| { | { | ||||
| View3D *vd = (View3D *) sl; | View3D *vd = (View3D *) sl; | ||||
| BGpic *bgpic; | BGpic *bgpic; | ||||
| Show All 19 Lines | if (vd->defmaterial) { | ||||
| BKE_previewimg_free(&vd->defmaterial->preview); | BKE_previewimg_free(&vd->defmaterial->preview); | ||||
| MEM_freeN(vd->defmaterial); | MEM_freeN(vd->defmaterial); | ||||
| } | } | ||||
| if (vd->fx_settings.ssao) | if (vd->fx_settings.ssao) | ||||
| MEM_freeN(vd->fx_settings.ssao); | MEM_freeN(vd->fx_settings.ssao); | ||||
| if (vd->fx_settings.dof) | if (vd->fx_settings.dof) | ||||
| MEM_freeN(vd->fx_settings.dof); | MEM_freeN(vd->fx_settings.dof); | ||||
| BLI_freelistN(&vd->drawing_support); | |||||
| BLI_freelistN(&vd->scene_elements); | |||||
| BLI_freelistN(&vd->screen_effects); | |||||
| } | } | ||||
| /* spacetype; init callback */ | /* spacetype; init callback */ | ||||
| static void view3d_init(wmWindowManager *UNUSED(wm), ScrArea *UNUSED(sa)) | static void view3d_init(wmWindowManager *UNUSED(wm), ScrArea *UNUSED(sa)) | ||||
| { | { | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 1,120 Lines • Show Last 20 Lines | |||||