Het Bredase bedrijf Traverse Research werkt mee aan het opensourceproject rust-gpu, een port van de programmeertaal Rust naar de gpu. Volgens Jasper Bekkers van het bedrijf zijn bestaande talen voor het ontwikkelen van gpu-engines aan vervanging toe.
Vorige week verscheen rust-gpu op Github. Het doel van dit opensourceproject is ambitieus: het moet van Rust een eersteklas taal en ecosysteem voor gpu-code maken. Initiatiefnemers van het project zijn compiler engineer Ashley Hauck en rendering engineer Jasper Bekkers. Hauck werkt bij Embark Studios, een gamestudio die is opgericht door voormalige DICE-medewerkers. Bekkers is oprichter van Traverse Research uit Breda, een research & development-studio voor games en graphics gerelateerde technologie. We spraken Bekkers over zijn nieuwe project.
C++ en HLSL
"Eigenlijk begon dit verhaal al tien jaar geleden", vertelt Bekkers. "Ik heb in Breda de gameopleiding gedaan, voorheen IGAD aan de NHTV, nu Creative Media and Game Technologies aan de BUAS. Ik ben toen stage gaan lopen bij EA, waar ik ben blijven hangen. Ik heb onder andere aan de Frostbite-engine gewerkt en heb in die periode veel voor videokaarten geprogrammeerd.'Wij schrijven al onze software al in Rust'
" Bekkers werkte onder andere mee aan Star Wars: Battlefront, Mirror's Edge en Dragon Age: Inquisition. Het ontwikkelteam van Frostbite gebruikte C++. Wat betreft shadertaal was dat High-Level Shading Language, of HLSL, van Microsoft.
"Die talen zijn kwetsbaar voor bufferoverflows en daardoor onveilig, ze hebben geen package manager, en zijn foutgevoelig. Dat heb ik altijd jammer gevonden. Omdat we met een schone lei begonnen, konden we Rust voor al onze ontwikkelingen gebruiken en hopen we dat te moderniseren", aldus Bekkers. Toen zijn directe leidinggevende Embark Studio's oprichtte en hij zijn eigen bedrijf startte, ontstonden mogelijkheden om de zaken anders aan te pakken.
:strip_exif()/i/2003953156.jpeg?f=imagenormal)
"We werken met zes man op kantoor en bouwen onder andere mee aan het techplatform van Embark. Daarnaast bouwen we benchmarks voor hardwarebedrijven. Wij schrijven al onze software al in Rust en zijn daar erg tevreden over. Alle gpu-code zou eigenlijk ook in Rust geschreven moeten worden zodat we een goede integratie tussen gpu en cpu kunnen krijgen en makkelijk code kunnen delen."
Rust is een low-level programmeertaal die is ontwikkeld door Mozilla en deels geïnspireerd is op C. Het is vooral gericht op veiligheid en door afgebakend geheugenbeheer moeten stackoverflows en bufferoverflows tot het verleden gaan behoren. Het is met afstand de meest geliefde programmeertaal, afgaande op de Stack Overflow Developer Survey, en staat daarmee in schril contrast met C++. In augustus werd bekend dat Rust nog dit jaar zijn eigen stichting krijgt en daarmee loskomt van Mozilla. Dit moet duidelijk maken dat het een onafhankelijk project met een eigen juridische identiteit en bankrekening betreft. Het Rust Core Team hoopt zo meer investeringen voor verdere groei te kunnen aantrekken. Inmiddels wordt de programmeertaal door onder andere Discord, Microsoft, Dropbox en Facebook gebruikt.
/i/2003953244.png?f=imagenormal)
Bekkers: "C++ crasht vaak, is niet snel en is niet veilig." Volgens hem kosten bufferoverflows en geheugencorruptie tijdens het programmeren tijd en geld voor bedrijven. Naast de veiligheid zijn er meer 'Gameontwikkelaars zijn huiverig met betrekking tot nieuwe technologie'
voordelen aan Rust. Dat heeft bijvoorbeeld een packagessysteem, net als npm, en mogelijkheden om gpu- en cpu-code naadloos te integreren. Maar volledig overstappen op Rust is voor de grote gamebedrijven nog een stap te ver. "Gameontwikkelaars zijn huiverig met betrekking tot nieuwe technologie. Een grote game-engine omvat al snel tien miljoen regels code. De hele industrie draait op C++ en ontwikkelaars zeggen al snel dat ze hier alles mee kunnen. Bovendien gebruiken ze als argument dat zodra je een nieuwe programmeertaal aan zo’n codebase toevoegt, het hele team dan die taal moet kennen."
Opvolger van Rust Like Shading Language
Rust-gpu moet een begin vormen om een modern alternatief te bieden. Of eigenlijk, de voorganger van rust-gpu vormde dat begin: Rust Like Shading Language, of RLSL, een project dat Maik Klein van Embark drie jaar geleden startte. Klein had geen tijd meer voor RLSL, maar werkt nu wel mee aan rust-gpu, dat voortborduurt op zijn project. In totaal werken nu acht personen aan het project en het doel is om een gemeenschap van ontwikkelaars op te bouwen.
Voorlopig bevindt het project zich in een vroege fase. Bij versie 0.1 werken alleen nog het compilen en draaien van erg simpele shaders en het compilen van delen van de Rust Core Library. Bekkers heeft als voorbeeldshader een lucht ontwikkeld. Het project heeft een roadmap met zes levels opgesteld, met als eindstadium 'all the cool kids use shaded rust'. Nu is er nog sprake van het prototype-stadium.
:strip_exif()/i/2003953158.jpeg?f=imagenormal)
Volgens Bekkers moet het Rust-ecosysteem voor gpu's vooral voordelen bieden aan indiegamestudio's. Die zijn nu voor een groot deel afhankelijk van de Unreal Engine of Unity en hebben niet de resources voor eigen inbreng. In zijn visie ontstaat er een modulair platform dat beter schaalt dan het werk aan die engines. "In het ideale geval ontstaat er een community die eigen packages maakt en waarbij iemand zegt ‘ik heb deze vette shader gebouwd’, die anderen dan weer kunnen gebruiken."
Traverse Research merkt dat gameopleidingen alvast meer aandacht beginnen te krijgen voor Rust. "We hebben contact met HBO- en universitaire opleidingen en zij komen naar ons met de vraag 'moeten we al aan de slag met Rust?'. Iedere stagiair die bij ons werkt, wil na twee maanden in ieder geval niet meer terug naar C++."