TIES471 Reaaliaikainen renderöinti

Samankaltaiset tiedostot
Tilanhallintatekniikat

NÄKYMÄNHALLINTATEKNIIKAT 3D- GRAFIIKKAMOOTTOREISSA

3D-renderöinti OpenGL-ohjelmointirajapinnalla

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

3D-Maailman tuottaminen

Esityksen sisältö. Peruskäsitteitä. 3D Grafiikka tietokonepeleissä. Piirto- ja taustapuskuri

Sisällys. T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL?

Reaaliaikainen karvapeitteen piirtäminen näytönohjaimella

TIES471 Reaaliaikainen renderöinti

T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi

CUDA. Moniydinohjelmointi Mikko Honkonen

TIES471 Reaaliaikainen renderöinti

Graikka yleisesti tietokonepeleissä

Tietokonegrafiikka. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014

Anssi Höykinpuro OPENGL ES VARJOSTIMET KAJAK3D PELIMOOTTORISSA

T Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka

DirectX 11 -grafiikkamoottori ja BRDF-mallit

TIES471 Reaaliaikainen renderöinti

3D-grafiikkamoottorin toteutus

sivu 1 SURFCAM V5 JÄRJESTELMÄN VAATIMUKSET

Renderöintimoottorin toteutus

Dataorientoituneen renderöijän toteuttaminen OpenGL:llä

Peliohjelmointirajapinnoista

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Anvia IT-palvelut Oy Tuotetiedot. Tiedot. Tuotenumero FUJITSU CELSIUS W550 + K1200. Tuotetiedot.

Matias Kangasjärvelä. Vulkanin Perusteet. Insinööri (AMK), tietotekniikka

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Sami Moisio. 2D-grafiikkamoottori. Opinnäytetyö Tietotekniikka / Peliohjelmointi

3D-grafiikkamoottori mobiililaitteille

Visualisoinnin perusteet

Tekstuurien määritteleminen pinnoille VRML 1.0 -syntaksia käyttäen

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Anna-Liisa Mattila 3D-käyttöliittymäkomponenttikirjaston toteuttaminen web-tekniikoilla. Diplomityö

3D-PELIMOOTTORIN TOTEUTUS. CASE: Project Cactus

Z-puskurin optimointi: ATI Hyper-Z

Luento 6: Geometrinen mallinnus

Ohjelmistopäivitysohje

Peliohjelmointirajapinnoista

T Tietotekniikan peruskurssi: Tietokonegrafiikka. Tassu Takala TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Jouko Nielsen. Ubuntu Linux

Reaaliaikaiset varjoalgoritmit. Atso Kauppinen

GRAAFINEN PELIOHJELMOINTI

MALLIN RENDERÖINTI KUVAKSI TAI VIDEOKSI SOLIDWORKS 2010 VERSIOLLA

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

WINE API ja Virtualisointiohjelmistot

Controlling the Camera of 3D World by Using Real Time Face Tracking

T Studio 4. luento 1: kurssin järjestelyt k-2006 tietokonegrafiikan perusteita Tassu Takala 1

T Studio 4. luento 1: kurssin järjestelyt k-2007 ( www) aihepiirin yleisesittely tietokonegrafiikan perusteita Tassu Takala 1

NÄYTÖNOHJAIMEN SUORITUSKYKYTESTIT

VARJOSTINOHJELMIEN KÄYTTÖÖN PERUSTUVAN REAALIAIKAISEN GRAFIIKAN OHJELMOINTI

3D-kaupungin suunnittelu ja toteutus osana WebGL-multimediasovellusta

Coolselector Asennusohje

Visma L7.10 laite- ja ohjelmistovaatimukset

TIES471 Reaaliaikainen renderöinti

IDS7 TYÖASEMAMÄÄRITYKSET VERSIO 20.1

SMART Notebook -tuoteperhe

Kontrollilaitteet. Arsenaali

OpenGL:n perusteet - Osa 1: Ikkunan luominen

Luku 10: Testaus ja optimointi. Pelien testaus Testityyppejä Suorituskyvyn analysointi Optimointikikkoja Grafiikkaliukuhihnan optimointi

Ilmaisuvoimaisen siluettiviivan renderöiminen reaaliaikaisissa kolmiulotteisissa ympäristöissä

JOHDATUS TEKOÄLYYN TEEMU ROOS

Kehittyneet ominaisuudet

Viljo-Praktiikka ja Kirjanpito -ohjelman versio 3.05 asennusohje uudet käyttäjät

Toni Harju. Grafiikkamoottori. Metropolia Ammattikorkeakoulu. Insinööri (AMK) Tietotekniikka. Insinöörityö

Mobiilimaailma ja tietoturva. Erkki Mustonen, tietoturva-asiantuntija F-Secure Oyj

