I read many times on this board that Kyro can perform 32 z-checks per clock per polygon (or primitive). How can it be possible? We know that z(x,y), where x and y are screen space coordinates, needs a divsion per pixel in order to be evalauted.
Having 32 hw dividers (or reciprocal units) on chip seems a bit unrealistic to me. Even evaluate z(x,y) via interpolation should be a hard task, cause it would need a hyperbolic interpolation. A solution could be to evalaute 1/z(x,y), it just needs a linear interpolation and can be done with just an addition. So Kyro could sort all the primitives using a internal w-buffer instead.It could be converted to a 'real' z-buffer only when it's needed. Another question: how can be all those 32 pixel checks 'extracted' from the area covered by a primitive in a tile? Does it check a scanline per clock? If this is true Kyro would need N clocks (N<=16) to check a primitive against a tile, giving a 32x16 tile size. Do all these words make any sense? :smile:
ciao,
Marco
<font size=-1>[ This Message was edited by: nAo on 2002-02-21 15:45 ]</font>
Having 32 hw dividers (or reciprocal units) on chip seems a bit unrealistic to me. Even evaluate z(x,y) via interpolation should be a hard task, cause it would need a hyperbolic interpolation. A solution could be to evalaute 1/z(x,y), it just needs a linear interpolation and can be done with just an addition. So Kyro could sort all the primitives using a internal w-buffer instead.It could be converted to a 'real' z-buffer only when it's needed. Another question: how can be all those 32 pixel checks 'extracted' from the area covered by a primitive in a tile? Does it check a scanline per clock? If this is true Kyro would need N clocks (N<=16) to check a primitive against a tile, giving a 32x16 tile size. Do all these words make any sense? :smile:
ciao,
Marco
<font size=-1>[ This Message was edited by: nAo on 2002-02-21 15:45 ]</font>