Skip to content

Some reflections

Sunday, 27 November 2005  |  zack rusin

I haven't blogged for a while again. To some extend because the things I'm doing at the moment have little to do with KDE. First of all, yes, it's true that I don't work for Trolltech and that I'm back in States. For now I took a leave of absence to work on some other things. Right now those other things are physics; superstring theory to be exact. I'd like to finish my research, write a paper and then we'll see what I'll be doing.

Before turning to physics I've been playing around with full curve decomposition on GPU. There's a number of things that irritate me about the current way our 2D api's are done. One of them is the client side path decomposition. It's really visible since our rendering API's are vector based and therefore paths are a first class citizen. This is of course partially because our algorithms for tessellating complex polygons while considering winding rules are quite frankly embarrassing. Tessellation is a fairly uninteresting problem in itself, that's also one of the main reasons there isn't too many people willing to spend heaps of time researching it. So, while working on a new tessellation algorithm I've been playing around with curve rendering on GPU. The current research is focused on partial specialization - triangulation on the client and pixel position determination (inside or outside of the loop) on GPU. Both vector texture maps and The Loop&Blinn algorithm do that.

Given my position on tessellation on the client, as you can imagine, I'd like to completely skip it and offload it to the GPU. The ideal solution being passing the full path encoded in a texture, then extracting the elements and rasterizing the data using fragment shaders. The problem (or more precisely "one of the problems that bother me") is that we're skipping vertex shaders (due to the fact that we don't have the geometry of the object at that stage) which implies that we need full transformation matrix encoded right along the path plus we need to do the transformation using fragment shaders.

All of that just amplifies my issues with graphics hardware. I wish we could have a decent dialogue with the vendors so I'd at least have an overview of what they are doing. Given my current situation, fragment shaders are so useful when working on physics simulations and reverse engineering full pipeline... Lets just say I'll admire anyone with time to even tackle that. I've been looking for a 15" or smaller (call me sentimental but I really like the "portable" aspect of my laptops) laptop with NVIDIA 7xxx card for the last two weeks. I couldn't find anything besides ASUS A6Vm and A6Km which are impossible to buy anywhere. I'm tired of having to ssh to my desktop to run my simulations so I'd like to have a laptop with decent fragment shaders support and as Dave noted ATI isn't doing too well in that department on GNU/Linux. If you've seen such a laptop let me know as I badly need one, even though I'm crying inside when thinking about spending the little money I've got. Plus I wouldn't mind being able to do something amazing for Plasma on my laptop after I'm done. Your motivation for helping me is the knowledge that most likely the sooner I'll finish this stuff the sooner I'll be back to doing graphics and other weird Open Source things.

Oh, and also I really like Michael's work on -Bdirect and the lack of response his patch generated is a 'little' depressing. I'd love to see this thing go in.