Archive for the ‘Random’ Category
Convergence
I’m extremely excited about the results of Understanding the Efficiency of Ray Traversal on GPUs, and the related work by NVIDIA on ray traversal. In a programming way of course.
There’s this interesting paradigm shift from a strongly geometric grid model to one where we have persistent threads running small kernels (or actually large kernels due to the way CUDA code is currently linked) and grabbing their own jobs asynchronously. The interesting thing about this shift is that this is the way PS3 developers on Cell have been writing SPU job systems for years. Now I admit that the underlying hardware is radically different (massive hardware threading and wide SIMD vs no hardware threading and more conventional SIMD), but the same simple primitives of a resident kernel using atomic increment to grab from a shared job list still apply. I have no idea where this programming model is going to converge, but I think it certainly looks like it is.
(Atomic increment is actually only CUDA compute 1.1, so even your 1 year old laptop with an NVIDIA mobile chipset can probably run this sort of code. Of course it’s nicer with the 1.3 voting primitives, but you can emulate these through shared memory, so no need to go bargain hunting for a GTX 260 just yet.)
Spam
If you’ve not received any spam that looks like it’s from this domain, then please ignore this post.
If you have, then you have my sympathy, but please note I had nothing to do with it.
The spam in question has the subject “Your internet access is going to get suspended” and claims to attach a zip of the recipient’s illegal activities. In reality it contains some sort of win32 trojan. I’m trying to get the full message header of the offending emails, but my guess is that either I’ve just been unlucky and picked as the reply-to, or someone broke the password on my mailbox on this domain. Anyhow, I’ve changed all relevant passwords, and I’m in the process of finding out if anything was broken into.
Apologies for a post that has nothing to do with the usual material, but getting 200+ emails from corporate anti-virus software prompted me to try to disassociate this domain from the spam.
Site Blogged
My homegrown php code is ageing badly, so it’s time to ditch the lot and join the WordPress collective.
Hopefully the site survived the transition:
- The squish library has its own page, but this just links to the Google Code project where this is now hosted.
- All other old articles and code should have been converted into posts.
- Found a thoroughly awesome WordPress redirection plugin, so all the old links should still work. Please post a comment if your incoming link didn’t work.
- I have stopped messing around with the site now, permalink structure is final!
Perhaps now I can post more than one item per year!
Continuous Silhouettes
Silhouettes are commonly used for real-time shadowing algorithms. Usually these are generated from the existing edges of a mesh using the face normals. Since shading is usually interpolated over the triangle from the vertex normals, this can introduce shading artifacts where the vertex and face normals do not agree. In addition, these silhouettes move discontinuously when the light or mesh is in motion, which can cause nasty popping artifacts when using penumbra wedge soft shadows, since the projected penumbra volumes are very sensitive to the distance from the silhouette edge to the light source.
This post describes an idea of how to generate silhouette geometry using the vertex normals of a mesh. These silhouettes match the vertex lighting exactly, and also move continuously under smooth lighting or geometry changes.
Read the rest of this entry »