I da i ne:
Transformacija normale jeste jeftinija, ali cilj je da uklonis faceove, a ne vertexe. Normale se nazalost vezuju za vertexe. Pogledaj primer gde imas vertex na silueti objekta - ti njega moras da transformises jer je deo neko forward facing trougla, ali takodje i back facing trougla. U slucaju da radis sa normalama, morao bi da transformises 3 normale, i da onda za svaki face izracunas i 'face normal' i da na osnovu njega izracunas na koju stranu gledas. Ovo je isti djavo kao da transformises sve vertexe.
Postoji i varijanta da osim vertex normala koje koristis za osvetljenje sacuvas i face normal, i da onda nju transformises, i na osnovu nje odredis da li treba da iscrtas face. Nazalost, cak ni to te ne cuva od toga da moras da transformises vise vertexa nego sto ti treba (jer to sto neki face gleda na pozadi ne znaci da ne treba transformisati barem neki njegov vertex).
Takodje, sa face normal varijantom je problem to sto za sve forward facing faceove ti moras da transformises i po jednu normalu vise po faceu da bi video na koju stranu gleda. A faceova ima vise nego vertexa ...
Kako god da okrenes zeznuto :)
Marko, cak i da resis ovo, problem je i to sto ne mozes da se oslonis samo na bilo koju od ovih metoda uklanjanja nevidljivih trouglova: sta se desava kada objekat ima forward facing trougao koji se nalazi iza nekog drugog forward facing trougla? Drugim recima, sta cemo ako objekat nije konveksan? Zamisli objekat koji se sastoji od dve sfere:
Code:
-> OO
kamera objekat
U svakom slucaju, pisanje softverskog renderera je otprilike kao pisanje asemblera - da, naucices nesto, ali ces vise vremena potrositi na resavanje poznatih problema nego na resavanje novih i verovatno zanimljivijih problema (osvetljenje, senke, itd.).
---
U svakom slucaju, dopada mi se da je ponovo krenula neka diskusija na 3D programiranju, a da nije o holodeku. :)