Image Synthesis. Transparency. computer graphics & visualization

Similar documents
Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

Optimizing AAA Games for Mobile Platforms

Recent Advances and Future Trends in Graphics Hardware. Michael Doggett Architect November 23, 2005

Introduction to Computer Graphics

GPU(Graphics Processing Unit) with a Focus on Nvidia GeForce 6 Series. By: Binesh Tuladhar Clay Smith

OpenGL Performance Tuning

Computer Graphics Hardware An Overview

INTRODUCTION TO RENDERING TECHNIQUES

A Short Introduction to Computer Graphics

Optimizing Unity Games for Mobile Platforms. Angelo Theodorou Software Engineer Unite 2013, 28 th -30 th August

GPU Architecture. Michael Doggett ATI

Advanced Visual Effects with Direct3D

Touchstone -A Fresh Approach to Multimedia for the PC

Lezione 4: Grafica 3D*(II)

Dynamic Resolution Rendering

Using Photorealistic RenderMan for High-Quality Direct Volume Rendering

Stochastic Transparency

Midgard GPU Architecture. October 2014

Adding Animation With Cinema 4D XL

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

Image Synthesis. Fur Rendering. computer graphics & visualization

How To Understand The Power Of Unity 3D (Pro) And The Power Behind It (Pro/Pro)

DATA VISUALIZATION OF THE GRAPHICS PIPELINE: TRACKING STATE WITH THE STATEVIEWER

Volume Rendering on Mobile Devices. Mika Pesonen

NVPRO-PIPELINE A RESEARCH RENDERING PIPELINE MARKUS TAVENRATH MATAVENRATH@NVIDIA.COM SENIOR DEVELOPER TECHNOLOGY ENGINEER, NVIDIA

Compositing a 3D character over video footage in Maya Jean-Marc Gauthier, Spring 2008

Scan-Line Fill. Scan-Line Algorithm. Sort by scan line Fill each span vertex order generated by vertex list

Shader Model 3.0. Ashu Rege. NVIDIA Developer Technology Group

NVIDIA IndeX Enabling Interactive and Scalable Visualization for Large Data Marc Nienhaus, NVIDIA IndeX Engineering Manager and Chief Architect

Low power GPUs a view from the industry. Edvard Sørgård

BUILDING TELEPRESENCE SYSTEMS: Translating Science Fiction Ideas into Reality

Radeon HD 2900 and Geometry Generation. Michael Doggett

Graphical displays are generally of two types: vector displays and raster displays. Vector displays

Deferred Shading & Screen Space Effects

Outline. srgb DX9, DX10, XBox 360. Tone Mapping. Motion Blur

Water Flow in. Alex Vlachos, Valve July 28, 2010

The Evolution of Computer Graphics. SVP, Content & Technology, NVIDIA

Computer Graphics. Anders Hast

3D Computer Games History and Technology

How To Make A Texture Map Work Better On A Computer Graphics Card (Or Mac)

Advanced Rendering for Engineering & Styling

Making natural looking Volumetric Clouds In Blender 2.48a

Consolidated Visualization of Enormous 3D Scan Point Clouds with Scanopy

Modern Graphics Engine Design. Sim Dietrich NVIDIA Corporation

Lecture Notes, CEng 477

Overview Motivation and applications Challenges. Dynamic Volume Computation and Visualization on the GPU. GPU feature requests Conclusions

REAL-TIME IMAGE BASED LIGHTING FOR OUTDOOR AUGMENTED REALITY UNDER DYNAMICALLY CHANGING ILLUMINATION CONDITIONS

Real-Time Realistic Rendering. Michael Doggett Docent Department of Computer Science Lund university

Silverlight for Windows Embedded Graphics and Rendering Pipeline 1

Software Virtual Textures

Developer Tools. Tim Purcell NVIDIA

The Rocket Steam Locomotive - Animation

The Future Of Animation Is Games

Monash University Clayton s School of Information Technology CSE3313 Computer Graphics Sample Exam Questions 2007

