Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Software rendering

From Wikipedia, the free encyclopedia
Generating images by computer software
This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages)
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Software rendering" – news ·newspapers ·books ·scholar ·JSTOR
(July 2007) (Learn how and when to remove this message)
This articlemay beconfusing or unclear to readers. Please helpclarify the article. There might be a discussion about this onthe talk page.(June 2008) (Learn how and when to remove this message)
This article needs to beupdated. Please help update this article to reflect recent events or newly available information.(July 2025)
(Learn how and when to remove this message)
Software renderer running on a device without aGPU

Software rendering is the process of generating an image from a model by means of computer software. In the context ofcomputer graphics rendering, software rendering refers to a rendering process that is not dependent upongraphics hardwareASICs, such as agraphics card. The rendering takes place entirely in theCPU. Rendering everything with the (general-purpose) CPU has the main advantage that it eliminates the need of a graphics card for rendering, but the disadvantage is that a CPU is not designed specifically for graphics rendering in the way a graphics card is which leads to slower rendering times.[1]

Rendering is used in architecture, simulators, video games, movies and television visual effects and design visualization. Rendering is the last step in an animation process, and gives the final appearance to the models and animation with visual effects such as shading, texture-mapping, shadows,reflections and motion blur.[2] Rendering can be split into two main categories:real-time rendering (also known as online rendering), andpre-rendering (also called offline rendering). Real-time rendering is used to interactively render a scene, like in3D computer games, and generally each frame must be rendered in a few milliseconds. Offline rendering is used to create realistic images and movies, where each frame can take hours or days to complete, or for debugging of complex graphics code by programmers.

Real-time software rendering

[edit]

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 geometry (true 3D was limited to flat orGouraud-shadedpolygons employed mainly inflight simulators.)Ultima Underworld, for example, allowed a limited form of looking up and down, slanted floors, and rooms over rooms, but resorted tosprites for all detailed objects. The technology used in these games is currently categorized as2.5D.

One of the first games architecturally similar to modern 3D titles, allowing full6DoF, wasDescent, which featured3D models entirely made from bitmaptextured triangular polygons.Voxel-based graphics also gained popularity for fast and relatively detailed terrain rendering, as inDelta Force, but popularfixed-function hardware eventually made its use impossible.Quake features an efficient software renderer byMichael Abrash andJohn Carmack. With its popularity,Quake and other polygonal 3D games of that time helped the sales ofgraphics cards, and more games started using hardwareAPIs likeDirectX andOpenGL. Though software rendering fell off as a primary rendering technology, many games well into the 2000s still had a software renderer as a fallback,Unreal andUnreal Tournament for instance, feature software renderers able to produce enjoyable quality and performance on CPUs of that period. One of the lastAAA games without a hardware renderer wasOutcast, which featured advanced voxel technology but alsotexture filtering andbump mapping as found on graphics hardware.

In thevideo game console andarcade game markets, the evolution of 3D was more abrupt, as they had always relied heavily on single-purpose chipsets. 16 bit consoles gained RISC accelerator cartridges in games such asStarFox andVirtua Racing which implemented software rendering through tailored instruction sets. TheJaguar and3DO were the first consoles to ship with 3D hardware, but it wasn't until thePlayStation that such features came to be used in most games.

Games for children and casual gamers (who use outdated systems or systems primarily meant for office applications) during the late 1990s to early 2000s typically used a software renderer as a fallback. For example,Toy Story 2: Buzz Lightyear to the Rescue has a choice of selecting either hardware or software rendering before playing the game, while others likeHalf-Life default to software mode and can be adjusted to use OpenGL or DirectX in the Options menu. Some 3D modeling software also features software renderers for visualization. And finally theemulation andverification of hardware also requires a software renderer. An example of the latter is theDirect3D 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 pervertex and perpixel/fragment, also known asshaders. Shader languages, such asHigh Level Shader Language (HLSL) for DirectX or theOpenGL Shading Language (GLSL), areC-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 specializeddynamic compilation and advanced instruction set extensions likeSSE. Although nowadays the dominance of hardware rendering over software rendering is undisputed because of performance, features, and continuing innovation, some believe that CPUs andGPUs will converge one way or another and the line between software and hardware rendering will fade.[3]

Software fallback

[edit]

For various reasons such as hardware failure, broken drivers, emulation, quality assurance, software programming, hardware design, and hardware limitations, it is sometimes useful to let the CPU assume some or all functions in a graphics pipeline.

As a result, there are a number of general-purpose software packages capable of replacing or augmenting an existing hardware graphical accelerator, including:

  • RAD Game Tools' Pixomatic, sold as middleware intended for static linking inside D3D 7–9 client software.
  • SwiftShader, a library sold as middleware intended for bundling with D3D9 & OpenGL ES 2 client software.
  • The swrast, softpipe, & LLVMpipe renderers insideMesa work as a shim at the system level to emulate an OpenGL 1.4–3.2 hardware device. The lavapipe renderer also featured in Mesa provides software rendering for theVulkan API.
  • WARP, provided since Windows Vista by Microsoft, which works at the system level to provide fast D3D 9.1 and above emulation. This is in addition to the extremely slow software-based reference rasterizer Microsoft has always provided to developers.
  • The Apple software renderer inCGL, provided in Mac OS X by Apple, which works at the system level to provide fast OpenGL 1.1–4.1 emulation.

Pre-rendering

[edit]

Contrary to real-time rendering, performance is only of second priority with pre-rendering. It is used mainly in the film industry to create high-quality renderings of lifelike scenes. Manyspecial effects in today's movies are entirely or partially created by computer graphics. For example, the character ofGollum in thePeter JacksonThe Lord of the Rings films is made completely ofcomputer-generated imagery (CGI). Also foranimation movies, CGI is gaining popularity. Most notablyPixar has produced movies such asToy Story andFinding Nemo, and theBlender Foundation the world's firstopen movie,Elephants Dream.

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 becoming higher in quality and more programmable by the day, mostphotorealistic CGI still requires software rendering. Pixar'sRenderMan, for example, allows shaders of unlimited length and complexity, demanding a general-purpose processor. Older hardware is also incapable of techniques for high realism likeraytracing andglobal illumination.

See also

[edit]

References

[edit]
  1. ^Gustavson, Stefan (10 April 2025)."Hardware Accelerated Graphics"(PDF).Hardware Graphics 2015 - hardwaregraphics.pdf.Archived(PDF) from the original on 22 November 2025. Retrieved20 November 2025.
  2. ^"LIVE Design - Interactive Visualizations | Autodesk". Archived fromthe original on February 21, 2014. Retrieved2016-08-20.
  3. ^Valich, Theo (11 March 2008)."Tim Sweeney, Part 2: "DirectX 10 is the last relevant graphics API" | TG Daily".TG Daily.Archived from the original on March 4, 2016. Retrieved2016-11-07.


Vector graphics
2D graphics
2.5D
3D graphics
Concepts
Graphics software
Algorithms
Retrieved from "https://en.wikipedia.org/w/index.php?title=Software_rendering&oldid=1337813602"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp