Broken bunnies By Mr Goodbyte at June 24 2007 15:25:43+02:00

I recognize that I have neglected to update this site for quite some time, however at times too few things have happened for a real entry, and at other times I have been occupied by more pressing tasks. Well anyhow during last autumn I wrote my computer science thesis. The title is "Ray Coherence Measures for Real-Time Ray-Tracing", and I plan to release it here later.

I have also left the glory days as student behind me and instead I have passed on to the grandeour working age. My ray-tracing interest has not diminished and to celebrate this I give you some broken bunnies. They are supposed to be one reflective and one refractive bunny, but there is possibly something wrong...

Broken Bunnies
The children, why is no one thinking of the children By Mr Goodbyte at July 29 2006 12:45:49+02:00

Alright, I think I've fixed the problems with Internet Explorer now, it turned out to be a combination of responding with a application+xml type and IE's incapability of parsing script tags. Sorry for messing up the RSS feed, but I don't have access to the mime database on the web server.

I'm currently enjoying the Swedish summer, I have an intention to get down to same running times as before I left for Australia... it seems so unreal, I get flashback's every now and then and at the same time I have these weird "I've been here before" feelings whenever I visit places in my vicinity (It can also be a spillover effect from reading Stephen King's "The Tower" novels, mixed with George R. R. Martin's "A Song of Ice and Fire".)

You are old, you are free, we have have mountains that will kick thee By Mr Goodbyte at July 15 2006 11:52:27+02:00

I'm now back in Sweden again, sometimes it is scary how easy you fall back into old patterns. I have only been home for some days and my time in Australia already feels distant. I have continued my 3d research (will probably end up write a Master's thesis about it), and during th last week I've been trying to render the Yamaha model from Burans Arts.

I just noted that Internet Explorer is unable to render my homepage since it has erroneous behavior regarding xml/xhtml documents. A fix is on it's way but in the meantime please use a standards compliant browser such as Mozilla, Firefox, Opera or Safari.

How to breathe under water By Mr Goodbyte at July 02 2006 19:18:23+10:00

I have spent the last couple of days underwater, trying to get a PADI open water certificate. Luckily I made it and it was definitely worth the effort seeing some live squids, sea turtles and dolphins.

First dive location Preparations Me in wetsuit
The monarch is dead, long live monarchy By Mr Goodbyte at June 12 2006 23:50:52+10:00

Just a quick note before I go to bed (I have an exam tomorrow morning). Today I celebrated the Queens Birthday, which is a public holiday here in Australia. I find it kind of fascinating that here they celebrate a monarch that lives on the other side of the globe, while last week was first time the Swedish national day was a public holiday.

It wasn't much of a celebration here either, the only reason I noted it was that the post office was closed so I couldn't mail the contract for my next apartment back oversees.

Too much to do to update this page By Mr Goodbyte at May 31 2006 19:45:34+10:00

I deserve a bad spanking for not updating this page as much as I should. I have made some technical fixes now that should improve the rss data and compatibility with Safari. I'm almost at the end of my semester here, I have some pictures from Sydney and Fiji that are pending in my upload queue, I'll try fix that soon...

I had intentions to see Coldplay during their visit to Brisbane, but the only seats I found were almost behind the stage so I had to cancel that idea. Not much to report otherwise (or rather too much to be able to make a decent summary), there is a half-marathon in the vicinity at the end of June, I'm considering to participate, but I have not had any regular training for some while now so I don't know, there would not be a chance to beat my previous result from broloppet...

Back from Byron Bay By Mr Goodbyte at February 26 2006 17:20:29+10:00

I have safely returned from Byron Bay, had a wonderful time surfing, sea-kayaking and just wandering around. I'll try to put up some images soon. Have also finally got the renderer working again (just in time as school starts again tomorrow), just direct lighting for now but the whole rendering process is now completely deterministic, just check the anti-aliasing!

Direct Lighting Cornell Box
Small layout update By Mr Goodbyte at February 21 2006 16:04:49+10:00

There has been some layout changes during the last days. Hopefully the site is easier to read now. The RSS/RDF feed should be working now (tested with Firefox 1.5.0 and Thunderbird), i do get some validation errors but they will have to be for now.

Going off to Byron Bay tomorrow so there won't be any updates for the next following days (not that there usually is more than one update per week).

Update, the rss feed is now valid. [Valid RSS]

Starting to settle in By Mr Goodbyte at February 10 2006 08:09:13+10:00

I have now been in Australia for more than one day and am starting to get a feeling for my environment. First of all I hate the parrots that start squeaking outside my window at five in the morning. There is no chance at all that I will suffer any jet-lag, I'll be to tired for that.

