Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

20.09.2014, 20:00

Das mit den shadern wäre doch gar keine schlecht idee ^^ kann man ja dann als DLL einbinden.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

12

20.09.2014, 20:29

Wobei man mit DLLs schon wieder aufpassen muss. Für jeden einzelnen Pixel einen indirekten Sprung in eine DLL wäre sicher eine ziemliche Bremse.
Wenn es schnell gehen sollte, würde ich mal Multithreading und Vektorisierung(Intrinsics) verwenden. SSE kann 16 und AVX2 sogar 32 Bytes auf einmal verarbeiten. Das entspricht bei 32Bit Farbe 4 oder 8 Pixel gleichzeitig. Bei Gleitkommaberechnungen der Vertices ist es ähnlich.

Du könntest auch noch Lichter einbauen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (21.09.2014, 12:52)


13

20.09.2014, 20:57

Geht es hier überhaupt um Geschwindigkeit? Das stimmt natürlich, dass das bremst. Aber bei dem Projekt geht es doch eigentlich nur um den Spass, oder :D

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

14

21.09.2014, 12:36

Erst mal will ich, dass das MIP-mapping richtig funktioniert. Ohne MIP-maps sehen die Texture Samples einfach grausam aus.
Generell ist das mit den x86 kompilierten Shadern natürlich eine coole Idee, aber erst mal gibt's noch einige andere Dinge zu tun.

Lichter baue ich vielleicht auch noch ein. Allerdings ist jedes Bisschen mehr, das pro Pixel interpoliert werden muss, eine weitere Bremse.
Und doch: mir ging es vor allem um Geschwindigkeit, sonst hätte ich keinen 8-bit Color buffer und 16-bit Depth buffer eingebaut.
Bei so einem Projekt kann man gut üben, mit wenig Speicher auszukommen :-)
Ich habe aber schon eingeplant, dass man mit den Makros in static_config.h einige statische Konfigurationen vornehmen kann,
bei denen man zwischen Bildqualität/Geschwindigkeit umschalten kann.

Wenn ich mit SSE und/oder Multithreading mehrere Pixel gleichzeitig verarbeiten will, muss ich meinen Scanline Rasterizer komplett über den Haufen werfen.
Im ryg blog ist schön beschrieben warum die GPUs eben keinen "incremental scanline rasterizer" implementieren.

15

21.09.2014, 12:55

Nagut ;) Sag bescheid wenns funktioniert.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

16

11.07.2016, 12:14

Nach sehr langer Zeit melde ich mich mal wieder zurück :)
Meine Güte, wie die Zeit vergeht ...

Ich habe mal wieder Lust gehabt, an meinem Software Renderer weiter zu arbeiten.
Jetzt wird auch endlich (halbwegs) MIP-Mapping unterstützt.
Das Problem war dabei die ganze Zeit nur die MIP-Level Selection und das habe ich jetzt einfach genau so primitiv gemacht,
wie es auch in Quake II umgesetzt ist: das nächste Vertex bestimmt mit 'log2(z)' den MIP-Level.
So kann das dann in einer Test Szene aussehen:

(Link)


Inzwischen unterstützt der Renderer auch 24-Bit Color Buffer.
Kann in "src/rasterizer/static_config.h" mit "PR_COLOR_BUFFER_24BIT" per Macro aktiviert werden.

Und endlich wird auch MacOS unterstützt :thumbsup:

(Link)


Linux soll immer noch folgen, aber da bin ich gerade dran.
Mal schauen ob es was wird, oder ob das wieder im Sande verläuft :P

Gruß,
Lukas

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

11.07.2016, 13:53

Schön, dass du auch nach so langer Zeit noch daran arbeitest. Wie steht's denn um die Performance? Wie viele perspective-corrected MIP-mapped samples bekommst du pro Sekunde auf deinem Rechner hin? (und was für ein Rechner ist das?)

18

11.07.2016, 13:57

Das kann sich wirklich sehen lassen! Ich bin auch gespannt, wie flüssig es läuft, oder ob es überhaupt flüssig läuft. Da bin ich jetzt etwas skeptisch.
Wie siehts denn mit Shadern aus? :spiteful:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

19

11.07.2016, 14:39

Ich bin auch gespannt, wie flüssig es läuft, oder ob es überhaupt flüssig läuft. Da bin ich jetzt etwas skeptisch.

Bevor es 3D-Grafikkarten gab, haben alle 3D-Spiele in Software gerendert, und damals waren die Rechner noch wesentlich langsamer als heute. Also das geht schon!

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

20

11.07.2016, 14:54

Läuft ziemlich flott. Habe mal eine ganz primitive FPS Anzeige gemacht (in der Konsole) und nur mit der 'clock()' Funktion jede Sekunde die zusammen gezählten Frames angezeigt:

LOW RESOLUTION
640x480 Pixel, 8-Bit Depth Buffer, 8-Bit Color Buffer, Single Precision Interpolation: 175 FPS

HIGH RESOLUTION
1920x1080 Pixel, 16-Bit Depth Buffer, 24-Bit Color Buffer, Double Precision Interpolation: 23 FPS

Anbei die jeweiligen Bilder der Szene ("High-Res" Bild wurde verkleinert, weil zu groß zum Upload).

Mein Rechner hat schon ordentlich Power, allerdings läuft das alles nur Single Threaded.
CPU: Core i7-3770k @ 3500 MHz
RAM: 16 GB DDR3

Shader haben mich bei diesem Projekt gar nicht interessiert,
weil ich lediglich die nostalgischen Software Renderer aus den 90er Jahren mal nach stellen wollte :)
»LukasBanana« hat folgende Bilder angehängt:
  • Screenshot 10 Low-Res (175 FPS).jpg
  • Screenshot 09 High-Res (23 FPS).jpg

Werbeanzeige