Software rendering
Encyclopedia
In the context of rendering (computer graphics)
Rendering (computer graphics)
Rendering is the process of generating an image from a model , by means of computer programs. A scene file contains objects in a strictly defined language or data structure; it would contain geometry, viewpoint, texture, lighting, and shading information as a description of the virtual scene...

, software rendering refers to a rendering process that is unaided by any specialized graphics hardware
Graphics hardware
Graphics hardware is a hardware that enable to produce and show computer graphics. It works in conjuntion with graphics software. Examples of graphics hardware are display devices, graphics cards and motion capture hardware....

, such as a graphics card. The rendering takes place entirely in the CPU
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware.

Software rendering can be split into two main categories: real-time rendering, and offline rendering. Real-time rendering is used to interactively render a scene, like in 3D computer games, and generally each frame must be rendered in a few miliseconds. Offline rendering is used to create realistic images and movies, where each frame can take hours or days to complete.

Real-time software rendering

For real-time rendering the focus is on performance. The earliest texture mapped real-time software renderers for PCs used many tricks to create the illusion of 3D vision. (True 3D was limited to flat or Gouraud-shaded polygon
Polygon
In geometry a polygon is a flat shape consisting of straight lines that are joined to form a closed chain orcircuit.A polygon is traditionally a plane figure that is bounded by a closed path, composed of a finite sequence of straight line segments...

s employed mainly in flight simulation genres.) Wolfenstein 3D
Wolfenstein 3D
Wolfenstein 3D is a video game that is generally regarded by critics and gaming journalists as having both popularized the first-person shooter genre on the PC and created the basic archetype upon which all subsequent games of the same genre would be built. It was created by id Software and...

 was restricted to one height of floor and ceiling, Doom introduced stairs and elevators, and Duke Nukem 3D
Duke Nukem 3D
Duke Nukem 3D is a first-person shooter computer game developed by 3D Realms and published by GT Interactive Software. The full version was released for the PC . It is a sequel to the platform games Duke Nukem and Duke Nukem II published by Apogee...

 allowed a limited form of looking up and down as well as allowed slanted floors. The technology used in these games is currently categorized as 2.5D
2.5D
2.5D , 3/4 perspective and pseudo-3D are terms used to describe either:* 2D graphical projections and techniques which cause a series of images or scenes to fake or appear to be three-dimensional when in fact they are not, or* gameplay in an otherwise three-dimensional video game that is...

. One of the first 'real' textured
Texture mapping
Texture mapping is a method for adding detail, surface texture , or color to a computer-generated graphic or 3D model. Its application to 3D graphics was pioneered by Dr Edwin Catmull in his Ph.D. thesis of 1974.-Texture mapping:...

 3D games, allowing six degrees of freedom (three movement axes, three rotation axes), was Descent
Descent (video game)
Descent is a 3D first-person shooter video game developed by Parallax Software and released by Interplay Entertainment Corp. in 1995. The game features six degrees of freedom gameplay and garnered several expansion packs...

, which featured 3D models entirely made from polygons instead of sprite
Sprite (computer graphics)
In computer graphics, a sprite is a two-dimensional image or animation that is integrated into a larger scene...

s. Voxel
Voxel
A voxel is a volume element, representing a value on a regular grid in three dimensional space. This is analogous to a pixel, which represents 2D image data in a bitmap...

-based graphics also gained popularity for fast and relatively detailed terrain rendering but later polygons took over completely. The 3D game revolution started with Quake, which features a technically superior software renderer by Michael Abrash
Michael Abrash
Michael Abrash is a technical writer specializing in optimization and 80x86 assembly language programming, a reputation cemented by his 1990 book Zen of Assembly Language Volume 1: Knowledge. The original 8086 processor, the focus of the book, was several generations behind the state of the art by...

 and John Carmack (founder of id Software
Id Software
Id Software is an American video game development company with its headquarters in Richardson, Texas. The company was founded in 1991 by four members of the computer company Softdisk: programmers John Carmack and John Romero, game designer Tom Hall, and artist Adrian Carmack...

). With its popularity, Quake (which later got extensions for hardware acceleration) and other 3D games of that time helped the sales of graphics cards, and more games started using hardware APIs like DirectX
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...

 and OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

. Although this also announced the death of software rendering as the primary rendering technology, many games before 2000 still had a software renderer as a fallback. Most notably Unreal
Unreal
Unreal is a first-person shooter video game developed by Epic MegaGames and Digital Extremes and published by GT Interactive in May 1998...

 and Unreal Tournament
