Re: Accumulation Buffer

New Message Reply Date view Thread view Subject view Author view

Sharon Fischler (srf++at++rose)
Wed, 11 May 1994 14:38:52 -0700


+>---- On May 11, 12:24pm, Kent Watsen wrote:
> Subject: Accumulation Buffer
->
->Hi, I have an Onyx RE2 and Performer 1.2. I have
->spent a week going through the GL advance GL
->manuals trying to get the accumulation buffer to
->work with performer in real-time.
->
->My best guess is to initialize the ACBUF after
->calling pfConfig() with the following commands:
->
-> acsize(16);
-> gconfig();
-> acbuf(AC_CLEAR, 0.0);
->
->I then establish a swap function callback with the
->following command after initializing my pipe with
->pfPipeSwapFunc (pipe, swapfunc).
->
->Swapfunc() is call once per frame just after the
->scene has been rendered into the backbuffer. The
->swapfunc() makes the appropriate ACBUF calls and
->the calls swapbuffers() as follows:
->
-> void swapfunc (pfPipe *pipe)
-> {
-> // MOTION BLUR
-> acbuf(AC_MULT, 0.5);
-> acbuf(AC_ACCUMULATE, 1.0);
-> acbuf(AC_RETURN, 1.0);
->
-> swapbuffers();
-> }
->
->I acheive the desired effect but my frame rate drops
->to less the one frame every five seconds! I have done
->some experimentation and have determined that the
->larger my viewport the slower the ACBUF takes.
->
->The standard GL motion blur demos show much greater
->frame rates being achieved...but how? The fundamental
->difference in the codes is that I'm using Performer
->to do my rendering into the backbuffer rather then GL.
->It looks like all of the processing is being done in
->software, even though I am making the acbuf() calls.
->
->Does anybody have a clue as to what I'm doing wrong.
->Also, is the accumulation buffer a peice of hardware
->sitting in the RE2 pipeline or is it just another
->abstraction of the 40MB video memory included.

Framebuffer words (pixel depth) are allocated amoung the color buffers,
zbuffer, overlay planes, accumulation buffer, multisample
buffer, etc.
If you do not have enough pixel depth to support your current
requests, you will drop into software accumulation buffering,
which might be happening here.
getgdesc(GD_BITS_ACBUF_HW) tells you how many bits per component are
supported in hardware, which should be 16. You do want to use
exactly that number in acsize().
You might try reducing your required pixel depth:
don't allocate stereo buffers, use RGBsize(8), zbsize(24).

FYI: /usr/gfx/gfxinfo will tell you your current pixel depth
(which can be increased by using a smaller resolution screen
area via setmon()).
Pixel depth is small=16 16-bit words, Med=32 words, and Larg=64 words.

srf.

-- 
-----{-----{---++at++   -----{----{---++at++   -----{----{---++at++   -----{----{---++at++
Sharon Rose Fischler - Silicon Graphics, Advanced Graphics Development
srf++at++sgi.com  (415) 390 - 1002  FAX: (415) 965 - 2658  MS 8U-590
-----{-----{---++at++   -----{----{---++at++   -----{----{---++at++   -----{----{---++at++

New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:50:16 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.