Hey every one...
For first.. as i wrote on other forums.. my english is bad but i think understandable..
Ok now to the point.
I am writing in FPC a software renderer. My plan is to create 3d engine with integrated software rendering system. Rendering will go thru 3 deffered rendering stage's:
1. rendering depth and triangle id... good for first occlusion of pixels, objects, and for reducting texture access or pixel shading calculations,antialiasing
2. gathering information from rendered triangle pixels - reading material textures and
depth buffer and writing material attributes, and 3d pixel positions to a G buffer,
3. lightning and shadowing
For now i have:
- triangle rasterizer which draws the triangle on per tile basis (tile drawing increases cache hits).. i think the triangle rasterizer innerloop is nice optimized, but not the tile drawing...because i am in prototyping stage ..
(The idea is based on Nicolas Capens "Advanced Rasterization" article, but my algorytm is much faster, for example :
***i don't use rectangle traversal algorytm but algorytm more suited for tile scanlines of the triangle ,
***fast trivial accept and reject of tile vs triangle routines, where the idea is based on intel's document about larabee rasterization)
-hierarchical structure of tiles, for z-buffer occlusion (zmin-zmax-per tile),
later i use similar structure for g-buffer (but in 3d) tiles for faster rejecting and accepting of tile and light-volume-primitve in lighning stages ( cube-sphere, cube-cone checking)
-texture reading procedure prototypes
-sse4 instructions used, but fpc don't support them so i need convert some instructions to x86 byte code .. thnx to Nasm
I am playing with idea using NASM as ASM-JIT compiler because when you write a required raw instruction with registers (or memory pointer) without any header or additional info in to one file, the NASM compiler convert it to x86 byte-code and write it to output file. So i write in pascal a string with assembler program, write it to a file, execute nasm with this input file, i read the output file to memory, setup required call and variable pointers and viola... runtime-compiled procedure...
The page of my project http://sourceforge.net/projects/phenomenon/
Bookmarks