Content deleted Content added
→Software fallback: Adjusted WARP paragraph |
Tigress223 (talk | contribs) No edit summary |
||
Line 6:
'''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 dependant 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 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, reflections and motion blurs.<ref>{{Cite web|url=http://usa.autodesk.com/adsk/servlet/item?id=17940930&siteID=123112|title=LIVE Design - Interactive Visualizations {{!}} Autodesk|access-date=2016-08-20}}</ref> Rendering can be split into two main categories: [[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 miliseconds. 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 19:
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.
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 [[Streaming SIMD Extensions|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 [[GPU]]s will converge one way or another and the line between software and hardware rendering will fade.<ref>{{Cite web|url=http://www.tgdaily.com/content/view/36410/118/|title=Tim Sweeney, Part 2: “DirectX 10 is the last relevant graphics API” {{!}} TG Daily|last=Valich|first=Theo|date=2012-12-13|website=TG Daily|access-date=2016-08-20}}</ref>
===Software fallback===
|