JavaKazRace - Playable Java racing game demo
PSEmu Pro GPU plug-in
DOSX Utils
SHLight 2004
JavaKazRace DSharingu PSEmuGPU DOSX Utils SHLight 2004

software rendering

More on software rendering and Direct3D 10

Davide's picture

Writing a software renderer is quickly associated with revolutionizing things, but on the more conservative side, one advantage would really be that one has the freedom to optimize things as needed rather than having to try and guess what a driver is doing behind the scenes (maybe write your own driver ?!).
Graphics drivers do a great deal of work, they can make a big differences, they can be quite smart at guessing resources usage, what to prioritize on which basis, but they can't be smarter than a whole application.

APIs such as Direct3D and OpenGL don't have a concept of object (ok, OpenGL supports "lists" at least). So, they miss potentially useful hints. For example, if you know your object bounding box, you can tell right away whether or not the object requires clipping and you can tell in advance which textures you need, and what's the maximum level of detail that is needed for textures (if the bounding box is 512x512, you can't possibly need a 1024x1024 texture 8).
Based on that knowledge, one could completely avoid having to perform per-polygon clipping test and could also avoid loading full size textures in video RAM.. because a smaller mip-level would be sufficient.

Another big problem in dealing with a separate hardware graphics system is communication. Every state change can be a big deal. Drivers will probably cache things, but not necessarily.
Recently, I wrote an immediate rendering library to draw debug primitives. I had a small pool of vertex buffers that I would rotate as I called Draw() several times per frame. It turned out to be a big slowdown, so big that I had to switch to use one vertex buffer per frame (actually 2/3 to rotate at each frame, not at each Draw()).
To do that of course I had to keep track of logical draw calls issued by the application program, so that I could finally unmap/unlock the vertex buffer at the end and call all the Draw() at once.. remembering of which primitive type it was, how many vertices and which draw state was associated with that draw call.

This all comes down to having to deal with separate architectures. I have my vertex buffer, the card has its vertex buffer.. collect here, copy there, avoid touching this buffer or that buffer.
Small things that show the cat and mouse kind of job of having to optimize rendering using an API such as Direct3D 10.

Lastly, recently I managed to crash nVidia's driver on Vista 8)
I think it has to do with.. big polygons, or polygons going way off.. possibly a clipping bug ? All I know is that my screen goes blank and boom !
The window comes back and it's all black, while I get a balloon message from the sys-tray that says that the driver's process has crashed. From then on I can't do 3D unless I reboot 8)

ehhhhhhhhhhh

Software rendering, Web 0.1, Mathematics and the new Babel

Davide's picture

A lot goes through my head !
Aha !!!

For example:

Software rendering

Fixed pipeline came to the rescue long ago, then HLSL/Cg shaders came and now I just want to get rid of all that bullshit.
I think Paul Heckbert (poly_scan.c ...yeah !!). Render a polygon, do something per-pixel. Give it to me, stop this "safe family driver" shaders bullshit !

Currently web sucks (you win.. rince !)

It sucks to put anything other than text on the web, it sucks sucks. The next thing would be PowerPoint. You can actually drag and drop a picture into a PowerPoint document... I know Sergey & Larry have something like this cooking up somewhere.. and if they don't then it means they went the way of Microsoft -> rotten, self-overwhelmed by its own identity -> we do this way because we do this way because we do this way...

Mathematics

Something great happened to my group while I was in Arizona.. someone decided to go for math lessons for everyone in the group !!!
I "love" math but I'm not good at it.. we need lots of practice. I got involved with it and we'll be studying linear algebra for the sake of everyone, especially for the artists... but then I want to introduce signal theory -> it's at the base of information theory !!! Signal theory is widely underestimated in computer graphics. It's relegated to chip-making but it should be tought at a higher level (SHRM hinted it, An Efficient Representation for Irradiance Environment Maps finally proved it for me)

My Data

Ultimate goal for the Google Duo and Steve Jobs and some half-assed person that has taken the place of a tired Bill Gates (tired to make money and possibly more interested in World issues.. can't blame him !).
It's complex. Google has the web, but the web sucks (see above). You can upload pictures, but it's a pain in the ass. Apple has MP3 players that are turning into computers (and computer buyers).
Neither the web nor the Apple software are yet a good solution. Data is money: the more you get the more you are afraid to lose. I take a lot of pictures and I constantly worry about downloading and publishing. Where, when and until when ?
Digital cameras are everywhere and so are ex partners. Men more than women take pictures, that's a lot of ex girlfriend pictures. Is that women's next trick ?
It used to be: beg me to stay because I give you sex. Soon it could easily be: beg me to stay because you took to many pictures of me/us to be able to move on without a million new arguments with your possible new gfs.

Digital madness.. a solution to a problem that we created.. is that how machines are going to owe us ? Is that how Sergey&Larry or Steve are going to try to save us (for a price 8) ?
The Databusters, like the GhostBusters... get your data under control.. quite a mission.

But one day I will lose my data.. and I will be very miserable.. and then I may just be very happy 8)

P.S. Japanese language

Fack !!! I should be studying !!!

Syndicate content