Minkä ihmeen takia sille 8x8 blokin lootalle tarttis joka ikinen pikseli tarkistaa kun se on joka pixeliltään identtinen?
Ymmärrätkö, mitä sana "pikseli" tarkoittaa?
Pikselit on ruudulla, ei missään laatikoissa.
Laatikot on pelimaailman kordinaateissa, joka voi olla vaikka kuinka vinossa ja eri mittakaavassa kameraan(ruuduun) nähden.
3d-grafiikan pirtämisen perimmäinen asia on mäpätä 3d-maailma ruudulle.
Ja ruudun pikselit on ihan eri kokoisia kuin pelimaailman laatikot.
Sitä, mihin pelimaailman laatikkoon joku pikseli osuu ei tiedetä tarkastamatta sitä joka pikselille erikseen
Rasteroinnissa voidaan toki pyöriä loopissa joka piirtää kolmiot viiva kerraallaan ja laskee kullekin pikseliriville, että mistä x-kordinaatista laatikko alkaa ja mihin se loppuu, jolloin
osa tarkastuksista voidaan tehdä kerralla. Mutta sillonkin pitää
jokaiselle pikselille tehdä z-tarkastus erikseen ettei sen pikselin eteen ole jo piirretty toista pikseliä jonka takana se on.
Mutta säteenjäljitys ei toimi edes näin. Säteenjäljitys lähtee ruudun pikseleistä ampumaan säteitä, ja tarkastaa joka ikiselle säteelle, mihin ne osuu.
Jos siellä lähdettäisiin "Piirtämään jotain laatikoita" se ei olisi säteenjäljitystä vaan rasterointia, jonka primitiivi on laatikko.
ja riippumatta siitä, piirretäänkö grafiikka säteenjäljityksellä vai rasteroinnilla, pikselin väliarvoon liittyvä teksturointi tai valaistuksen laskenta on n. vuoden 1993 jälkeen ollut käytännössä aina
pikselikohtaista.
Grafiikka näyttää tuolta, kun siinä ei tehdä mitään pikselikohtaisia värilaskutoimituksia, vaan koko polygoni on samaa väriä:
Saa olla kyllä melkoiset silmälasit silmillä, ettei huomaa eroa tähän siinä, miten yhden primitiivin pikselit eroaa toisistaan:
Polygonimäärä on tosiaan molemmissa kuvissa etualalla olevissa asioissa samaa tasoa, tai minecraftissä jopa PIENEMPI; ero siinä, mitä ne näyttävät tulee
nimenomaan siitä, mitä kaikkea tehdään per pikseli.
Että voisitko edes YRITTÄÄ ymmärtää, mitä 3d-grafiikan renderöinti tarkoittaa ja sisältää, ennen kuin tulet postaamaan todella pihalle meneviä väitteitä siitä, mitä grafiikan piirtämiseksi pitää tehdä ja mitä ei.
Itse koodasin huvikseen ensimmäisen äärimmäisen yksinkertaisen säteenjäljityskoodini muistaakseni lukion 1. ja 2. luokkien välisenä kesänä TI-85lla, sen jälkeen koodannut joskus (muistaakseni lukion 2.-3-luokkien ja parin ekan yliopisto-opiskeluvuoden aikana) huvikseen pari softarasteroijaa PClle (jälkimmäisen kanssa leikin MMX-ja 3dnow-optimoinneilla ja yritin kehittää omaa antialiasing-algoritmia), sekä yhden softarasteroijan koodasin myöhemmin MIDP-Javalla kännykälle (aioin osallistua assyjen mobiilidemokomboon, mutta säännöt muuttuivat ja 3d-kiihdyttimellä varustetut taskukonsolit päästettiin samaan sarjaan kännyköiden kanssa, joten en sitten viitsinyt osallistua kun ei olisi ollut mitään mahkuja pärjätä, eikä oma luurikaan ollut sille optimaalinen). Lisäksi OpenGLllä tuli joskus tehtyä yliopiston tietokonegrafiikan harkkatyö, jossa siis piti tehdä yksinkertaisen doomin/quaken kaltaisen pelin graffaengine.
Kaikesta tästä on kauan aikaa, enkä ole pysynyt kunnolla mukana noiden rajapintojen kehityksessä, mutta renderöinnin perusongelmat eikä rasteroinnin toimintaperiaate ole muuttunut yhtään mihinkään tuona aikana. Myöhemmin on sitten tullut seurattua aika läheltä (ja vähän välillä autettua mm. koodin optimoinnissa) (entisen työpaikan) työkavereita, jotka tekivät säteeenjäljitystutkimusta (mm. BVH-puun rakentamisesta, kohinanvaimennuksesta sekä silmänseurantaan perustuvasta adaptiivisesta säteiden määrän sekä kohinanvaimennuksen parametrien säätämisestä), ja tässä tuli aika paljon opittua säteenjäljityksestä.