Programming. Realtime computer graphics. Demoscene. Game development. Stuff.
The demo I and some friends were working on in the last 5 months (spare time) is finally released. Heck, it even has a website: www.nesnausk.org/inoutside! Now waiting for results from ImagineCup...
I've been watching it too long to have any objective opinion. Some outsider comments are here. Enjoy!
The new chair
Got this new computer chair from Paulius for my birthday. The one where you're half-kneeled while sitting on it (some say it's good for your back). It's a bit strange at first, but overall pretty cool. After a week of chair-testing I'd say it's good. My daughter there doesn't sit properly :)
It all depends on the way you look
Yesterday Paulius put screenshots from UE3 and our demo next to each other, wrote "right!" and "wrong!" over the corresponding shots and we realized that we're basically screwed.
In the evening, I tweaked lighting and contrast, made some lightmaps and hand-drawn the other lightmaps.
In the morning, Paulius took new screenshots and put UE3 screenshots next to them. Then he wrote "WTF?" over UE3 ones and "world domination!" over ours. Suddenly we realized that maybe it ain't that bad afterall.
Conclusion: it all depends on what's written over the screenshots :)
Demo nearly finished!
(me back at work after three days of 12+ hour work on the demo)
Nearly finished the demo, gave testing builds to several people. I'm already sick with it and can't judge it objectively. My wife says that demo lacks colours (true), lacks action (partially true) and other things - but probably she's already sick with me doing the demo.
The other people say various things. Well, too late to change everything; I feel a bit bad - we've invested so much time into this and it looks pretty bland (i.e. when you compare screenshots of our demo and UnrealEngine3, one of them looks clearly better :)). Now it all depends on what demos will the other teams make.
On the efficiency side, it's doing pretty well. I didn't bother writing fallback effects for anything lower than ps2.0 hardware (that was great!). Our low-end-target (something like 1.5GHz CPU and Radeon 9500 64MB) the demo runs ok at lower resolutions (800x600). On our 'recommended' hardware that ranges from Radeon 9800s to GeForce 6800s the demo runs well; FPS counts are 60-120. Haven't tried on any of the 'top' video cards. Two people said it doesn't run on GeForceFX; one effect does not get validated - that's bad, looking at the effect I can't tell what's the problem and don't have anything from FX series at hand.
Funny enough, the demo manages to run reasonably well even when it's severely unoptimized!
Work, work, work
Demo demo demo! Beware!
We still have a chance to finish it on time. I've taked a day off the work tomorrow and want it to be really finished by tomorrow evening (or night). The real deadline is after 4 days, but I've got to test it on various hardware...
It's going pretty well, I think. It works, other team members say it looks pretty good (myself - I'm not sure, I think I've been watching it for too long). Does 100-150FPS on my GeForce 6800GT at 1024x768 with some FSAA. Again, we're under-utilizing the available hardware :)
Back to work.
24 / deadline's near
It's my 24th birthday today, yay!
On the other hand, I won't "celebrate" (whatver that means) it now, maybe after a week. The deadline for ImagineCup demo is just around the corner, and my todo list still contains lots of stuff...
Sometimes you must make decisions that clearly affect your whole foreseeable future in a significant way. Here comes the really unexpected though: making such decisions is hard! :)
Improving UV mapping skills
Hey, UV mapping the second human-like figure took me much less time than the first one! This one took about 1 hour, again in Blender (and again, marking seam edges, LSCM that and just arranging resulting pieces rocks).
That said, making the low-poly mesh from the high-poly one took much longer than UV mapping; something like 4 hrs. A good artist would probably make a new mesh from scratch in shorter time, but hey, I'm not an artist :)
Ambient occlusion takes ages to compute!
Really. Three hours for a model at 1024x1024 and 5x supersampling!
Now I'm using ATI's NormalMapper to compute normal/AO maps (Previously was using nVidia's Melody, but switched for no obvious reason). The good thing with NormalMapper is that it comes with sourcecode; I've already sped up AO computation about 20% by capping octree traversal distances (that took less than an hour). I suspect with some thought it could be optimized even more.
Previously I was using a hacked solution - compute normal map with either tool (that doesn't take long), then use my custom small tool that does low-order GPU PRT simulation on low-poly normalmapped model with D3DX. Get the first term of results, scale it and there you have ambient occlusion. I was thinking it produces good results, but in the truth is that 'real' AO maps look somewhat better, especially for small ornaments that aren't captured in low-poly geometry.
The good thing about this hacked approach is that it takes ~10 seconds for a model (compare to 3hrs). Using it as a quick preview is great, and the differences between hacked-AO and real-AO aren't that much visible once you add textures and conventional lighting.
I'm thinking about doing GPU-based AO simulation on the high poly model, with quick-n-dirty UV parametrization; then just fetching the resulting texture in normal map computation tool (afaik, Melody can do that natively; for NormalMapper it would be easy to add I think). With recent DX9 SDK such tool should not take more than 200-300 lines of code (D3DX has both UVAtlas and GPU PRT simulation now). On the other hand, I know that nVidia guys are preparing something similar :)
Update: added image - on the left is hacked-n-fast AO, on the right is real-AO. Ornaments inside aren't present in low-poly model (only in normal map). Differences are less visible when the model is textured and other stuff is added.
Sometimes I work for 8 hours with almost no results. Sometimes, I can do much more in 3 hours.
Things that help me (examples from IC05 demo): write down a detailed, roughly prioretized task list. If I don't write it down and keep tasks in my head, I often spend too much time polishing not-so-important features. With task list, I update it constantly; at the same time I get sort of 'summary' of remaining work.
Another one: really concentrate. Turn off music (for some reason I can't work while music is playing... especially if the music is good, I start listening to it), close the doors, tell the child 'go play with mom instead' :), etc.
More: disconnect from the net while working :)
A translation problem
An interesting problem: I'm writing my Master's thesis and have tough time translating smoothie (from Rendering Fake Soft Shadows with Smoothies) and skirt (Smooth Penumbra Transitions with Shadow Maps).
Both thanslate into weird stuff!