SlideShare ist ein Scribd-Unternehmen logo
1 von 23
TRESSFX
THE FAST AND THE FURRY
AMD AND MICROSOFT DEVELOPER DAY, JUNE 2014, STOCKHOLM
NICOLAS THIBIEROZ
WORLDWIDE GAMING ENGINEERING MANAGER, AMD
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM2
TRESSFX: NEXT-GENERATION HAIR AND FUR RENDERING
ïč The time for next-gen quality is now
ïč Tomb Raider pioneered next-gen hair
‒ Includes PS4/XB1
ïč Users expect this level of quality for next-gen titles
ïč You need to start thinking about this!
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM3
WHAT MAKES GOOD HAIR/FUR?
Basic Rendering Antialiasing Antialiasing
+ Self Shadowing
Antialiasing
+ Self Shadowing
+ Transparency
Demo
ïč All three components are a must to ensure high quality
ïč Transparency in particular is essential to next-gen visuals
‒ Requires an Order-Independent Transparency (OIT) solution
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM4
ISOLINE TESSELLATION FOR HAIR/FUR? 1/2
ïč Isoline tessellation has two tessellation factors
‒ First is line density (lines per invocation)
‒ Second is line detail (segments per line)
ïč In theory provides easy LOD system
‒ Variable line density and detail by increasing both tessellation factors based on distance
Tess = (1,1) Tess = (2,1) Tess = (2,2) Tess = (2,3) Tess = (3,3)
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM5
ISOLINE TESSELLATION FOR HAIR/FUR? 2/2
ïč In practice isoline tessellation is not cost effective for this scenario
ïč Lines are always 1-pixel thick
‒ Need Geometry Shader to extrude them into triangles for smooth edges
‒ Major impact on performance!
‒ Alternative is to enable MSAA
‒ Most engines are deferred so this causes a large performance impact
‒ No extrusion for smoothing edges and no MSAA = poor quality!
ïč Bottom line: a pure Vertex Shader solution is faster
‒ Curvature is rarely a problem (dependant on vertices/strands at authoring time)
‒ If needed LOD benefit can be done in Vertex Shader
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM6
TRESSFX RENDERING PIPELINE
ïč TressFX 2 uses a deferred approach for best performance
Three main steps
ïč STEP 1: Hair simulation
ïč STEP 2: Store fragment properties into buffers
ïč STEP 3: Fetch fragment properties, sort, selective shading and render
‒ Full shading on K-frontmost fragments
‒ “Tail” fragments are shaded with a simpler light equation and shadowing algorithm
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM7
TRESSFX RENDERING PIPELINE
STEP 1: HAIR SIMULATION
CSCSCS
Input Geometry
(SRV)
Post-simulation
geometry (UAV)
Simulation
parameters
Pre-simulation line
segments (model space)
Post-simulation line
segments (world space)
Simulation compute shaders
Edge length constraint
Local shape constraint
Global shape constraint
Not always needed for fur
Model Transform
Collision Shape
Not always needed for fur
External Forces (wind, gravity, etc.)
ïč Input model is a collection of line segments (each segment composed of up to 64 vertices)
ïč Optionally divided into “master strands” and “slave strands” to optimize simulation performance
‒ Only master strands are simulated (e.g. 1:4 ratio)
‒ Slave strands use master strand simulation results with added noise
‒ Virtually no difference from full-scale simulation but much better simulation performance!
‒ Master:slave simulation ratio can also vary with distance for even better performance
Demo
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM8
TRESSFX RENDERING PIPELINE
STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS
VS
World
space
Index
Buffer
Indexed triangle list
10
1
2
3 2
4
0
5
Extrusion into
triangles
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM9
LINE SEGMENT EXTRUSION INTO TRIANGLES
ïč A lot of vertices go through rendering high-quality hair or fur!
‒ Geometry processing can therefore be a significant bottleneck
ïč In previous versions of TressFX extrusion was done in Geometry Shader (don’t do it!) and then VS with Draw()
ïč Much faster performance was obtained with pure VS solution and precomputed index buffers
‒ Maximizes post vertex cache use!
DrawIndexed() method
Indexed triangle list = { ( 0, 1, 2 ), (2, 1, 3 ), ( 2, 3, 4 ), (4, 3, 5 ), ( 
 ) };
