Revision: 53987
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53987
Author:   ton
Date:     2013-01-22 11:18:41 +0000 (Tue, 22 Jan 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
    trunk/blender/source/blender/blenkernel/intern/icons.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/datafiles/CMakeLists.txt
    trunk/blender/source/blender/editors/datafiles/SConscript
    trunk/blender/source/blender/editors/include/ED_datafiles.h
    trunk/blender/source/blender/editors/include/UI_icons.h
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/include/UI_interface_icons.h
    trunk/blender/source/blender/editors/interface/interface_icons.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/gpu/GPU_extensions.h
    trunk/blender/source/blender/gpu/GPU_material.h
    trunk/blender/source/blender/gpu/intern/gpu_codegen.c
    trunk/blender/source/blender/gpu/intern/gpu_codegen.h
    trunk/blender/source/blender/gpu/intern/gpu_draw.c
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
    trunk/blender/source/blender/makesdna/DNA_ID.h
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c

Added Paths:
-----------
    trunk/blender/release/datafiles/matcaps/
    trunk/blender/release/datafiles/matcaps/mc01.jpg
    trunk/blender/release/datafiles/matcaps/mc02.jpg
    trunk/blender/release/datafiles/matcaps/mc03.jpg
    trunk/blender/release/datafiles/matcaps/mc04.jpg
    trunk/blender/release/datafiles/matcaps/mc05.jpg
    trunk/blender/release/datafiles/matcaps/mc06.jpg
    trunk/blender/release/datafiles/matcaps/mc07.jpg
    trunk/blender/release/datafiles/matcaps/mc08.jpg
    trunk/blender/release/datafiles/matcaps/mc09.jpg
    trunk/blender/release/datafiles/matcaps/mc10.jpg
    trunk/blender/release/datafiles/matcaps/mc11.jpg
    trunk/blender/release/datafiles/matcaps/mc12.jpg
    trunk/blender/release/datafiles/matcaps/mc13.jpg
    trunk/blender/release/datafiles/matcaps/mc14.jpg
    trunk/blender/release/datafiles/matcaps/mc15.jpg
    trunk/blender/release/datafiles/matcaps/mc16.jpg

Added: trunk/blender/release/datafiles/matcaps/mc01.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc01.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc02.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc02.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc03.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc03.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc04.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc04.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc05.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc05.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc06.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc06.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc07.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc07.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc08.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc08.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc09.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc09.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc10.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc10.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc11.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc11.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc12.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc12.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc13.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc13.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc14.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc14.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc15.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc15.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/blender/release/datafiles/matcaps/mc16.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/blender/release/datafiles/matcaps/mc16.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2013-01-22 
10:51:57 UTC (rev 53986)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2013-01-22 
11:18:41 UTC (rev 53987)
@@ -2427,7 +2427,10 @@
             col.label(text="Shading:")
             col.prop(gs, "material_mode", text="")
             col.prop(view, "show_textured_solid")
-
+        if view.viewport_shade == 'SOLID':
+            col.prop(view, "use_matcap")
+            if view.use_matcap:
+                col.template_icon_view(view, "matcap_icon")
         col.prop(view, "show_backface_culling")
 
         layout.separator()

Modified: trunk/blender/source/blender/blenkernel/intern/icons.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/icons.c      2013-01-22 
10:51:57 UTC (rev 53986)
+++ trunk/blender/source/blender/blenkernel/intern/icons.c      2013-01-22 
11:18:41 UTC (rev 53987)
@@ -51,6 +51,8 @@
 
 #include "BLO_sys_types.h" // for intptr_t support
 
+#include "GPU_extensions.h"
+
 /* GLOBALS */
 
 static GHash *gIcons = NULL;
@@ -138,7 +140,10 @@
                                MEM_freeN(prv->rect[i]);
                                prv->rect[i] = NULL;
                        }
+                       if (prv->gputexture[i])
+                               GPU_texture_free(prv->gputexture[i]);
                }
+               
                MEM_freeN(prv);
        }
 }
@@ -165,6 +170,7 @@
                        else {
                                prv_img->rect[i] = NULL;
                        }
+                       prv_img->gputexture[i] = NULL;
                }
        }
        return prv_img;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2013-01-22 
10:51:57 UTC (rev 53986)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2013-01-22 
11:18:41 UTC (rev 53987)
@@ -1850,8 +1850,8 @@
                        if (prv->rect[i]) {
                                prv->rect[i] = newdataadr(fd, prv->rect[i]);
                        }
+                       prv->gputexture[i] = NULL;
                }
-//             prv->gputexture[0] = prv->gputexture[1] = NULL;
        }
        
        return prv;
@@ -5998,6 +5998,7 @@
                                v3d->afterdraw_xray.first = 
v3d->afterdraw_xray.last = NULL;
                                v3d->afterdraw_xraytransp.first = 
v3d->afterdraw_xraytransp.last = NULL;
                                v3d->properties_storage = NULL;
+                               v3d->defmaterial = NULL;
                                
                                /* render can be quite heavy, set to wire on 
load */
                                if (v3d->drawtype == OB_RENDER)

Modified: trunk/blender/source/blender/editors/datafiles/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/editors/datafiles/CMakeLists.txt       
2013-01-22 10:51:57 UTC (rev 53986)
+++ trunk/blender/source/blender/editors/datafiles/CMakeLists.txt       
2013-01-22 11:18:41 UTC (rev 53987)
@@ -81,6 +81,25 @@
                
data_to_c_simple(../../../../release/datafiles/brushicons/thumb.png SRC)
                
data_to_c_simple(../../../../release/datafiles/brushicons/twist.png SRC)
                
data_to_c_simple(../../../../release/datafiles/brushicons/vertexdraw.png SRC)
+
+               # matcap
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc01.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc02.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc03.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc04.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc05.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc06.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc07.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc08.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc09.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc10.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc11.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc12.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc13.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc14.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc15.jpg 
SRC)
+               data_to_c_simple(../../../../release/datafiles/matcaps/mc16.jpg 
SRC)
+
        endif()
 
        data_to_c_simple(../../../../release/datafiles/startup.blend SRC)

Modified: trunk/blender/source/blender/editors/datafiles/SConscript
===================================================================
--- trunk/blender/source/blender/editors/datafiles/SConscript   2013-01-22 
10:51:57 UTC (rev 53986)
+++ trunk/blender/source/blender/editors/datafiles/SConscript   2013-01-22 
11:18:41 UTC (rev 53987)
@@ -77,6 +77,24 @@
        os.path.join(env['DATA_SOURCES'], "thumb.png.c"),
        os.path.join(env['DATA_SOURCES'], "twist.png.c"),
        os.path.join(env['DATA_SOURCES'], "vertexdraw.png.c"),
+       
+       os.path.join(env['DATA_SOURCES'], "mc01.jpg.c"),
+       os.path.join(env['DATA_SOURCES'], "mc02.jpg.c"),
+       os.path.join(env['DATA_SOURCES'], "mc03.jpg.c"),
+       os.path.join(env['DATA_SOURCES'], "mc04.jpg.c"),
+       os.path.join(env['DATA_SOURCES'], "mc05.jpg.c"),
+       os.path.join(env['DATA_SOURCES'], "mc06.jpg.c"),

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to