Όταν η συζήτηση έρχεται στο τομέα των γραφικών, όλοι συνήθως ενστικτωδώς σκεφτόμαστε πως όσο πιο δυνατό είναι το hardware, τόσο καλύτερα θα αποδώσουν και τα γραφικά. Φυσικά. Αυτή είναι η γενική αλήθεια αλλά η άριστη απόδοση των γραφικών σε ένα παιχνίδι δεν είναι μοναχά αποτέλεσμα του γυμνού μετάλλου (bare metal), όπως λέμε, αλλά προέρχεται κατόπιν αποδοτικού προγραμματισμού του παιχνιδιού μέσα από τα διάφορα Application Programming Interfaces (aka APIs) μέσω των οποίων οι προγραμματιστές δημιουργούν τους γραφικούς μηχανισμούς στα παιχνίδια. Ίσως για εσάς, το πιο γνωστό από τα APIs αυτά να είναι το πολυφημισμένο για το Windows gaming ήδη από τις πρώτες εκδόσεις των Windows, DirectX 3D, με την τελευταία έκδοσή του DirectX 12 ενώ το Vulkan απλά να το έχετε ακουστά.

vulkan-1

Για να μπορέσουμε να μιλήσουμε όμως για το Vulkan API ίσως θα ήταν φρόνιμο να δώσουμε μια σύντομη παρουσίαση στον ορισμό του “API” καθώς έτσι θα μπορέσουμε να καταλάβουμε καλύτερα τα δομικά μέρη του Vulkan και γιατί αυτά καθίστανται σημαντικά για την εξέλιξη τόσο των hardware setups τα οποία θα χρησιμοποιούμε για gaming αλλά και το πως θα χρησιμοποιηθεί η συγκεκριμένη επιφάνεια προγραμματισμού.

Ως API, ορίζεται μια συλλογή εργαλείων και πρωτοκόλλων με τα οποία κάποιος υποβοηθάται στη δημιουργία ενός λογισμικού ή εφαρμογής, όπως παραδείγματος χάρη, ένα παιχνίδι. Η χρήστη ενός τέτοιου API μπορεί να προορίζεται για εφαρμογές στο Internet, για κάποιο σύστημα βάσεων δεδομένων ή ακόμη και για το προγραμματισμό hardware (κάτι αντίστοιχο με τον προγραμματισμό συσκευών σαν το Arduino). Όπως η γραφική διεπαφή (GUI) μιας εφαρμογής η οποία βοηθάει σε μεγάλο βαθμό το χρήστη και απλουστεύει τη διαδικασία χρήσης της εφαρμογής, έτσι και ένα application programming interface κάνει τη δουλειά του προγραμματιστή πιο εύκολη, καθώς του παρέχει τα εργαλεία για να χρησιμοποιήσει συγκεκριμένες τεχνολογίες πιο αποδοτικά.

vulkan

Το Vulkan, συγκεκριμένα, είναι ένα API το οποίο προορίζεται για τον προγραμματισμό γραφικών εφαρμογών με cross-platform παρουσία (υποστηριζόμενο από όλα τα συστήματα, Android/Windows/Linux/MacOS) το οποίο όμως παρουσιάζει και εξαιρετικές computing δυνατότητες, το οποίο ίσως το κάνουν μια καλή επιλογή για password cracking/brute forcing.

Παρουσιάστηκε για πρώτη φορά από τη Khronos Group στο Google Developer Conference του 2015 ενώ η σταθερή έκδοσή του ήρθε στα χέρια μας στις 26 Αυγούστου 2016. Το Vulkan, προσπαθεί να επιτύχει την ευρεία χρήση του σε ποικίλλα συστήματα, κάτι αντίστοιχο δηλαδή με την κυριαρχία του OpenGL.

Αυτή του η προσπάθεια βασίζεται σε δύο κύριους άξονες:

1. Το Vulkan API είναι cross-platform 

Το γεγονός πως το Vulkan είναι διαθέσιμο για παντός τύπου συστήματα, του δίνει πλεονέκτημα εναντίον των υπολοίπων API, όπως είναι το DirectX ή το Mantle, τα οποία είναι διαθέσιμα μόνο για το Microsoft Windows. Η διάθεση του Vulkan σε πλατφόρμες όπως το Android ή το Linux και το Windows, μένει να σημάνει νέους πολυτελείς τίτλους οι οποίοι εύκολα θα μεταφέρονται από τα desktop συστήματα στις κινητές μας συσκευές ή και αντίστροφα.

2. Το Vulkan API προσφέρει χαμηλότερα ποσοστά χρήσης του επεξεργαστή 

Όπως και το DirectX 12, Vulkan, μετατοπίζει μεγάλο μέρος των πληροφοριών προς επεξεργασία από τη CPU στη GPU και έτσι δίνει τη δυνατότητα στη CPU να διατηρεί χαμηλά τα ποσοστά χρήσης της, κάτι που συνεπάγεται και με μικρότερες θερμοκρασίες και κατ’ επέκεταση, themal throttling. Αυτό, ίσως αποτελέσει groundbreaking στοιχείο για πολλά grapics APIs καθώς δεν είναι απίθανο να βλέπουμε συστήματα με επεξεργαστές Atom/Sempron να είναι mainstream για gaming υψηλών αποδόσεων καθώς η “ανθιυγεινή εργασία” θα γίνεται στη κάρτα γραφικών. Συστήματα όπως notebook και laptop θα μπορούσαν να είναι η νέα γενιά των βαρέων βαρών gaming συστημάτων.

vulkan_02

Ακόμη, το Vulkan API ίσως καταφέρει και μετριάσει το αιώνιο πρόβλημα των shaders, για τα οποία μέχρι σήμερα, υπήρχε η γενική συμβουλή “disable shaders”. Αυτό επιτυγχάνεται καθώς τα shaders στο Vulkan αντιμετωπίζονται με διαφορετικό τρόπο από ότι στο OpenGL στο οποίο κάθε drive αναγκάζεται να φορτώσει έναν compiler έτσι ώστε να δημιουργήσει τα shaders, αλλά σε αντίθεση, στο Vulkan, γίνεται ένα pre-compilation των shaders σε μια binary μορφή με την ονομασία SPIR-V, κάτι το οποίο επιτυγχάνει μικρότερα loading times και επιτρέπει να χρησιμοποιηθούν περισσότερα και μεγαλύτερα shaders ανά σκήνη.

Μέχρι σήμερα, δεν υπάρχουν πολλοί τίτλοι οι οποίοι να έρχονται με υποστήριξη του Vulkan, αλλά αυτό σίγουρα θα αλλάξει στο άμεσο μέλλον. Για την ώρα, το API χρησιμοποιείται σε τίτλους όπως το “The Talos Principle” το οποίο είναι το πρώτο παιχνίδι που υποστηρίζει rendering μέσω του Vulkan αλλά και σε τίτλους όπως το Doom και το Dota 2.

Το γεγονός που μας κάνει αισιόδοξους για τη χρήση του Vulkan σε περισσότερους τίτλους είναι το γεγονός πως ολοένα και περισσότερες game engines διαθέτουν υποστήριξη για το Vulkan. Engines όπως η Unreal, η CryEngine αλλά και η Source 2 είναι έτοιμες να κάνουν χρήστη του Vulkan για να δημιουργήσουν το επόμενο gaming αριστούργημα.

Vulkan-2016-Transparent-bg

Τα ερωτήματα που δημιουργούνται από το νέο αυτό API είναι πολλά αλλά τα κυριότερα μπορούν εύκολα να συμπυκνωθούν σε λίγες αράδες: είναι έτοιμος ο κόσμος του gaming development να υιοθετήσει ένα API άλλο από το DirectX και μάλιστα να το κάνει με τρόπο που να δώσει ώθηση στο mobile gaming, την ώρα που στερεί έσοδα από τις εταιρίες παραγωγής CPU ?

ΑΦΗΣΤΕ ΕΝΑ ΣΧΟΛΙΟ