Biking

I’ve been biking around Davis since I bought my new road bike. It’s a very nice experience. There are many nice country roads around here (see this great map of the area) and the weather is always friendly. I really like biking towards the mountains, because I can easily see my progress. I’m now able to reach the foothills of the north coast range and next time I should be able to get to Lake Berryessa.

I love the feeling of being able to go almost anywhere just by the sheer strength of my legs. I’ve even been thinking about commuting to San Francisco by bike. I could easily go to Vallejo and take the Ferry to San Francisco, but a more ambitious route would be to go through the north bay, of course, I would do that on a Sunday, spend the night in the city and return by train.

New Job

Last Friday was my last day at NVIDIA. Next Monday I’ll start working with Jon Blow on The Witness. I’m excited to get back to the game industry and I’m hoping something really cool will come out of this.

In any case, I had a great time working at NVIDIA during the last 4+ years; I especially enjoyed the time I spent working on tessellation. I’ll definitely miss the great people that I had the chance to work with. Some of them are in the following picture of my last day at work:

In clockwise order: Aravind, James, Tianyun, Eric, Sarah, Ignacio (not me), Cem, Lars, Timothy, Philippe, Matthieu, Paulius and Tristan.

Continue reading →

Continuity Mapping for Multi-Chart Textures

Naty Hoffman references a paper from Siggraph Asia titled Continuity Mapping for Multi-Chart Textures.

The paper provides a solution to a problem that I’ve talked before, that multi-chart parameterizations introduce seams over meshes, and that these seams can produce severe artifacts in some use cases such as displacement mapping. While the solution that I propose removes the cracks in the mesh, it does not eliminate the seams entirely, in only eliminates the holes, so for that reason I still suggested that the use of seamless parameterization remains valuable.

The most interesting thing about the Continuity Mapping solution is that it does not require a re-parameterization of the mesh, allowing you to preserve the uv-map created by the modeler, which is sometimes useful. It’s cool that they reference my presentation at Siggraph 2008, although I first proposed that solution a few months before at Gamefest, and more detailed descriptions of the technique are available in my blog.

In general, I agree with Naty’s assessment that the technique is likely to be inefficient due to divergent branching. Although it may make sense for some applications, it’s unlikely it will be adopted for use in games. Naty describes some other issues, but one that I think is important as well is that it’s unclear how their sewing technique can handle tangent space normal maps. None of the examples in the paper appear to use normal maps, so I suspect the authors may be aware of the problem.

With tangent space normal maps each chart has a different tangent space. Tangent frames are defined at the vertices and interpolated over the triangles, and the tangent spaces do not agree along the seams of the charts.

Per texel normals are then stored with respect to the chart’s tangent space. You cannot interpolate normals that belong to different charts directly. Instead, you have to first transform them to the same space and do the interpolation afterward. That’s generally done in the pixel shader (although it would be more correct to do it before texture filtering). However, their sewing technique introduces new triangles over which the tangent space is simply not well defined since tangent frames at opposite sides of the seam could have completely arbitrary directions and their interpolation would likely result in degenerate frames.

Davis Aquatic Masters

I joined the Davis Aquatic Masters (DAM) about four months ago, and I’ve been swimming almost every day since then, with the only exception of a few weeks that I spent in Spain during the summer.

I think that’s been helping me a lot. I’ve gained more than 12 lb and I feel in better shape than ever. I’ve been hiking again lately and I’ve started playing soccer with Nachito in the evenings. So far I haven’t noticed any signs of back pain, which means that the herniated disk is probably healing.

Swimming during the summer was very pleasant; Davis is super hot and jumping into the water at noon was very refreshing. I also have a great tan from swimming under the sun. However, it’s getting a bit chili now (~80º F). I wonder how hard it will be to swim during the winter; hopefully they will adjust the water temperature. In any case, swimming with others is very encouraging, it’s much easier to share the workout with regular lane-mates and a coach to urge you on.

Today we had a physiotherapy assessment test and just learned that my right shoulder is fucked up. It has a much more limited range of motions than the left shoulder and it makes cracking noises when rotating on certain angles. This summer I had a minor injury while swimming at the beach that kept me away from the pool for about one week, but it slowly recovered and after two weeks the pain was gone entirely. However, it’s very likely that I’ll have more problems if I don’t get that fixed. I should be able to change medical plans pretty soon, so hopefully I’ll be able to chose a decent physiotherapist.

Camping in the Redwoods

We went camping last weekend. This was our second attempt; the first one last Autumn was a disaster. Nachito would not stay inside the sleep-bag during the night and he was going to get a cold outside, so at 1:00 am I had to pack everything and head back to arrive home three hours later. This time Nachito is almost one year older and his mom came with us, so we had more chances to success, and in fact, it went pretty well; Nachito behaved like a grown up this time.

Continue reading →

Rice with milk

When I was a kid I lived in the city, but once a week we got a large milk delivery from the farm. The milk was raw and fresh. I remember we had to boil it ourselves and remove the excess of fat. One of the greatest treats of my childhood was eating the freshly skimmed cream of the raw milk mixed with sugar.

Since we got more milk than we could actually drink ourselves in a week, my grandmother used to make deserts with it. My favorite was rice with milk. However, at some point somebody decided that the few cows in the farm were too much of a hassle to maintain, the cows were sold, and our supply of raw milk ended. We tried to keep making the same recipes with pasteurized milk, but it was not the same. So, I spent years without enjoying this desert until I came to the US.

Continue reading →

Salmorejo means food in summer

I don’t know what’s going on with me lately. Mariana and Nachito are in Brazil visiting Mariana’s family, so that leaves me with plenty of free time. I finally got an epidural injection, so physically I’m feeling great. In the past I would have taken this time to code like crazy and get lots of things done, but things are going much slower than I was hoping. Maybe it’s the heat of the summer, or that now that my body feels fine, I need some time to enjoy it and relax.

Anyhow, today it’s time for some more food blogging, and now that we are in midst of the summer there’s nothing better than Salmorejo. As soon as the tomato season starts, this is something that I have for lunch or dinner almost every day. It’s easy to cook, it’s fast, it’s refreshing, and it’s filling.

Continue reading →

Efficient Substitutes for Subdivision Surfaces

Our siggraph course has been accepted and is finally up on the siggraph website! Here’s the brief description of the course:

An overview of the most recent theoretical results and their implementations on the current and next-generation GPUs, and a demonstration of applications in the gaming and movie industry.

We will bring together participants with different backgrounds: ISV from the game and movie industry, IHVs and academia. Each one will provide their own point of view on the topic and describe their own experiences with these methods. I think that will be very valuable to understand the weaknesses and strengths of these techniques, and will hopefully encourage other developers to adopt them.

NVTT quote

I love this quote from Ivan-Assen Ivanov about the NVIDIA Texture Tools:

We switched to CUDA nvcompress in our pipeline and totally forgot
about it. Until yesterday, when an artist had to work on a 7600 for a
while, and raised hell about how slow the export has become.

:-)