IL BSP.
BSP sta per Binary Spatial Partition. Si utilizza per velocizzare il rendering
nelle zone in cui compare il raytracing.
Senza BSP i raggi di luce dovrebbero essere testati su ogni triangolo delle
superfici coinvolte nel raytracing. Con il BSP invece i triangoli vengono raggruppati
in insiemi di cubi. Quindi lo spazio viene suddiviso in cubi tridimensionali.
Ognuno
di questi cubi si chiama VOXEL.
Un Voxel può contenere altri voxel, oppure dei triangoli. In quest'ultimo
caso viene chiamato LEAF NODE.
La suddivisione successiva dei Voxel può essere considerata come una
struttura ad albero, in cui i Leaf Node sono gli elementi terminali dei rami.
La suddivisione avviene facendo in modo che i nuovi voxel contegano tutti lo
stesso numero di triangoli.
Nelle
opzioni di rendering troviamo all'interno della tabella Optimization i parametri
del BSP.
SIZE.
Numero massimo di triangoli che un Leaf Node può contenere.
DEPTH.
Numero massimo di suddivisioni che un Voxel può subire.
I triangoli all'interno di un Voxel possono cambiare nel tempo nel caso si scene animate. In questo caso i Voxel che ne sono attraversati devono memorizzare questa informazione.
MEMORY.
Se è impostata a 0 si annulla il limite di utilizzo di memoria per il
BSP.
Se si raggiunge il limite di memoria si arresta il processo di suddivisione
dei Voxel.
SEPARATE
BSP FOR SHADOW OBJECTS.
Se è attivo viene ottimizzata la memoria allocata per i Voxel in quanto
si definiscono zone di memoria più piccole.
Quando lo spazio è stato suddivisoin Voxel, i calcoli per il raytracing vengono effettuati solo per quei voxel che sono effettivamente attraversati dai raggi luminosi. Perciò se uno spazio è suddiviso in 10 voxel e il raggio luminoso ne attraversa 4, i calcoli per il raytracing vengono ridotti al 40% sul totale dei triangoli nella scena.
All'aumentare
del DEPTH si riduce i tempo di rendering, ma si prende più memoria.
Avviene il contrario se sei aumenta il SIZE dei Leaf Node.
Il
tempo di rendering aumenta maggiormente al diminuire del Size che non all'aumentare
del Depth.
Nel caso in cui si utilizza il Motion Blur, allora è il contrario: il
tempo di rendering aumenta più al crescere del Depth, che non del Size.
Questo accade perchè nel tempo i triangoli della superficie si spostando
da un voxel all'altro. Più voxel vengono attraversati, più tempo
occorre per i calcoli. Tuttavia il tempo aumenta anche se i triagoli viaggiano
per molto tempo dentro uno stesso voxel, perciò anche nel caso di Depth
troppo bassa. L'ideale è una via di mezzo (intorno a 25).
All'aumentare del Depth e al diminuire del Size aumenta anche il numero di Leaf Node.