I live in a post-grad flat on campus, so I have my own bedroom but share toilet and kitchen with four others. First day I received a long speech about how we should to be considerate to each other and keep the voice down after ten, but I don't understand how anything can be heard over those parrots. I think I'll get some earplugs today.

As probably can be seen I have redesigned the site, featuring some new dark-blue graphics. The picture page will receive some more features shortly, I don't have internet access on my room yet (the "switchboard" was not configured yet) so I'm waiting for the library to open, and with some luck I'll be able to get wireless access here on campus.

Going down under By Mr Goodbyte at February 08 2006 08:03:14+06:00

There has not been much update lately, I regret that. After my last post it was pointed out to me that the glass sphere looked cut-out, probably due to normal interpolation errors in combination with an incorrect Fresnel term calculation. At the same time I found some nice ideas in the pbrt source and started a major update. This update should soon be complete and I will then post an update.

The second thing that has stopped me from updating the site is that I'm an incoming exchange student at Griffith University first semester 2006 and that has taken quite lot of preparations. I'm now sitting in Kuala Lumpur waiting for my plane to Brisbane, not knowing whether it's morning or evening.

More updates By Mr Goodbyte at November 15 2005 00:31:23+01:00

I have improved the accuracy of the renderer and implemented participating media, mostly according to Henrik Wann Jensen et. al. in "Efficient Simulation of Light Transport in Scenes with Participating Media using Photon Maps" and the section in "Visual Simulation of Smoke" by Ronald Fedkiw et. al.

I believe that all simulations are physically correct, the only errors in the Cornell box image I have spotted comes from the irradiance cache and the geometry has some glitches in the smoke image. So far I am only simulating homogeneous isotropic smoke, but it has been a rough path during development in selecting appropriate parameters. I would like to enhance the volume caustic but it seems to be very hard to do correctly.

The smoke image is rendered with an forward- raymarching algorithm with fixed step size. I have also implemented an adaptive version, but it will miss parts of the light cone, however the render time will only be one tenth.

Ball in participating media Cornell Box
Exam programming By Mr Goodbyte at October 19 2005 13:02:24+02:00

I'm preparing for my exams tomorrow and on Friday (Algorithm Theory and Mobile Graphics), and as relaxation I have updated my ray tracer. I decided to improve the image quality and below you can see my latest version of the Cornell box. I have made it possible to store the values in the irradiance cache to disk, and by making a second pass with the same cache, image quality is improved (the reason is that during the first pass new samples will be made when error is too large, however during the second pass it is possible to interpolate between the original and new sample instead).

I have also participated in yet another competition, this time in "graphics hardware construction" for mobile graphics. The competition was won by me and my co-worker Andree Frank for reducing memory bandwidth from 150MB to 17.1MB on a quake3 test scene!

Cornell Box
Mid-term update By Mr Goodbyte at September 18 2005 10:52:36+02:00

Fixed a bug in the renderer that made it impossible to render high-tessellation meshes. Also fixed my ply importer so now I can render the images from The Stanford 3D Scanning Repository, below is an image of "Happy Buddha" with ~1million triangles. Compilation of a bsp tree takes ~7 minutes on my debug build, and then an additional ~30min rendering and that is without any global illumination so there is work to do (I estimate the whole process to take ~15min in a release build). Anyhow enjoy!

Happy Buddha
Never enough time By Mr Goodbyte at August 28 2005 00:00:00+02:00

I thought I would have some extra time to work on the renderer this weak, but I got absorbed by another interesting problem concerning AJAX, resulting in less work on the renderer. Anyhow here is my latest screen shot featuring better anti aliasing than before, partly implemented a texture subsystem and caustics through photon mapping. This is work in progress, and I am aware of some physical incorrect calculations that are affecting the output, they will be corrected in a short while.

Photon mapped caustic
Progress By Mr Goodbyte at August 11 2005 15:18:23+02:00

Some new updates, I finally got irradiance caching and gradient calculation working again. It turned out that I had problems with scenes that not were closed and thus got samples that should be considered to be infinite far away. A better version of the Cornell box can be seen hereCornell Box. There are still some features missing (like anti aliasing) and one should probably make a second pass to improve the irradiance renderings (f.i. the vertical bands that can be seen at the top of the image will probably disappear). I am only working with debug builds of my system so I do not have time to wait for an image with lower error threshold (it keeps me away from coding).

Next step is a reader for .hdr image files so I can add light probes to my renderings.

New render system (again) By Mr Goodbyte at August 04 2005 12:02:17+02:00

I haven't been updating this site as much as I should have. However I've been busy working on various projects during the summer. First a computer opponent for playing checkers (part of a programming assignment for applied artificial intelligence), which won the course championships (TAI championships, check out eDAMer's place).

There were several other interesting assignments during the course that consumed my whole spring. Now I'm back on my rendering track again and have been working on a new rendering system during my summer break. I intend to include several new pieces of knowledge that I have acquired during the year, and above all make a more user-friendly interface (currently I'm using a subset of Renderman Interface Bytestream (RIB) as scene description language and the renderer is separated from the graphical interface through a socket layer).

Multi spectral rendering is put on ice (it was hard to produce images that looked correct, mostly due to the non-linear conversations used when converting spectral data to rgb or vice versa). I have not yet included all functionality from the renderer I used when I won the rendering competition, but I'm approaching it as can be seen from this image. Cornell Box I believe the final gathering samples are incorrect (not cosine distributed) but I intend to replace the irradiance cache by a radiance cache anyhow)

More spectrum renderings By Mr Goodbyte at November 04 2004 01:34:21+01:00

I've been working more on my spectral renderer and there is a slow progress. I now use little cms for conversions between XYZ and RGB. This makes it possible to load icm profiles for color conversions, though I don't attach the cie profiles to my output images yet. This modifies the spectrum slightly which can be seen here:
Re-mapping of spectrum colors

I've also experimented with black body radiation. Following is a (non-linear intensity scaled) radiation curve from 0 to 16000K.
Black body radiation to color chart

My latest sub-project is conversion from XYZ colors to a (continuous) spectrum. It is quite easy to find the sub-space with metamers (spectras that produce same color) but they may behave erratically when used as reflectance. Following is a test where I reproduce the xyY chromaticy diagram by converting the color to spectra and then back to XYZ and RGB. I think it is my tone mapper that distorts the image from returning the usual cie image, also lcms will gammut-map imaginary colors into the rgb gammut. The behavior when used as reflectance specifier is yet to be determined, but the spectras look smooth in matlab.
Tristimulus mapping

Spectrum rendering By Mr Goodbyte at August 28 2004 11:49:21+02:00

I've been rewriting my renderer from scratch during the summer, mostly to improve my c++ understanding by implementing expression templates in my matrix library. I've also decided to make my renderings more realistic by simulating full spectras (not just rgb channels). My first test picture can be seen below, I use the following function: s(x, y) = y * diarc(300 * x + 400) to create a uniform varying spectrum, convert it to XYZ through the tristimulus functions, and convert it to rgb values. The result can be seen here.

Advanced Shading and Rendering competition By Mr Goodbyte at May 19 2004 15:48:21+02:00

Today the first rendering competition in one of the courses I attend (eda101 - Advanced Shading and Rendering) was concluded. The winning contribution is shown below, rendered by me :). Some technical info: the core is a distributed ray tracer with photon mapping, some ideas are borrowed from Keller and Wald's Efficient Importance Sampling Techniques for the Photon Map, but no importons are used (yet). Ward's irradiance cache with gradient calculation speed up the final gathering and I use some of Per H. Christensen's Photon Mapping Tricks for even faster rendering. The BMW Z4 model was modeled by Pa_FurijaZ and downloaded from (update: the site has ceased to exist). I wrote a blender export-script and load the model as a bsp-tree into my renderer.

I have some initial testing with multiple scattering participating media, but the result has low quality and is very slow, so I'll have to make some adjustments before it can be used.

Rendering competition image
Raytracer2 By Mr Goodbyte at March 29 2004 23:41:46+01:00

Some updates on the raytracer, I've implemented area light-sources gloss surfaces (and translucency which is not seen in the image below). I've coded a kd-tree and will upgrade it to a photon-map soon. I started out with Henrik Jensen's photonmap structure but made some changes to the balancing algorithm -- hopefully it will be faster but that has to be verified. Raytraced image

Raytracer By Mr Goodbyte at March 19 2004 17:52:31+01:00

I'm attending a course in advanced shading and rendering, and as a preparation I've started writing on a raytracer engine. Below is a simple test shot, nothing fancy just phong with reflections/refractions, fresnel, and Beer's law and focal blur. We'll see what happens next!
Raytraced image

Small updates By Mr Goodbyte at February 22 2004 18:28:03+01:00

I've made some updates to both terrain and fluid calculations. The terrain is now rendered with a detail texture (yes, I know I'm not the worlds greatest artist...) and one can see some artifacts which I think is due to lack of mip-mapping. Anyhow I'll update some parts in the state tree before I fix them.
Detail textured landscape