GUI GRAPHICS AND USER INTERFACES. Welcome to GUI! Mechanics. Mihail Gaianu 26/02/2014 1

The OpenGL R Graphics System: A Specification (Version 3.3 (Core Profile) - March 11, 2010)

GPU Christmas Tree Rendering. Evan Hart

NVFX : A NEW SCENE AND MATERIAL EFFECT FRAMEWORK FOR OPENGL AND DIRECTX. TRISTAN LORACH Senior Devtech Engineer SIGGRAPH 2013

How To Use An Amd Graphics Card In Greece And (Amd) With Greege (Greege) With An Amd Greeper 2.2.

Graphic Design. Background: The part of an artwork that appears to be farthest from the viewer, or in the distance of the scene.

Shadows. Shadows. Thanks to: Frédo Durand and Seth Teller MIT. Realism Depth cue

Direct Volume Rendering Elvins

mental ray Production Shader Library

Data Centric Interactive Visualization of Very Large Data

GPU-Driven Rendering Pipelines

GPUs Under the Hood. Prof. Aaron Lanterman School of Electrical and Computer Engineering Georgia Institute of Technology

Approval Sheet. Interactive Illumination Using Large Sets of Point Lights

The Car Tutorial Part 1 Creating a Racing Game for Unity

So, you want to make a photo-realistic rendering of the Earth from orbit, eh? And you want it to look just like what astronauts see from the shuttle

NVIDIA GeForce GTX 580 GPU Datasheet

COMP175: Computer Graphics. Lecture 1 Introduction and Display Technologies

Kapitel 12. 3D Television Based on a Stereoscopic View Synthesis Approach

ACE: After Effects CS6

Workstation Applications for Windows. NVIDIA MAXtreme User s Guide

An Introduction to Modern GPU Architecture Ashu Rege Director of Developer Technology

How To Teach Computer Graphics

CSE 564: Visualization. GPU Programming (First Steps) GPU Generations. Klaus Mueller. Computer Science Department Stony Brook University

GearVRf Developer Guide

Web Based 3D Visualization for COMSOL Multiphysics

Materials in NX Render

Procedural Shaders: A Feature Animation Perspective

The patch tool and content-aware filling

B2.53-R3: COMPUTER GRAPHICS. NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions.

Computer Graphics. Introduction. Computer graphics. What is computer graphics? Yung-Yu Chuang

3D Stereoscopic Game Development. How to Make Your Game Look

Visualization and Feature Extraction, FLOW Spring School 2016 Prof. Dr. Tino Weinkauf. Flow Visualization. Image-Based Methods (integration-based)

CASTING CURVED SHADOWS ON CURVED SURFACES. Lance Williams Computer Graphics Lab New York Institute of Technology Old Westbury, New York 11568

Advanced Graphics and Animations for ios Apps

GPU Shading and Rendering: Introduction & Graphics Hardware

What is GPUOpen? Currently, we have divided console & PC development Black box libraries go against the philosophy of game development Game

Visualizing Data: Scalable Interactivity

MMGD0203 Multimedia Design MMGD0203 MULTIMEDIA DESIGN. Chapter 3 Graphics and Animations

GPGPU: General-Purpose Computation on GPUs

Real-Time BC6H Compression on GPU. Krzysztof Narkowicz Lead Engine Programmer Flying Wild Hog

HistoPyramid stream compaction and expansion

Programming 3D Applications with HTML5 and WebGL

Transcription:

Image Synthesis Transparency

Inter-Object realism Covers different kinds of interactions between objects Increasing realism in the scene Relationships between objects easier to understand Shadows, Reflections, Transparency

Transparency How to handle non-opaque (semi-transparent) objects Multiple fragments contribute to a pixel Visibility order of fragments is important Depth buffer can be used for hidden surface removal but not for semi-transparent objects

Transparency See-through objects Depth test discards objects Object order affects final color Blending non commutative 1 C 1 + (1-1 ) 0 C 0 0 C 0 + (1-0 ) 1 C 1

Transparency General solution Visibility sort all semi-transparent objects in the scene (back to front) Render opaque objects first and update the depth values Render semi-transparent objects in visibility order Apply depth test but do not alter depth values Use alpha-blending in order to obtain linear combination of src and dst color C Dst = (1 - Src ) C Dst + Src C Src

Transparency Opaque Semi-transparent

Transparency without visibility sorting with visibility sorting

Transparency Correct transparency by sorting and alpha-blending

Transparency

Depth peeling Recall: standard depth test gives nearest fragment at each pixel without imposing any order But: there is also a second, third, fragment. Depth test does not provide a means to render the n th nearest surface. Depth peeling solves this problem (in a pixel shader): With n passes over a scene, n layers deeper into the scene are generated E.g. with 2 passes, the nearest and second nearest surfaces are extracted Both the depth and RGBA information is obtained for each layer

Depth peeling The method peels different depth layers in frontto-back order Drawback: as many rendering passes as objects depth complexity: maximum number of surface points (fragments) mapping to one pixel

Depth peeling Reduce/Readback How to determine the depth complexity? Render the scene without depth test and increment the stencil bit (or entries in a texture render target using additive blend) whenever a fragment is generated Reduce the buffer to obtain the maximum In each pass, maximum of 4 texels is computed and stored into 1 texel of output texture Reduce m x m region in fragment shader 1 pass: render quad that covers 1/4 pixels 2 pass: render quad that covers 1/16 pixels

Depth peeling - Queries How to determine the depth complexity while peeling? Employ GPU occlusion query to obtain information (i.e. ask GPU if fragments were rasterized into pixels in the last draw call) Pseudocode bool bkeeppeeling = true while(bkeeppeeling) { } Initialize/Issue occlusion query (to the GPU) Depth peel the next layer (as described in the following) bkeeppeeling = GetQueryResult(); Peels one empty layer, but avoids reduce/readback pass Application has to wait for query result after each peel pass

Depth peeling: Algorithm

Depth peeling issues

Depth peeling Example

Depth peeling back to front Back to front order: Use standard depth test (with op: greater) Discard fragments with depth greater or equal last pass (initialize ping pong depth buffers with depth = 0) (optionally) test with less equal against depth buffer storing opaque geometry (rendered before transparent objects) Blend result onto frame buffer Pro: does not need to store RGBA values for each peel layer

Depth Peeling: Drawbacks As many rendering passes as objects depth complexity Solution Multisampling render target Create up to 8 samples per fragment Each sample has individual stencil value Stencil-routed k-buffer (requires #depth layers / 8 rendering passes) Ideal for complex geometry, much faster than depth peeling

Stencil Routed A-Buffer What we need: A fragment list per pixel MSAA (multi-sampled anti-aliasing) List of samples per pixel Samples store coverage Fragments are rasterized at higher frame buffer resolution 8xMSAA = 8 x aliased resolution Pixel shader is run once per-pixel Frame buffer storage is at sample resolution

K-buffer But: Need to write only 1 sample at once Need all MSAA samples at pixel center MSAA sample patterns don t help Solution: Turn off multisampling but still render to MSAA render target Pixel shader output stored in all sub-samples now writing 8 samples per pixel (but all samples contain the same value)

Stencil Routing and MSAA 5 8 2 3 7 4 6 9 4 7 1 2 6 3 5 8 3 6 0 1 5 2 4 7 2 5 0 0 4 1 3 6 stencil always decrements (stencil pass and fail op = decrement) stencil passes when 2 (stencil reference value)

Stencil buffer initialization Clear stencil buffer to pass value (2) initializes sample 0 to 2 Use sample mask to selectively set other subsamples (to reference value) 5 samples filled Why start at 2? When all n subsamples are filled: (n-1) stencil values will be 0 and one stencil value 1 Overflow occured if all stencil values are 0! 8 samples filled overflow occured

K-buffer Now 8 samples per pixel If we need more: multipass rendering (or render to texture array) Start with different initial stencil mask to skip first 8n fragments Up to 254 layers (due to 8 bit stencil values) Sort these samples in depth order and blend them Can be done in one fragment shader pass