ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4396697
Jetzt (Chat):
18 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Software 3D-Renderer" von Torsten Richter (Torsten Richter)


Ist euch das nicht auch schon mal passiert, ihr wollt eures in Heimarbeit erstelltes 3D-Demo im Betrieb Arbeitskollegen vorführen, aber leider hat dort fast kein Rechner eine 3D-Grafikkarte und das Demo mutiert zur Diashow mit 1-2 Frames pro Sekunde. Warum sind die Softwareemulsion von Direct-X oder OpenGl so kriechend langsam? Warum nicht einen leistungsfähigen Software-Renderer in das eigene Demo integrieren?
Um das maximale aus der CPU herauszuholen habe ich die Polygondrawfunktionen alle in Assempler coden müssen und MMX-Befehle für eine schnelle Pixelfarbberechung herangezogen.
Das Demo läuft auf meinen alten Zweitrechner (CPU K6/166, 32MB Ram,ATI-Grafikkarte 2MB) bei einer Auflösung von 640x400 mit 11-17 Frames pro Sekunde.

Technische Daten:
- 32bit Farben,
- MipMap-Texture,
- Vertexcolormodulation (für Groundschattierung)
- Vertexcolorblending (für Nebel)
- Alphablending,
- Multitexture (ist schneller als Alphablending,da zurücklesen von Grafikkarte entfällt)

Um schnell sichtbare Ergebnise zuhaben habe ich mir die Terrraintexture und einige
Modele von "Monster Truck Madness 2 Trial Version" ausgeliehen, dieses liegt auf fast jeder Windows98-CD als Demo bei.

NEU: [url=Downloads.php?ID=32]Demo zum Download[/url] (1.6 MB)

Torsten Richter






Von mischi am 02.12.2002, 07:56:16 Uhr
Gibt es auch irgendwo eine Demo-Version davon? Würde mir das zu gerne mal selber angucken.

Von Jazzoid am 02.12.2002, 11:24:52 Uhr
Respekt !!! Das war sicher viel harte Arbeit !!

Von Programmer Stefan am 02.12.2002, 12:41:32 Uhr
Sieht wirklich sehr schön aus(für Softwarerendering), auch gibt es viele Spiele die auch mit DX oder OpenGL geschrieben sind, die keineswegs besser aussehen.

Von Lotze am 02.12.2002, 16:23:51 Uhr
Gute Idee , ist sie aber für unsere jetztigen Verhältnisse nicht etwas Sinnlos?
(Obwohl das mit den Arbeitskollegen im Betrieb irgendwie stimmt) ;-)

Von ChrisM am 02.12.2002, 16:55:39 Uhr
Sieht für Software Rendering sehr gut aus!

Aber warum ist DX im Reference Rasterizer oder allgemein in der Emulation so lahm?

ChrisM

Von TGGC am 03.12.2002, 12:45:56 Uhr
Demo wär gut. Bei dem einem Bild kann ich mir nicht wirklich was vorstellen. :(

Von Torsten Richter am 03.12.2002, 17:50:45 Uhr
"..Gibt es auch irgendwo eine Demo-Version davon? "
Ich arbeite daran die entsprechenden Datein zusammen zustellen.

"..Das war sicher viel harte Arbeit !!"
Ich habe etwa einen Monat an der groben Render-Lib. gearbeitet und etwa 1-2 an der Terrain-Energie mit Kollisionskontrolle,eigenen Modelformat(mit Objekthierarchie),einfachen Menüsystem,Bodenhöhenanpassung des Playermodels und Patrikelsystem. Netzwerkmodus ist in Vorbereitung.

"..Sieht wirklich sehr schön aus(für Softwarerendering), auch gibt es viele Spiele die auch mit DX oder OpenGL geschrieben sind, die keineswegs besser aussehen."
Naja,man sieht schon grobe Pixel wenn man Nahe vor einer Fläche steht.Linares Filtern ist nun einmal nicht drin aus Zeitgründen.Das alles so weich aussicht liegt am JPEG-Format,man kann ja niemand ein 921KB grosses BMP-Bild zumuten.Auf die perpektivische Korektor beim Texturemapping habe ich bewusst verzichtet dadurch sieht die Texture auch manchmal etwas verzerrt aus.

"..Aber warum ist DX im Reference Rasterizer oder allgemein in der Emulation so lahm?"
Ich wollte das Funktionsgerüst zu ähnlich wie bei OpenGL mit "glVertex3f","glTexCoord2f" aufbauen.
Ich mußte aber feststellen das schon bei einen Model mit 800 Polyonen zuviel Overhead entsteht. Darum definiere ich Punktearrays und erzeuge die Flächen mit Indexwerten.Ich verwende für 3D-Punkte meist nur Festkommazahlen (22.10-Format) weil die FPU-Einheit auf meinen alten Zweitrechner (K6/166) doch ziemlich langsam ist,etwa nur halb so schnell wie Integer-Einheit.

Von Eisflamme am 03.12.2002, 19:04:41 Uhr
Find ich echt fett...
So'ne gute Grafik und das läuft auch auf total alten PCs, das ist doch echt Wahnsinn.
Neuere Spiele werden doch auch so optimiert, dass sie auf möglichst alten PCs auch noch laufen, damit alles getroffen wird.
Ich finde das schon ganz hübsch.

Ein BMP mit optimierter 8 BIT Palette ist übrigens fein klein und hat auch eine gute Grafik (optimierte Palette)...
Der Hammer ist, dass das optimierte BMP kleiner ist als ein PNG (!!!!).

MfG MAV

Von ToyToy am 03.12.2002, 19:49:32 Uhr
Das ist ein schlechter Vergleich, PNG unterstützt nämlich auch Paletten.

Von Dr. Fred am 07.12.2002, 08:55:53 Uhr
Deine Demo läuft bei mir nicht . Es kommt nur der Tacho auf türkisen Untergrund.

Von Torsten Richter am 07.12.2002, 10:17:24 Uhr
"..Demo läuft bei mir nicht . Es kommt nur der Tacho auf türkisen Untergrund."
Bitte zuerst mit ESC-Taste Menü einzuschalten,
dann mit Cursor-Tasten Menüeintrag "neues Spiel" selectieren,
"Enter-Taste" drücken,
Map auswählen ("test2.map" geht nur )
und zum Schluß mit "Enter-Taste" Spiel starten.

Danach erscheint die Motorhaube eines Fahrzeug das sich mit den Cursor-Tasten steuern läßt.
Mit den Tasten "2","3" weckselt man zur Fahrzeugaußenansicht über.Die beigelegte Datei "Readme.txt" gibt Auskunft über die gesamte Tastaturbelegung.

Von Cpt761 am 13.07.2005, 17:34:40 Uhr
Hab es mir mal rutergeladen weil ich grad selbst vor dem Problem stehe 3D-Objekte mit 2D-Mitteln anzuzeigen und irgendwo einen Bug in der Projektionsmatrix habe. (Projekt für Macromedia Director7 - LINGO s*xx!!)

Ich hab in der Render.cpp gesehen wo du die Matrizen für OpenGL setzt. Aber ich dachte, das liefe auch ohne OpenGL über ASM-Funktionen? Steht das in einer anderen Datei oder hast du das doch wieder rausgeschmissen?