Archive for August, 2006
I guess I’m too dumb…
Wednesday, August 23rd, 2006… to figure out how to use Xrender. People writing Xrender itself obviously know how it works and how to use its API. Also the people behind cairo, glitz, compiz, Qt & Co don’t seem to have a problem with just reading a spec (that’s all which is available documentation-wise) and start implementing their drawing functions based on Xrender. I’m certainly not that smart. I’m not being ironic here. It’s just that I’m currently deeply frustrated! For the last two days I tried to figure out (or better: guess) how to make use of Xrender API-calls (mainly grep’ing around in /usr/include/X11/extensions/Xrender.h). It’s such a drag, when you mainly want to focus on writing your application. But I could not even output a simple blue triangle in a window using XRender-calls… let alone start using Xrender’s filter-functionality to blur a surface-buffer from cairo. I’m interested in this for adding blurred shadows in cairo-clock and the cairo-API - at the moment - still lacks direct support for convolution-filter operations. On the other hand doing the same with OpenGL/GLSL is a easy. I could say… “Well, screw any box that does not have OpenGL/GLSL.”, but such an attitude is complete arse and would severely limit the possible user-base.
I’ve googled sites up and down, searched the mailing-list archives at lists.freedesktop.org, tried to leverage any code-snippets I could extract from found articles and even did my best to get a grip of things by looking at code of gnome-window-decorator (from compiz) and cairo (xlib-backend). But all those steps got me further and further away from the actual problem at hand… writing code for the new cairo-clock. This quickly lead to me being totally demotivated to write any line of code at all. What makes it even worse is the fact that my spare-time is burnt by this with no results at the end.
Sorry, if this sounds like ranting or bashing. It’s not intended as such. It’s just sad that development-documentation in 2006 is still such a sore spot with certain paramount parts of the OpenSource graphics-stack. A “nasty” side-effect is that I’m extremely tempted to switch to Qt. Documentation- and example-code-wise this Qt is pure heaven and as long as I’m sticking to writing OpenSource-code the licence is ok too.
I feel very uneasy atm :/
EDIT: In case anybody wonders what I’m trying… he’s my simple test to get anything drawn using Xrender.
just watch and grin… broadly :)
Friday, August 18th, 2006Watch this.
begun the bling-wars have
Tuesday, August 15th, 2006This is going to be a very long entry… I promise you… and I wonder how much flak I’ll get for this.
The recent months have clearly demonstrated that the average user of an OpenSource-system enjoys a healthy amount of bling. Just every computer-user is “guilty” of this. Some to a larger degree, some to a lesser one. The current state of things looks actually pretty good on our side of the fence… at least as long as inter-window effects are concerned (think: all effects made available via compositing-managers like compiz). Several effects are really improving usability or general accessibility (e.g. cube, expose-like scale, tab-switcher, unfold, desktop-zoom) and then there are some just for fun (e.g. wobbly, skydome). But sadly it stops here.
Those afore mentioned “inter-window” effects are just one part of the equation. The other paramount portion is made up of application-level or UI-toolkit-level effects. No idea what I mean? Some (admittedly) extreme examples:
- pulsing buttons
- smooth fading transitions or animated movement hiding or unhiding widgets or areas
- smoothly scaling up or down widgets or other UI-toolkit-level elements
- what about “cleanly animate and flip-rotate these video-texture surfaces from here to there”
- a consistent appeal and look between inter-window- and toolkit-level effects
- seamless integration of realtime-3D, 2D-vector-graphics, video and UI-elements in one application
- parameterized animation clues in the UI based on user-input, application- or system-state
- a reflecting, HDR-lit, shadow-casting map-view of your local area based on time of day and geographical position
- …
I could continue growing this list for some time. Just look at the UI of OS X Leopard (CoreImage, CoreVideo, CoreAnimation). Also Vista is well armed in that domain (Avalon aka Windows Presentation Foundation aka .NET 3.0 aka Windows Live Something). Now I can imagine some of you thinking: “Good lord… I get it. MacSlow wants to mimick the competition. What a faggot!” I’m sorry for you if you actually do think that. But that’s not the real deal behind it. We have most (if not all) of the needed low-level parts in place for this… cairo, OpenGL, gstreamer, librsvg, gegl (ok, not all are fully developed yet, but most are) to name some more well-known ones… akamaru, libclutter to name some lesser-known ones. What is needed is a general effects-, animation- and layout-library pulling together all those assests we have in the OpenSource field and become the icing on the cake in form of a convenience-layer. Also providing solid frameworks and standard boilerplate-calls for the usage of fragment/vertex-shaders, realtime image/video-filters etc.
That in turn should be used to conceive tools offering artists and designers to build UIs in a much more sophisticated fashion. Just like today design of an UI can be done in glade without a single line of code thus concentrating more on usability-aspects during the process. I would like to see people like e.g. jimmac not doing mockups of his ideas in blender, but for real and being able to test them out on real users… without him needing either learn all about coding gtk+, OpenGL, cairo and what not or waiting for some OpenSource-developer to find time and motivation to implement it. Or have the folks working on defining and testing the specs for Tango broaden their reach and also work on a common set of reasonable animation behaviours of a desktop UI. Things like those make all the sense (once we have the needed frameworks and tools in place). In my opinion this is something very worthwhile to undertake for Gnome & Co and the free desktop-systems in general. It does not stop on simple UI-matters. Having a standard set of shader-based effects for image-, video-, audio- and mesh-data provided by a common cross-platform library, makes the platform more attractive to developers, who are usually not very keen about Linux as a development-target at the moment. Aside from this, well-known OpenSource projects like Diva, PiTiVi, jashaka, jokosher et al. would probably also welcome such a tool set.
I would also like to see gtk+ 3.x, Qt 5.x, Gnome 3.x and KDE 5.x being able to base their future work on such a library. This would probably also be a welcomed effort by the Portland-project. Diversity is good… under the hood, but not on top, when you want to get things done. All Monos, Pythons, Rubys and whatever languages of the world will not give OpenSource-systems the boost in attracting new 3rd party developments, if we don’t boraden the disciplines our tool-chains can provide and simplify their utilization. This is especially of concern looking at the offerings on proprietary platforms. Big players like Sony, IBM, Sun, intel and should step in here to help with the heavy lifting ahead of us. The benefit for them is clearly a more media-complete solution with all the benefits OpenSource offers (I disregard the DRM-mess for the moment). Furthermore I would also like to suggest to the community to establish a good relation-ship with coders from the demo-scene. We need all the help we can get.
While this may not be needed today, it will be needed tomorrow and we better start working on it today to have it in a mature state in the future. No one can tell me that s/he would not like to see a project like this spawning. Of course it is a huge endevour… but to stop is to fall behind! It’s go big or go home!
Just my humble (but still very concerned and serious) 2/100 euro-cents. Comments welcome!
P.S.: These discussions here actually pushed the buttons in my brain to make me write up this.
state of the art realtime-lighting
Tuesday, August 1st, 2006Some of the better realtime-lighting solutions in game-engines I’ve seen so far:
Done by FantasyLab. Probably DirectX-only and certainly proprietary.
Some other engine from “Project Offset”:
- HD 480p clip (wmv, ~17 MBytes)
I hope none of those engines will suffer from the same fate as the once great and promising “Reality Engine” (no, not that pixel-pushing monster from SGI) developed by Tim Johnson. This technology and himself were bought up by Epic Games last year. Looks like someone feared superior competition. See this clip…
- Backyard (wmv, ~32 MBytes)
to get a glimpse of what it was capable of in 2004 already.
