diff options
author | Ton Roosendaal <ton@blender.org> | 2013-01-22 15:18:41 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2013-01-22 15:18:41 +0400 |
commit | e11d22a6b751c750c40226cb027e7805adb7d4e4 (patch) | |
tree | c7a7afd211db440cbcbd154f76379e7685cb03fe /source/blender/editors/space_view3d/space_view3d.c | |
parent | 1e3a2931ac0cfc9af790717bf19577e22ebda4f5 (diff) |
Matcap support in 3D Viewport.
Full log is here:
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability#Matcap_in_3D_viewport
Implementation notes:
- Matcaps are an extension of Solid draw mode, and don't show in other drawmodes.
(It's mostly intended to aid modeling/sculpt)
- By design, Matcaps are a UI feature, and only stored locally for the UI itself, and
won't affect rendering or materials.
- Currently a set of 16 (GPL licensed) Matcaps have been compiled into Blender.
It doesn't take memory or cpu time, until you use it.
- Brush Icons and Matcaps use same code now, and only get generated/allocated on
actually using it (instead of on startup).
- The current set might get new or different images still, based on user feedback.
- Matcap images are 512x512 pixels, so each image takes 1 Mb memory. Unused matcaps get
freed immediately. The Matcap icon previews (128x128 pixels) stay in memory.
- Loading own matcap image files will be added later. That needs design and code work
to get it stable and memory-friendly.
- The GLSL code uses the ID PreviewImage for matcaps. I tested it using the existing
Material previews, which has its limits... especially for textured previews the
normal-mapped matcap won't look good.
Diffstat (limited to 'source/blender/editors/space_view3d/space_view3d.c')
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 09bf029154c..b2d58cf41de 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -32,6 +32,7 @@ #include <string.h> #include <stdio.h> +#include "DNA_material_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -42,16 +43,18 @@ #include "BLI_rand.h" #include "BLI_utildefines.h" -#include "BKE_object.h" #include "BKE_context.h" +#include "BKE_icons.h" +#include "BKE_object.h" #include "BKE_screen.h" #include "ED_space_api.h" #include "ED_screen.h" #include "ED_object.h" -#include "BIF_gl.h" +#include "GPU_material.h" +#include "BIF_gl.h" #include "WM_api.h" #include "WM_types.h" @@ -335,6 +338,14 @@ static void view3d_free(SpaceLink *sl) if (vd->localvd) MEM_freeN(vd->localvd); if (vd->properties_storage) MEM_freeN(vd->properties_storage); + + /* matcap material, its preview rect gets freed via icons */ + if (vd->defmaterial) { + if (vd->defmaterial->gpumaterial.first) + GPU_material_free(vd->defmaterial); + BKE_previewimg_free(&vd->defmaterial->preview); + MEM_freeN(vd->defmaterial); + } } @@ -365,6 +376,8 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl) /* copy or clear inside new stuff */ + v3dn->defmaterial = NULL; + BLI_duplicatelist(&v3dn->bgpicbase, &v3do->bgpicbase); v3dn->properties_storage = NULL; |