Software rendering

Software rendering

In the context of rendering (computer graphics), software rendering refers to a rendering process that is unaided by any specialized hardware, such as a graphics card. The rendering takes place entirely in the CPU.

Introduction

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. Offline rendering is used to create realistic images and movies.

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 polygons employed mainly in flight simulation genres.) "Wolfenstein 3D" was restricted to one height of floor and ceiling, "Doom" introduced stairs and elevators, and "Duke Nukem 3D" allowed a limited form of looking up and down. The technology used in these games is currently categorized as 2.5D. The first 'real' textured 3D game, allowing six degrees of freedom (three movement axes, three rotation axes), was "Descent", which also featured 3D models entirely made from polygons instead of sprites. Voxel-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 and John Carmack (founder of id Software). 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 and 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" and "Unreal Tournament" 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", which featured advanced voxel technology but also texture filtering and bumpmapping as found on graphics hardware.

In the video game console 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" and "Virtua Racing" which implemented software rendering through tailored instruction sets. The Atari Jaguar and 3DO were the first consoles to be targeted at 3D, but it was the Sony Playstation with its revolutionary textured triangle throughput and powerful geometry coprocessor that really popularized 3D gaming.fact|date= June 2008 This was the first time that 3D produced a compelling mainstream experience rather than being a specialist gimmick (aside from "Doom"'s 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 and verification of hardware also requires a software renderer. An example of the latter is the Direct3D 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 and per pixel/fragment, also known as shaders. Shader languages, such as High Level Shader Language (HLSL) for DirectX or the OpenGL Shading Language (GLSL), are C-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 and advanced instruction set extensions like SSE. 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. With multi-core CPUs and increasingly more programmable GPUs they are at least getting a few more things in common.

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 in the Peter Jackson "The Lord of the Rings" films is completely computer-generated imagery (CGI). Also for animation movies, CGI is gaining popularity. Most notably Pixar has produced a series of movies such as "Toy Story" and "Finding Nemo".

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 programmability 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 are also inherently unsuited for hardware implementation and in most cases are realized purely in software.

ee also

* 3D computer graphics

External links

* [http://www.d6.com/users/checker/misctech.htm Perspective Texture Mapping] , series by Chris Hecker about rasterization and texture mapping fundamentals
* [http://www.dawnofthegeeks.com/software_rendering/ Real-time Software Rendering] A collection of tutorials covering numerous graphics rendering techniques.
* [http://www.radgametools.com/pixomain.htm Pixomatic] , a high-performance software renderer by Michael Abrash and Mike Sartain with Direct3D 7-class features; supports games like "Unreal Tournament 2004" and "Medal of Honor"
* [http://www.transgaming.com/products/swiftshader/ SwiftShader] , an advanced software renderer with Direct3D 8/9-class features, including shaders
* [http://muli3d.sourceforge.net/ Muli3D] , an open-source platform-independent software renderer, aimed at education and research
* [http://www.trenki.net/content/view/18/38/ 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++.
* [http://renderman.pixar.com/ RenderMan] , a rendering software system for high quality, photorealistic image synthesis
* [http://www.openrt.de/index.php OpenRT Real-time Raytracing] , a project aimed at developing a raytracing standard for interactive 3D graphics
* [http://www.softwarerenderer.com Vigilante Software Graphics] a modern software renderer still under development
* [http://www.codeplex.com/Coco3D Coco3D] a portable template-based software renderer for PCs and windows Mobile devices.


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Software-rendering — bezeichnet die Methode der Grafikberechnung ohne spezialisierte Hardware, d. h. nur durch den CPU ohne Unterstützung durch eine Grafikkarte oder Vergleichbares. Die Grafikkarte leitet dabei unbeteiligt die von der CPU berechneten Daten an den… …   Deutsch Wikipedia

  • Software Rendering — bezeichnet die Methode der Grafikberechnung ohne spezialisierte Hardware, d. h. nur durch die CPU ohne Unterstützung durch eine Grafikkarte oder Vergleichbares. Die Grafikkarte leitet dabei unbeteiligt die von der CPU berechneten Daten an… …   Deutsch Wikipedia

  • Rendering (computer graphics) — Not to be confused with 3D rendering. A variety of rendering techniques applied to a single 3D scene …   Wikipedia

  • Rendering engine — can refer to: *Rendering (computer graphics) software or hardware, which converts specifications for images into pixels *Ray tracing engine, software which renders a scene by tracing simulated rays of light *Layout engine, which formats HTML or… …   Wikipedia

  • Rendering-Pipeline — Eine Computergrafik Pipeline, auch Rendering Pipeline oder einfach Grafikpipeline, ist eine Modellvorstellung in der Computergrafik, die beschreibt, welche Schritte ein Grafiksystem zum Rendern, also zur Darstellung einer 3D Szene auf einem… …   Deutsch Wikipedia

  • Rendering Pipeline — Eine Computergrafik Pipeline, auch Rendering Pipeline oder einfach Grafikpipeline, ist eine Modellvorstellung in der Computergrafik, die beschreibt, welche Schritte ein Grafiksystem zum Rendern, also zur Darstellung einer 3D Szene auf einem… …   Deutsch Wikipedia

  • Software bug — To report a MediaWiki error on Wikipedia, see Wikipedia:Bug reports. A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or …   Wikipedia

  • Software pipelining — In computer science, software pipelining is a technique used to optimize loops, in a manner that parallels hardware pipelining. Software pipelining is a type of out of order execution, except that the reordering is done by a compiler (or in the… …   Wikipedia

  • Rendering-Engine — Eine Layout Engine, zuweilen auch Rendering Engine genannt, wird von einem Browser benötigt um Texte (vorliegend in einer Auszeichnungssprache wie HTML oder XML) und geeignete Stilinformationen (CSS, XSLT) für die Ausgabe am Bildschirm oder… …   Deutsch Wikipedia

  • Rendering Engine — Eine Layout Engine, zuweilen auch Rendering Engine genannt, wird von einem Browser benötigt um Texte (vorliegend in einer Auszeichnungssprache wie HTML oder XML) und geeignete Stilinformationen (CSS, XSLT) für die Ausgabe am Bildschirm oder… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”