3D-grafiikan optimointi mobiilialustalle Unity-ympäristössä

4. Esittäminen ja visualisointi (renderöinti)

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Microsoft Security Essentials (MSE) asennuspaketin lataaminen verkosta

TI10 Joni Hämäläinen & Jan Lampikari

Sovellusarkkitehtuurit

KUVAILULEHTI )+, -!! ". " $.#$!!.!$## ""#" )+, -! # (//' "! $". 0!! #$$$!, -!!! $## ##, -!! 0!, -! #..!!! #, -!! 0!!#$%# ## #"## " ##!##%$%# 0#*!"!!

10. Esitys ja kuvaus

Tekstinkäsittelystä. H4: Tekstinkäsittelyn perusharjoitus. Toimisto ohjelmista

XNA-peliohjelmointiympäristö

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

Malleja ja menetelmiä geometriseen tietokonenäköön

T Studio 4. luento 1: kurssin järjestelyt k-2005 tietokonegrafiikan perusteita Tassu Takala 1

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Interaktiiviset LED monikosketusnäytöt

HTML5 video, audio, canvas. Mirja Jaakkola

PixelFlow. Hans-Erik Grönlund 46549W

20 Kollektorivirta kun V 1 = 15V Transistorin virtavahvistus Transistorin ominaiskayrasto Toimintasuora ja -piste 10

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

Versio: Sectra PACS 19.3

JUHTA - Julkisen hallinnon tietohallinnon neuvottelukunta

Ilkka Hyyryläinen 2D-PELIMOOTTORI TAUSTALATAUSOMINAISUUKSILLA

JOHDATUS TEKOÄLYYN TEEMU ROOS

T Studio 4. kurssin järjestelyt k-2008 ( www) aihepiirin yleisesittely tietokonegrafiikan ja vuorovaikutustekniikan perusteita

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

TIMO SALOKAS MICROSOFTIN DIRECTX-TEKNIIKKA JA ANTIALIASOINTI. Kandidaatintyö

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Juulin kehittäminen: tilannekatsaus

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Aditro Tikon ostolaskujen käsittely versio 6.2.0

T Johdatus tietoliikenteeseen ja multimediatekniikkaan: Tietokonegrafiikka. Tassu Takala. Mediatekniikan laitos

Transkriptio:

TIES471 Reaaliaikainen renderöinti

Kotitehtävä

2.3.3 Muistin kaistanleveys Koko kaistanleveyden kustannus: B = d * Zr + o(d) * (Z w + C w + T r ) Lisätään vielä tekstuuri välimuisti (texture cache) vaikutus m b = d * Z r + o(d) * (Z w + C w + m * T r ) = d * Z r + o(d) * Z w + o(d) * C w + o(d) * m * T r = B w + B c + B t = rasterointi yhtälö Esimerkki m = 1, d = 6, T r = 128 tavua, C w = Z r = Z w = 4 tavua b = 6 * 4 + (1 + 1 + 1 + 1 + 1 + 1 ) * (4 + 4 + 128) 2 3 4 5 6 = 357 tavua per pikseli Esimerkki m = 0.25 b = 122 tavua per pikseli Rasteroitaessa 72 fps FullHD resoluutiolla 72 * 1920 * 1080 * 122 tavua/s = 18214502400 = 18.2 gigatavua/s Lähde: Real-time rendering, 3rd edition

2.3.4 Latenssi Latenssi on aika kyselyn esittämisestä vastauksen saamiseen. Liukuhihnalla, jolla on n työvaihetta, kestää n kellosykliä päästä koko liukuhihnan päästä toiseen; latenssi n kellosykliä. GPU (233 MHz), jonka liukuhihnalla on 700 työvaihetta päästään läpi 700 kellosyklissä (ideaalinen). 700 / 233 000 000 = 3 µs Taajuus 50 Hz => 1/50 = 20 ms / per kuvakehys EI ongelmaa latenssista Lähde: Real-time rendering, 3rd edition

2.3.5 Suorituskyvyn kehitys Mooren laki: transistorien määrä tuplaantuu kahdessa vuodessa. Prosessorien laskentakyky kasvaa 70 % (?) vuodessa. DRAM:in kaistanleveys kasvaa 25 % (?) vuodessa. Latenssi kasvaa 5 % (?) vuodessa. Puskuripakkausella pyritään säästämään muistikaistaa. Tarkastellaan puskuripakkausta myöhempänä tarkemmin. Lähde: Real-time rendering, 3rd edition

3.2 Grafiikkarajapinnat Grafiikkarajapinnat ovat ohjelmointirajapintoja (API) grafiikkakortin käyttöön. OpenGL ja Direct3D ovat kaksi merkittävintä ohjelmistoteollisuudessa käytettävää grafiikkarajapintaa. Grafiikkarajapintojen ohjelmointimallit olettavat, että piirtoprimitiivit prosessoidaan peräkkäin ja atomisesti. Grafiikkarajapinnat sallivat prosessorilta suorat luku ja kirjoitusoperaatiot kehyspuskurimuistiin.

3.2.1 OpenGL OpenGL on käyttöjärjestelmä ja laitteistoriippumaton ohjelmointirajapinta grafiikkakortin käyttöön. OpenGL on tilakone, joka koostuu CPU:lla (asiakas) ajettavaan rajapintaan ja GPU:lla (palvelin) näytönohjaimen ajurin ohjaaviin suoritusyksiköihin. OpenGL:n viimeisin versio (4.4) on julkaistu heinäkuussa 2013. http://www.opengl.org/documentation/current_version/ Grafiikkakirjasto sisältää yli kaksi sataa funktiota ja proseduuria, jotka mahdollistavat korkeatasoisten kuvien tuottamisen, erityisesti kolmiulotteisista malleista. OpenGL vaatii toimiakseen grafiikkakortin, jossa on näyttöpuskuri.

3.2.1 OpenGL Ohjelmoijalle OpenGL on joukko komentoja, jotka mahdollistavat geometristen kappaleiden esittämisen kaksi tai kolmiulotteisesti ja niiden renderöinnin näyttöpuskuriin. Vastaavasti implementoijalle OpenGL on joukko komentoja, jotka vaikuttavat grafiikkakortin toimintaan. OpenGL:n piirtoprimitiivejä ovat piste (GL_POINTS), viiva (GL_LINES), viivasarja (GL_LINE_STRIP), viivasilmukka (GL_LINE_LOOP), monikulmio (GL_POLYGON), nelikulmio (GL_QUAD) vanha?, nelikulmiosarja (GL_QUAD_STRIP), kolmio (GL_TRIANGLES), kolmiosarja (GL_TRIANGLE_STRIP) ja kolmioviuhka (GL_TRIANGLE_FAN).

3.2.1 OpenGL Primitiivit muodostetaan yhdestä tai useammasta verteksistä. Koordinaatit, värit, normaalit, tekstuurikoordinaatit on liitetty verteksiin ja jokainen verteksi prosessoidaan itsenäisesti, järjestyksessä ja samalla tavalla. Verteksijoukkoa leikattaessa primitiivien pitää kuitenkin sopia tarkasteltavaan alueeseen, joka käytännössä tarkoittaa mahdollisesti verteksidatan muokkausta ja uusien verteksien muodostusta. OpenGL 4 versiossa julkaistiin tessalaatiotekniikka, jolla voidaan uudella tavalla muodostaa pintakuvioita. Tessalaatiotekniikan käyttöön ovat omat suoritinkäskyt. Tessalaatiotekniikalla geometrista mallia ei tarvitse muodostaa monikulmioista vaan malli muodostetaan "tilkuista", jotka voivat olla käyrä tai alue.

3.2.1 OpenGL OpenGL:än johdannaiset (extensions) mahdollistavat yksittäisten valmistajien uusien toiminnallisuuksien lisäämisen OpenGL-standardiin. Johdannaiset voivat sisältää uusia funktioita ja vakioita. Niiden tarkoituksena voi olla olemassa olevien OpenGL-funktioiden rajoitusten poistot. Johdannaiset, jotka ns. arkkitehtuurinkatselmuslautakunta (Architecture Review Board) hyväksyy, saavat etuliitteen ARB.

3.2.2 OpenGL OpenGL ES on tarkoitettu sulautettuihin järjestelmiin; konsoleihin, älypuhelimiin, kulkuneuvoihin ja eri laitteisiin. https://www.khronos.org/news/press/khronos-releases-opengl-es-3.1- specification HTML5 canvasissa toimii WebGL, joka perustuu OpenGL ES 2.0. WebGL:ssä voidaan käyttää GLSL-varjostinohjelmia kuten OpenGL ES 2.0:ssa. https://www.khronos.org/registry/webgl/specs/1.0/

3.2.3 Direct3D Direct3D on osa Microsoftin DirectX ohjelmointirajapintaa (API). Direct3D kehitetty Microsoft Windows käyttöjärjestelmää varten. Sitä voidaan käyttää muissa käyttöjärjestelmissä Wine ohjelmiston kautta. Direct3D sisältää matalantason grafiikkarutiinit grafiikkakortin käyttöön. Direct3D 8.0 : ohjelmoitavat verteksi- ja pikselivarjostimet Direct3D 10.0 : varjostin malli 4.0, geometriavarjostimet lisättiin. Direct3D 11 : tessaatiotekniikka, säikeistetty renderöinti yhteen Direct3D kontekstiin, laskennallisuus lisättiin varjostinohjelmointiin.

