Fysiikkaperusteinen renderöinti Vulkanilla
Korkala, Niko (2025)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025121135190
https://urn.fi/URN:NBN:fi:amk-2025121135190
Tiivistelmä
Tässä opinnäytetyössä kehitettiin fysiikkaperusteinen renderöintimoottori, millä pystyttiin vertailemaan eri grafiikkaohjelmointitekniikoita. Tavoitteina työllä oli saada 3D-objekteja piirrettyä ruudulle hyödyntäen Vulkan-grafiikkarajapintaa, joka antoi kehittäjälle täyden kontrollin grafiikkapipelinesta, varjosti 3D-objektit fysiikkapohjaisella renderöintimallilla sekä yksinkertaisemmilla tekniikoilla ja mahdollisti niiden vertailun keskenään.
Työn onnistumisen saavuttamiseksi, Vulkanin ja eri renderöintitekniikoiden teorian ymmärtäminen oli välttämätöntä. Teoriaosuudet ovat jaettu kahteen osaan, miten Vulkan toimii ja miten grafiikkapipelinen alustaminen toimii sekä fysiikkapohjaisen renderöinti tekniikan teoriassa. Renderöintitekniikan teoriassa keskityttiin BRDF-funktioon ja mikrofasettiteoriaan.
Kehitystyönä syntyi renderöintimoottori, millä voidaan renderöidä useita eri 3D-objekteja ja varjostaa niitä eri tekniikoilla. Moottorissa on pieni käyttöliittymä, josta pystyy valitsemaan, mitä renderöintitekniikkaa haluaa käyttää. Vaihtoehtoina on pelkän albedotekstuurin renderöinti, Phong-varjostus, Blinn-Phong varjostus, fysiikkaperusteinen varjostus sekä fysiikkaperusteinen + kuvapohjainen varjostus. Työssä verrattiin myös Disneyn ja Unreal Enginen PBR-malleja keskenään.
Tuloksena huomattiin suuria visuaalisia eroja tekniikoissa. Phong- ja Blinn-Phong tekniikoiden ongelmat olivat selvästi nähtävissä tuloksissa, mitkä pystyttiin korjaamaan fysiikkaperusteisella renderöinnillä ja kuvapohjaisen renderöintitekniikan lisääminen tehosti 3D-objektien realismia. Disneyn ja Unreal Enginen toteutusten välillä ei nähty paljon visuaalisia eroavaisuuksia.
Työn onnistumisen saavuttamiseksi, Vulkanin ja eri renderöintitekniikoiden teorian ymmärtäminen oli välttämätöntä. Teoriaosuudet ovat jaettu kahteen osaan, miten Vulkan toimii ja miten grafiikkapipelinen alustaminen toimii sekä fysiikkapohjaisen renderöinti tekniikan teoriassa. Renderöintitekniikan teoriassa keskityttiin BRDF-funktioon ja mikrofasettiteoriaan.
Kehitystyönä syntyi renderöintimoottori, millä voidaan renderöidä useita eri 3D-objekteja ja varjostaa niitä eri tekniikoilla. Moottorissa on pieni käyttöliittymä, josta pystyy valitsemaan, mitä renderöintitekniikkaa haluaa käyttää. Vaihtoehtoina on pelkän albedotekstuurin renderöinti, Phong-varjostus, Blinn-Phong varjostus, fysiikkaperusteinen varjostus sekä fysiikkaperusteinen + kuvapohjainen varjostus. Työssä verrattiin myös Disneyn ja Unreal Enginen PBR-malleja keskenään.
Tuloksena huomattiin suuria visuaalisia eroja tekniikoissa. Phong- ja Blinn-Phong tekniikoiden ongelmat olivat selvästi nähtävissä tuloksissa, mitkä pystyttiin korjaamaan fysiikkaperusteisella renderöinnillä ja kuvapohjaisen renderöintitekniikan lisääminen tehosti 3D-objektien realismia. Disneyn ja Unreal Enginen toteutusten välillä ei nähty paljon visuaalisia eroavaisuuksia.