Line segments Expanded quads
10
1
2
3 2
4
0
5
1,4
Draw() method
Line segments Expanded quads
0
1
2
3,5
6
2,3
7,10
8,9
0
11
Triangle list = { ( 0, 1, 2 ), ( 3, 4, 5 ), ( 6, 7, 8 ), (9, 10, 11 ), ( 
 ) };
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM10
TRESSFX RENDERING PIPELINE
STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS
Antialiasing
VS PS
Homogeneous
clip space
World
space
Index
Buffer
Indexed triangle list
10
1
2
3 2
4
0
5
Extrusion into
triangles
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM11
ANTIALIASING
ïč Antialiasing (aka “coverage”) using analytical method
‒ This is NOT Multisampling Anti-Aliasing!
ïč Compute pixel coverage on edges of hair strand triangles and convert it to
an alpha value
ïč Alpha value fades out based on distance from pixel centre to strand axis
ïč Similar principle to Emil Persson’s phone wire Anti-Aliasing
http://www.humus.name/Articles/Persson_GraphicsGemsForGames.pdf
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM12
TRESSFX RENDERING PIPELINE
STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS
Antialiasing
depth
tangent
coverage
next
VS PS
Homogeneous
clip space
World
space
Null RT
Stencil
PPLL
UAV
Head
UAV
Index
Buffer
Indexed triangle list
10
1
2
3 2
4
0
5
Extrusion into
triangles
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM13
PER-PIXEL LINKED LISTS
ïč Head UAV
‒ Each pixel location has a “head pointer” to a linked list in the PPLL UAV
ïč PPLL UAV
‒ As new fragments are rendered, they are added to the next open location in the PPLL (using UAV counter)
‒ A link is created to the fragment pointed to by the head pointer
‒ Head pointer then points to the new fragment
// Retrieve current pixel count and increase counter
uint uPixelCount = LinkedListUAV.IncrementCounter();
uint uOldStartOffset;
// Exchange indices in LinkedListHead texture corresponding to pixel location
InterlockedExchange(LinkedListHeadUAV[address], uPixelCount, uOldStartOffset);
// Append new element at the end of the Fragment and Link Buffer
Element.uNext = uOldStartOffset;
LinkedListUAV[uPixelCount] = Element;
depth
tangent
coverage
next
PPLL
UAV
Head
UAV
ïč Memory requirements can be large!
‒ Width * Height * Average overdraw * sizeof (PPLL structure)
‒ Can use tiling approach in memory-constrained situations
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM14
TRESSFX RENDERING PIPELINE
STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER
VS PS
Stencil
Head
UAV
PPLL
UAV
Lighting
Full Screen
Quad/Triangle
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM15
LIGHTING
ïč Different options available
‒ Kajiya-Kay hair lighting model
‒ Marshner model
‒ Anything else that looks good!
ïč Fragment properties storage requirements may limit your
options!
ïč TressFX 2 sample uses an approximation of the Marchner
technique when rendering two highlights
‒ Unique fragment properties: depth, tangent vector
Primary Highlights
Secondary Highlights
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM16
TRESSFX RENDERING PIPELINE
STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER
VS PS
Stencil
Head
UAV
PPLL
UAV
Lighting Shadows
Full Screen
Quad/Triangle
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM17
SHADOWS
ïč Three different cases
ïč Hair self-shadowing
‒ Essential component to give next-gen volumetric quality look
‒ Simplified Deep Shadow Map technique
ïč Hair casting shadows on body & environment
‒ Body: Need a very soft look at close range (blur shadow map)
‒ Environment: render (possibly simplified) hair geometry into cascaded shadow map
ïč Environment casting shadows on hair
‒ Sample environment shadow map at hair fragment rendering time
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM18
TRESSFX RENDERING PIPELINE
STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER
VS PS
Stencil
Head
UAV
PPLL
UAV K frontmost fragment:
full shading, sorting
and manual blending
Lighting Shadows
Full Screen
Quad/Triangle
Tail fragments:
cheap shading,
no sorting and
manual blending
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM19
SELECTIVE FRAGMENT SHADING
THIS IS WHERE THE MEAT OF THE CODE OCCURS!
// Go through the rest of the linked list, and keep closest k fragments but
// not in sorted order
[allow_uav_condition]
for(int l=0; l < g_iMaxFragments; l++)
{
if(pointer == NULLPOINTER) break;
int id = 0;
float max_depth = 0;
// Find the furthest node in array
[unroll]for(int i=0; i<KBUFFER_SIZE; i++)
{
float fDepth = kBuffer[i].depth;
if(max_depth < fDepth)
{
max_depth = fDepth; id = i;
}
}
// get the start of the linked list from the head pointer
uint pointer = LinkedListHeadSRV[In.vPosition.xy];
// Copy first K fragments from PPLL into KBuffer[]
NODE Kbuffer[KBUFFER_SIZE];
for(int p=0; p<KBUFFER_SIZE; p++)
{
if (pointer != NULLPOINTER)
{
kBuffer[p] = LinkedListSRV[pointer];
pointer = LinkedListSRV[pointer].uNext;
}
}
// If linked list node is nearer than the furthest one in the local array
// exchange the node in the local array for the one in the linked list
NODE Node = LinkedListSRV[pointer];
if (max_depth > Node.depth)
{
SWAP(Node, Kbuffer[i]);
}
// Do simple shading and shadowing for nodes not part of the K closest fragments
fragmentcolor = ComputeSimpleShading(Node);
// Out of order blending
fcolor.xyz = mad(-fcolor.xyz, fragmentColor.w, fcolor.xyz) +
fragmentColor.xyz * fragmentColor.w;
fcolor.w = mad(-fcolor.w, fragmentColor.w, fcolor.w);
// Retrieve next node pointer
pointer = LinkedListSRV[pointer].uNext;
}
// Blend the k nearest layers of fragments from back to front, where k = KBUFFER_SIZE
for(int j=0; j<KBUFFER_SIZE; j++)
{
int id = 0;
float max_depth = 0;
// Find the furthest node in the array
for(int i=0; i<KBUFFER_SIZE; i++)
{
float fDepth = kBuffer[i].depth;
if(max_depth < fDepth)
{
max_depth = fDepth; id = i;
}
}
// Take this node out of the next search
Node = KBuffer[id]; KBuffer[id] = (NODE)0;
// Do high quality shading and shadowing
fragmentcolor = ComputeHighQualityshading(Node);
// Blend fragment color
fcolor.xyz = mad(-fcolor.xyz, fragmentColor.w, fcolor.xyz) +
fragmentColor.xyz * fragmentColor.w;
fcolor.w = mad(-fcolor.w, fragmentColor.w, fcolor.w);
}
return fcolor;
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM20
TRESSFX RENDERING PIPELINE
STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER
VS PS
Stencil
Head
UAV
PPLL
UAV
Render target
K frontmost fragment:
full shading, sorting
and manual blending
Lighting Shadows
Full Screen
Quad/Triangle
Tail fragments:
cheap shading,
no sorting and
manual blending
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM21
TRESSFX PERFORMANCE
FAST AND FURRY
ïč High number of fragments required for quality look
ïč Main bottleneck is shading all those fragments
‒ Not per-pixel linked list traversal!
ïč Selective shading approach allows significant performance savings with minor or negligible quality tradeoffs
Technique Cost
Out of order, no shading 1.31 ms
Out of order, shading 2.80 ms
Deferred PPLL, selective shading 2.13 ms
Shading cost is
~ 1.5 ms
24% faster
Fur model with ~130,000 fur strands
Running on AMD Radeon 7970 @ 1080p
Distance Sim LOD
Disabled
Sim LOD
Enabled
Close range 1.01 ms 1.01 ms
Medium range 1.01 ms 0.70 ms
Long range 1.01 ms 0.37 ms
Simulation LOD
ïč Distance-adaptive Shading and Simulation LOD further improves performance
ïč “K frontmost fragments” value can inversely scale with distance
Distance Shading LOD
Disabled
Shading LOD
Enabled
Close range 3.26 ms 3.26 ms
Medium range 3.23 ms 1.77 ms
Long range 2.52 ms 0.64 ms
Shading LOD
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM22
CONCLUSION AND QUESTIONS?
ïč Next-gen hair/fur look at real-time performance is possible now!
ïč Fast:
‒ Variable ratio master/slave compute simulations
‒ Vertex Shader extrusion of segments into triangles (do not use tessellation + GS)
‒ Deferred rendering with selective shading
‒ Distance-based shading and simulation LOD
‒ Optimized shaders!
ïč Furry:
ïč Full and free access to TressFX 2 SDK sample, code and documentation at:
http://developer.amd.com/tools-and-sdks/graphics-development/amd-radeon-sdk/
@NThibieroznicolas.thibieroz@amd.com
| TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM23
DISCLAIMER & ATTRIBUTION
The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions and typographical errors.
The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap
changes, component and motherboard version changes, new model and/or product releases, product differences between differing manufacturers, software
changes, BIOS flashes, firmware upgrades, or the like. AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD
reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of
such revisions or changes.
AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY
INACCURACIES, ERRORS OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION.
AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE
LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION
CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
ATTRIBUTION
© 2013 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo and combinations thereof are trademarks of Advanced Micro Devices,
Inc. in the United States and/or other jurisdictions. Other names are for informational purposes only and may be trademarks of their respective owners.

Weitere Àhnliche Inhalte

Was ist angesagt?

Cisco DWDM Chromatic Dispertion Calculation in CTP\XLS
Cisco DWDM Chromatic Dispertion Calculation in CTP\XLSCisco DWDM Chromatic Dispertion Calculation in CTP\XLS
Cisco DWDM Chromatic Dispertion Calculation in CTP\XLSValery Kayukov
 
dwdm
 dwdm dwdm
dwdmg d
 
5G use cases and system concept.pptx
5G use cases and system concept.pptx5G use cases and system concept.pptx
5G use cases and system concept.pptxKrishnaMoorthy122770
 
5 g wireless system
5 g wireless system5 g wireless system
5 g wireless systemSanjit Shaw
 
Getting ready for wi-fi 6 and IOT
Getting ready for wi-fi 6 and IOTGetting ready for wi-fi 6 and IOT
Getting ready for wi-fi 6 and IOTNetpluz Asia Pte Ltd
 
How 5G Will Transform Industrial IoT
How 5G Will Transform Industrial IoTHow 5G Will Transform Industrial IoT
How 5G Will Transform Industrial IoTQualcomm Research
 
Network slicing-5g-beyond-networks
Network slicing-5g-beyond-networksNetwork slicing-5g-beyond-networks
Network slicing-5g-beyond-networksAbhishek Karangutkar
 
Noma-5G technology
Noma-5G  technologyNoma-5G  technology
Noma-5G technologygouthami3616
 
High Speed and RF Design Considerations - VE2013
High Speed and RF Design Considerations - VE2013High Speed and RF Design Considerations - VE2013
High Speed and RF Design Considerations - VE2013Analog Devices, Inc.
 
Ericsson 5 g platform
Ericsson 5 g platformEricsson 5 g platform
Ericsson 5 g platformEricsson
 
Fundamentals of 5G Network Slicing
Fundamentals of 5G Network SlicingFundamentals of 5G Network Slicing
Fundamentals of 5G Network SlicingTonex
 
Free space optical communication system
Free space optical communication systemFree space optical communication system
Free space optical communication systemAkshay Anand
 
