Life

A lot has been going on in the last few months.

Mariana is 14 weeks pregnant, so we are expecting to have another kid by the beginning of November. She has just finished her studies and has found herself a job at EMQ/FamiliesFirst. She works counseling problematic children and loves it so far, but she has a terrible schedule, her shift is on weekend nights, so we don’t get to see each other much over the weekends.

So, now Nachito and I have plenty of time to spend together. Spring is here and in Davis the weather is great during this time of the year, so we are spending most of our time outdoors. We have been working in our garden again, Nachito helps me spread compost and plant the starts, he loves playing with worms.

We have also been exploring the surrounding parks: Berryessa, Cold Canyon, Cache Creek, Capay Valley and various sections of the South Yuba river. The rivers in the foothills are still a bit too cold for swimming, but the creeks in the North Coast Range are just perfect on a hot day. Nachito loves climbing on rocks and he’s getting increasingly good at it.

I keep swimming, not for rehabilitation anymore, but for recreation and fitness. I’m now in better shape than I’ve ever been and I feel pretty good about it. However, my back is not entirely healed yet; I cannot sit for long periods of time. I still feel a mild pain after driving long hours, biking on a rugged road or going to the movies. So, I keep working on stand-up desk. At this point it feels very natural, I don’t get tired as I used to anymore. Sitting on a chair feels too constraining, they remove too many degrees of freedom, it just feels wrong.

The Witness is progressing well, although on my side things are going a bit slower than I hoped. I need to get my shit together and use my time more effectively. Part of the problem is that I have too many distractions at home, so I’ve finally rented an office and I’ll be moving in tomorrow. For the first time in my life I won’t have a computer at home, I’m going to stay like that for a while, but I’ve been thinking I should probably get a laptop.

The Witness

Jon has recently started a development blog about The Witness, the game that we have been working on during the last few months. So far there are a few posts about the technology and the aesthetics of the game and I’ll soon write a bit more about the global illumination implementation in some more detail. Keep an eye on it!

OpenNL 3.0

GPGPU.org takes note that OpenNL 3.0 has just been released and that this new version comes with support for CUDA. That’s certainly interesting, but for me the biggest news is that the library is now under the BSD license and thus can be used in a wider range of projects. I guess it’s time to drop my own sparse matrix solvers.

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 →