Unreal Tournament
Unreal Tournament is a futuristic first-person shooter video game co-developed by Epic Games and Digital Extremes. It was published in 1999 by GT Interactive. Retrospectively, the game has also been referred to as UT99 or UT Classic to differentiate it from its numbered sequels...

 feature a software renderer that is able to produce enjoyable quality and performance and made use of CPU instruction set extensions like MMX. One of the last high-end games using only a software renderer was Outcast
Outcast (game)
Outcast is an action-adventure video game by Belgian developer Appeal and released by Infogrames for the PC in 1999. A Dreamcast port of the original was also planned, but was shelved when the PC version failed in the marketplace.-Plot:...

, which featured advanced voxel technology but also texture filtering
Texture filtering
In computer graphics, texture filtering or texture smoothing is the method used to determine the texture color for a texture mapped pixel, using the colors of nearby texels . Mathematically, texture filtering is a type of anti-aliasing, but it filters out high frequencies from the texture fill...

 and bumpmapping as found on graphics hardware.

In the video game console
Video game console
A video game console is an interactive entertainment computer or customized computer system that produces a video display signal which can be used with a display device to display a video game...

 market, the evolution of 3D was more abrupt, because of the fixed platform specifications, allowing vendors to design custom hardware without the constraints of backward compatibility. 16 bit consoles gained RISC accelerator cartridges in games such as StarFox
Starfox
Starfox is a fictional superhero in Marvel Comics' shared universe, the Marvel Universe. He has operated as a member of the Avengers and is one of the Eternals of Titan...

 and Virtua Racing
Virtua Racing
Virtua Racing or V.R. for short, is a Formula One racing arcade game, developed by Sega-AM2 and released in October 1992. Virtua Racing was initially a proof-of-concept application for exercising a new 3D-graphics platform under development, the "Model 1". The results were so encouraging, that...

 which implemented software rendering through tailored instruction sets. The Atari Jaguar
Atari Jaguar
The Atari Jaguar is a video game console that was released by Atari Corporation in 1993. It was the last to be marketed under the Atari brand until the release of the Atari Flashback in 2004. It was designed to surpass the Mega Drive/Genesis, Super Nintendo Entertainment System, and the Panasonic...

 and 3DO
3DO Interactive Multiplayer
The 3DO Interactive Multiplayer is a video game console originally produced by Panasonic in 1993. Further renditions of the hardware were released in 1994 by Sanyo and Goldstar. The consoles were manufactured according to specifications created by The 3DO Company, and were originally designed by...

 were the first consoles to be targeted at 3D, but it was the Sony
Sony
, commonly referred to as Sony, is a Japanese multinational conglomerate corporation headquartered in Minato, Tokyo, Japan and the world's fifth largest media conglomerate measured by revenues....

 PlayStation
PlayStation
The is a 32-bit fifth-generation video game console first released by Sony Computer Entertainment in Japan on December 3, .The PlayStation was the first of the PlayStation series of consoles and handheld game devices. The PlayStation 2 was the console's successor in 2000...

 with its revolutionary textured triangle throughput and powerful geometry coprocessor that really popularized 3D gaming. This was the first time that 3D produced a compelling mainstream experience rather than being a specialist gimmick (aside from Dooms 2.5D experience, although at the time that was dependent on relatively high-end PC hardware).

Because there are still PC systems being sold with limited graphics cards (or none at all), software rendering will always be required for some applications. Games for kids and casual gamers (who use outdated systems or systems primarily meant for office applications) can have a need for a software renderer as a fallback. For example Toy Story 2 Action Game has a choice of selecting either hardware or software rendering before playing the game while others like Half-Life default to software mode and can be adjusted to use OpenGL or DirectX in the Options menu. Some 3D modeling software also feature software renderers for visualization. And finally the emulation
Emulator
In computing, an emulator is hardware or software or both that duplicates the functions of a first computer system in a different second computer system, so that the behavior of the second system closely resembles the behavior of the first system...

 and verification
Verification
The word verification may refer to:* Verification and validation, in engineering or quality management systems, it is the act of reviewing, inspecting or testing, in order to establish and document that a product, service or system meets regulatory or technical standards.* Verification , in the...

 of hardware also requires a software renderer. An example of the latter is the Direct3D
Direct3D
Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...

 reference rasterizer.

But even for high-end graphics, the 'art' of software rendering hasn't completely died out. While early graphics cards were much faster than software renderers and originally had better quality and more features, it restricted the developer to 'fixed-function' pixel processing. Quickly there came a need for diversification of the looks of games. Software rendering has no restrictions because an arbitrary program is executed. So graphics cards reintroduced this programmability, by executing small programs per vertex
Vertex (geometry)
In geometry, a vertex is a special kind of point that describes the corners or intersections of geometric shapes.-Of an angle:...

 and per pixel
Pixel
In digital imaging, a pixel, or pel, is a single point in a raster image, or the smallest addressable screen element in a display device; it is the smallest unit of picture that can be represented or controlled....

/fragment
Fragment (computer graphics)
In computer graphics, a fragment is the data necessary to generate a single pixel's worth of a drawing primitive in the frame buffer.This data may include, but is not limited to:* raster position* depth...

, also known as shaders. Shader languages, such as High Level Shader Language
High Level Shader Language
The High Level Shader Language or High Level Shading Language is a proprietary shading language developed by Microsoft for use with the Microsoft Direct3D API. It is analogous to the GLSL shading language used with the OpenGL standard...

 (HLSL) for DirectX or the OpenGL Shading Language (GLSL), are C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

-like programming languages for shaders and start to show some resemblance with (arbitrary function) software rendering.

Since the adoption of graphics hardware as the primary means for real-time rendering, CPU performance has grown steadily as ever. This allowed for new software rendering technologies to emerge. Although largely overshadowed by the performance of hardware rendering, some modern real-time software renderers manage to combine a broad feature set and reasonable performance (for a software renderer), by making use of specialized dynamic compilation
Dynamic compilation
Dynamic compilation is a process used by some programming language implementations to gain performance during program execution. Although the technique originated in the Self programming language, the best-known language that uses this technique is Java...

 and advanced instruction set extensions like SSE
Streaming SIMD Extensions
In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! . SSE contains 70 new instructions, most of which work on single precision floating point...

. Although nowadays the dominance of hardware rendering over software rendering is undisputed because of unparalleled performance, features, and continuing innovation, some believe that CPUs and GPUs will converge one way or another and the line between software and hardware rendering will fade.

Offline rendering

Contrary to real-time rendering, performance is only of second priority with offline rendering. It is used mainly in the film industry to create high-quality renderings of lifelike scenes. Many special effects in today's movies are entirely or partially created by computer graphics. For example, the character of Gollum
Gollum
Gollum is a fictional character from J. R. R. Tolkien's legendarium. He was introduced in the author's fantasy novel The Hobbit, and became an important supporting character in its sequel, The Lord of the Rings....

 in the Peter Jackson
Peter Jackson
Sir Peter Robert Jackson, KNZM is a New Zealand film director, producer, actor, and screenwriter, known for his The Lord of the Rings film trilogy , adapted from the novel by J. R. R...

 The Lord of the Rings
The Lord of the Rings
The Lord of the Rings is a high fantasy epic written by English philologist and University of Oxford professor J. R. R. Tolkien. The story began as a sequel to Tolkien's earlier, less complex children's fantasy novel The Hobbit , but eventually developed into a much larger work. It was written in...

 films is completely computer-generated imagery
Computer-generated imagery
Computer-generated imagery is the application of the field of computer graphics or, more specifically, 3D computer graphics to special effects in art, video games, films, television programs, commercials, simulators and simulation generally, and printed media...

 (CGI). Also for animation
Animation
Animation is the rapid display of a sequence of images of 2-D or 3-D artwork or model positions in order to create an illusion of movement. The effect is an optical illusion of motion due to the phenomenon of persistence of vision, and can be created and demonstrated in several ways...

 movies, CGI is gaining popularity. Most notably Pixar
Pixar
Pixar Animation Studios, pronounced , is an American computer animation film studio based in Emeryville, California. The studio has earned 26 Academy Awards, seven Golden Globes, and three Grammy Awards, among many other awards and acknowledgments. Its films have made over $6.3 billion worldwide...

 has produced a series of movies such as Toy Story
Toy Story
Toy Story is a 1995 American computer-animated film released by Walt Disney Pictures. It is Pixar's first feature film as well as the first ever feature film to be made entirely with CGI. The film was directed by John Lasseter and featuring the voices of Tom Hanks and Tim Allen...

 and Finding Nemo
Finding Nemo
Finding Nemo is a 2003 American comi-drama animated film written by Andrew Stanton, directed by Andrew Stanton and Lee Unkrich and produced by Pixar. It tells the story of the overly protective clownfish Marlin who, along with a regal tang called Dory , searches for his abducted son Nemo...