I've also included an image from my fluid solver. It has been enlarged from 64x64 to 150x150 which is why it's all blurred. In this setup I model smoke rising (due to temperature difference and buoyancy). I'll probably post a sequence of images within some days.
Fluid simulation

Some updates By Mr Goodbyte at January 12 2004 11:32:13+01:00

I've added a skybox to the engine and fixed the font problem on my nVidia card (though, that is not shown in the screen shot). I've also rewritten the landscape tessellation code to use diamond-trees inside the quad-tree nodes, all that is needed now is a better landscape format and it will be possible to add detail where it is needed.

I've also made some experiments with fluid simulations by solving Navier-Stokes equations. I've implemented some different solvers for Poisson equations, the best so far that works is a SSOR preconditioned conjugate gradient solver, but I'm working on a multi-grid solver (some boundary problems left). I'll put up some screen shots when it works.
Terrain with skybox

I have 25 hours/day By Mr Goodbyte at August 24 2003 20:46:31+02:00

Well, I've managed to squeeze in some engine-programming-time... I have implemented a very basic state tree (just one level -- with vertex buffers :). And then I reworked the material implementation. Will be interesting to see if/how this new system scale well.

I also have a new screen shot, featuring the new materials. The terrain is somewhat "blocky" nearby, it's due to 8-bitness and conversions before loading data into the quad-tree. We will need to implement a better memory layout for landscape data anyhow (at the moment it is just an array in memory, we should take advantage of the quad-tree structure and load data from disk at demand.)
Terrain engine

End of summer holiday By Mr Goodbyte at August 14 2003 14:49:07+02:00

Almost end of this holiday also. I've been working all summer, but managed to insert some programming sessions. (Except for the course in functional programming which I'm attending). No interesting visual news in the engine but some technical: first Ajn has updated the script system to Lua 5.0, and I've added support for OpenGL extensions. The landscape is now rendered with GL_ARB_vertex_buffer_object, quite some speedup compared to regular vertex arrays. (I also cache vertex data between the frames.) I written a basic hash-map (the one included in gcc's std library does not seem to work). Next I'll do something about materials and gl-state changes (that's where I need the hash-map).

I've been appointed to take care of the introductory course in *NIX at LTH where I study. I have two assignments left (if my latest entry pass) in functional programming and tomorrow Malmöfestivalen starts, so it may be some time before I make another addition here.

Another week passed By Mr Goodbyte at May 09 2003 11:17:32+02:00

Easter is really over now, and it's back to school. I'll try to suppress my urge to work on the engine for some weeks now, until I've done my summer-exams. Though I've updated the error metric in the landscape. It is not perfect, but definitely better than before. Next thing will (as said before) be splatting, I've already thought a lot about it, and how to tessellate the terrain, and come up with some interesting ideas.

I also have to reserve time each week for exercising, I'll run a half-marathon, 'Broloppet', on 8th of June and must not neglect my training too much. In reality all you need is a strong will, but I want to reach the finish line with some pride left...

