Q: What is the different between sclanline and raytracing renderer, and which one is better?


A: Please note that this will be a VERY SIMPLIFIED description and it is far away from being exact in any aspect...

  • The scanline renderer passes a ray from the camera through every pixel of the rendered images. If the ray crosses a mesh face, the color of the pixel is calculated according to the lightsources, their angle to the normal of the face, the angle of the camera to that face and some other information. If no face is encountered, the pixel gets the color of the background. In this manner the renderer scans all pixels line after line. Reflections are faked - the renderer creates maps that show the environment as seen from the reflecting object and puts the map on the surface as a kind of "texture map". If an object has transparency, the ray goes through taking a part of the color into account and looks for a non-transparent face behind (or reaches the backround)

  • The raytracer does not stop after reaching a face, but instead, if the face has a mirror surface, it follows the ray after it has been reflected from the face to see what geometry is being reflected by it. After a specified number of reflections the tracing process will stop.(The higher the value the longer the raytracing). If the encountered object has transparent material, the ray is refracted (it changes slightly the direction) according to a specified Index of Refraction (IOR = c/v, c=speed of light in vacuum, v=speed of light in the particular material).

    Which one is better?
    No one.
    The scanline renderer is WAY faster, but lacks the reflection/refraction qualities of a raytracer.
    The raytracer is very slow, but has a better quality for metal, glass, and water(!) materials.
    The first is better for animations, the second for stills (unless you have some spare years to render...)

    Some Renderer like RayMAX combine both to give you SPEED and QUALITY in one engine. You select which objects have to be raytraced, and if the ray meets such an object, it is traced accordingly, but for all other objects the normal way of calculation is used.
    (I don't mention Lightwave here because it is a polygon-based renderer, not a scanline renderer, although it has selective raytracing, too.)