5 g wireless technology
5 g wireless technology5 g wireless technology
5 g wireless technologyJasminJaman1
 
Optical network evolution
Optical network evolutionOptical network evolution
Optical network evolutionCPqD
 
Small cell Evolution
Small cell Evolution Small cell Evolution
Small cell Evolution Ericsson
 

Was ist angesagt? (20)

Cisco DWDM Chromatic Dispertion Calculation in CTP\XLS
Cisco DWDM Chromatic Dispertion Calculation in CTP\XLSCisco DWDM Chromatic Dispertion Calculation in CTP\XLS
Cisco DWDM Chromatic Dispertion Calculation in CTP\XLS
 
dwdm
 dwdm dwdm
dwdm
 
optics ppt
optics pptoptics ppt
optics ppt
 
5G use cases and system concept.pptx
5G use cases and system concept.pptx5G use cases and system concept.pptx
5G use cases and system concept.pptx
 
NOMA in 5G Networks
NOMA in 5G NetworksNOMA in 5G Networks
NOMA in 5G Networks
 
5 g wireless system
5 g wireless system5 g wireless system
5 g wireless system
 
Getting ready for wi-fi 6 and IOT
Getting ready for wi-fi 6 and IOTGetting ready for wi-fi 6 and IOT
Getting ready for wi-fi 6 and IOT
 
5G mmwaves - problems and solutions (graduation project)
5G mmwaves - problems and solutions (graduation project)5G mmwaves - problems and solutions (graduation project)
5G mmwaves - problems and solutions (graduation project)
 
How 5G Will Transform Industrial IoT
How 5G Will Transform Industrial IoTHow 5G Will Transform Industrial IoT
How 5G Will Transform Industrial IoT
 
Network slicing-5g-beyond-networks
Network slicing-5g-beyond-networksNetwork slicing-5g-beyond-networks
Network slicing-5g-beyond-networks
 
Massive MIMO
Massive MIMOMassive MIMO
Massive MIMO
 
Noma-5G technology
Noma-5G  technologyNoma-5G  technology
Noma-5G technology
 
High Speed and RF Design Considerations - VE2013
High Speed and RF Design Considerations - VE2013High Speed and RF Design Considerations - VE2013
High Speed and RF Design Considerations - VE2013
 
Ericsson 5 g platform
Ericsson 5 g platformEricsson 5 g platform
Ericsson 5 g platform
 
5G
5G5G
5G
 
Fundamentals of 5G Network Slicing
Fundamentals of 5G Network SlicingFundamentals of 5G Network Slicing
Fundamentals of 5G Network Slicing
 
Free space optical communication system
Free space optical communication systemFree space optical communication system
Free space optical communication system
 
5 g wireless technology
5 g wireless technology5 g wireless technology
5 g wireless technology
 
Optical network evolution
Optical network evolutionOptical network evolution
Optical network evolution
 
Small cell Evolution
Small cell Evolution Small cell Evolution
Small cell Evolution
 

Andere mochten auch

DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIsDX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIsAMD Developer Central
 
Webinar: Whats New in Java 8 with Develop Intelligence
Webinar: Whats New in Java 8 with Develop IntelligenceWebinar: Whats New in Java 8 with Develop Intelligence
Webinar: Whats New in Java 8 with Develop IntelligenceAMD Developer Central
 
Inside XBox- One, by Martin Fuller
Inside XBox- One, by Martin FullerInside XBox- One, by Martin Fuller
Inside XBox- One, by Martin FullerAMD Developer Central
 
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14AMD Developer Central
 
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...AMD Developer Central
 
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnellRendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnellAMD Developer Central
 
Gcn performance ftw by stephan hodes
Gcn performance ftw by stephan hodesGcn performance ftw by stephan hodes
Gcn performance ftw by stephan hodesAMD Developer Central
 
DirectGMA on AMD’S FireProℱ GPUS
DirectGMA on AMD’S  FireProℱ GPUSDirectGMA on AMD’S  FireProℱ GPUS
DirectGMA on AMD’S FireProℱ GPUSAMD Developer Central
 
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...
Computer Vision Powered by Heterogeneous System Architecture (HSA) by  Dr. Ha...Computer Vision Powered by Heterogeneous System Architecture (HSA) by  Dr. Ha...
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...AMD Developer Central
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonAMD Developer Central
 
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...
Productive OpenCL Programming An Introduction to OpenCL Libraries  with Array...Productive OpenCL Programming An Introduction to OpenCL Libraries  with Array...
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...AMD Developer Central
 
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth ThomasHoly smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth ThomasAMD Developer Central
 
Introduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan NevraevIntroduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan NevraevAMD Developer Central
 
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornDirect3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornAMD Developer Central
 
Leverage the Speed of OpenCLℱ with AMD Math Libraries
Leverage the Speed of OpenCLℱ with AMD Math LibrariesLeverage the Speed of OpenCLℱ with AMD Math Libraries
Leverage the Speed of OpenCLℱ with AMD Math LibrariesAMD Developer Central
 
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware WebinarAn Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware WebinarAMD Developer Central
 
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahGS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahAMD Developer Central
 
Inside XBOX ONE by Martin Fuller
Inside XBOX ONE by Martin FullerInside XBOX ONE by Martin Fuller
Inside XBOX ONE by Martin FullerAMD Developer Central
 

Andere mochten auch (20)

DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIsDX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
 
Webinar: Whats New in Java 8 with Develop Intelligence
Webinar: Whats New in Java 8 with Develop IntelligenceWebinar: Whats New in Java 8 with Develop Intelligence
Webinar: Whats New in Java 8 with Develop Intelligence
 
Inside XBox- One, by Martin Fuller
Inside XBox- One, by Martin FullerInside XBox- One, by Martin Fuller
Inside XBox- One, by Martin Fuller
 
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
 
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
 
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnellRendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
 
Gcn performance ftw by stephan hodes
Gcn performance ftw by stephan hodesGcn performance ftw by stephan hodes
Gcn performance ftw by stephan hodes
 
DirectGMA on AMD’S FireProℱ GPUS
DirectGMA on AMD’S  FireProℱ GPUSDirectGMA on AMD’S  FireProℱ GPUS
DirectGMA on AMD’S FireProℱ GPUS
 
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...
Computer Vision Powered by Heterogeneous System Architecture (HSA) by  Dr. Ha...Computer Vision Powered by Heterogeneous System Architecture (HSA) by  Dr. Ha...
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...
Productive OpenCL Programming An Introduction to OpenCL Libraries  with Array...Productive OpenCL Programming An Introduction to OpenCL Libraries  with Array...
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...
 
Media SDK Webinar 2014
Media SDK Webinar 2014Media SDK Webinar 2014
Media SDK Webinar 2014
 
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth ThomasHoly smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
 
Introduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan NevraevIntroduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan Nevraev
 
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornDirect3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
 
Leverage the Speed of OpenCLℱ with AMD Math Libraries
Leverage the Speed of OpenCLℱ with AMD Math LibrariesLeverage the Speed of OpenCLℱ with AMD Math Libraries
Leverage the Speed of OpenCLℱ with AMD Math Libraries
 
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware WebinarAn Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCLℱ Programming with AMD GPUs - AMD & Acceleware Webinar
 
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahGS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
 
Inside XBOX ONE by Martin Fuller
Inside XBOX ONE by Martin FullerInside XBOX ONE by Martin Fuller
Inside XBOX ONE by Martin Fuller
 

Ähnlich wie TressFX The Fast and The Furry by Nicolas Thibieroz

DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3Electronic Arts / DICE
 
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
[Unite Seoul 2020] Mobile Graphics Best Practices for ArtistsOwen Wu
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...Johan Andersson
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
How I learned to stop worrying and love the dark silicon apocalypse.pdf
How I learned to stop worrying and love the dark silicon apocalypse.pdfHow I learned to stop worrying and love the dark silicon apocalypse.pdf
How I learned to stop worrying and love the dark silicon apocalypse.pdfTomasz Kowalczewski
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoonmochimedia
 
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko3D
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Persistent Systems Ltd.
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsナム-Nam Nguyễn
 
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019Unity Technologies
 
Threading Successes 06 Allegorithmic
Threading Successes 06   AllegorithmicThreading Successes 06   Allegorithmic
Threading Successes 06 Allegorithmicguest40fc7cd
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsJohan Andersson
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
 
FORECASTING MUSIC GENRE (RNN - LSTM)
FORECASTING MUSIC GENRE (RNN - LSTM)FORECASTING MUSIC GENRE (RNN - LSTM)
FORECASTING MUSIC GENRE (RNN - LSTM)IRJET Journal
 
Technical data PULSAR Thermal imaging sights Apex | Optics Trade
Technical data PULSAR Thermal imaging sights Apex | Optics TradeTechnical data PULSAR Thermal imaging sights Apex | Optics Trade
Technical data PULSAR Thermal imaging sights Apex | Optics TradeOptics-Trade
 
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...IntelÂź Software
 
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...Numenta
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Hardware implementation of the serpent block cipher using fpga technology
Hardware implementation of the serpent block cipher using fpga technologyHardware implementation of the serpent block cipher using fpga technology
Hardware implementation of the serpent block cipher using fpga technologyIAEME Publication
 

Ähnlich wie TressFX The Fast and The Furry by Nicolas Thibieroz (20)

DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
How I learned to stop worrying and love the dark silicon apocalypse.pdf
How I learned to stop worrying and love the dark silicon apocalypse.pdfHow I learned to stop worrying and love the dark silicon apocalypse.pdf
How I learned to stop worrying and love the dark silicon apocalypse.pdf
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoon
 
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platforms
 
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
 
Threading Successes 06 Allegorithmic
Threading Successes 06   AllegorithmicThreading Successes 06   Allegorithmic
Threading Successes 06 Allegorithmic
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next Steps
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
 
FORECASTING MUSIC GENRE (RNN - LSTM)
FORECASTING MUSIC GENRE (RNN - LSTM)FORECASTING MUSIC GENRE (RNN - LSTM)
FORECASTING MUSIC GENRE (RNN - LSTM)
 
Technical data PULSAR Thermal imaging sights Apex | Optics Trade
Technical data PULSAR Thermal imaging sights Apex | Optics TradeTechnical data PULSAR Thermal imaging sights Apex | Optics Trade
Technical data PULSAR Thermal imaging sights Apex | Optics Trade
 
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...
Use Variable Rate Shading (VRS) to Improve the User Experience in Real-Time G...
 
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...
FPGA Conference 2021: Breaking the TOPS ceiling with sparse neural networks -...
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Technology (1)
Technology (1)Technology (1)
Technology (1)
 
Hardware implementation of the serpent block cipher using fpga technology
Hardware implementation of the serpent block cipher using fpga technologyHardware implementation of the serpent block cipher using fpga technology
Hardware implementation of the serpent block cipher using fpga technology
 

Mehr von AMD Developer Central

RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14AMD Developer Central
 
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...AMD Developer Central
 
Mantle - Introducing a new API for Graphics - AMD at GDC14
Mantle - Introducing a new API for Graphics - AMD at GDC14Mantle - Introducing a new API for Graphics - AMD at GDC14
Mantle - Introducing a new API for Graphics - AMD at GDC14AMD Developer Central
 
Direct3D and the Future of Graphics APIs - AMD at GDC14
Direct3D and the Future of Graphics APIs - AMD at GDC14Direct3D and the Future of Graphics APIs - AMD at GDC14
Direct3D and the Future of Graphics APIs - AMD at GDC14AMD Developer Central
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14AMD Developer Central
 
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...AMD Developer Central
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...AMD Developer Central
 
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...AMD Developer Central
 
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...AMD Developer Central
 

Mehr von AMD Developer Central (10)

RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
 
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
 
Mantle - Introducing a new API for Graphics - AMD at GDC14
Mantle - Introducing a new API for Graphics - AMD at GDC14Mantle - Introducing a new API for Graphics - AMD at GDC14
Mantle - Introducing a new API for Graphics - AMD at GDC14
 
Direct3D and the Future of Graphics APIs - AMD at GDC14
Direct3D and the Future of Graphics APIs - AMD at GDC14Direct3D and the Future of Graphics APIs - AMD at GDC14
Direct3D and the Future of Graphics APIs - AMD at GDC14
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...
Keynote (Tony King-Smith) - Silicon? Check. HSA? Check. All done? Wrong! - by...
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...
 
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...
Keynote (Dr. Lisa Su) - Developers: The Heart of AMD Innovation - by Dr. Lisa...
 
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...
Keynote (Johan Andersson) - Mantle for Developers - by Johan Andersson, Techn...
 

KĂŒrzlich hochgeladen

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

KĂŒrzlich hochgeladen (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

TressFX The Fast and The Furry by Nicolas Thibieroz

  • 1. TRESSFX THE FAST AND THE FURRY AMD AND MICROSOFT DEVELOPER DAY, JUNE 2014, STOCKHOLM NICOLAS THIBIEROZ WORLDWIDE GAMING ENGINEERING MANAGER, AMD
  • 2. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM2 TRESSFX: NEXT-GENERATION HAIR AND FUR RENDERING ïč The time for next-gen quality is now ïč Tomb Raider pioneered next-gen hair ‒ Includes PS4/XB1 ïč Users expect this level of quality for next-gen titles ïč You need to start thinking about this!
  • 3. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM3 WHAT MAKES GOOD HAIR/FUR? Basic Rendering Antialiasing Antialiasing + Self Shadowing Antialiasing + Self Shadowing + Transparency Demo ïč All three components are a must to ensure high quality ïč Transparency in particular is essential to next-gen visuals ‒ Requires an Order-Independent Transparency (OIT) solution
  • 4. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM4 ISOLINE TESSELLATION FOR HAIR/FUR? 1/2 ïč Isoline tessellation has two tessellation factors ‒ First is line density (lines per invocation) ‒ Second is line detail (segments per line) ïč In theory provides easy LOD system ‒ Variable line density and detail by increasing both tessellation factors based on distance Tess = (1,1) Tess = (2,1) Tess = (2,2) Tess = (2,3) Tess = (3,3)
  • 5. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM5 ISOLINE TESSELLATION FOR HAIR/FUR? 2/2 ïč In practice isoline tessellation is not cost effective for this scenario ïč Lines are always 1-pixel thick ‒ Need Geometry Shader to extrude them into triangles for smooth edges ‒ Major impact on performance! ‒ Alternative is to enable MSAA ‒ Most engines are deferred so this causes a large performance impact ‒ No extrusion for smoothing edges and no MSAA = poor quality! ïč Bottom line: a pure Vertex Shader solution is faster ‒ Curvature is rarely a problem (dependant on vertices/strands at authoring time) ‒ If needed LOD benefit can be done in Vertex Shader
  • 6. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM6 TRESSFX RENDERING PIPELINE ïč TressFX 2 uses a deferred approach for best performance Three main steps ïč STEP 1: Hair simulation ïč STEP 2: Store fragment properties into buffers ïč STEP 3: Fetch fragment properties, sort, selective shading and render ‒ Full shading on K-frontmost fragments ‒ “Tail” fragments are shaded with a simpler light equation and shadowing algorithm
  • 7. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM7 TRESSFX RENDERING PIPELINE STEP 1: HAIR SIMULATION CSCSCS Input Geometry (SRV) Post-simulation geometry (UAV) Simulation parameters Pre-simulation line segments (model space) Post-simulation line segments (world space) Simulation compute shaders Edge length constraint Local shape constraint Global shape constraint Not always needed for fur Model Transform Collision Shape Not always needed for fur External Forces (wind, gravity, etc.) ïč Input model is a collection of line segments (each segment composed of up to 64 vertices) ïč Optionally divided into “master strands” and “slave strands” to optimize simulation performance ‒ Only master strands are simulated (e.g. 1:4 ratio) ‒ Slave strands use master strand simulation results with added noise ‒ Virtually no difference from full-scale simulation but much better simulation performance! ‒ Master:slave simulation ratio can also vary with distance for even better performance Demo
  • 8. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM8 TRESSFX RENDERING PIPELINE STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS VS World space Index Buffer Indexed triangle list 10 1 2 3 2 4 0 5 Extrusion into triangles
  • 9. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM9 LINE SEGMENT EXTRUSION INTO TRIANGLES ïč A lot of vertices go through rendering high-quality hair or fur! ‒ Geometry processing can therefore be a significant bottleneck ïč In previous versions of TressFX extrusion was done in Geometry Shader (don’t do it!) and then VS with Draw() ïč Much faster performance was obtained with pure VS solution and precomputed index buffers ‒ Maximizes post vertex cache use! DrawIndexed() method Indexed triangle list = { ( 0, 1, 2 ), (2, 1, 3 ), ( 2, 3, 4 ), (4, 3, 5 ), ( 
 ) }; Line segments Expanded quads 10 1 2 3 2 4 0 5 1,4 Draw() method Line segments Expanded quads 0 1 2 3,5 6 2,3 7,10 8,9 0 11 Triangle list = { ( 0, 1, 2 ), ( 3, 4, 5 ), ( 6, 7, 8 ), (9, 10, 11 ), ( 
 ) };
  • 10. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM10 TRESSFX RENDERING PIPELINE STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS Antialiasing VS PS Homogeneous clip space World space Index Buffer Indexed triangle list 10 1 2 3 2 4 0 5 Extrusion into triangles
  • 11. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM11 ANTIALIASING ïč Antialiasing (aka “coverage”) using analytical method ‒ This is NOT Multisampling Anti-Aliasing! ïč Compute pixel coverage on edges of hair strand triangles and convert it to an alpha value ïč Alpha value fades out based on distance from pixel centre to strand axis ïč Similar principle to Emil Persson’s phone wire Anti-Aliasing http://www.humus.name/Articles/Persson_GraphicsGemsForGames.pdf
  • 12. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM12 TRESSFX RENDERING PIPELINE STEP 2: STORE FRAGMENT PROPERTIES INTO BUFFERS Antialiasing depth tangent coverage next VS PS Homogeneous clip space World space Null RT Stencil PPLL UAV Head UAV Index Buffer Indexed triangle list 10 1 2 3 2 4 0 5 Extrusion into triangles
  • 13. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM13 PER-PIXEL LINKED LISTS ïč Head UAV ‒ Each pixel location has a “head pointer” to a linked list in the PPLL UAV ïč PPLL UAV ‒ As new fragments are rendered, they are added to the next open location in the PPLL (using UAV counter) ‒ A link is created to the fragment pointed to by the head pointer ‒ Head pointer then points to the new fragment // Retrieve current pixel count and increase counter uint uPixelCount = LinkedListUAV.IncrementCounter(); uint uOldStartOffset; // Exchange indices in LinkedListHead texture corresponding to pixel location InterlockedExchange(LinkedListHeadUAV[address], uPixelCount, uOldStartOffset); // Append new element at the end of the Fragment and Link Buffer Element.uNext = uOldStartOffset; LinkedListUAV[uPixelCount] = Element; depth tangent coverage next PPLL UAV Head UAV ïč Memory requirements can be large! ‒ Width * Height * Average overdraw * sizeof (PPLL structure) ‒ Can use tiling approach in memory-constrained situations
  • 14. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM14 TRESSFX RENDERING PIPELINE STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER VS PS Stencil Head UAV PPLL UAV Lighting Full Screen Quad/Triangle
  • 15. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM15 LIGHTING ïč Different options available ‒ Kajiya-Kay hair lighting model ‒ Marshner model ‒ Anything else that looks good! ïč Fragment properties storage requirements may limit your options! ïč TressFX 2 sample uses an approximation of the Marchner technique when rendering two highlights ‒ Unique fragment properties: depth, tangent vector Primary Highlights Secondary Highlights
  • 16. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM16 TRESSFX RENDERING PIPELINE STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER VS PS Stencil Head UAV PPLL UAV Lighting Shadows Full Screen Quad/Triangle
  • 17. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM17 SHADOWS ïč Three different cases ïč Hair self-shadowing ‒ Essential component to give next-gen volumetric quality look ‒ Simplified Deep Shadow Map technique ïč Hair casting shadows on body & environment ‒ Body: Need a very soft look at close range (blur shadow map) ‒ Environment: render (possibly simplified) hair geometry into cascaded shadow map ïč Environment casting shadows on hair ‒ Sample environment shadow map at hair fragment rendering time
  • 18. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM18 TRESSFX RENDERING PIPELINE STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER VS PS Stencil Head UAV PPLL UAV K frontmost fragment: full shading, sorting and manual blending Lighting Shadows Full Screen Quad/Triangle Tail fragments: cheap shading, no sorting and manual blending
  • 19. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM19 SELECTIVE FRAGMENT SHADING THIS IS WHERE THE MEAT OF THE CODE OCCURS! // Go through the rest of the linked list, and keep closest k fragments but // not in sorted order [allow_uav_condition] for(int l=0; l < g_iMaxFragments; l++) { if(pointer == NULLPOINTER) break; int id = 0; float max_depth = 0; // Find the furthest node in array [unroll]for(int i=0; i<KBUFFER_SIZE; i++) { float fDepth = kBuffer[i].depth; if(max_depth < fDepth) { max_depth = fDepth; id = i; } } // get the start of the linked list from the head pointer uint pointer = LinkedListHeadSRV[In.vPosition.xy]; // Copy first K fragments from PPLL into KBuffer[] NODE Kbuffer[KBUFFER_SIZE]; for(int p=0; p<KBUFFER_SIZE; p++) { if (pointer != NULLPOINTER) { kBuffer[p] = LinkedListSRV[pointer]; pointer = LinkedListSRV[pointer].uNext; } } // If linked list node is nearer than the furthest one in the local array // exchange the node in the local array for the one in the linked list NODE Node = LinkedListSRV[pointer]; if (max_depth > Node.depth) { SWAP(Node, Kbuffer[i]); } // Do simple shading and shadowing for nodes not part of the K closest fragments fragmentcolor = ComputeSimpleShading(Node); // Out of order blending fcolor.xyz = mad(-fcolor.xyz, fragmentColor.w, fcolor.xyz) + fragmentColor.xyz * fragmentColor.w; fcolor.w = mad(-fcolor.w, fragmentColor.w, fcolor.w); // Retrieve next node pointer pointer = LinkedListSRV[pointer].uNext; } // Blend the k nearest layers of fragments from back to front, where k = KBUFFER_SIZE for(int j=0; j<KBUFFER_SIZE; j++) { int id = 0; float max_depth = 0; // Find the furthest node in the array for(int i=0; i<KBUFFER_SIZE; i++) { float fDepth = kBuffer[i].depth; if(max_depth < fDepth) { max_depth = fDepth; id = i; } } // Take this node out of the next search Node = KBuffer[id]; KBuffer[id] = (NODE)0; // Do high quality shading and shadowing fragmentcolor = ComputeHighQualityshading(Node); // Blend fragment color fcolor.xyz = mad(-fcolor.xyz, fragmentColor.w, fcolor.xyz) + fragmentColor.xyz * fragmentColor.w; fcolor.w = mad(-fcolor.w, fragmentColor.w, fcolor.w); } return fcolor;
  • 20. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM20 TRESSFX RENDERING PIPELINE STEP 3: FETCH FRAGMENTS, SORT, SELECTIVE SHADING AND RENDER VS PS Stencil Head UAV PPLL UAV Render target K frontmost fragment: full shading, sorting and manual blending Lighting Shadows Full Screen Quad/Triangle Tail fragments: cheap shading, no sorting and manual blending
  • 21. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM21 TRESSFX PERFORMANCE FAST AND FURRY ïč High number of fragments required for quality look ïč Main bottleneck is shading all those fragments ‒ Not per-pixel linked list traversal! ïč Selective shading approach allows significant performance savings with minor or negligible quality tradeoffs Technique Cost Out of order, no shading 1.31 ms Out of order, shading 2.80 ms Deferred PPLL, selective shading 2.13 ms Shading cost is ~ 1.5 ms 24% faster Fur model with ~130,000 fur strands Running on AMD Radeon 7970 @ 1080p Distance Sim LOD Disabled Sim LOD Enabled Close range 1.01 ms 1.01 ms Medium range 1.01 ms 0.70 ms Long range 1.01 ms 0.37 ms Simulation LOD ïč Distance-adaptive Shading and Simulation LOD further improves performance ïč “K frontmost fragments” value can inversely scale with distance Distance Shading LOD Disabled Shading LOD Enabled Close range 3.26 ms 3.26 ms Medium range 3.23 ms 1.77 ms Long range 2.52 ms 0.64 ms Shading LOD
  • 22. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM22 CONCLUSION AND QUESTIONS? ïč Next-gen hair/fur look at real-time performance is possible now! ïč Fast: ‒ Variable ratio master/slave compute simulations ‒ Vertex Shader extrusion of segments into triangles (do not use tessellation + GS) ‒ Deferred rendering with selective shading ‒ Distance-based shading and simulation LOD ‒ Optimized shaders! ïč Furry: ïč Full and free access to TressFX 2 SDK sample, code and documentation at: http://developer.amd.com/tools-and-sdks/graphics-development/amd-radeon-sdk/ @NThibieroznicolas.thibieroz@amd.com
  • 23. | TRESSFX THE FAST AND THE FURRY | AMD AND MICROSOFT GAME DEVELOPER DAY - JUNE 2 2014, STOCKHOLM23 DISCLAIMER & ATTRIBUTION The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions and typographical errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard version changes, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes. AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ATTRIBUTION © 2013 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo and combinations thereof are trademarks of Advanced Micro Devices, Inc. in the United States and/or other jurisdictions. Other names are for informational purposes only and may be trademarks of their respective owners.

Hinweis der Redaktion

  1. Simplified Deep Shadow Map technique: take the difference in depth from shadow map depth and fragment depth. The larger this difference the deeper (darker) the shadow. Also uses additional variables.