Skip to content

Latest commit

 

History

History
171 lines (163 loc) · 6.8 KB

notizen.org

File metadata and controls

171 lines (163 loc) · 6.8 KB

Links

Konfigurationssystem

  • Alle Daten stehen in der json-Datei
  • Alle Subsysteme kriegen ein json-Objekt
  • Von der Kommandozeile kann man jede json-Option überschreiben
  • Problem: Arrays: –sun-direction=(1.0,1.0,1.0), wie einlesen? Im json zu sun-direction springen und dann Visitor. Der findet ein Array und versucht und visited seine Kinder

Stabilisierung

Overlaypass

Dazu gehören:

  • fps-Counter
  • Konsole

PP-Pass

Mit dem Paper von oben

cli_factories entfernen

Shadowmap blurren (Renderpass)

Frustumculling für bestimmte Renderpässe deaktivieren, für andere nochmal ausführen

Fürs Wasser nochmal ausführen, für Shadow deaktivieren

Neues Backend-Framework

Ideen für später

Terrain zufallsgenerieren

Farben statt Texturen bei Höhenfeld verwenden

Motivation hierzu: von hier

LOD für Models

Steuerung konfigurierbar machen

Terrainvereinfachung

Hierzu z.B. cgal

Kleinere Sachen

gizmo in math verfrachten

orthonormalize_gram_schmidt hinzufügen und gucken wie’s läuft

machine::input_repeat_callback fixen

fcppt::assign durch initializer_list ersetzen

height_map und water mit parameters-Klassen ausstatten

Die Nuggets sollten sich schön drehen

scene von intrusive auf was besseres umstellen

Eine instance trägt sich selber ein und aus und kriegt das Backend im Konstruktor.

camera::perspective in camera::projection umbenennen

Persistente Konsolenhistory

An allen Stellen auf functional_backend umsteigen

Präfixe in config.json auf Sektionen in json abbilden

foldl in gameover durch accumulate ersetzen

cout/cerr zu Konsole weiterleiten

height_map/calculate_point etc. dokumentieren und ggf. verbessern

Die Kamera fixen

Eine Egoshooterkamera funktioniert so: wenn die Maus auf der x-Achse bewegt wird, werden alle drei Gizmovektoren um $(0,1,0)$ gedreht

Aktivitäten

Neues Fontsystem

Ziele:

Man will Farben und Stile (fett, kursiv etc.) unterbringen sowie verschiedene Größen, das alles steuerbar mit einer kleinen DSEL etwa wie folgt:

draw_text(
  font_collection,
	size(15) >> color(black) >> "foo" >> (bold >> "bar") 
    >> italics >> size(20) >> "baz");

Man muss sich hier implizit auf ttf beschränken, weil andere Fontformate vermutlich bold/italics etc. anders modellieren. Eine font_collection muss eine Sammlung von geladenen ttf-Fonts sein ausgesucht nach:

  • Größe
  • Stil

In etwa so:

font_collection fonts(
  // Normal
  "default.ttf",
	// Bold
  optional<string>(),
	// Italics,
	"default_it.ttf",
	make_container<size_container>(15)(20)(25));

graphics::stats erweitern

Man könnte die Stats verallgemeinern: Ein “stat” ist eine textuelle Informationseinheit (z.B. Geschwindigkeit des Vehikels), die scoped beim “stats”-Objekt eingetragen werden kann. Details muss man sich noch überlegen.

Partikelsystem

Props/Ghosts sollen sich Normale anpassen können

Looping von Musik fixen

Man kann bei Streamingsounds loop einstellen, das funzt aber nicht richtig

Shadow Maps

Neues uniform-System aufsetzen

Teste orthografische Projektion aus Sicht der Sonne

Setze das Rendern der Shadowmap auf

  • Hierzu muss orthografisch projiziert werden aus sich der Sonne (Position?)
  • Der Vertexshader sollte nur projizieren
  • Der Fragmentshader sollte nur einen float rausschreiben, die Tiefe des Fragments
  • Die Szene muss in eine Textur gerendert werden

Per Kommandozeile die Tiefentextur in eine Datei schreiben

Den eigentlichen Tiefenalgorithmus implementieren

  • Der Heightmap-Vertexshader brauch dazu die mvp-Matrix des Lichtrenderns.
  • Für jeden Vertex v werden zwei Größen berechnet:
    1. vl = mvp_light * v
    2. vp = mvp * v
  • Gib vp und vl an den Fragmentshader weiter
  • Berechne aus vl die Texturkoordinate in der Shadowmap (selbe Technik wie beim Wasser)
  • Vergleiche den z-Wert von vp mit dem z-Wert in der Shadowmap, setze entsprechend die Pixel

Diffuses Modelshading

Musiklautstärke muss einstellbar sein

Nuggets aus game_inner rausziehen

“Nugget-Indikatoren” einbauen

random_point erweitern

Die Funktion sollte eine steepness_range bekommen (also ein Intervall in $[0,1]$) und generiert dann mit Hilfe des normalisierten Gradienten einen Punkt mit dieser Steilheit. Dei Funktion brauch dazu den normalisierten Gradienten, d.h. height_map muss den zur Verfügung stellen)

vehicle::speed_kmh muss relativ zu forward sein

Auto-Culling fixen

Autosound wird nicht moduliert

Auto in scene::manager integrieren

Alpha-Blending

  • Bisheriges Alphablending fixen, damit klar ist, wie man Alphablending prinzipiell umsetzt.
  • Auf binäres Alphablending umsteigen.

Approximationen erweitern

Es kommt noch approximation::exact hinzu, sowie cylinder_x, cylinder_y und cylinder_z. exact bekommt ein model::object_ptr

config.po wegmachen

In config.json Sektion “command-line”, in der nur String-Optionen reinkommen, po-Parser kopieren

Textur tst spiegelverkehrt