[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53987] trunk/blender: Matcap support in 3D Viewport.

Ton Roosendaal ton at blender.org
Tue Jan 22 12:18:42 CET 2013


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. @@



More information about the Bf-blender-cvs mailing list