maanantaina 30. maaliskuuta 2009

Scanline rendaaja Flashille

Pitkään on pitänyt tätä kokeilla ja loputakin löysin aikaa tämän tekemiseen.

Katso esimerkki

Eli scanline rendaaja Flash 10:lle. Tärkeintä tässä on se, että enginessä on oikea zbuffer. Eli joka pikselillä on z arvo jota vasten voidaan tarkistaa mikä pikseli on minkäkin pikselin etu- vai takapuolella.
Tavallisesti Flash 3d-enginet eivät tee näin, koska polygonien rasterointi on flashilla hidasta, puhumattakaa pikselin piirtämisestä. Kuitenkin nykyisin alkaa vaikuttaa siltä, että pikselin piirto alkaa olla sen verran nopeaa, että jonkinlaiseen käyttöön sitä voisi jo käyttää. Edelleen olisi nopeampaa tehdä, kuten Papervision, Sandy3d tai Away3d eli käyttää Flashin omaa polygonin piirtoapia ja sorttaa polyt esim zsortilla. Ongelma kuitenkin on, että polyt voivat joissain tilanteissa piirtyä väärässä järjestyksessä, koska z arvot lasketaan vain polyn keskipisteen mukaan, jolloin tulos ei ole aina oikein. Lisäksi zsort ei voi piirtää leikkaavia polygoneja okein. Pikselipohjainen zbuffer on melkoisesti hitaampi, mutta polyt piirtyy aina oikein myös silloin jos polyt leikaavat toisiaan.

Lähdekoodit

0 kommenttia: