![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
Tutorial & Download "Delayvectors"Beschreibung des EffektesEin Würfel aus 12*12*12=1728 Punkten In welchen Demos zu sehen?Hierbei handelt es sich um einen schon recht alten Effekt, der bereits in frühen Demos wie Panic von der Future Crew im Jahre 1993 zu sehen war. Der Effekt ist daher auch sehr genügsam in Sachen Rechenleitung, da nur ein paar Vektoren berechnet und als Pixel auf dem Bildschirm gesetzt werden müssen. Einzig die Realisierung der leuchtenden Spur erfordert einen etwas tieferen Griff in die Trickkiste. Das Mittel der Wahl ist hier das sogenannte Palettenrotieren. Dabei werden die Pixel immer mit der gerade intensivsten Farbe gezeichnet, und dann in den nachfolgenden Animationsschritten über die Palette der Grafikkarte langsam abgedunkelt. Die Pixel, die dabei gerade die Farbe schwarz erreicht haben, müssen dann natürlich noch entfernt werden. Sonst würden diese im nästen Schritt wieder sichtbar werden, da durch das Palettenrotieren die dunkelste Farbe immer wieder schlagartig auf die hellste Farbe gesetzt wird. Programmablauf pro Frame
3D-Routinen, Vektorberechnungen und MatritzenDiesen Themenkomplex habe ich aus dem Beispielprogramm komplett ausgelagert, da ich die 3D-Engine unabhängig von diesem Demoeffekt programmiert habe. Es handelt sich dabei um eine Turbo-Pascal-Unit, die die für die Vektorberechnung nötigen Datenstrukturen und Prozeduren zur Verfügung stellt. Ich musste mir zum Zeitpunkt der Programmierung dieses Effektes also keine Sorgen mehr um 3D-Vektoren machen, ich habe sie einfach eingebunden. Die komplette Vektorunit mit Quellcode befindet sich ebenfalls mit in dem Paket. Wer Interesse hat, kann das Programm verwenden und einbinden, denn dafür habe ich es geschrieben. Die Unit stellt die Funktionen der folgenden Tablelle zur Verfügung. Sie ist komplett in Assembler geschrieben und nutzt 32-Bit breite Register und -Maschinenbefehle. Sie ist daher sehr schnell. Die Vektoren werden in 32-Bit Longints gespeichert, weswegen ein mehr als ausreichend grosser Wertebereich mit entsprechender Genauigkeit gewährleistet ist. Nachkommastellen werden durch Fixpunktarithmetik berücksichtigt. Folgende Aufgaben wurden in die Vektorunit ausgelagert:
ProgramminfoTurbo Pascal (kompiliert mit TP 7.0)Videomodus: Standard Mode 13h (MCGA), 320x200 Pixel bei 256 Farben benötigt und enthält meine Vektorunit großteil in Assembler, Effekt läuft in Echtzeit ab 249 LoC Hauptprogramm 529 LoC Vektorunit Geschwindigkeit: AMD K6-233 mit Synchronisation: 70 Frames pro Sekunde (fps) AMD K6-233 ohne Synchronisation: 162 Frames pro Sekunde (Max-fps) DownloadDownload als ZIP-File:delayvec.zip (10635 Bytes) enthält ausführbares .EXE-Files und die Quellcodes. Eine genauere Beschreibung der mitgelieferten Vektorunit kann ich hier leider nicht mitliefern, da sie den Rahmen sprengen würde. Es sind allerdings nur sehr wenig Zeilen im Hauptprogramm nötig, um die Unit zu verwenden. Mit ein wenig Experimentieren sollte ein problemloses Einbinden in eigene Programme kein Problem darstellen. Screenshots
|
|||||||||||||||||||||||||||||||||||||||||||
Seitenanfang |
Inhalt und Design von Florian Evers, florian-evers@gmx.de |
||||||||||||||||||||||||||||||||||||||||||