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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

19.09.2014, 20:43

PicoRenderer (3D Software Renderer)

Hallo zusammen,

ich schreibe seit zwei Wochen mal wieder an einem kleinen Nebenprojekt.
Nach dem ich das alte Spiel "Thief - The Dark Project" ausgegraben hatte, ist mir wieder die Lust nach einem 3D Software Renderer gekommen :D
Heute habe ich auf github das Projekt "PicoRenderer" im Alpha Status hochgeladen.

Details zum Projekt:
- Low-level, 8-bit colored, 3D Software Renderer (mit 16-bit Z-buffer).
- Texture Dithering (um 8-bit Farben zu kompensieren).
- Geschrieben in C99 (Warum siehe Projektseite auf github).
- Einfach zu bauen und kompilieren mit CMake und einem C99 konformen Compiler.
- API ist ähnlich zu OpenGL 1.1 (Willkommen zurück in 1997 ^^).
- Kleines Test Programm (Win32) ist dabei (Linux Version soll folgen).
- 3-Klausel BSD Lizenz.

Projekt Seite:
https://github.com/LukasBanana/PicoRenderer

Geplant ist noch:
- 24-bit RGB color rendering (soll dann über Makros statisch konfigurierbar sein).
- Test Programm für GNU/Linux.
- MIP-mapping (momentan noch unvollständig).

Eigentlich handelt es sich hier nur um ein "Just for Fun" Projekt,
aber vielleicht kann ja der ein oder andere einen Polygon Rasterizer gebrauchen.
( Ich hätte damals einen für meinen Lightmap Generator gebrauchen können ;-) ).

Anbei noch ein paar Screenshots.

Gruß und Viel Spaß,
Lukas
»LukasBanana« hat folgende Bilder angehängt:
  • screenshot 3 - polygons.png
  • screenshot 5 - line polygon.png
  • screenshot 6 - console.png

2

19.09.2014, 21:13

Wow, genial :D Kann man vielleicht irgendwie gebrauchen. Auf wieviele FPS kommst du auf deinem Computer?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

19.09.2014, 22:21

Auf wieviele FPS kommst du auf deinem Computer?

Habe ich noch nicht genau getestet, aber das will ich demnächst mal machen.
Wobei ich bisher auch noch keine besonders große Szene getestet habe.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

20.09.2014, 11:46

Interessant. 8-bit bedeutet Palette? Baust du die so, dass du ein kleines RGB-System hast (z.B. 3 Bits Rot/Grün und 2 Bits Blau)?
Übrigens, bei der Funktion _pr_texutre_compute_miplevel hat sich ein Tippfehler eingeschlichen ("texutre" statt "texture") ;)

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

5

20.09.2014, 11:58

Sieht aber gut aus! Ich finde solche Nerd-Projekte absolut cool.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

20.09.2014, 12:15

8-bit bedeutet Palette? Baust du die so, dass du ein kleines RGB-System hast (z.B. 3 Bits Rot/Grün und 2 Bits Blau)?

Ja genau, in der Datei "color_palette.c" baue ich mit der Funktion "_pr_color_palette_fill_r3g3b2" die Farb Palette im Format R3G3B2 auf.

Ich bin immer wieder fasziniert, mit wie wenig Speicher die Grafikprogrammierer bis 1998 ausgekommen sind.
Der Quake II Code Review ist da auch sehr interessant :-)

7

20.09.2014, 17:43

Wirst du auch Shader einbauen?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

8

20.09.2014, 18:16

Wirst du auch Shader einbauen?

Das definitiv nicht. Es soll schon ein real-time rasterizer sein ;-)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

20.09.2014, 18:20

Wenn du die Shader nach x86 kompilierst, sollte das doch möglich sein. :)

10

20.09.2014, 19:23

Dein Projekt Sieht sehr Interessant aus. Auch deine Engine :thumbup:

Werbeanzeige