In the meantime

It’s been a few days now since I finally purchased an iPhone. Even after 6 months in the UK, for some reason, I wasn’t eligible for an iPhone contract with O2 but I still managed to set up a phone line with BT and broadband with.. yes.. O2. Had no choice but to purchase a Pay and Go version and I have to say it is worth every penny.

I haven’t been working a lot at home lately but the skin shader is practically done. If I get broadband till the end of the week then I shall roll out the RenderMonkey project (yes, decided to stick with it) this weekend.

Seams and Gamma correction

Got more stuff done last night. This time the pics show a non-exagerated version of the subsurface diffusion and using recommended settings for human skin. I got rid of the seams and added gamma conversion to keep all computations in linear color space. Both have the same specular highlights.

head_basic_color1 head_skin_color2

Since I’m using a world-space normal map, I was able to remove the seams by switching to a paralell light. That reduces the irradiance pass to a screen-space quad which takes advantage of extra information available outside the mesh (in uv space) which was initially intended to avoid mip-mapping issues.

The diffuse texture should probably be redone at this point. Actually, both the model and textures could use extra work to take real advantage of the shader. Slightly more tesselation on the mesh and more detail in both normal and diffuse textures.

The stretching method described in the book requires a certain amount of tesselation due to the use of partial derivatives; big polygons in uv space can cause discontinuities. My test model is not very dense so I’m still trying to figure out a way of doing it efficiently.

Initial Skin Results

This weekend I got some free time to add subsurface diffusion to the skin shader.

Right now I have both the specular and subsurface diffusion working. The images below show a comparison between a simple lighting shader and the current skin shader. Because the diffusion effect works in image space there’s some issues at UV seams and unnatural darkness at small UV regions with large shadow areas closeby.

head_basic_color head_skin_color1
head_basic head_skin

The next step is to use a stretch texture to help reduce image-space filtering artifacts.

Mono and Skin

The pressure at work has been relieved for now. I’ll be moving to the new flat today and I’m looking forward to assemble furniture.

Yesterday I started reducing the Mono codebase to the absolute minimum, isolate all the system calls and disabling unnecessary features. I will need to build a native application that can perform ahead-of-time compilation on the platform itself; first on Windows then iPhone. Care must be taken not to break the integration of future Mono updates.

I also got around to work a bit more on the Skin shader based on johny’s model. This image below is not using the skin shader yet.

I’m a bit worried that the diffuse map, while looking good, may not be adequate for this technique as it contains diffuse, ambient occlusion and specular information. I’ll probably try a quick clean to remove everything but the unshaded skin tone.

I started implementing the physically-based Kelemen/Szirmay-Kalos specular surface reflectance model described in the article. I’ll post shots as soon as I have interesting results.

VSFileFinder

n0n4m3 is working hard to improve our Visual Studio experience. He just released a modified version of Jonathan Payne’s VSFileFinder with support for wildcards, regular expressions, tooltip personalization and project filters.

Link to the download page:
http://n0n4m3.codingcorner.net/?pag=vs_addin2&language=en

CLIArgsMadeEasy

Ricardo, aka n0n4m3, just released a Visual Studio add-in to change the way we access startup project command-line arguments:

The plugin is named CLIArgsMadeEasy and it adds a dockable toolbar with a command-line text field to your environment. It’ll immediately grab your current startup project’s command-line and automatically updates it once modified.

Link to the download page:
http://n0n4m3.codingcorner.net/?pag=vs_addin1&language=en

Skin Shader

I recently decided to use the little free time I have, until I move to the new flat, to work on a popular skin shader implementation. This real-time technique was featured in the cover of GPU Gems 3 where a 3D head model, scanned from actor Doug ‘SilverSurfer’ Jones, was rendered with a high degree of perceptual accuracy.

dougskin

So far I’ve been using RenderMonkey but as much as I enjoy the workflow and the layout, even after so many revisions, it still presents a few fatal flaws: an incomplete code editor, improper camera controls and inexisting scene management. This week I’ll looking for viable alternatives.

Busy week

I’ve been very busy at work this week. That said, unfortunately I haven’t had time to do any personal work in the last few days. I’m also searching for a new flat this month; I’ve decided to move in by myself in order to dwell into a very productive state of loneliness.

I’ve also been looking into acquiring a Mac Mini so I can start developing for the iPhone. I’m undecided on whether to buy the current (cheapest) one or just wait a couple of months in case they decide to release slightly improved version.

Also got this link on the company mailing list (thx Flavius); it’s a fabulous add-in for Visual Studio:
http://www.hanselman.com/blog/IntroducingRockScroll.aspx

XNA/iPhone development

I’ve decided to focus on small scale development for now due to the demands of my current job. Recently I started dedicating most of my free time to creating a framework for small-scale 2D cross-platform development on XNA (PC, XBLA, Zune) and iPhone/iPodTouch.

I started by looking at Mono with the objective of writing all the game logic in C#. I thought it could be the perfect solution, integrating seamlessly with XNA and still allow interop with ObjC++ at the lower level. Eventually, I found out that there are some technical issues and licensing problems regarding iPhone development and interpreted languages.

However, it’s still possible to use Mono while respecting the iPhone’s license. The solution involves using Mono to generate native code on the platform itself which apparently is not trivial task. Doing this, however, creates problems with the Mono license… embedding Mono is not free and the price is not available to the public.

I’m back

It’s been a long time since my last post but I finally got around redoing my website using Wordpress. I tried to make it look a bit more mature, not only by changing the design, but also by archiving old projects. Using this new content manager, hopefully, I’ll be able to update this website more frequently and as get some feedback from visitors as an added bonus.

I’ve finally posted some screenshots of Ugo Volt and Floribella, two of the games I had the opportunity to work on while at Move Interactive.

As far as personal achievements go, going through a reset process, I’m back to square one while redefining my priorities in the process. I have a few ideas but it’s still too soon to divulge.

I’ve been very busy at work. I’m currently working with the core technology group here at Splash Damage. A few months ago I finally got the chance to get my hands on the PS3 and I’ve been working on it ever since. It is a wonderful, albeit challenging, platform to work on. I’ve been learning a lot and the project is exciting. So far the experience has been very positive.