For example, you can draw an object using ONE/ONE blending four times at 1/4 the usual brightness to get a motion blur effect on a dark background. If you want a cheap approximation of the same kinds of effects, you also have the option of using blending. It’s much cheaper to have a 4-sample buffer and render 4 times into it, then do a single filter operation, than to have a high-precision buffer, render 4 times, do 4 fancy blends, and then still have to copy back to the main framebuffer. When you start adding up what it would take to implement it in HW, it’s pretty obvious why hacks like the T-buffer exist. 4 multipliers and 4 shifters would help, but you’re starting to talk about a fairly big unit then, more than anyone can afford to build into a consumer 3D chip. Even then you’ll have an accumulation rate of 1 pixel per 4 clocks because you need to accumulate R, G, B, and A. It consumes huge amounts of memory, it uses tons of bandwidth and fill (you have to draw many times, and the accumulation operations may require a read from a 32-bit buffer and a read-modify-write on a 64-bit buffer), and you need, at the bare minimum, a pipelined 16x16 multiplier and a barrel shifter to implement it. It is definitely an ultra-high-end OpenGL feature. Accumulation buffering requires 16-bit-per-channel precision (it’s not strictly required, but it is generally expected) and a signed buffer. Correct, it is a lot more than we can do with our 2D engine.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |