The Perfect Anti-Aliasing

JC probably wants to render every frame of samples into its own buffer and then combine them with the algorithm of his choosing. Super sampling with programmable filtering.
 
Interesting. Thanks 3dilettante.

3dgi,

Programmable filtering? Adaptive filtering or am I guessing in the wrong direction?
 
Someone told me a few years ago Carmack wanted programmable filtering. My memory might be failing me, but this is what I think I remember.

Sort of like 3dfx's jittered super-sampling, but with filtering done in the pixel shader. Render the scene once (first sub-sample) and save the frame buffer for later use. Then render again (second sub-sample). Repeat as many times as necessary. Then read all of these surfaces into a pixel shader program and filter them as you desire.

The rest is my extrapolation and hasn't been given much thought. Tricks could be played to make it adaptive where some objects would only be written to certain sample buffers. This would mean not every object receives the same level of AA. Of course the pixel shader filtering program would need to know this which might mean rerendering the objects or figuring out some way to have the stencil buffer tell it what to do. The end result is the entire scene is super-sampled and the number of samples per object/pixel is determined by the programmer. 4x, 8x, 16x, super-slow x, etc.
 
Well, I know I've suggested programmable filtering (more specifically, shader access to specific pieces of the filtering pipeline, such as the fetching of 4 texels, the blending of 4 color samples, the calculation of bilinear and trilinear blend weights, LOD calculation, etc.), but I don't remember JC asking for it. He may have, I don't know.
 
3dcgi said:
The rest is my extrapolation and hasn't been given much thought. Tricks could be played to make it adaptive where some objects would only be written to certain sample buffers. This would mean not every object receives the same level of AA. Of course the pixel shader filtering program would need to know this which might mean rerendering the objects or figuring out some way to have the stencil buffer tell it what to do. The end result is the entire scene is super-sampled and the number of samples per object/pixel is determined by the programmer. 4x, 8x, 16x, super-slow x, etc.

Sounds nearly as complicated as stochastic supersampling to me.

Sort of like 3dfx's jittered super-sampling, but with filtering done in the pixel shader. Render the scene once (first sub-sample) and save the frame buffer for later use. Then render again (second sub-sample). Repeat as many times as necessary. Then read all of these surfaces into a pixel shader program and filter them as you desire.

How would this alternative sound?

http://v3.espacenet.com/textdes?DB=EPODOC&IDX=WO2004114222&F=0&QPN=WO2004114222

Stop gap here:

In an alternative embodiment, the simple box filter could be replaced with a more complicated filter and a buffer larger than a tile size could be provided. This would allow more complex filtering image/data processing techniques to be performed, automatic edge detection, up-scaling and noise reduction techniques.

Sounds equally complicated and costly in terms of HW to me, but wouldn't it be theoretically applicable to most tiled back buffers? (don't shoot the layman if he's asking dumb questions *cough*).
 
For really good AA you need sub-pixel triangles and an accumulation buffer, ie.: REYES. Everything else is either unfeasibly slow, or a variant of increasing the resolution. IMHO.
 
For the edges analytical AA using a beamtree and interval arithmetic could give you perfection (without interval arithmetic it would just break down to supersampling if enough small tris are in a pixel, with the resolution determined by the numerical precision used ... of course this is going to add extra passes for when the precision is insufficient for accurate results, but you have to sacrifice "some" speed for perfection).
 
Chalnoth said:
Well, I know I've suggested programmable filtering (more specifically, shader access to specific pieces of the filtering pipeline, such as the fetching of 4 texels, the blending of 4 color samples, the calculation of bilinear and trilinear blend weights, LOD calculation, etc.), but I don't remember JC asking for it. He may have, I don't know.
The wishes I heard were from a private converstation a few years ago and I wasn't talking to Carmack so between second hand information and my possibly bad memory who knows if I'm thinking of what Reverend has heard.

I'm not sure what you mean by shader access to the filtering pipeline. Shaders already have access to the filtering pipeline as you can fetch and filter inside a shader.
 
Ailuros said:
Sounds nearly as complicated as stochastic supersampling to me.
Except the methods I described were leaving the complexity to the software and using brute force shader and fill rate.

I don't see the connection. The patent seems to be talking about generating mip-maps.

Stop gap here:

In an alternative embodiment, the simple box filter could be replaced with a more complicated filter and a buffer larger than a tile size could be provided. This would allow more complex filtering image/data processing techniques to be performed, automatic edge detection, up-scaling and noise reduction techniques.

Sounds equally complicated and costly in terms of HW to me, but wouldn't it be theoretically applicable to most tiled back buffers? (don't shoot the layman if he's asking dumb questions *cough*).
What I was refering to likely wouldn't require much hardware as it would use the shader pipeline for the fetching and filtering. It would however, likely be slower than pure hardware methods and thus I am suggesting the possibility, but not advocating it.
 
3dcgi said:
Chalnoth said:
Well, I know I've suggested programmable filtering (more specifically, shader access to specific pieces of the filtering pipeline, such as the fetching of 4 texels, the blending of 4 color samples, the calculation of bilinear and trilinear blend weights, LOD calculation, etc.), but I don't remember JC asking for it. He may have, I don't know.
...

I'm not sure what you mean by shader access to the filtering pipeline.
It's in parentheses. Between the commas would be separate instructions.
 
Back
Top