Learning Centre

Using framegraphs for efficient usage of low level graphics APIs

 |  Login

Show simple item record

dc.contributor Aalto-yliopisto fi
dc.contributor Aalto University en
dc.contributor.advisor Hirvonen, Antti
dc.contributor.author Teemaa, Taavi
dc.date.accessioned 2019-08-25T15:05:33Z
dc.date.available 2019-08-25T15:05:33Z
dc.date.issued 2019-08-19
dc.identifier.uri https://aaltodoc.aalto.fi/handle/123456789/39846
dc.description.abstract Graphics processing unit (GPU) is separate execution unit that is controlled by the CPU and that is used for accelerating the rendering of graphics at interactive rates. To get most out of the GPUs, graphically demanding applications, like modern computer games, can use GPUs directly through special application programming interfaces (APIs). The APIs have been traditionally quite high level, so they are easy for the programmers to use. However, in the recent years multiple new low level graphics APIs - Vulkan, Direct3D 12 and Metal - have been created, because the high level of abstraction in the older APIs has led to performance issues, both on GPU and CPU side. When used correctly, rendering can be done more efficiently with the new low level APIs, but because of the low level of abstraction, they are harder and more error prone to use for the application programmers. In this thesis we implement a method called framegraphs, that will make the new low level APIs easier to use while still maintaining the performance benefits. Framegraph will make it easier to write error free and more modular code. In this thesis we first go through the relevant history of modern GPUs and how the GPUs operate and how they are controlled through the APIs. Then we go through the differences in the high and low level graphics APIs and explain how the differences affect rendering engine architecture. We go through our framegraph implementation and analyze it from the usability perspective. Finally, we go through multiple improvement ideas, on how to make the framegraph implementation more efficient performance wise and what we could add to the implementation in the future, to make it better. en
dc.description.abstract Grafiikkasuorittimella voidaan suorittaa tehokkaasti laskutoimituksia kuvien renderöintiin liittyen ja sitä ohjataan keskussuorittimella. Graafisesti vaativat ohjelmistot, kuten modernit tietokonepelit, käyttävät grafiikkasuoritinta suoraan erityisten grafiikkarajapintojen kautta. Grafiikkarajapinnat ovat perinteisesti mahdollistaneet ohjelmoijille grafiikkasuorittimen käytön suhteellisen korkealla tasolla. Kuitenkin viime vuosina on ohjelmoijien käyttöön tullut monia uusia matalamman abstraktiotason grafiikka rajapintoja, joita ovat Vulkan, Direct3D 12 ja Metal. Nämä uudet matalamman tason rajapinnat luotiin, koska korkea abstraktiotaso grafiikkaarajapinnoissa johti tehokkuusongelmiin sekä grafiikka- että keskussuorittimella. Uusia matalan tason rajapintoja käyttämällä voidaan siis luoda tehokkaampia ohjelmia, mutta matalan abstraktiotason vuoksi näiden rajapintojen käyttö on ohjelmoijille vaikeampaa. Tässä diplomityössä käytämme renderöintiverkkoja uusien matalan tason grafiikkarajapintojen käytön helpottamiseksi. Renderöintiverkkojen tarkoitus on helpottaa ohjelmoijia tuottamaan ohjelmakoodia, jossa on vähemmän virheitä ja joka on modulaarisempaa, menettämättä tehohyötyjä jotka matalan tason grafiikkarajapinnat tuovat mukanaan. Käymme työssä aluksi läpi grafiikkasuorittimien historiaa ja toimintaa, jonka jälkeen tutustutaan matalan ja korkean tason grafiikkarajapintojen eroihin ja siihen, miten nämä erot vaikuttavat grafiikkaohjelmistojen sisäisiin rakenteisiin. Sitten käymme läpi meidän renderöintiverkko toteutuksen ja arvioimme sitä käytettävyysnäkökulmasta. Lopuksi käymme läpi monia parannusideoita, miten meidän toteutuksesta voisi tehdä tehokkaamman ja mitä toimintoja siihen voisi lisätä käytettävyyden parantamiseksi. fi
dc.format.extent 73 + 3
dc.language.iso en en
dc.title Using framegraphs for efficient usage of low level graphics APIs en
dc.title Renderöintiverkkojen käyttö matalan tason grafiikkarajapintojen käytön helpottamiseksi fi
dc.type G2 Pro gradu, diplomityö fi
dc.contributor.school Perustieteiden korkeakoulu fi
dc.subject.keyword computer graphics en
dc.subject.keyword rendering engine en
dc.subject.keyword graphics APIs en
dc.subject.keyword vulkan en
dc.subject.keyword direct3D en
dc.identifier.urn URN:NBN:fi:aalto-201908254907
dc.programme.major Computer Science fi
dc.programme.mcode SCI3042 fi
dc.type.ontasot Master's thesis en
dc.type.ontasot Diplomityö fi
dc.contributor.supervisor Lehtinen, Jaakko
dc.programme Master’s Programme in Computer, Communication and Information Sciences fi
local.aalto.electroniconly yes
local.aalto.openaccess no


Files in this item

Files Size Format View

There are no open access files associated with this item.

This item appears in the following Collection(s)

Show simple item record

Search archive


Advanced Search

article-iconSubmit a publication

Browse

Statistics