3.2.3 Direct3D vs. OpenGL Direct3D- rajapintakirjaston päivitys tapahtuu ajurien päivityksellä. Uusimpien ajurien asennuspaketti ladataan verkkopalvelimelta ja asennetaan. OpenGL:ssä on ns. Plug-in arkkitehtuuri, jossa päivitetään edellä mainittua johdannaisia (extensions). OpenGL:än hyvänä puolena on alustariippumattomuus. Mainittavia eroja renderöinnissä on lankamallimoodissa monikulmioiden käsittely. Direct3D piirtää suorakaiteen kahtena kolmiona, kun taas OpenGL piirtää oikean suorakaiteen. Lähde: Real-time rendering, 3rd edition

3.3 Ohjelmoitavat varjostimet Yleinen varjostinydin (common-shader core) tarjoaa yhteisen ohjelmointimallin verteksi-, pikseli- ja geometriavarjostimille. Yleinen varjostinmalli on rajapinta (API). Yhtenäiset varjostimet on grafiikkaprosessorin ominaisuus. Varjostimien ohjelmointiin tarkoitettuja C-tyylisiä kieliä ovat HLSL, Cg ja GLSL. Ohjelmat käännetään laiteriippumattomaksi välikieleksi (IL) ja edelleen assembleriksi. Jokaisella varjostinohjelmalla on kiinteitä (uniform) syötteitä, jotka pysyvät muuttumattomina piirtokutsun aikana. Verteksi ja pikseli syötteet ovat muuttuvia (varying) syötteittä. Tekstuuri on kiinteä taulukkosyöte. Varjostinohjelmien tulosteet ovat rajattuja. Direct3D:ssä assembler toimii ns. virtuaalikoneena. Virtuaalikone tarjoaa rekisterit eri tyyppisille syötteille ja tulosteille. Lähde: Real-time rendering, 3rd edition

3.3 Varjostin ytimen virtuaalikone 4096 rekisteriä Väliaikaisrekisterit Muuttuvat syöte rekisterit (input) 16 / 16 / 32 rekisteriä Virtuaalikone Tulosrekisterit 16 / 32 / 8 rekisteriä Vakio rekisterit Tekstuurit 4096 rekisterin 16 puskuria 512 tekstuurin 128 taulukkoa Lähde: Real-time rendering, 3rd edition

3.3.1 Verteksivarjostin Verteksivarjostimella voi muuttaa, luoda tai sivuttaa kolmion vertekseihin (kulmapisteisiin) liittyviä tietoja; väri, normaali, tekstuurikoordinaatteja tai paikkaa. Verteksivarjostin ei voi tuhota verteksejä eikä luoda uusia verteksejä. Verteksivarjostin ei tiedä mitään kolmioverkon (triangle mesh) rakenteesta. Verteksivarjostin tulostaa vähintään paikan koordinaatit. Yleensä verteksivarjostin suorittaa muunnoksen malliavaruudesta leikkausavaruuteen. Nykyisillä grafiikkaprosessoreilla verteksejä prosessoidaan rinnakkain, koska joka verteksi käsitellään yksitellen. Verteksivarjostimella voidaan luoda efektejä: varjotilavuuksia (shadow volume), sekoittaa verteksejä (blending) ja silhuetteja. Lähde: Real-time rendering, 3rd edition

3.3.1 Verteksivarjostin Efektejä verteksivarjostimella: linssiefektejä (kalan silmä), vedenalainen vääristymä, kappaleiden vääntö ja taivutus, vaatteiden ja veden liike, liekit, vesipisarat... Verteksimalli 3.0 (shader model) tarjosi tekstuurien latauksen verteksiverkkoihin (valtamerien pinnat ja maastokartat). Verteksivarjostuksen jälkeen muodostetaan kolmioverkot, jotka lähetetään rasteroitavaksi. Varjostinmallissa 4.0 data voidaan käsitellä geometriavarjostimelle ennen rasterointia. Lähde: Real-time rendering, 3rd edition

3.3.2 Linkkejä NVIDIA OpenGL SDK 10 https://developer.nvidia.com/opengl Cg toolkit https://developer.nvidia.com/cg-toolkit-download Microsoft DirectX SDK http://www.microsoft.com/en-us/download/details.aspx?id=6812 Shader Maker http://cgvr.cs.uni-bremen.de/teaching/shader_maker/ GLSL Sandbox http://glsl.heroku.com/ The OpenGL Extension Wrangler Library http://glew.sourceforge.net/ Näkymänhallintatekniikat 3D-grafiikkamoottoreissa https://jyx.jyu.fi/dspace/handle/123456789/37454 Lähde: Real-time rendering, 3rd edition