Software-Rendering - Software rendering

Software-Renderer, der auf einem Gerät ohne GPU ausgeführt wird .

Software-Rendering ist der Vorgang, bei dem mithilfe von Computersoftware ein Bild aus einem Modell erzeugt wird. Im Zusammenhang mit Computergrafik-Rendering bezieht sich Software-Rendering auf einen Rendering-Prozess, der nicht von Grafikhardware- ASICs wie etwa einer Grafikkarte abhängig ist . Das Rendering findet komplett in der CPU statt . Alles mit der (allgemeinen) CPU zu rendern hat den Hauptvorteil, dass es nicht auf die (begrenzten) Fähigkeiten der Grafikhardware beschränkt ist, aber der Nachteil ist, dass mehr Halbleiter benötigt werden, um die gleiche Geschwindigkeit zu erreichen.

Rendering wird in Architektur, Simulatoren, Videospielen, Filmen und visuellen Fernseheffekten sowie in der Designvisualisierung verwendet. Das Rendern ist der letzte Schritt in einem Animationsprozess und verleiht den Modellen und Animationen das endgültige Aussehen mit visuellen Effekten wie Schattierung, Textur-Mapping, Schatten, Reflexionen und Bewegungsunschärfe. Das Rendering kann in zwei Hauptkategorien unterteilt werden: Echtzeit-Rendering (auch als Online-Rendering bekannt) und Vor-Rendering (auch als Offline-Rendering bezeichnet). Echtzeit-Rendering wird verwendet, um eine Szene interaktiv zu rendern, wie in 3D-Computerspielen , und im Allgemeinen muss jedes Bild in wenigen Millisekunden gerendert werden. Offline-Rendering wird verwendet, um realistische Bilder und Filme zu erstellen, bei denen jeder Frame Stunden oder Tage in Anspruch nehmen kann, oder zum Debuggen von komplexem Grafikcode durch Programmierer.

Software-Rendering in Echtzeit

Beim Echtzeit-Rendering liegt der Fokus auf der Leistung. Die frühesten texturierten Echtzeit-Software-Renderer für PCs verwendeten viele Tricks, um die Illusion von 3D-Geometrie zu erzeugen ( echtes 3D war auf flache oder Gouraud-schattierte Polygone beschränkt, die hauptsächlich in Flugsimulatoren verwendet wurden .) Ultima Underworld zum Beispiel erlaubte eine begrenzte Form nach oben und unten zu schauen, schräge Böden und Räume über Räumen, aber für alle detaillierten Objekte auf Sprites zurückgegriffen . Die in diesen Spielen verwendete Technologie wird derzeit als 2.5D kategorisiert .

Eines der ersten Spiele, die architektonisch modernen 3D-Titeln ähnelten und volle 6DoF ermöglichten , war Descent , das 3D-Modelle enthielt, die vollständig aus bitmap- texturierten dreieckigen Polygonen bestanden. Voxel- basierte Grafiken wurden auch für schnelles und relativ detailliertes Geländerendering populär , wie in Delta Force , aber beliebte Hardware mit fester Funktion machte ihre Verwendung schließlich unmöglich. Quake verfügt über einen effizienten Software-Renderer von Michael Abrash und John Carmack . Mit seiner Popularität halfen Quake und andere polygonale 3D-Spiele dieser Zeit den Verkauf von Grafikkarten , und mehr Spiele begannen, Hardware- APIs wie DirectX und OpenGL zu verwenden . Obwohl Software - Rendering als primäre Rendering - Technologie abfiel, noch viele Spiele bis in die 2000er Jahre einen Software - Renderer als Ausweich hatten, Unreal und Unreal Tournament zum Beispiel Feature Software Renderer der Lage , angenehme Qualität und Leistung auf CPUs dieser Zeit zu produzieren. Eines der letzten AAA-Spiele ohne Hardware-Renderer war Outcast , das fortschrittliche Voxel-Technologie, aber auch Texturfilterung und Bump-Mapping, wie sie auf Grafikhardware zu finden sind, aufwies.

Auf den Märkten für Videospielkonsolen und Arcade-Spiele war die Entwicklung von 3D abrupter, da sie sich immer stark auf Einzweck-Chipsätze verlassen hatten. 16-Bit-Konsolen erhielten RISC-Beschleunigermodule in Spielen wie StarFox und Virtua Racing, die Software-Rendering durch maßgeschneiderte Befehlssätze implementierten. Der Jaguar und 3DO waren die ersten Konsolen mit 3D - Hardware zu versenden, aber es war nicht bis zum PlayStation dass solche Merkmale kam in den meisten Spielen verwendet werden.

Spiele für Kinder und Gelegenheitsspieler (die veraltete Systeme oder Systeme verwenden, die hauptsächlich für Office-Anwendungen gedacht waren) in den späten 1990er bis frühen 2000er Jahren verwendeten typischerweise einen Software-Renderer als Fallback. Zum Beispiel hat Toy Story 2: Buzz Lightyear to the Rescue die Wahl zwischen Hardware- oder Software-Rendering vor dem Spielen des Spiels, während andere wie Half-Life standardmäßig auf den Software-Modus eingestellt sind und im Optionen-Menü auf OpenGL oder DirectX eingestellt werden können . Einige 3D-Modellierungssoftware bietet auch Software-Renderer zur Visualisierung. Und schließlich erfordert die Emulation und Verifikation von Hardware auch einen Software-Renderer. Ein Beispiel für letzteres ist der Direct3D- Referenz-Rasterizer.

Aber selbst für High-End-Grafiken ist die „Kunst“ des Software-Renderings nicht vollständig ausgestorben. Während frühe Grafikkarten viel schneller waren als Software-Renderer und ursprünglich eine bessere Qualität und mehr Funktionen hatten, beschränkten sie den Entwickler auf die Pixelverarbeitung mit "festen Funktionen". Schnell entstand die Notwendigkeit, das Aussehen der Spiele zu diversifizieren. Software-Rendering hat keine Einschränkungen, da ein beliebiges Programm ausgeführt wird. Also führten Grafikkarten diese Programmierbarkeit wieder ein, indem sie kleine Programme pro Vertex und pro Pixel / Fragment ausführen , auch Shader genannt . Shadersprachen, wie die High Level Shader Language (HLSL) für DirectX oder die OpenGL Shading Language (GLSL), sind C- ähnliche Programmiersprachen für Shader und beginnen eine gewisse Ähnlichkeit mit (beliebiger Funktion) Software-Rendering zu zeigen.

Seit der Einführung von Grafikhardware als primäres Mittel für das Echtzeit-Rendering ist die CPU-Leistung stetig gewachsen. Dies ermöglichte die Entstehung neuer Software-Rendering-Technologien. Obwohl von der Leistung des Hardware-Renderings weitgehend überschattet, schaffen es einige moderne Echtzeit-Software-Renderer, einen breiten Funktionsumfang und eine angemessene Leistung (für einen Software-Renderer) zu kombinieren, indem sie spezielle dynamische Kompilierung und erweiterte Befehlssatzerweiterungen wie SSE verwenden . Obwohl heutzutage die Dominanz von Hardware-Rendering gegenüber Software-Rendering aufgrund beispielloser Leistung, Funktionen und kontinuierlicher Innovation unbestritten ist, glauben einige, dass CPUs und GPUs auf die eine oder andere Weise konvergieren und die Grenze zwischen Software- und Hardware-Rendering verschwimmen wird.

Software-Fallback

Aus verschiedenen Gründen wie Hardwarefehler, defekte Treiber, Emulation, Qualitätssicherung, Softwareprogrammierung, Hardwaredesign und Hardwarebeschränkungen ist es manchmal sinnvoll, die CPU einige oder alle Funktionen in einer Grafikpipeline übernehmen zu lassen.

Infolgedessen gibt es eine Reihe von Allzweck-Softwarepaketen, die einen vorhandenen Hardware-Grafikbeschleuniger ersetzen oder erweitern können, darunter:

  • RAD Game Tools 'Pixomatic, verkauft als Middleware für die statische Verknüpfung innerhalb der D3D 7–9-Client-Software.
  • SwiftShader , eine Bibliothek, die als Middleware verkauft wird und zur Bündelung mit D3D9- und OpenGL ES 2-Client-Software vorgesehen ist.
  • Die Renderer swrast, softpipe und LLVMpipe in Mesa arbeiten als Shim auf Systemebene, um ein OpenGL 1.4–3.2-Hardwaregerät zu emulieren.
  • WARP , bereitgestellt seit Windows Vista von Microsoft, das auf Systemebene arbeitet, um eine schnelle D3D 9.1 und höher Emulation bereitzustellen. Dies zusätzlich zu dem extrem langsamen softwarebasierten Referenz-Rasterizer, den Microsoft Entwicklern immer zur Verfügung gestellt hat.
  • Der Apple-Software-Renderer in CGL , der in Mac OS X von Apple bereitgestellt wird und auf Systemebene arbeitet, um eine schnelle OpenGL 1.1-4.1-Emulation bereitzustellen.

Vorrendern

Im Gegensatz zum Echtzeit-Rendering steht die Performance beim Pre-Rendering nur an zweiter Stelle. Es wird hauptsächlich in der Filmindustrie verwendet, um hochwertige Renderings von lebensechten Szenen zu erstellen. Viele Spezialeffekte in heutigen Filmen werden ganz oder teilweise durch Computergrafik erzeugt. Zum Beispiel ist die Figur von Gollum in den Filmen von Peter Jackson Der Herr der Ringe vollständig computergenerierte Bilder (CGI). Auch für Animationsfilme wird CGI immer beliebter. Vor allem hat Pixar eine Reihe von Filmen wie Toy Story und Finding Nemo produziert und die Blender Foundation den weltweit ersten offenen Film Elephants Dream .

Aufgrund des Bedarfs an sehr hoher Qualität und Vielfalt an Effekten erfordert das Offline-Rendering viel Flexibilität. Obwohl kommerzielle Echtzeit-Grafikhardware von Tag zu Tag hochwertiger und programmierbarer wird, erfordern die meisten fotorealistischen CGIs immer noch Software-Rendering. Pixars RenderMan zum Beispiel ermöglicht Shader von unbegrenzter Länge und Komplexität und erfordert einen Allzweckprozessor. Techniken für hohen Realismus wie Raytracing und Global Illumination sind ebenfalls von Natur aus für die Hardwareimplementierung ungeeignet und werden in den meisten Fällen rein in Software realisiert.

Siehe auch

Verweise