Ok.
Firstly, I don't have vista OR a D3D10.1 capable video card (xp x64 & 8800 here ). So this is just a theory. A theory that I'm happy to know already exists too
Anyway. I've been working a lot with raw ccd images recently, and I thought about a way to apply some of this to anti-aliasing.
Anyway. Here is the idea:
In the ccd world, most sensors have the following pixel layout:
However most LCD displays are more like:
My understanding is that D3D10.1 allows you to control the MSAA resolve step (and the sample grid?)...
So for the antialiasing resolve, instead of doing:
Why not do:
So given a rotated grid of 4 samples:
Output them such that sample 0 goes to red, 1 & 2 go to green, 3 to blue.
Or more accurately, push 1 into red a bit, and give some 2 to blue.
In effect, what cleartype does with text, but done with anti-aliasing.
Furthermore, with a higher sample count you can bias away from blue - given blue is significantly less important colour. 6 samples might work quite nicely.
Firstly, I don't have vista OR a D3D10.1 capable video card (xp x64 & 8800 here ). So this is just a theory. A theory that I'm happy to know already exists too
Anyway. I've been working a lot with raw ccd images recently, and I thought about a way to apply some of this to anti-aliasing.
Anyway. Here is the idea:
In the ccd world, most sensors have the following pixel layout:
However most LCD displays are more like:
My understanding is that D3D10.1 allows you to control the MSAA resolve step (and the sample grid?)...
So for the antialiasing resolve, instead of doing:
Code:
// ignoring gamma correction, etc
resolve.rgb = (sample[0] + sample[1] + sample[2] + sample[3]) / 4;
Why not do:
Code:
resolve.r = sample[0].r;
resolve.g = (sample[1].g + sample[2].g) / 2;
resolve.b = sample[3].b;
So given a rotated grid of 4 samples:
Output them such that sample 0 goes to red, 1 & 2 go to green, 3 to blue.
Or more accurately, push 1 into red a bit, and give some 2 to blue.
Code:
resolve.r = (sample[1].r + sample[0].r * 3)/4;
resolve.g = (sample[1].g + sample[2].g) / 2;
resolve.b = (sample[2].b + sample[3].b * 3)/4;
In effect, what cleartype does with text, but done with anti-aliasing.
Furthermore, with a higher sample count you can bias away from blue - given blue is significantly less important colour. 6 samples might work quite nicely.
Last edited by a moderator: