home GIGA Areas of interest
research innovation development
teaching papers gallery

*Introduction.
    -What is ALEPH?.
    -Problem Setting.
    -Facts and Details.
    -Programming.

*Specifications.
    -The libaleph library.
    -The libru library.
    -Auxiliary Script.
    -Utility Programs.
    -Shaders and Textures.
    -Distributed Rendering.
    -Future Work.

*Gallery.
    -First Stage.
    -Second Stage.
    -Third Stage.
    -Fourth Stage.



Specifications for ALEPH 4.0
 

ALEPH is a software platform for illumination simulation with several components. Except for punctual limitations that will be specified all the soft is independent from hardware and operating system issues. At the moment, the full software runs on many Unix systems (Irix 5.3-6.2,with multiprocessing options, SunOS 4.2,HPUX-9) and a development version of the libraries works on a T800 transputer network. Some previous versions have been tested on Linux,OSF,WindowsNT and MacOS, and in an immediate future we expect to have access to a Solaris system, including the multiprocessing options.

ALEPH Components

The ALEPH environment is built from a series of soft components:

  • A kernel library, libaleph
  • An utility library, libru
  • Some utility scripts and programs
  • Application programs for image visualization, simple image processing, data file conversion (geometrical models, materials, lights...)
  • Some predefined external shaders and textures

1.- THE LIBALEPH LIBRARY

The system core is a programming library that allows definition of the geometry, light sources, properties, camera, etc. for a scene, and simulates light propagation, giving as result images in some of the available formats.

For scene description ALEPH uses RenderMan Interface. The library follows the specifications for C binding of the interface (version 3.6). This implies that some last-version calls are available, like RiReadArchive, that allows inclusion of RIB files from C programs or other RIBs.

The library simulates the illumination process by numerical resolution of the Integral Radiance Equation (or Global illumination Equation), using MonteCarlo o quasi-MonteCarlo mehods where necessary.

End-User Specifications

  • Standard RenderMan Interface
    • C binding for direct rendering: results from execution of a libaleph-based program are directly image files, not RIB files
  • Basic Modelling Primitives
    • Polygons: convex (simple), concave, with holes
    • Quadric Surfaces: sphere, cylinder, cone, paraboloid, hyperboloid, torus
    • Uniform Parametrical Surfaces: bilinear patches, bicubic patches. Predefined Basis matrices: Bezier, B-Spline, Catmull-Rom, Hermite, Power. User-definable basis matrices.
    • Meshes of uniform patches
    • Non-uniform parametrical surfaces: NURBS
  • Special primitives under the RiGeometry RenderMan call:
    • Discs with holes, boxes
    • Fractal mountain
  • Hierarchical modeling
    • Simple geometrical transformations: translation, scaling, rotation
    • General transforms with 4x4 matrices
    • Transformation stack to build hierarchical models
    • Object instancing
  • CSG Modelling
    • Object definition by non-binary Boolean operators: union, intersection, and difference of an object and several others
  • Light source modeling
    • Simple RenderMan sources: punctual, directional, spot (with RiLightSource)
    • Extended sources (with RiAreaLightSource)
    • Special sources with directional distribution from goniometric catalog data (with shading language-defined sources)
    • Data treatment in physical units (cd/m2)
    • Diffuse term calculation by simple ambient lights o by full calculation of diffuse interreflection
    • Outdoor illumination modeling with shaders (sun...)
  • Illumination models
    • Standard RenderMan shaders
    • Non-recursive models: D'Alembert, Phong, Blinn
    • Recursive models: Whitted, Hall
    • Geometrical attenuation and micro facets functions
    • Traditional shading support through RenderMan options
      • Gouraud: colour interpolation between vertices: "Cs" parameter
      • Phong: normal-per-vertex definitions: "N" parameter
    • Adaptive texture mapping (MipMappting)
    • Solid 3D textures
  • Participating media modeling with RiAtmosphere, RiInterior y RiExterior RenderMan commands. Allows, for example, volume rendering.
  • Colour processing
    • RGB or Spectral colour definition. Predefined spectral models: Hall, Meyer
    • Radiometrical units for correct light processing (cd/m2,lumen,nit)
  • Output
    • Formats:
      • Direct to screen (under X11)
      • Simple proprietary format (raw)
      • PICT2, JPEG, TIFF
      • Radiance output files in cd/m2 (RF files)
    • Field image generation (video interlacing)
    • Depth maps output

Internal Technical Specifications

  • Rendering method: integration of the Radiance Equation
  • Calculation method: ray-tracing
  • Ray tracing speed-up methods by spatial indexing
    • Uniform spatial subdivision (voxel grid)
    • Binary Space Partitioning (BSP)
    • Mailbox use to avoid intersection re-calculation
  • Anti-aliasing by over-sampling
  • User-defined external shaders are loaded dynamically
  • Automatic mipmap generation from original images
  • Single or double precision arithmetic to save memory (decided at compile time)
  • Shared libraries generation to shrink executables

