Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008.
-
Upload
megan-russo -
Category
Documents
-
view
215 -
download
2
Transcript of Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008.
Art Tevs, Saarbrücken, Germany
max planck institutmax planck institutinformatikinformatik
osg-user-meeting, Paris, april 2008
Overview
About Me– publications– projects
osgPPU– overview– classes– examples
About Me
Art Tevs, born in Russia, living in Germany Master Degree in Computer Science in University
of Saarland, Saarbrücken, Germany PhD student in Max-Planck-Institut Informatik,
Saarbrücken, Germany– research topics: rendering, natural phenomena, GPUs,
geometry processing (just started)
About Me (publications)
Siggraph07, I. Ihrke, G. Ziegler, A. Tevs, C. Theobalt, M. Magnor, H.-P. Seidel, "Eikonal Rendering: Efficient Light Transport in Refractive Objects"– realistic rendering of refractive objects with spatially
varying properties (refractive index, attenuation, scattering, ...), first time using OSG and osgPPU
About Me (publications)
I3D08, A. Tevs, I. Ihrke, H.-P. Seidel, "Maximum Mipmaps for Fast, Accurate, and Scalable Dynamic Height Field Rendering"– quadtree-like datastructure for efficient ray-heightmap
intersection on the GPU (usuable displacement mapping), using osgPPU for computations
About Me (projects)
osgPPU ( http://projects.tevs.eu/osgppu )– developed during the Siggraph07 project– offscreen renderer using GLSL shaders for
computations– used for post-processing effects– used to compute maximum-mipmap in the I3D08
project– working hard on v0.2 release– osgPlugins/osgdb_ppu to read/write osgPPU graphs
from/to .ppu files
osgPPU
Screenshot from Eikonal Rendering (Siggraph07)
osgPPU
Screenshots from Maximum Mipmaps (I3D08)
osgPPU Processor
– derived from osg::Group– can be placed anywhere in the scene graph– contains camera pointer to retrieve texture attachments
and viewport data– do initialize, optimize, update and draw PPU graph– resolve cycles in the Unit graph by placing a
BarrierNode which blocks the traversion
osgPPU Unit (base class)
– derived from osg::Group– should be placed in the processor's subgraph– collect Input data (textures) from the parent Units
(output textures) or from processor (camera attachments)
– connect input Unit to specified uniform (usefull for shader parameters)
– a lot of virtual functions to override in derived classes
osgPPU UnitBypass
– derived from osgPPU::Unit– perform no rendering– do just set OutputTexture = InputTexture– very usefull to just bypass the data for example from
the processor's camera
UnitDepthbufferBypass– derived from osgPPU::UnitBypass– perform no rendering– bypass the processor's camera depthbuffer attachment– usefull to bring the depthbuffer texture into the PPU
graph
osgPPU UnitTexture
– derived from osgPPU::Unit– perform no rendering– bypass a user specified input texture (external texture)
to the output– very usefull to bring external data into the PPU graph
osgPPU UnitInOut
– derived from osgPPU::Unit– render a 2D screenquad to perform computation on the
input data– use FrameBufferObject (FBO) to setup the output
texture– supports MRT by moving the MRT setup code into the
FBO patch for the new osg v2.4
UnitInResampleOut– derived from osgPPU::UnitInOut– same as UnitInOut however resample the output
texture by specified factor
osgPPU UnitInMipmapOut
– derived from osgPPU::UnitInOut– same as UnitInOut however the output texture is
mipmapped– compute the mipmap data by either applying the
glGenerateMipmapsEXT or the attached Shader program
UnitText– derived from osgPPU::UnitInOut– don't render the 2D quad, bypass the input to the output– render an osgText::Text on the output texture– very usefull to render text into a texture
osgPPU UnitOut
– derived from osgPPU::Unit– perform as UnitInOut but don't use FBO– used to render the input to the frame buffer– usualy the last unit in the osgPPU graph to bring the
computed result to the screen
UnitOutCapture– derived from osgPPU::UnitOut– same as UnitOut but after the rendering write the input
texture to a file– very usefull to capture screen contents in upto 4K
resolution (8K on G80 chips)
osgPPU (examples) viewer
– a simple viewer for the .ppu files– ./viewer file.ppu [scene.osg = default teapot]
dof– a simple „faked“ depth of field effect with osgPPU– ./dof [scene.osg = default cow.osg]
hdr– shows implementation of HDR rendering– ./hdr [scene.osg = default teapot]
osgPPU (examples - DoF)
http://www.daionet.gr.jp/~masa/archives/GDC2003_DSTEAL.ppt
Color bypass
Depthmap bypass
DoF resample0.5
DoF resample0.5
DoF blurvertical
DoF blurhorizontal
DoF blurvertical
DoF blurhorizontal
DoF Result
osgPPU (examples - DoF)
http://www.daionet.gr.jp/~masa/archives/GDC2003_DSTEAL.ppt
osgPPU (examples - HDR)
http://msdn2.microsoft.com/en-us/library/bb173484.aspx
Camera Bypass
Downsample
Compute avg.luminance
Compute scaledluminance
BrightpassDownsample
Blur vertical Blur horizontalTone mapping
osgPPU (examples - HDR)
http://www.daionet.gr.jp/~masa/archives/GDC2003_DSTEAL.ppt
Thank You!
Questions, Discussion, French-Beer...