Cool Link Stash, January 2013

C++

There's a good video talk up on Channel 9 from the C++ and Beyond 2012 conference called You don't know blank and blank on the different meaning of const and mutable in C++11.
In summary, the const keyword in C++11 no longer means logical const as it did in C++98. In C++11 const has the sense of bitwise const (or at least internally synchronized to make a function or const-declared object thread-safe).
This follows from the fact that the C++11 standard library guarantees that const means thread-safe for its own types and all operations it calls on your types.
Thread-safe means bitwise const (i.e. no modifications) or internally synchronized. Copy constructors need to be thread-safe in C++11!
It follows that any object that is declared const is fully thread-safe, i.e. truly immutable or internally synchronized.
Note that it's already undefined behavior in C++98 to cast away const from an object declared const!
The new meaning of mutable in C++11 is also thread-safe. A mutable-declared mutex, for example, is now basically a thread-safe object (this means that even its non-const member functions are thread-safe).

Another good Channel 9 talk from C++ and Beyond 2012 that got posted recently is Herb Sutter's talk called C++ Concurrency.

Graphics

Sébastien Lagarde has an interesting (and still ongoing) blog post series on rendering real-time water.

In the SIGGRAPH brief A 2.5D Culling for Forward+ Takahiro Harada presents a new light culling approach for Forward+ (aka Tile-Based Forward Rendering). The idea is to basically split the frustum for a tile along the depth axis into 32 buckets and then create a bit mask that contains a 1 for a bucket with geometry and a 0 for a bucket with empty space. The same bit mask is computed for the volume of influence of a light. By comparing the bit masks lights can be quickly culled along the depth of a tile's frustum.

NVIDIA has a new, interesting paper titled Toward Practical Real-Time Photon Mapping: Efficient GPU Density Estimation.

PolyVox is a C++ library by indie game developer Volumes Of Fun that provides storage and processing of voxel-based environments. It's released under a liberal zlib license and the source code is available on BitBucket.

Inigo Quilez has an excellent article up on Multiresolution Ambient Occlusion with plenty of pictures. Well worth the read.

A pretty nifty idea for denoising images generated via Monte Carlo ray tracing is presented in the paper Robust Image Denoising using a Virtual Flash Image for Monte Carlo Ray Tracing by Boochang Moon et al. Here's the companion website with a video (download the file, don't watch it on youtube because the strong video compression makes it pointless). The idea is to generate a virtual flash image (by putting a flash-like light source at the camera position and summing that with direct illumination of diffuse surfaces and all interaction with specular surfaces). This virtual flash image is then used to guide the denoising process. The technique is somewhat similar to a paper from several years ago where a real-life flash picture is used to denoise a non-flash picture of the same scene via bilateral filtering.

The I3D paper from the Technical University of Vienna Fast Light-Map Computation with Virtual Polygon Lights describes a quality improvement to the typical VPL-based instant radiosity method to quickly generate light maps on the GPU.

Chris­t­ian Schüler has a nice article on his blog titled Normal Mapping Without Precomputed Tangents. As you might guess, it's about doing normal mapping in a pixel shader without passing a tangent frame via vertex attributes.

Web Development

Developing Backbone.js Applications is an early, online pre-release of a book by Addy Osmani on the popular JavaScript MVC framework Backbone.js.

Leave a Reply

Your email address will not be published. Required fields are marked *