Software rendering: Difference between revisions

Content deleted Content added
m Reverted edits by 2600:1700:64D0:950:D62:CABB:C071:EECC (talk) to last version by Jarble
m 1) Corect "is that" 2) Corect "Blur" 3) Corect features
Line 6:
[[File:Software renderer embedded.gif|thumb|right|Software renderer running on a device without a [[Graphics processing unit|GPU]].]]
 
'''Software rendering''' is the process of generating an image from a model by means of computer software. In the context of [[rendering (computer graphics)|computer graphics rendering]], software rendering refers to a rendering process that is not dependent upon [[graphics hardware]] [[Application-specific integrated circuit|ASICs]], such as a [[graphics card]]. The rendering takes place entirely in the [[Central processing unit|CPU]]. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware, but the disadvantage is that more semiconductors are needed to obtain the same speed.
 
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, [[reflection (computer graphics)|reflection]]s and motion blursblur.<ref>{{Cite web|last=|first=|date=|title=LIVE Design - Interactive Visualizations {{!}} Autodesk|url=http://usa.autodesk.com/adsk/servlet/item?id=17940930&siteID=123112|url-status=dead|archive-url=https://web.archive.org/web/20140221045119/http://usa.autodesk.com/adsk/servlet/item?id=17940930&siteID=123112|archive-date=February 21, 2014|access-date=2016-08-20|website=}}</ref> Rendering can be split into two main categories: [[real-time computer graphics|real-time rendering]] (also known as online rendering), and pre-rendering (also called offline rendering). Real-time rendering is used to interactively render a scene, like in [[3D computer game]]s, 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==
Line 17:
In the [[video game console]] and [[arcade 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 as ''[[StarFox]]'' and ''[[Virtua Racing]]'' which implemented software rendering through tailored instruction sets. The [[Atari Jaguar|Jaguar]] and [[3DO Interactive Multiplayer|3DO]] were the first consoles to ship with 3D hardware, but it wasn't until the [[PlayStation (console)|PlayStation]] 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 like ''[[Half-Life_(video_game)|Half-Life]]'' default to software mode and can be adjusted to use OpenGL or DirectX in the Options menu. Some 3D modeling software also featurefeatures software renderers for visualization. And finally the [[emulator|emulation]] and [[Functional verification|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 (geometry)|vertex]] and per [[pixel]]/[[fragment (computer graphics)|fragment]], also known as [[shaders]]. Shader languages, such as [[High Level Shader Language]] (HLSL) for DirectX or the [[OpenGL Shading Language]] (GLSL), are [[C (programming language)|C]]-like programming languages for shaders and start to show some resemblance with (arbitrary function) software rendering.