Direct3D New Rendering Features

Slides:



Advertisements
Similar presentations
COMPUTER GRAPHICS SOFTWARE.
Advertisements

COMPUTER GRAPHICS CS 482 – FALL 2014 NOVEMBER 10, 2014 GRAPHICS HARDWARE GRAPHICS PROCESSING UNITS PARALLELISM.
RealityEngine Graphics Kurt Akeley Silicon Graphics Computer Systems.
CS 4363/6353 BASIC RENDERING. THE GRAPHICS PIPELINE OVERVIEW Vertex Processing Coordinate transformations Compute color for each vertex Clipping and Primitive.
Computer Graphic Creator: Mohsen Asghari Session 2 Fall 2014.
Photon Mapping. How did I use it 10 years ago? Why might you want to use it tomorrow?
Ray-casting in VolumePro™ 1000
1 Questions about GPUs AS-Temps réel – Bordeaux Philippe Decaudin Fabrice Neyret Stéphane Guy Sylvain Lefebvre.
03/12/02 (c) 2002 University of Wisconsin, CS559 Last Time Some Visibility (Hidden Surface Removal) algorithms –Painter’s Draw in some order Things drawn.
CAP4730: Computational Structures in Computer Graphics Visible Surface Determination.
Computer Graphics Visible Surface Determination. Goal of Visible Surface Determination To draw only the surfaces (triangles) that are visible, given a.
High-Performance Software
GCAFE 28 Feb Real-time REYES Jeremy Sugerman.
Eurographics 2012, Cagliari, Italy S-buffer: Sparsity-aware Multi-fragment Rendering Andreas A. Vasilakis and Ioannis Fudos Department of Computer Science,
Rasterization and Ray Tracing in Real-Time Applications (Games) Andrew Graff.
3D Flight Simulator for CE Balaban Nir Lander Shiran Supervisor: Futerman Yan.
Enhancing and Optimizing the Render Cache Bruce Walter Cornell Program of Computer Graphics George Drettakis REVES/INRIA Sophia-Antipolis Donald P. Greenberg.
Approximate Soft Shadows on Arbitrary Surfaces using Penumbra Wedges Tomas Akenine-Möller Ulf Assarsson Department of Computer Engineering, Chalmers University.
Memory Efficient Acceleration Structures and Techniques for CPU-based Volume Raycasting of Large Data S. Grimm, S. Bruckner, A. Kanitsar and E. Gröller.
Status – Week 207 Victor Moya. Summary Z Test box. Z Test box. Z Compression. Z Compression. Z Cache. Z Cache. Stencil. Stencil. HZ Box. HZ Box. HZ Test.
Introduction to 3D Graphics John E. Laird. Basic Issues u Given a internal model of a 3D world, with textures and light sources how do you project it.
COOL Chips IV A High Performance 3D Graphics Rasterizer with Effective Memory Structure Woo-Chan Park, Kil-Whan Lee*, Seung-Gi Lee, Moon-Hee Choi, Won-Jong.
Week 1 - Friday.  What did we talk about last time?  C#  SharpDX.
Direct Illumination with Lazy Visibility Evaluation David Hart Philip Dutré Donald P. Greenberg Cornell University SIGGRAPH 99.
© Copyright Khronos Group, Page 1 Harnessing the Horsepower of OpenGL ES Hardware Acceleration Rob Simpson, Bitboys Oy.
CSE 381 – Advanced Game Programming Basic 3D Graphics
Computationally Efficient Histopathological Image Analysis: Use of GPUs for Classification of Stromal Development Olcay Sertel 1,2, Antonio Ruiz 3, Umit.
UW EXTENSION CERTIFICATE PROGRAM IN GAME DEVELOPMENT 2 ND QUARTER: ADVANCED GRAPHICS Visual quality techniques.
Buffers Textures and more Rendering Paul Taylor & Barry La Trobe University 2009.
4/23/2017 4:23 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Cg Programming Mapping Computational Concepts to GPUs.
Week 2 - Friday.  What did we talk about last time?  Graphics rendering pipeline  Geometry Stage.
Emerging Technologies for Games Alpha Sorting and “Soft” Particles CO3303 Week 15.
Lecture Topics: 11/17 Page tables TLBs Virtual memory flat page tables
Preparing and Deploying Data to ArcPad Juan Luera.
Introduction to Parallel Rendering Jian Huang, CS 594, Spring 2002.
3D Graphics for Game Programming Chapter IV Fragment Processing and Output Merging.
Quick-CULLIDE: Efficient Inter- and Intra- Object Collision Culling using Graphics Hardware Naga K. Govindaraju, Ming C. Lin, Dinesh Manocha University.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
Interactive Visualization of Exceptionally Complex Industrial CAD Datasets Andreas Dietrich Ingo Wald Philipp Slusallek Computer Graphics Group Saarland.
Real-time Graphics for VR Chapter 23. What is it about? In this part of the course we will look at how to render images given the constrains of VR: –we.
Adaptive Display Algorithmfor Interactive Frame Rates.
Fast BVH Construction on GPUs (Eurographics 2009) Park, Soonchan KAIST (Korea Advanced Institute of Science and Technology)
David Luebke11/26/2015 CS 551 / 645: Introductory Computer Graphics David Luebke
Hierarchical Penumbra Casting Samuli Laine Timo Aila Helsinki University of Technology Hybrid Graphics, Ltd.
Xbox MB system memory IBM 3-way symmetric core processor ATI GPU with embedded EDRAM 12x DVD Optional Hard disk.
Texture Mapping CAP4730: Computational Structures in Computer Graphics.
Computer Graphics Rendering 2D Geometry CO2409 Computer Graphics Week 2.
Stencil Routed A-Buffer
Based on paper by: Rahul Khardekar, Sara McMains Mechanical Engineering University of California, Berkeley ASME 2006 International Design Engineering Technical.
Emerging Technologies for Games Deferred Rendering CO3303 Week 22.
1)Leverage raw computational power of GPU  Magnitude performance gains possible.
Image Processing A Study in Pixel Averaging Building a Resolution Pyramid With Parallel Computing Denise Runnels and Farnaz Zand.
What are shaders? In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit(GPU) and is used to do shading.
UW EXTENSION CERTIFICATE PROGRAM IN GAME DEVELOPMENT 2 ND QUARTER: ADVANCED GRAPHICS The GPU.
MEMORY MANAGEMENT Operating System. Memory Management Memory management is how the OS makes best use of the memory available to it Remember that the OS.
Path/Ray Tracing Examples. Path/Ray Tracing Rendering algorithms that trace photon rays Trace from eye – Where does this photon come from? Trace from.
1cs426-winter-2008 Notes. 2 Atop operation  Image 1 “atop” image 2  Assume independence of sub-pixel structure So for each final pixel, a fraction alpha.
Image Fusion In Real-time, on a PC. Goals Interactive display of volume data in 3D –Allow more than one data set –Allow fusion of different modalities.
COMPUTER GRAPHICS CHAPTER 38 CS 482 – Fall 2017 GRAPHICS HARDWARE
Address – 32 bits WRITE Write Cache Write Main Byte Offset Tag Index Valid Tag Data 16K entries 16.
Deferred Lighting.
The Graphics Rendering Pipeline
© University of Wisconsin, CS559 Fall 2004
Iterative Optimization
CSE 381 – Advanced Game Programming Terrain
Static Image Filtering on Commodity Graphics Processors
UMBC Graphics for Games
Game Engines Non-game specific technology Game: Engine
RADEON™ 9700 Architecture and 3D Performance
Presentation transcript:

Direct3D New Rendering Features Max McMullen Direct3D Development Lead Microsoft

New Rendering Features Direct3D 11.3 & Direct3D 12

Feature Focus Rasterizer Ordered Views Typed UAV Load Volume Tiled Resources Conservative Raster

Rasterizer Ordered Views UAV reads & writes with render order semantics Enables Custom blending Order independent transparency Antialiasing … Repeatability Data structure manipulation

Order Independent Transparency Efficient order-independent transparency No CPU sorting… finally Fast & Incorrect Fast & Correct Slow & Correct Without ROVs With ROVs

Rasterizer Ordered Views So what’s the problem? Viewport

Rasterizer Ordered Views GPUs process MANY pixels at the same time, here are two threads: A: (1st triangle) B:(2nd triangle) Viewport RWTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RWTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views Two at the same time, but not exactly in sync A: B: Viewport RWTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RWTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views B: Viewport RWTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RWTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views One of our threads writes first. How much earlier?? A: B: Viewport RWTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RWTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views What did each thread read or write? When? It might change?? A: B: Viewport RWTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RWTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } uav[0] = ... 1? 2? 3?

Rasterizer Ordered Views With ROVs the order is defined! A: B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views “A” goes first, always… A: B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views “B” waits… A: B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; // = 1.0f val = val + c; uav[0] = val; }

Rasterizer Ordered Views B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } ROVTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; }

Rasterizer Ordered Views Same value every time! A: B: Viewport ROVTexture1D uav; void PSMain(float c /*=1.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } RasterizerOrderedTexture1D uav; void PSMain(float c /*=2.0f*/) { // ... val = uav[0]; val = val + c; uav[0] = val; } uav[0] = 3.0f

Typed UAV Load Used with UAV stores Before Now Combined with ROVs Only 32-bit loads SW unpacking SW conversion Now First class loading UAV read/write operations with full type conversion Combined with ROVs Perform complex read-modify-write operations Aka programmable blend

Background: Tiled Resources Sparse allocation You don’t need texture everywhere Memory reuse Use the same memory in multiple places Aka Mega-Texture

New: Volume Tiled Resources Modeling the Sponza Atrium (2cm resolution) Tiled Texture3D Texture3D 32 x 32 x 16 x 32bpp / volume tile x ~2500 non-empty volume tiles = 156 MB 1200 x 600 x 600 x 32bpp = 1.6 GB Image credit: Wikimedia user Joanbanjo

Conservative Rasterization – Standard Rasterization is not enough Rasterization tests point locations Pixel centers Multi-sample locations Not everything drawn hits a sample Some algorithms use low resolution Even fewer sample points Many triangles missed We need a guarantee… we can’t miss anything Conservative rasterization tests the whole pixel  the area

Conservative Rasterization Standard Rasterization Conservative Rasterization

Conservative Rasterization Construction of spatial data structures… Where is everything? Is anything in this box? What? Voxelization Does the triangle touch the voxel? Tile allocation Rasterization at tile resolution Is the tile touched? Does it need memory? Collision detection What things are in this part of space? What might I run into? Occlusion culling Classification of space – Can I see through here, or not?

The End