Next-Generation Rendering of Subdivision Surfaces. Developer Technology - NVIDIA

Similar documents
Motivation MGB Agenda. Compression. Scalability. Scalability. Motivation. Tessellation Basics. DX11 Tessellation Pipeline

D3D11 Tessellation. Sarah Tariq NVIDIA

Approximating Subdivision Surfaces with Gregory Patches for Hardware Tessellation

Approximate Catmull-Clark Patches. Scott Schaefer Charles Loop

Efficient GPU Rendering of Subdivision Surfaces. Tim Foley,

INF3320 Computer Graphics and Discrete Geometry

Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches

Subdivision Surfaces

Real-Time Hair Rendering on the GPU NVIDIA

Rendering Subdivision Surfaces Efficiently on the GPU

Smooth Surfaces from 4-sided Facets

Subdivision Surfaces

Introduction to the Direct3D 11 Graphics Pipeline

Advanced Graphics. Subdivision Surfaces. Alex Benton, University of Cambridge Supported in part by Google UK, Ltd

Subdivision Curves and Surfaces: An Introduction

Curves and Surfaces 2

Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces

1. Introduction. 2. Parametrization of General CCSSs. 3. One-Piece through Interpolation. 4. One-Piece through Boolean Operations

Curve Corner Cutting

Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches

Lecture 4: Geometry Processing. Kayvon Fatahalian CMU : Graphics and Imaging Architectures (Fall 2011)

3D Modeling techniques

REAL-TIME SMOOTH SURFACE CONSTRUCTION ON THE GRAPHICS PROCESSING UNIT

From curves to surfaces. Parametric surfaces and solid modeling. Extrusions. Surfaces of revolution. So far have discussed spline curves in 2D

Curved PN Triangles. Alex Vlachos Jörg Peters

Subdivision. Outline. Key Questions. Subdivision Surfaces. Advanced Computer Graphics (Spring 2013) Video: Geri s Game (outside link)

Real-Time Hair Simulation and Rendering on the GPU. Louis Bavoil

Hardware Displacement Mapping

12.3 Subdivision Surfaces. What is subdivision based representation? Subdivision Surfaces

Direct Rendering of Trimmed NURBS Surfaces

Subdivision Surfaces. Homework 1: Questions on Homework? Last Time? Today. Tensor Product. What s an illegal edge collapse?

Efficient GPU Rendering of Subdivision Surfaces using Adaptive Quadtrees

Subdivision Surfaces. Homework 1: Questions/Comments?

A Trip Down The (2011) Rasterization Pipeline

Real-Time Reyes Programmable Pipelines and Research Challenges

HW-Tessellation Basics

Subdivision Surfaces. Homework 1: Last Time? Today. Bilinear Patch. Tensor Product. Spline Surfaces / Patches

Introduction to Geometry. Computer Graphics CMU /15-662

Geometric modeling 1

Per-Face Texture Mapping for Realtime Rendering. Realtime Ptex

On Smooth Bicubic Surfaces from Quad Meshes

Physically-Based Modeling and Animation. University of Missouri at Columbia

Pump Up Your Pipeline

Recursive Subdivision Surfaces for Geometric Modeling

Dynamic Feature-Adaptive Subdivision

Curves and Curved Surfaces. Adapted by FFL from CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006

Curves & Surfaces. Last Time? Progressive Meshes. Selective Refinement. Adjacency Data Structures. Mesh Simplification. Mesh Simplification

Subdivision Curves and Surfaces

A Real-time Micropolygon Rendering Pipeline. Kayvon Fatahalian Stanford University

3/1/2010. Acceleration Techniques V1.2. Goals. Overview. Based on slides from Celine Loscos (v1.0)

Information Coding / Computer Graphics, ISY, LiTH. Splines

Computergrafik. Matthias Zwicker. Herbst 2010

Chapter IV Fragment Processing and Output Merging. 3D Graphics for Game Programming