^^ Top ^^  

2.- THE LIBRU LIBRARY

The libru (RenderMan Utilities) library encloses some utility functions defined on top of the RenderMan procedures: they simplify the work on the interface when specifying camera positions, defining objects, working with vectors and matrices, and so on.

Available functions cover this aspects:

  • Vector and matrix operations: dot, cross, normalization.
  • Matrix product and inversion, transform generation
  • Polar-Cartesian interconversion
  • Predefined colours and vectors
  • Meyer spectrum-RGB conversion matrices
  • Intuitive procedures for positioning the camera in Cartesian and polar coordinates
  • Built-in objects: teapot, dodecahedron, axis, etc...
  • Extrude and revolve procedures

^^ Top ^^  

3.- AUXILIARY SCRIPTS

Every-day work with this libraries requires some work for writing C code, compiling and linking on Unix systems. This process can be complicated, and usual tools to simplify it (mainly the make command) can be difficult to understand. The ALEPH project supplies an automatic makefile generator, the amkmf script (Aleph MaKe MakeFile), that generates configuration files for compilation.

^^ Top ^^  

4.- UTILITY PROGRAMS

A series of utility programs has been built over the latter two libraries. They allow the user to skip the programming step in some cases, or provide several utilities. This utilities are:

  • xdp: visualizes PICT files
  • vrad: visualizes radiance files
  • rm2pict: converts radiance files to PICT
  • rm2tiff: converts radiance files to TIFF
  • rm2jpeg: converts radiance files to JPEG
  • ies2sl: converts IES luminaire description files to ALEPH
  • irit2rib: converts IRIT files to rib
  • xafb: framebuffer display on X
  • rapp: GUI to configure options: reolution, levels,...
  • rcat: converts binary RIBs to ascii
  • rib: rendering of RIB files
  • z2pict: converts a depth map to gray image
Default options configuration

The RenderMan interface allows all the rendering options to have a default value (unless otherwise specified) in either the program or the RIB file.

In ALEPH, the standard default values can be modified thru a hidden file named .alephrc. This file is a standard RenderMan Resource File, and contains all the RIB commands necessary for the options to be modified.

It can be edited with a word processor or via the interactive program rapp (Render APPlication), which in addition lets the user launch the rendering process.

Automatic rendering of RIB files

The rib module allows the reading of files with standard RIB models and generation of the images. The RIB file can come from commercial modeling or rendering packages.

It does not require any special programming skills or computer graphics knowledge. It allows the reading of the model and the automatic generation of images or animations.

Conversion from other formats to RIB

The dxf2rib and irit2rib programs allow the conversion from DXF or IRIT formats to RIB.

The rcat program allows the conversion from a binary RIB to ascii.

Conversion from IES and CIE luminaire files to RenderMan light shaders

The ies2sl and cie2sl filters convert a standard IES or CIE file to a shader applicable to any of the available light sources.

Straight on-screen rendering visualization

The xafb utility works as the RenderMan framebuffer on X11.

Image-data file visualization

The xdp program allows the onscreen visualization of PICT files, under both 8 or 24-bit resolution.

The vrad program allows the visualization of radiance files (RF), allowing the u ser to adjust the conversion of luminances to RGB monitor values, by several methods: Ward, Rushmeier-Tumblin...

Image files conversion

The z2pict program converts a depth map to a grey-scaled PICT file.

^^ Top ^^  

5.- SHADERS AND TEXTURES

The installation of ALEPH leaves a series of external shaders and textures already compiled, such as the shaders that correspond to standard IES luminaries.

The shader compiler asc

The RenderMan interface allows the use of external illumination models defined in a given language. Once compiled with the script asc, an object file is generated, which can be loaded from the library.

Nowadays, the language used in ALEPH is not strictly the same Shading Language defined in the standard RenderMan, but a C subdivision with functions equivalent to those available in the Shading Language.

The loading and utilization of these files is based upon the dynamic object management utilities available in almost every Unix system.

^^ Top ^^ 

6.- DISTRIBUTED RENDERING

Works on SMP multiprocess systems (with shared memory), thru the use of threads.

The only systems where this has been implemented so far are SGI Challenge and Onyx multiprocessor stations. Within a close future, this is expected to be tested also on Solaris multiprocessor systems.

Possibility of achieving parallel rendering on several machines. Based on MPI (currently under investigation).

^^ Top ^^  

7.- FUTURE WORK

Shading Language

Implementation of the optional RenderMan extension known as Shading Language, that allows the use of user-defined shaders without having to access the library sources, and the exchange of compiled shader object files between machines.

Networking

Networking organization by task queuing.

^^ Top ^^    

About the Group: seron@posta.unizar.es                                                                           << Back <<