Game update By Mr Goodbyte at May 03 2003 23:45:21+02:00
Alright, I've rewritten the terrain tessellation so it uses a two-pass algorithm and makes smooth transitions between different lod levels to avoid the t-cracks. I've also updated the height-map-quad-tree so it use a base of 1025 instead of 1024 and loads image files instead of raw data files. This remove the special case when a chunk has side 32 instead of 33 (at the south and east borders). I'll wait updating the images until I have some more textures on the terrain. (Everyone in the Malmö/Lund area must come to UFO tomorrow and listen to my friend Peter and his band Lorain. They totally rock!)
Game engine By Mr Goodbyte at April 29 2003 23:06:12+01:00
I said should get some landscapes rendering before this holiday was over, and I did. This is by no means finished code, I've got the culling working along with normal calculations and texturing. There are some artifacts due to a very simple lod algorithm (just check the distance from the near plane), and I have not implemented T-junction fixes along the borderlines yet. I think I'm going to base the texturing on splatting, but first I'll improve the lod-quality/performance. The blue square is our lua-based console, but there are problems with the fonts when rendering with nVidia drivers (work flawless in Mesa). Terrain engine Terrain engine
Easter! By Mr Goodbyte at April 21 2003 10:56:12+01:00
I've had an active holiday so far, last weekend I visited a friend of mine in Stockholm, I've been on a LAN, and checked out Starshine in Ystad. There has also been some time for programming and the terrain rendering is coming along quite well. I also updated my drivers to nVidia's latest for XFree86 (why do they execute code on the stack?) which introduced a bug in the font-rendering subsystem. I'm clueless on what it can be, but it gave me an opportunity to update error handling in the 2d/3d subsystem to use exceptions. Next thing to be done is to calculate some normals for the terrain and then cull invisible parts of the oct-tree. But we'll see if I manage to get it done before school starts again, I now have to concentrate on a test in calculus (I want to raise my grade), and then there are some reports I need to write.
I'm back... By Mr Goodbyte at April 03 2003 08:06:21+01:00
Ieeehaa... now that was a good weekend. I'm back now without too many bruises (we played paint ball...). I think I'll put up some screen shots on the engine, but I want the landscape rendering fixed first (since everybody likes to show fancy landscapes, why shouldn't I?). Mr Nordh (my co-worker, and it feels 'wrong' to refer to him by his first name, Jerker) is working on a gui, and will probably write the physics engine once he is done.
Serious partying By Mr Goodbyte at March 27 2003 23:50:42+01:00
I'll be going north wards this weekend, more specific to Linköping to do some serious drinking (must reverse my daily exercise on the gym). It will rock!
3d engine By Mr Goodbyte at March 27 2003 23:48:13+01:00
I know I haven't been updating the page lately, there has just been more to do in school, and I and friend of mine have been working on a 3d game/engine, which has occupied the rest of my spare time. Nothing fancy yet, can load md2 objects, sdl/opengl, lua scripting, ... but it will be the best game ever :)
Vim vs. Emacs By Mr Goodbyte at December 08 2002 20:02:21+01:00
I have a confession to make: I'm no longer a vim fanatic. Since I'm forced to use emacs in school (their vim is somewhat rough) I've been somewhat tempted to compile emacs. Last week I did it. After memorizing my ~200 most frequent vim commands emacs counterparts I started to like the big thing (a text editor should not take 20MB...). I still press insert a lot in emacs but I'll get there :)
Writing music By Mr Goodbyte at December 08 2002 19:54:33+01:00
I've just begun studying for next test in mathematics, so I'll have to write some things down before I replace them with important algorithms. Ever since I was enlightened about the power of LaTeX, I've been looking for a note package for my TeX environment. My investigations led me to Lilypond. Lilypond have great knowledge about how to typeset music and can f.i. complain when you do not completely fill up measures. If only Rosegarden4 could release a kde-3.1 version and my happiness would be complete! Now back to math.
Lost song By Mr Goodbyte at November 05 2002 19:36:46+01:00
Whoow, I was listening through my cd collection and accidentally found an extra track on the X-Files cd for those of you who have it. By searching the net I found that it is Time Jesum Transeuntum Et Non Riverentum (Dread the Passage of Jesus, For He Will Not Return), see here. Way cool!
Gcc-3.2 pthreads and grsecurity By Mr Goodbyte at October 28 2002 08:36:32+01:00
I've found out what the problem with grsecurity and gcc-3.2 is (with a little bit of help from the PaX team). Don't know if they will change this in the next release of grsecurity, it's not a bug but an incompatibility. I'll release a patch on my linuxpage shortly.
Blender By Mr Goodbyte at October 28 2002 08:28:45+01:00
Ha, blender has been open source for a while now. I've compiled it and it's awesome, can't believe I've never used it before.

If anyone wish to compile it by themselves, I recommend the autoconfigure patch (update: the source package at is fixed). I was a little anxious to get it running, so the patch wasn't released by the time I worked myself through the source. It should make things a whole lot easier. :-p

Problem with old versions of Netscape By Mr Goodbyte at October 09 2002 15:35:55+02:00
I know there are some problems rendering this page in Netscape 4, this is an issue with Netscape 4 not following the new xhtml 1.0 and css 2 standards. I don't know if I want to fix this, since this page is a testing page for me to see what can be done with xml, xsl, xhtml and css.

This page obeys all rules specified by w3c and adding support for browsers not confirming to these standards would ruin the purpose of the new standards. You can allways view these pages in lynx though :)

Old page still on the net By Mr Goodbyte at October 09 2002 15:28:58+02:00
I've found my old page. Since it's quite nice graphically, and contain some of my previous programs, I've decided to add a link to it: Bear in mind that it was last updated two years ago. I've been doing things since then too... but I'll take some time before I've managed to get it all organized.
Inital announcement By Mr Goodbyte at October 06 2002 22:10:36+02:00
Announcement of the reopening of Mr Goodbyte's homepage. It's not much... yet... but it's a place to start. This time the focus has been on a clean design (and as always usability in lynx). The inital plan at the moment (except taking over the world) is to create the starting skeleton for all areas from my previous homepage (which was removed from the net about 2 years ago). This will be done in the following four or five days.