[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25775] trunk/blender: OpenGL Anti-aliasing implementation for blender windows

William Reynish william at reynish.com
Wed Jan 6 15:39:48 CET 2010


Hi Damien,

I think AA is nice, but want to point out that it shouldn't be applied to the UI and controls themselves. The UI elements already have custom AA code, to make them look identical across different GFX cards, and to ensure they always render properly and quickly. Unfortunately your commit makes the UI widgets look very fuzzy, as your applying AA to something which is already smooth. 

Here are two screenshots to illustrate this:

http://www.reynish.com/files/blender25/UI_AA.png


I'm all for having AA, but IMO it should be limited to the 3D view content (and perhaps other views too? Node Editor?)

Cheers,

-William


On 6 Jan, 2010, at 12:42 PM, Damien Plisson wrote:

> Revision: 25775
>          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25775
> Author:   damien78
> Date:     2010-01-06 12:42:52 +0100 (Wed, 06 Jan 2010)
> 
> Log Message:
> -----------
> OpenGL Anti-aliasing implementation for blender windows
> 
> Added GHOST_TUns16 numOfAASamples parameter to GHOST_CreateWindow to specify the number of AA samples (null if no AA wanted)
> Implemented it in the cascade of GHOST classes.
> 
> Full implementation currently done for OSX/Cocoa, stubs for other OSes.
> Moguri : it's ready for your win32 implementation !
> 
> Note that fallback to a non AA window (if gfx card doesn't support AA) is done inside GHOST OS specific layer, so that blender windowmanager still gets its window created properly. 
> 
> Modified Paths:
> --------------
>    trunk/blender/intern/ghost/GHOST_C-api.h
>    trunk/blender/intern/ghost/GHOST_ISystem.h
>    trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.h
>    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
>    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
>    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
>    trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
>    trunk/blender/intern/ghost/intern/GHOST_SystemX11.h
>    trunk/blender/intern/ghost/intern/GHOST_Window.cpp
>    trunk/blender/intern/ghost/intern/GHOST_Window.h
>    trunk/blender/intern/ghost/intern/GHOST_WindowCarbon.cpp
>    trunk/blender/intern/ghost/intern/GHOST_WindowCarbon.h
>    trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.h
>    trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm
>    trunk/blender/intern/ghost/intern/GHOST_WindowWin32.cpp
>    trunk/blender/intern/ghost/intern/GHOST_WindowWin32.h
>    trunk/blender/intern/ghost/intern/GHOST_WindowX11.cpp
>    trunk/blender/intern/ghost/intern/GHOST_WindowX11.h
>    trunk/blender/source/blender/windowmanager/intern/wm_window.c
> 
> Modified: trunk/blender/intern/ghost/GHOST_C-api.h
> ===================================================================
> --- trunk/blender/intern/ghost/GHOST_C-api.h	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/GHOST_C-api.h	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -162,6 +162,8 @@
>  * @param	height	The height the window.
>  * @param	state	The state of the window when opened.
>  * @param	type	The type of drawing context installed in this window.
> + * @param stereoVisual		Stereo visual for quad buffered stereo.
> + * @param numOfAASamples	Number of samples used for AA (zero if no AA)
>  * @return	A handle to the new window ( == NULL if creation failed).
>  */
> extern GHOST_WindowHandle GHOST_CreateWindow(GHOST_SystemHandle systemhandle,
> @@ -172,7 +174,8 @@
> 	GHOST_TUns32 height,
> 	GHOST_TWindowState state,
> 	GHOST_TDrawingContextType type,
> -	const int stereoVisual);
> +	const int stereoVisual,
> +	const GHOST_TUns16 numOfAASamples);
> 
> /**
>  * Returns the window user data.
> 
> Modified: trunk/blender/intern/ghost/GHOST_ISystem.h
> ===================================================================
> --- trunk/blender/intern/ghost/GHOST_ISystem.h	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/GHOST_ISystem.h	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -216,14 +216,15 @@
> 	 * Create a new window.
> 	 * The new window is added to the list of windows managed. 
> 	 * Never explicitly delete the window, use disposeWindow() instead.
> -	 * @param	title	The name of the window (displayed in the title bar of the window if the OS supports it).
> -	 * @param	left		The coordinate of the left edge of the window.
> -	 * @param	top		The coordinate of the top edge of the window.
> -	 * @param	width		The width the window.
> -	 * @param	height		The height the window.
> -	 * @param	state		The state of the window when opened.
> -	 * @param	type		The type of drawing context installed in this window.
> +	 * @param	title			The name of the window (displayed in the title bar of the window if the OS supports it).
> +	 * @param	left			The coordinate of the left edge of the window.
> +	 * @param	top				The coordinate of the top edge of the window.
> +	 * @param	width			The width the window.
> +	 * @param	height			The height the window.
> +	 * @param	state			The state of the window when opened.
> +	 * @param	type			The type of drawing context installed in this window.
> 	 * @param	stereoVisual	Create a stereo visual for quad buffered stereo.
> +	 * @param	numOfAASamples	Number of samples used for AA (zero if no AA)
> 	 * @param	parentWindow 	Parent (embedder) window
> 	 * @return	The new window (or 0 if creation failed).
> 	 */
> @@ -231,7 +232,8 @@
> 		const STR_String& title,
> 		GHOST_TInt32 left, GHOST_TInt32 top, GHOST_TUns32 width, GHOST_TUns32 height,
> 		GHOST_TWindowState state, GHOST_TDrawingContextType type,
> -		const bool stereoVisual,
> +		const bool stereoVisual = false,
> +		const GHOST_TUns16 numOfAASamples = 0,
> 		const GHOST_TEmbedderWindowID parentWindow = 0) = 0;
> 
> 	/**
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_C-api.cpp	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_C-api.cpp	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -140,7 +140,8 @@
> 									  GHOST_TUns32 height,
> 									  GHOST_TWindowState state,
> 									  GHOST_TDrawingContextType type,
> -									  const int stereoVisual)
> +									  const int stereoVisual,
> +									  const GHOST_TUns16 numOfAASamples)
> {
> 	GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
> 	bool bstereoVisual;
> @@ -151,7 +152,7 @@
> 		bstereoVisual = false;
> 
> 	return (GHOST_WindowHandle) system->createWindow(title, left, top, width, height,
> -		state, type, bstereoVisual);
> +		state, type, bstereoVisual, numOfAASamples);
> }
> 
> GHOST_TUserDataPtr GHOST_GetWindowUserData(GHOST_WindowHandle windowhandle)
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.cpp	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.cpp	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -402,6 +402,7 @@
> 	GHOST_TWindowState state,
> 	GHOST_TDrawingContextType type,
> 	bool stereoVisual,
> +	const GHOST_TUns16 numOfAASamples,
> 	const GHOST_TEmbedderWindowID parentWindow
> )
> {
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.h
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.h	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.h	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -115,6 +115,7 @@
> 		GHOST_TWindowState state,
> 		GHOST_TDrawingContextType type,
> 		const bool stereoVisual,
> +		const GHOST_TUns16 numOfAASamples = 0,
> 		const GHOST_TEmbedderWindowID parentWindow = 0 
> 	);
> 	
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -93,13 +93,15 @@
> 	 * Create a new window.
> 	 * The new window is added to the list of windows managed. 
> 	 * Never explicitly delete the window, use disposeWindow() instead.
> -	 * @param	title	The name of the window (displayed in the title bar of the window if the OS supports it).
> -	 * @param	left	The coordinate of the left edge of the window.
> -	 * @param	top		The coordinate of the top edge of the window.
> -	 * @param	width	The width the window.
> -	 * @param	height	The height the window.
> -	 * @param	state	The state of the window when opened.
> -	 * @param	type	The type of drawing context installed in this window.
> +	 * @param	title			The name of the window (displayed in the title bar of the window if the OS supports it).
> +	 * @param	left			The coordinate of the left edge of the window.
> +	 * @param	top				The coordinate of the top edge of the window.
> +	 * @param	width			The width the window.
> +	 * @param	height			The height the window.
> +	 * @param	state			The state of the window when opened.
> +	 * @param	type			The type of drawing context installed in this window.
> +	 * @param	stereoVisual	Stereo visual for quad buffered stereo.
> +	 * @param	numOfAASamples	Number of samples used for AA (zero if no AA)
> 	 * @param	parentWindow 	Parent (embedder) window
> 	 * @return	The new window (or 0 if creation failed).
> 	 */
> @@ -111,7 +113,8 @@
> 		GHOST_TUns32 height,
> 		GHOST_TWindowState state,
> 		GHOST_TDrawingContextType type,
> -		const bool stereoVisual,
> +		const bool stereoVisual = false,
> +		const GHOST_TUns16 numOfAASamples = 0,
> 		const GHOST_TEmbedderWindowID parentWindow = 0 
> 	);
> 	
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -657,6 +657,7 @@
> 	GHOST_TWindowState state,
> 	GHOST_TDrawingContextType type,
> 	bool stereoVisual,
> +	const GHOST_TUns16 numOfAASamples,
> 	const GHOST_TEmbedderWindowID parentWindow
> )
> {
> @@ -672,7 +673,7 @@
> 	left = left > contentRect.origin.x ? left : contentRect.origin.x;
> 	top = top > contentRect.origin.y ? top : contentRect.origin.y;
> 	
> -	window = new GHOST_WindowCocoa (this, title, left, top, width, height, state, type);
> +	window = new GHOST_WindowCocoa (this, title, left, top, width, height, state, type, stereoVisual, numOfAASamples);
> 
>     if (window) {
>         if (window->getValid()) {
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -190,7 +190,7 @@
> 	const STR_String& title, 
> 	GHOST_TInt32 left, GHOST_TInt32 top, GHOST_TUns32 width, GHOST_TUns32 height,
> 	GHOST_TWindowState state, GHOST_TDrawingContextType type,
> -	bool stereoVisual, const GHOST_TEmbedderWindowID parentWindow )
> +	bool stereoVisual, const GHOST_TUns16 numOfAASamples, const GHOST_TEmbedderWindowID parentWindow )
> {
> 	GHOST_Window* window = 0;
> 	window = new GHOST_WindowWin32 (this, title, left, top, width, height, state, type, stereoVisual);
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -110,6 +110,8 @@
> 	 * @param	height	The height the window.
> 	 * @param	state	The state of the window when opened.
> 	 * @param	type	The type of drawing context installed in this window.
> +	 * @param	stereoVisual	Stereo visual for quad buffered stereo.
> +	 * @param	numOfAASamples	Number of samples used for AA (zero if no AA)
> 	 * @param	parentWindow 	Parent (embedder) window
> 	 * @return	The new window (or 0 if creation failed).
> 	 */
> @@ -117,7 +119,9 @@
> 		const STR_String& title,
> 		GHOST_TInt32 left, GHOST_TInt32 top, GHOST_TUns32 width, GHOST_TUns32 height,
> 		GHOST_TWindowState state, GHOST_TDrawingContextType type,
> -		const bool stereoVisual, const GHOST_TEmbedderWindowID parentWindow = 0 );
> +		const bool stereoVisual = false,
> +		const GHOST_TUns16 numOfAASamples = 0,
> +		const GHOST_TEmbedderWindowID parentWindow = 0 );
> 
> 	/***************************************************************************************
> 	 ** Event management functionality
> 
> Modified: trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
> ===================================================================
> --- trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp	2010-01-06 11:38:58 UTC (rev 25774)
> +++ trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp	2010-01-06 11:42:52 UTC (rev 25775)
> @@ -228,6 +228,8 @@
> 	 * @param	height	The height the window.
> 	 * @param	state	The state of the window when opened.
> 	 * @param	type	The type of drawing context installed in this window.
> 
> @@ Diff output truncated at 10240 characters. @@
> 
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs



More information about the Bf-committers mailing list