CS184 Final Project
Eliza Ra (cs184-bf)
Adam Portley (cs184-bn)


Project Proposal: To make Blue Moon Rendering Tools take radiance files (.pic) and use them in texture/environment maps to illuminate a scene without having an artificial light source. The light source would come from the radiance file. 
This project was also an effort to investigate the various aspects of BMRT for research purposes with Paul Debevec. We wanted to see whether BMRT could display the full range of high-dynamic range (HDR) images. 

How It Works:  We had several ideas as went about trying to modify BMRT.  Our main goal for the first 1.5 weeks was to learn what BMRT could do with shaders, and how shaders worked.  Since BMRT doesn't allow users to open/close files and do general file management within shaders, we were limited to converting radiance files to 24-bit TIFF files in the beginning.  BMRT only takes 24-bit files, but radiance files contain more than that, 32-bits per sample to be exact. In reality, the format of a .pic file is RGBE with each value represented by 8-bits, which can be converted to RGB where each value is represented by 32-bits. We used Greg Ward Larson's ra_tiff program, which only converts radiance files to 24-bit TIFF files, as base code to convert .pic files to floating point TIFF files [codeexecutable(compiled in Linux environment) ]  For research purposes we wanted the full 32-bit representation, but as we soon found out, BMRT is limited to only 16-bits per sample.

What we ended up doing is converting our radiance file to 24-bit TIFF but exposed down until everything looked very dark. We modified G. Larson's TIFF tags so its 24-bit TIFF files were compatible with BMRT [ code : executable(compiled in Linux environment) ]. We let e = the number of exposures. Then we texture mapped the 24-bit TIFF like you would normally do in BMRT, but we modified Pixar's texmap shader [ our texmap ] to take an ambient value different from that of the world. We let this new value be e. This way, BMRT renders a scene where the surface glows with the texture map and without even having a light source anywhere in the scene.
 


original image (.pic) of the Uffizzi

image with exposure -3

image as rendered by BMRT without any other kind of light source except the texture map

 
With this technique, however, BMRT is not actually aware of a light source in the scene.  You must include a surface emission statement (attribute "radiosity" "emissioncolor") in the rib file to let BMRT calculate radiosity and other things; you also need to make objects visible to the primary (camera) rays.  So because there really isn't a "light source," only a surface emitting light, BMRT doesn't resample on the second pass when making its radiosity calculations.  If the surface with the texture map were to be an area light source, then these calculations would be performed in the second pass. Area light sources, however, can't assign color to its surface, which is why we used a surface shader with the light emission attribute.
  • Here is a TIFF image scene using above technique.
  • The RIB file describing above scene.
  • A scene made with Greg Ward Larson's Radiance renderer ( TIFF , PIC)
NOTE!!:  Most of the files used for the project can be found in the cs184-bf unix account.  However, they originated from another server and every C file was compiled in camaro.cs, a Linux machine. So if you need anything you can't find here or in the cs184-bf account, contact Eliza.