art tevs, saarbrücken, germany max planck institut informatik osg-user-meeting, paris, april 2008

21
Art Tevs, Saarbrücken, Germany max planck max planck institut institut informatik informatik osg-user-meeting, Paris, april 2008

Upload: megan-russo

Post on 27-Mar-2015

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 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

Page 2: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

Overview

About Me– publications– projects

osgPPU– overview– classes– examples

Page 3: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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)

Page 4: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 5: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 6: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 7: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

osgPPU

Screenshot from Eikonal Rendering (Siggraph07)

Page 8: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

osgPPU

Screenshots from Maximum Mipmaps (I3D08)

Page 9: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 10: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 11: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 12: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 13: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 14: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 15: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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)

Page 16: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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]

Page 17: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 18: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

osgPPU (examples - DoF)

http://www.daionet.gr.jp/~masa/archives/GDC2003_DSTEAL.ppt

Page 19: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

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

Page 20: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

osgPPU (examples - HDR)

http://www.daionet.gr.jp/~masa/archives/GDC2003_DSTEAL.ppt

Page 21: Art Tevs, Saarbrücken, Germany max planck institut informatik osg-user-meeting, Paris, april 2008

Thank You!

Questions, Discussion, French-Beer...