, and the Blender Foundation
Blender Foundation
The Blender Foundation is a non-profit organization responsible for the development of Blender, an open source program for three-dimensional modeling....

 the world's first open movie Elephants Dream
Elephants Dream
Elephants Dream is a computer-generated short film that was produced almost completely using the free software 3D suite Blender . It premiered on March 24, 2006, after about 8 months of work...

.

Because of the need for very high-quality and diversity of effects, offline rendering requires a lot of flexibility. Even though commercial real-time graphics hardware is getting higher quality and more programmable by the day, most photorealistic CGI still requires software rendering. Pixar's RenderMan, for example, allows shaders of unlimited length and complexity, demanding a general-purpose processor. Techniques for high realism like raytracing and global illumination
Global illumination
Global illumination is a general name for a group of algorithms used in 3D computer graphics that are meant to add more realistic lighting to 3D scenes...

 are also inherently unsuited for hardware implementation and in most cases are realized purely in software.

External links

  • Burning's Software Renderer contributed by Thomas Alten to the open source Irrlicht graphics engine.
  • Coco3D a portable template-based software renderer for PCs and windows Mobile devices.
  • HyperMove a rendering workflow software.
  • Hypershot a photorealistic realtime rendering software.
  • KeyShot a photorealistic realtime rendering software.
  • Kribi 3D Engine, a self-contained 3D engine featuring an incredibly fast pure software renderer.
  • Muli3D, an open-source platform-independent software renderer, aimed at education and research.
  • OpenRT Real-time Raytracing, a project aimed at developing a raytracing standard for interactive 3D graphics.
  • Perspective Texture Mapping, series by Chris Hecker
    Chris Hecker
    -Biography:Hecker was a student at the Parsons School of Design in New York City, studying the fine arts towards work as an illustrator. An article in Byte Magazine sold him on programming and he dropped out of school to begin work on graphics and games....

     about rasterization and texture mapping fundamentals.
  • Pixomatic, a high-performance software renderer by Michael Abrash
    Michael Abrash
    Michael Abrash is a technical writer specializing in optimization and 80x86 assembly language programming, a reputation cemented by his 1990 book Zen of Assembly Language Volume 1: Knowledge. The original 8086 processor, the focus of the book, was several generations behind the state of the art by...

     and Mike Sartain with Direct3D 7-class features; supports games like Unreal Tournament 2004
    Unreal Tournament 2004
    Unreal Tournament 2004, also known as UT2K4 and UT2004, is a futuristic first-person shooter computer game developed by Epic Games and Digital Extremes...

     and Medal of Honor.
  • Real-time Software Rendering A collection of tutorials covering numerous graphics rendering techniques.
  • Renderer 2.0, an open-source (GPL) software renderer with per-pixel Phong shading
    Phong shading
    Phong shading refers to an interpolation technique for surface shading in 3D computer graphics. It is also called Phong interpolation or normal-vector interpolation shading. Specifically, it interpolates surface normals across rasterized polygons and computes pixel colors based on the interpolated...

    , Z-Buffer, shadow mapping
    Shadow mapping
    Shadow mapping or projective shadowing is a process by which shadows are added to 3D computer graphics. This concept was introduced by Lance Williams in 1978, in a paper entitled "Casting curved shadows on curved surfaces"...

     and ambient occlusion
    Ambient occlusion
    Ambient occlusion is a shading method used in 3D computer graphics which helps add realism to local reflection models by taking into account attenuation of light due to occlusion...

    . Uses autoconf/automake and libSDL, and thus compiles and runs under Linux,Windows/MinGW,FreeBSD and MacOSX. It is written in C++, and uses OpenMP
    OpenMP
    OpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...

     or Intel TBB to take advantage of multi-core machines.
  • RenderMan, a rendering software system for high quality, photorealistic image synthesis
  • SwiftShader, a highly advanced multi-platform software renderer with Shader Model 3.0 level features.
  • swShader was the open source precursor of SwiftShader. Most recent version before it was removed from http://sourceforge.net/projects/sw-shader is available [ftp://ftp.funet.fi/pub/graphics/packages/swshader-softwire here].
  • Trenki's Software Renderer/Rasterizer, a small open-source platform-independent software renderer implementation with fixed point math, supports vertex and pixel shaders written in C++.
  • Vigilante Software Graphics a modern software renderer still under development.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK