background image

• Μετα-επεξεργασία (post-processing effects: bloom, HDR, motion blur).

Οι σύγχρονες μηχανές υποστηρίζουν data-oriented σχεδίαση, όπου τα δεδομένα (meshes,

textures) οργανώνονται με τρόπο βελτιστοποιημένο για την GPU, ώστε να επιτυγχάνεται μέγι-

στη απόδοση ([14]).

Στόχοι του Rendering Engine

• Αφαιρετικό API: να επιτρέπει στον προγραμματιστή να δουλεύει σε ανώτερο επίπεδο

(mesh.draw()) χωρίς να γράφει χαμηλού επιπέδου κλήσεις. Να είναι ανεξάρτητος από

την υλοποίηση στην βάση (OpenGl, DirectX, Vulcan, ...).

• Απόδοση (Performance): υποστήριξη batching, frustum culling, level-of-detail (LOD).

• Ευελιξία (Flexibility): modular σύστημα shaders, πολλαπλά rendering passes.

• Υποστήριξη 2D και 3D: sprites και tilemaps για 2D, meshes, skeletal animation και φω-

τισμό για 3D.

Βασικές Δομές

• Στην πράξη, το rendering system βασίζεται σε πυρηνικές κλάσεις/δομές, όπως:

• Mesh / Model : περιέχει vertices, indices, normals, UVs.

• Material / Shader : ορίζει πώς θα αποδοθεί ένα αντικείμενο (χρώμα, υφή, εφέ).

• Camera : καθορίζει view/projection matrices.

• Renderer : συντονίζει την απόδοση της σκηνής.

Ο ([8]) έδειξε ότι το rendering είναι ένα από τα πιο πυκνά και «κεντρικά» modules,

αφού εξαρτάται από το math library (μετασχηματισμοί), το resource management (φόρτωση

textures/shaders), και το platform layer (δημιουργία παραθύρου, context).

Στις εμπορικές μηχανές:

Η Unity χρησιμοποιεί Scriptable Render Pipeline (SRP) για modular rendering.

Η Unreal Engine προσφέρει deferred + forward rendering, με προηγμένα εφέ φωτισμού.

Η Godot παρέχει rendering abstraction ώστε να υποστηρίζει πολλαπλά backends (OpenGL,

Vulkan).

2.2.5

Διαχείριση εισόδου (Input Handling)

Η διαχείριση εισόδου είναι το υποσύστημα της μηχανής που είναι υπεύθυνο για τη συλλογή

και ερμηνεία σημάτων από τον παίκτη μέσω πληκτρολογίου, ποντικιού, gamepad, ή άλλων

συσκευών. Χωρίς αυτήν, δεν υπάρχει αλληλεπίδραση με τον κόσμο του παιχνιδιού. Η διαχείριση

12