All the Polygons You Can Eat. Doug Rogers Developer Relations

Real-Time Reyes: Programmable Pipelines and Research Challenges. Anjul Patney University of California, Davis

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

Computer Graphics CS 543 Lecture 13a Curves, Tesselation/Geometry Shaders & Level of Detail

Rendering Grass with Instancing in DirectX* 10

How to Work on Next Gen Effects Now: Bridging DX10 and DX9. Guennadi Riguer ATI Technologies

Ptex: Per-face Texture Mapping for Production Rendering

Modeling. Simulating the Everyday World

Surfaces for CAGD. FSP Tutorial. FSP-Seminar, Graz, November

Hierarchical Grid Conversion

Using Semi-Regular 4 8 Meshes for Subdivision Surfaces

Computer Graphics Curves and Surfaces. Matthias Teschner

Complexity Reduction of Catmull-Clark/Loop Subdivision Surfaces

Higher Order Surfaces in OpenGL with NV_evaluators. Sébastien Dominé

Character Modeling COPYRIGHTED MATERIAL

Real-Time Universal Capture Facial Animation with GPU Skin Rendering

Ray Casting of Trimmed NURBS Surfaces on the GPU

RSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog

Efficient Substitutes for Subdivision Surfaces

CS GPU and GPGPU Programming Lecture 2: Introduction; GPU Architecture 1. Markus Hadwiger, KAUST

Parallel Computation of Spherical Parameterizations for Mesh Analysis. Th. Athanasiadis and I. Fudos University of Ioannina, Greece

Computer Graphics I Lecture 11

Mattan Erez. The University of Texas at Austin

DirectX10 Effects. Sarah Tariq

GUERRILLA DEVELOP CONFERENCE JULY 07 BRIGHTON

Normals of subdivision surfaces and their control polyhedra

The Application Stage. The Game Loop, Resource Management and Renderer Design

Tamy Boubekeur & Christophe Schlick

Real - Time Rendering. Pipeline optimization. Michal Červeňanský Juraj Starinský

Multiresolution Meshes. COS 526 Tom Funkhouser, Fall 2016 Slides by Guskov, Praun, Sweldens, etc.

2.11 Particle Systems

09 - Designing Surfaces. CSCI-GA Computer Graphics - Fall 16 - Daniele Panozzo

Spline Surfaces, Subdivision Surfaces

NVIDIA Developer Toolkit. March 2005

Advanced Computer Graphics

G 2 Interpolation for Polar Surfaces

Removing Polar Rendering Artifacts in Subdivision Surfaces

The goal is the definition of points with numbers and primitives with equations or functions. The definition of points with numbers requires a

Until now we have worked with flat entities such as lines and flat polygons. Fit well with graphics hardware Mathematically simple

CMSC427 Advanced shading getting global illumination by local methods. Credit: slides Prof. Zwicker

Smooth Multi-Sided Blending of bi-2 Splines

Beginning Direct3D Game Programming: 1. The History of Direct3D Graphics

Semi-uniform, 2-Different Tessellation of Triangular Parametric Surfaces

DirectX10 Effects and Performance. Bryan Dudash

Splines. Connecting the Dots

Sung-Eui Yoon ( 윤성의 )

Graphics Architectures and OpenCL. Michael Doggett Department of Computer Science Lund university

Transcription:

Next-Generation Rendering of Subdivision Surfaces Ignacio Castaño Developer Technology - NVIDIA

Outline Motivation Displaced Subdivision Surfaces Background Direct Evaluation Methods Implementation ti on next-gen GPUs Implementation on current GPUs Content t Creation Tools and guidelines

Motivation Kenneth Scott, id Software 2008

Compression Save memory and bandwidth Memory is the main bottleneck to render highly detailed surfaces = + Bay Raitt Level 8 Level 16 Level 32 Level 64 Regular Triangle Mesh 16MB 59MB 236MB 943MB Displaced Subdivision Surface 1.9MB 7.5MB 30MB 118MB

Scalability Continuous Level of Detail Pixolator @ ZBrushCentral

Scalability View Dependent Level of Detail Pixolator @ ZBrushCentral Bay Raitt

Animation & Simulation Perform Expensive Computations at lower frequency: Realistic animation: blend shapes, morph targets, etc. Physics, collision detection, soft body dynamics, etc.

Goal Enable unprecedented visuals: Highly detailed characters Realistic R li ti animation i ti Mike Asquith, Valve Corporation 2007

Subdivision Surfaces Well understood, d mature technology Widespread use in the movie industry Readily available modeling and sculpting tools Geri s Game Pixar Animation Studios 1998

Subdivision Surfaces Overcome deficiencies i i of previous methods Limit of an infinite recursive refinement process Not limited to rectangular grids of control nets Represent arbitrary surface topologies Ease of manipulation is their main advantage

Catmull-Clark Subdivision Most popular scheme Based on B-Spline subdivision Evaluation through recursive refinement Add one new vertex for every face and every edge

Catmull-Clark Subdivision 1 4 1 4 1 4 1 4

Catmull-Clark Subdivision 1 16 1 16 1 16 3 8 3 8 1 16

Catmull-Clark Subdivision Catmull-Clark Subdivision 2 4 1 n 2 2 3 n 2 2 3 n 4n 2 4 1 n 2n 2 2 3 2 4 1 n n n 4 4 7 2 2 3 n 2 2n 1 2 2 3 n 1 2 4n 2 4 1 n

Catmull-Clark Subdivision Resulting mesh only approximates the limit i subdivision surface Halstead et al show that it s possible to project the vertices to the limit surface Efficient, Fair Interpolation using Catmull-Clark Surfaces http://graphics.cs.uiuc.edu/~jch/cs497jch/halstead.pdf

GPU Implementations Previous approaches on the GPU: Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping, Michael Bunnell (Render to Texture) Recursive Geometry Shader refinement (Stream Out) Require multiple passes: High bandwidth requirement Direct evaluation is preferred

Tessellation Pipeline Direct3D11 extends Direct3D10 with support for programmable tessellation Input Assembler Vertex Shader Two new shader stages: Hull Shader Hull Shader (HS) Domain Shader (DS) One fixed function stage: Tessellator (TS) Tessellator Domain Shader Geometry Shader Setup/Raster

Direct Evalution of Subdiv. Surfaces Jos Stam: Exact evaluation of Catmull-Clark subdivision surfaces at arbitrary parameter values Requires extraordinary vertices to be isolated Evaluation is quite expensive Jeff Bolz and Peter Schroeder: Evaluation of Subdivision Surfaces on Programmable Graphics Hardware Requires pre-tabulated basis for each topology and each possible tessellation level

Approximating Catmull-Clark Subdivision i i Surfaces (ACC) Developed by Charles Loop and Scott Schaefer: http://research.microsoft.com/~cloop/ Surface approximated with a Bezier patch and a pair of independent tangent patches Geometry Geometry/Tangent Subdivision Approximation Approximation Surface

Approximating Catmull-Clark Subdivision Surfaces (ACC) C t l i t i t j t d t Corner control point is vertex projected to limit surface

Approximating Catmull-Clark Subdivision Surfaces (ACC) C t id f i t i t l i t l t Centroid of interior control points equal to limit position of corner vertex

Approximating Catmull-Clark Subdivision Surfaces (ACC) Ed t l i t id i t f t i t i Edge control point midpoint of two interior control points

Approximating Catmull-Clark Subdivision Surfaces (ACC) This construction ti is exact on regular patches Equivalent to B-Spline to Bezier conversion Approximate on irregular patches Edges around extraordinary vertices only have C0 continuity Mike Asquith, Valve Corporation 2007

Approximating Catmull-Clark Subdivision Surfaces (ACC) Use separate tangent t field for shading in order to hide tangent discontinuities Control tangents t are computed similarly: il l Corner tangents are tangents of the limit surface Boundary tangents are constructed to satisfy continuity condition Mike Asquith, Valve Corporation 2007

Bezier Patches Problem with Bezier Patches: f ( u, v) f ( u, v) u v

Bezier Patches D i ti l th d t b Derivatives along the edges cannot be specified independently

Gregory Patches With Bezier patches it s not possible to obtain With Bezier patches it s not possible to obtain C1 continuity across all boundaries

Gregory Patches 20 control points instead of 16 Evaluated like Bezier where interior control point is computed as: b 11 u,v u b 11u u v b 11v v On regular faces Gregory patch becomes a Bezier patch

Gregory Patches

Gregory Patches

Gregory Patches

Gregory Patches Less control points to evaluate and transfer Bezier requires 16 position & 16 tangent control points Surface evaluation is more efficient Position and tangents t can be evaluated simultaneously with de Casteljau Less degrees of freedom Not so good approximation

Gregory Triangles ACC can be extended to triangular patches Quad-Triangle meshes supported as well

Tessellation Pipeline Hull Shader transforms input face to regular surface representation Tessellator produces a semiregular tessellation pattern Domain Shader evaluates surface

Input Assembler New patch primitive iti type Arbitrary vertex count (up to 32) No implied topology Only supported primitive when tessellation is enabled Input Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Setup/Raster

Input Assembler A patch is a face and its neighborhood: h

Vertex Shader Transforms patch control points Inp t A bl Usually used for: Animation (skinning, blend shapes) Physics simulation Input Assembler Vertex Shader Hull Shader Tessellator Domain Shader Allows more expensive animation at a lower frequency y Geometry Shader Setup/Raster

Hull Shader (HS) Transforms control points to a different basis Computes edge tessellation levels Input Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Setup/Raster

Hull Shader (HS) One invocation per patch Parallelized explicitly One thread per control point HS output: [1..32] control points Tessellation factors HS input: [1..32] control points Hull Shader Tessellator Domain Shader

Control Point Evaluation HS output is a regular bicubic Bezier patch:

Control Point Evaluation Each control point is a linear combination i of the neighbor vertices: 1 4 1 4 n 2 4 4 1 1

Control Point Evaluation Each control point is a linear combination i of the neighbor vertices: 2 1 2n 4 2 1

Control Point Evaluation Each control point is a linear combination i of the neighbor vertices: n 2 2 1

Control Point Evaluation The same is true for control tangents: β 3 α β 0 0 α 0 α 3 α 1 α 3 α 1 α 2 β 1 α 2 β 1 β 2

Control Point Evaluation In all cases we can evaluate a control point as a weighted sum: P j = Sum(W ij * V i ) We can implement that in HS using one thread per control point: global float w[k][16]; in float3 V[K]; p out float3 pos[16]; One set of constants for each topology combination Input vertices Output control points void main() { float3 p = 0.0; for (int i = 0; i < K; i++) { p += V[i] * w[i][threadid]; } pos[threadid] = p; } For each input vertex V i

Control Point Evaluation Pre-compute stencils for each topology combination Each combination rendered in a separate pass: Different topologies have different number of vertices One constant buffer for each set of weights Total number of constants depends on number of topology combinations It s important to minimize total number of topology combinations

Tessellation Level Evaluation Hull Shader also computes tessellation ti levelsl Can use any metric: Distance to camera Screen space length of hull boundary Hull curvature Texture space length of patch edges Precomputed edge factors based on displacement roughness

Tessellator (TS) Fixed function stage, but configurable Fully symmetric Domains: Triangle, Quad, Isolines Spacing: Discrete, Continuous, Pow2 Input Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Setup/Raster

Tessellator (TS) Level 5 Level 5.2 Level 5.8

Domain Shader (DS) Evaluate surface given parametric UV coordinates Input Assembler Vertex Shader Hull Shader Interpolate attributes Apply displacements Tessellator Domain Shader Geometry Shader Setup/Raster

Domain Shader (DS) One invocation i per generated vertex DS input: control points Tess factors Hull Shader Tessellator DS input: U V {W} coordinates Domain Shader DS output: one vertex

Watertight Surface Evaluation Special care has to be taken to obtain watertight results (prevent cracks) All computations need to be the same in the U and V direction and be symmetric along the patch edges A B

Floating Point Consistency FP addition i is non commutative: A + B + C + D!= D + C + B + A (A + B) + (C + D) == (D + C) + (B + A) FMA is not equivalent to MUL+ADD A*a + B*b FMA(A*a, B, b)!= FMA(B*b, A, a) Beware of compiler optimizations Use precise keyword

Displacement Mapping Sample displacement value from a texture Displace vertex along its normal Kenneth Scott, id Software 2008

Vector Displacements Native representation of most sculpting tools Mike Asquith, Valve Corporation 2007 1D Displacements Mike Asquith, Valve Corporation 2007 3D Displacements

Watertight Texture Sampling Texture seams cause holes in the mesh! Due to bilinear discontinuities V i fl ti i t i i diff t i f Varying floating point precision on different regions of the texture map

Watertight Texture Sampling S l t i ti bili tif t Seamless parameterizations remove bilinear artifacts, but do not solve floating point precision issues

Watertight Texture Sampling T t di t i t l ti i ld diff t Texture coordinate interpolation yields different result depending on location of the seam edges:

Watertight Texture Sampling Solution: define edge and corner ownership Mike Asquith, Valve Corporation 2007

Watertight Texture Sampling Store 4 texture coordinates per vertex tx 2 16 per patch // float2 tx[4], ty[4], tz[4], tw[4]; tx 3 ty 0 tx 1 tx 0 ty 2 ty 3 int ix = 2 * (uv.x == 1) + (uv.y == 1); int iy = 2 * (uv.y == 1) + (uv.x == 0); ty 1 int iz = 2 * (uv.x == 0) + (uv.y == 0); int iw = 2 * (uv.y == 0) + (uv.x == 1); tz 1 tz 0 tw 0 tw 2 tz 3 tz 2 tw 1 tw 3 float2 tc = w.x * tx[ix] + w.y * ty[iy] + w.z * tz[iz] + w.w * tw[iw];

Implementation on Current HW Geometry Shader not designed for tessellation Limited it output t size Serial geometry generation Input Assembler Vertex Shader Geometry Shader Setup/Raster Use geometry instancing instead!

Instanced Tessellation Literature Introduced d by Boubekeur and Schlick Generic Mesh Refinement On GPU http://iparla.labri.fr/publications/2005/bs05/genericmeshrefinementongpu.pdf

Instanced Tessellation Literature Generic Adaptive Mesh Refinement, GPU Gems 3 A Flexible Kernel for Adaptive Mesh p Refinement on GPU http://iparla.labri.fr/publications/2008/bs08/ark.pdf

Instanced Tessellation Literature Semi-uniform if Adaptive Patch Tessellation C. Dyken, M. Reimers, J. Seland 1D array of pre-computed tessellations Edge vertices collapsed to nearest vertex common in both tessellations Dyken, Reimers & Seland, Univ. Oslo & SINTEF ICT

Instanced Tessellation Pipeline Input Geometry Control Point Transformation Tessellation Level Evaluation Bucketing Control Points Edge tessellation levels Surface Evaluation Patch Indices

Control Point Evaluation Evaluated in the vertex shader Input Geometry Render P groups of N vertices using instancing P is number of patches Control Point Transformation Tessellation Level Evaluation Bucketing Control Points Edge tessellatio n levels Surface Evaluation N is number of control points Patch Indices Each vertex shader computes a separate control point Use InstanceID to index patch Use VertexID to index control point Stream-out result

Tessellation Level Evaluation Evaluated in the vertex shader Input Geometry Load control points produced by previous pass Control Point Transformation Tessellation Level Evaluation Bucketing Control Points Edge tessellatio n levels Surface Evaluation Use one thread per patch Patch Indices Evaluate desired LOD metric Stream-out result

Bucketing Build list of patches for each tessellation level Load edge tessellation levels produced by previous pass Input Geometry Control Point Transformation Tessellation Level Evaluation Bucketing Control Points Edge tessellatio n levels Patch Indices Surface Evaluation Use MAX(edge level) to select the desired bucket Append patch ID to bucket

Bucketing Patch 0 1 Factor 2 2 Patch index buffer 2 4 5 2 1 Patch index buffer 3 4 0 1 4 5 6 1 1 4 Patch index buffer 3 6

Surface Evaluation One pass for each bucket Render pre-tessellated patch with instance count equal to patch count Patch Indices: Input Geometry Control Point Transformation Tessellation Level Evaluation Patch 0 Patch 1 Patch 2 Patch 3... Patch n Bucketing Control Points Edge tessellatio n levels Patch Indices Surface Evaluation Instancing

Surface Evaluation Load patch index from bucket s patch list Load edge tessellation levels to stitch boundaries Input Geometry Control Point Transformation Tessellation Level Evaluation Bucketing Control Points Edge tessellatio n levels Patch Indices Surface Evaluation Load control points to evaluate surface

Instanced Tessellation Pipeline No continuous LODs Tessellation patterns limited to POW2 Degenerate triangles generated for stitching Multiple passes required to compute data One draw call for each bucket

Instanced Tessellation Demos Download at http://developer.nvidia.com

Production Pipeline Modeling Tools Base surface Sculpting Tools Detailed mesh Baker Tools Baker Tools Normal, displacement, occlusion, and other maps

Modeling Performance depends d on number of topology combinations Optimization guidelines: Eliminate triangles (Quad only meshes) Close holes (Avoid open meshes) Reduce number of extraordinary vertices Decrease number of patches to the minimum Try to create uniform, regular meshes

Topology Optimization 105 topology combinations Mike Asquith, Valve Corporation 2007

Topology Optimization 23 topology combinations Mike Asquith, Valve Corporation 2007

Topology Optimization Topology visualization tool (nvanalyze) Topology visualization tool (nvanalyze) Maya plugin that highlights faces that damage mesh quality the most

NVIDIA Mesh Processing Tool Successor of NVMeshMender and NVTriStrip but for subdivision surfaces: Reorder faces for consistent adjacencies Minimize topology combinations Pre-compute stencils for different approximation schemes Compute texture coordinates for watertight texture sampling Optimize vertex and face order for best performance And more!

Sculpting Many tools available: Autodesk Mudbox Pixologic ZBrush modo, Silo, Blender, etc.

Baker Tools Many options: xnormal Mudbox, ZMapper Melody, etc. PolyBump, etc. Two approaches Ray casting Dual parameterization

Capturing Attributes Ray casting Can sample complex meshes made of multiple pieces Produces better scalar displacements p Occasional artifacts (missing rays, double hits) Require artist supervision and tweaking

Capturing Attributes Dual parameterization Much faster, easy to implement Higher quality vector displacements Artifact free, no artist supervision required Inaccurate scalar displacements Low and high res meshes must have same topology

NVIDIA Baker Tool Uses dual parameterization to extract: Normal and displacement maps Only tool that generates vector displacements Occlusion maps, and more! No other tool supports custom base surfaces: Bezier ACC Gregory ACC Triangle ge meshes

NVIDIA Baker Tool Uses optimized i Montecarlo Raytracer Can be easily extended to support: Bent normals Spherical harmonic PRTs etc. Full source code will be openly available

Thanks Bay Raitt, Mike Asquith, Valve Corporation Kenneth Scott, id Software

Q & A Ignacio Castaño icastano@nvidia.com idi