<<   REMEMBERING SOME OF THE LESSONS FROM 2013S DISASTERS PART 2: TYPHOONS  >>
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | The Presenters
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Who uses it
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Remote and local debug sessions
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Assassins Creed III
GPU PerfSTudio 2 | Far Cry 3
GPU PerfSTudio 2 | Far Cry 3
GPU PerfSTudio 2 | Far Cry 3
GPU PerfSTudio 2 | Far Cry 3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | FarCry3
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Data mine your app using GPU PerfStudio2
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
Why use GPU PerfStudio2
Why use GPU PerfStudio2
Why use GPU PerfStudio2
Why use GPU PerfStudio2
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2  Porting Steam to Linux
GPU PerfSTudio 2 | Left for Dead 2 Porting Steam to Linux
AMD Developer ToolS
AMD Developer ToolS
AMD Developer ToolS
AMD Developer ToolS
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2

: Selley, Gordon. , . , Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2.ppsx zip- 16874 .

Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2

Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2.ppsx
1Behind the Scenes: Optimizing FarCry 27of the response if ($res->is_success) {
3, Left 4 Dead 2 and Assassins Creed 3 #print $res->content; #print
using AMDs GPU PerfStudio2. Gordon Selley "$Request_URL @ $Request_Type =
- AMD Senior Member of Technical Staff - Success!\n"; return $res->content;
GPU Developer Tools Jean-Francois St-Amour } else { print "Bad luck this
- Ubisoft Montreal Lead Graphics time\n"; exit; } } sub
Programmer Rich Geldreich - Valve iterate_breakpoint { my($i) = @_; my
Corporation Software Engineer. $content =
2Behind the Scenes: Optimizing FarCry http_Request("http://localhost/$GPS_A
3, Left 4 Dead 2 and Assassins Creed 3 P_SERVER/DX11/FD/BreakPoint=$i",
using AMDs GPU PerfStudio2. GPU $XML_Request); if( $content =~
PerfStudio2 is AMD's performance and m/BreakPoint\W{2}OK/i ) { #print
debugging tool for graphics applications. "Breakpoint OK\n"; return 1; }
It is currently being used by many game else { print "Breakpoint
studios to optimize games for PC based Failed\n"; return 0; } } my
platforms. Recently used in the %HashOfPixelShaderCRCs; sub
development of FarCry3 and Assassins Creed get_pixel_shader_code { return
3 at Ubisoft we will demonstrate how it http_Request($GPS_CodeViewer_URL,
was used to optimize their DirectX11 $XML_Request); } for( my $i = 1; $i <
renderers. In addition, with industry $GPS_NumBreakpoints; $i++ ) { my $retVal =
support for OpenGL on the rise, Valve will iterate_breakpoint($i); if( $retVal == 1 )
demonstrate how GPU PerfStudio2 is being { #print "Breakpoint is OK\n";
used to port and optimize existing games my $psCode = get_pixel_shader_code(); if(
such as Left 4 Dead 2 on OpenGL. $psCode =~
3GPU PerfSTudio 2 | The Presenters. m/(\W{1}Hash\W{1}(\w+)\W{2}Hash\W{1})/i )
Gordon Selley is a member of AMDs GPU { my $thisHashID = $2; print "HashID:
Developer Tools Team and is the team $thisHashID\n";
leader for GPU PerfStudio2. He has $HashOfPixelShaderCRCs{$thisHashID} =
developed graphics software for the flight $psCode; } else { #print "Hash Not
simulation, TV and film FX, PC and online Found\n"; } } else { #print
games industry. Jean-Francois St-Amour is "Breakpoint FAILED!\n"; } }
currently working as a Lead Graphics print "\nFound source code for
Programmer at Ubisoft's Montreal studio. ", scalar keys
In his time at Ubisoft, he has worked on %HashOfPixelShaderCRCs, " *unique*
the graphics technology behind Assassin's pixel shaders used in this frame.\n";
Creed and Prince of Persia. Before working print "\nDone!\n";
on current console hardware, Jean-Fran?ois 28GPU PerfSTudio 2 | Data mine your app
was working on mobile titles at Gameloft. using GPU PerfStudio2. Here is the Perl
He has a Master's degree in Computer script we used. # Create a user agent
Graphics from the University of Montreal, object use LWP::UserAgent; $ua = new
where he worked on real-time soft shadow LWP::UserAgent;
algorithms, as well as GPGPU. Rich $ua->agent("AgentName/0.1 " .
Geldreich is a software engineer at Valve $ua->agent); my $HTML_Request =
Corporation, where he's spent the last N "text/html"; my $XML_Request =
years shipping out labors of love: Portal "text/xml"; my $Google_URL =
2, Defense of the Ancients 2, Counter "http://www.google.com"; my
Strike: Global Offensive, Team Fortress 2. $GPS_APP_SERVER = "10176"; my
When not at work, Rich works on open $GPS_BreakpointID = "104"; my
source image compression libraries and $GPS_CodeViewer_URL =
orders chicken instead of delicious steak. "http://localhost/$GPS_APP_SERVER/DX1
4GPU PerfSTudio 2 | Presentation /FD/Pipeline/PS/codeviewer.xml"; my
Overview. Introduction to GPU PerfStudio 2 $GPS_Breakpoint_URL =
What it is and what it does, who uses it, "http://localhost/$GPS_APP_SERVER/DX1
how it works. Assassins Creed 3: /FD/BreakPoint=$GPS_BreakpointID"; my
Understanding your frame How and why the $GPS_NumBreakpoints = 100; sub
tool was used during development Working http_Request { my($Request_URL,
with DirectX11 command lists Using the $Request_Type) = @_; # Create a request my
Frame Debugger with a deferred renderer $req = new HTTP::Request GET =>
Using Direct3D Performance markers with $Request_URL; $req->content_type(
your effects Far Cry 3: Data mine your app $Request_Type ); #$req->content(''); #
using GPU PerfStudio2 Understanding the Pass request to the user agent and get a
client/server command system Using a web response back my $res =
browser to access game data Using a script $ua->request($req); # Check the outcome
to automate access to game data Left for of the response if ($res->is_success) {
Dead 2: How Valve ported Steam to Linux #print $res->content; #print
using GPU PerfStudio2 Overview of the "$Request_URL @ $Request_Type =
Win32 to Linux conversion process Why and Success!\n"; return $res->content;
how GPU PerfStudio2 was used Trouble } else { print "Bad luck this
shooting GPU PerfStudio2 with OpenGL apps time\n"; exit; } } sub
Questions. iterate_breakpoint { my($i) = @_; my
5Introduction to GPU PerfStudio 2. $content =
6GPU PerfSTudio 2 | Introduction. What http_Request("http://localhost/$GPS_A
is GPU PerfStudio 2? GPU PerfStudio 2 is P_SERVER/DX11/FD/BreakPoint=$i",
AMDs current GPU Performance Analysis $XML_Request); if( $content =~
& Debugging Tool for graphics m/BreakPoint\W{2}OK/i ) { #print
applications Key Features Integrated Frame "Breakpoint OK\n"; return 1; }
Profiler, Frame Debugger, and API Trace else { print "Breakpoint
with CPU timing information Shader Failed\n"; return 0; } } my
Debugger with support for DirectX 10 %HashOfPixelShaderCRCs; sub
& 11 HLSL and Assembly code Client / get_pixel_shader_code { return
Server model - GPU PerfStudio 2 Client http_Request($GPS_CodeViewer_URL,
runs locally or remotely over the network $XML_Request); } for( my $i = 1; $i <
GPU PerfStudio 2 Server supports 32-bit $GPS_NumBreakpoints; $i++ ) { my $retVal =
and 64-bit applications Supports DirectX iterate_breakpoint($i); if( $retVal == 1 )
11, DirectX 10.1 , DirectX 10 and OpenGL { #print "Breakpoint is OK\n";
4.2 applications No special build required my $psCode = get_pixel_shader_code(); if(
for your application Small footprint no $psCode =~
installation Free download m/(\W{1}Hash\W{1}(\w+)\W{2}Hash\W{1})/i )
http://developer.amd.com/tools/graphics-de { my $thisHashID = $2; print "HashID:
elopment/gpu-perfstudio-2/. $thisHashID\n";
7GPU PerfSTudio 2 | Introduction The $HashOfPixelShaderCRCs{$thisHashID} =
4 Main Tools. Frame Debugger Capture and $psCode; } else { #print "Hash Not
play back a single frame View all game Found\n"; } } else { #print
resources and state bound at each draw "Breakpoint FAILED!\n"; } }
call Frame Profiler Identify costly draw print "\nFound source code for
calls Detect GPU bottlenecks - investigate ", scalar keys
at the counter level Shader %HashOfPixelShaderCRCs, " *unique*
Debugger/Editor Edit & Debug HLSL and pixel shaders used in this frame.\n";
Assembly code from inside your app Step, print "\nDone!\n";
insert breakpoints, inspect all register 29GPU PerfSTudio 2 | Data mine your app
values Edit GLSL from inside your app API using GPU PerfStudio2. How the script
Trace Viewer Inspect all API calls (with works The GPU PerfClient was connected to
arguments) Visualize multi-threaded API the game, it was paused and the Frame
usage CPU timeline information for each Debugger was opened. A perl script was run
API call. to send a command that sets the breakpoint
8GPU PerfSTudio 2 | Who uses it? Widely to the first draw call Inside a loop Send
used by internal and external groups AMD a command to retrieve the PS shader code
ISV Game Engineers: Optimize & debug from the current draw call The shader code
co-marketed game titles in conjunction was stored using its unique hash as the
with developers AMD Driver Performance key Send a command to advance the
Team: Improve GPU benchmarks and titles at breakpoint When finished with the loop we
the driver level AMD Driver Team: Inspect can calculate how many unique shaders
apps that cause driver problems Graphics there are.
developers: Used in the development of 30Left for Dead 2: How Valve ported
DX11 and OpenGL graphics applications AMD Steam to Linux using GPU PerfStudio2.
Game Compute Team: Debug and optimize game 31GPU PerfSTudio 2 | Left for Dead 2
technologies for new GPU hardware - AMD Porting Steam to Linux. Overview of the
Mecha Demo, Ladybug, Leo demo. Win32 to Linux conversion process The
9GPU PerfSTudio 2 | Remote and local process of porting our titles to Linux
debug sessions. Client/Server started by porting the Source Engine to GL
architecture. Remote usage allows the game mode under Windows We used SDL to abstract
to be run full screen. Higher profiling away windowing/input APIs. Resulted in one
accuracy, useful during final build that could be compiled to Win32/DX9
optimization. Local usage on a single or SDL/GL on Linux, OSX and Windows. We
machine (preferred by developers). More did this to gain access to several key
suited for use during development. windows based OpenGL tools, such as GPS2
10GPU PerfStudio 2 | How it works. and CodeXL The vast majority of GL or
11GPU PerfSTudio 2 | How can the rendering related bugs we see on Linux can
architecture affect the developer? GPU be reproduced on Windows So, the majority
PerfStudio2 shares the applications of our GL and rendering related debugging
memory space The game application and GPU can be done under Windows.
PerfStudio2 contend for remaining free 32Why use GPU PerfStudio2 ? We had
memory Remaining free memory needs to numerous glitches and bugs in L4D2 and TF2
support the tool features Memory required Win/Linux GL mode Many where new bugs
for extraction and transfer of textures introduced by optimizing and fixing the
and buffers 32Bit Games Larger games near renderer and our D3D->GL translation
the 32bit threshold can be unstable due to backend GPU PerfStudio 2 was the only
memory allocation failures Depends on the available GL debugger product we could
use of specific features (Frame Debugger, find with a usable frame debugger that
Profiler, APITrace) CPU-side buffer copies didn't fall over when faced with a large
(a client setting for Frame Debugger) can GL application It is not only a useful
use a lot of memory Memory failures can debugger and profile, it's also a great
occur in the game or in GPU PerfStudio2 way to help you learn OpenGL. GPU
Few games to date actually have problems PerfSTudio 2 | Left for Dead 2 Porting
in this area 64Bit Games Much less likely Steam to Linux.
to be unstable due to memory contention. 33GPU PerfSTudio 2 | Left for Dead 2
12Assassins Creed III Understanding your Porting Steam to Linux. We first started
frame. with PerfStudio2's "API Trace"
13GPU PerfSTudio 2 | Assassins Creed window The "Interface" column is
III. Developed using the Anvil Next especially useful, as it shows the GL
rendering engine Based on the previous version (or the GL extension) used by each
Anvil and Scimitar Engines Same engine API call. This data is particularly
lineage as previous AC games, starting helpful while learning GL. The API Trace
with AC1 First AC game to use deferred view is synchronized with the Frame
rendering First DX11 Scimitar title. Debugger - i.e. select a draw call in the
14GPU PerfSTudio 2 | Assassins Creed trace view, then switch to the frame
III. Anvil Next - New rendering effects debugger to focus on that draw The trace
Weather Volumetric mist Falling snow/rain can be saved to .CSV files. It's easy to
Surface wetness/snow Deformable snow Bulk diff multiple traces using Beyond Compare,
crowds Thousands of NPCs for large-scale which we used to find several difficult GL
battles Lighting improvements New static bugs. (We saved a trace, exited and
lighting techinique New large-scale static tweaked the app, then relaunched the game
AO Ocean simulation DX11 New hexagonal and placed the camera in the same exact
filtering method Newish AO tech location/orientation as the first trace
(combining MSSAO+low-res HBAO). and saved another trace.).
15GPU PerfSTudio 2 | Assassins Creed 34GPU PerfSTudio 2 | Left for Dead 2
III. How did Ubisoft use GPUPerfStudio2 Porting Steam to Linux. The Frame Debugger
with Assassins Creed III? It was used by saved our bacon countless times while
all 5 of the graphics programmers Quick porting TF2/L4D2 to GL. You can hand-edit
startup of the tool with the app was GLSL shaders by clicking the "Enable
important fast edit/test cycle It was used shader editing" button, then tweaking
for cross platform development Most of the the shader and hitting compile. This is a
work was done using the Frame Debugger To very powerful way of quickly conducting
understanding the frame structure To experiments while debugging. Supports
identify slow draw calls To identify and named PIX begin/end markers in GL mode.
then optimize shaders The profiler was This is critical for quickly zeroing in on
used towards the end of the dev cycle specific parts of the frame for further
Stability This is really the most analysis. The Frame Buffer visualization
important thing with this type of tool. window is where we do a lot of debugging.
The reality is unfortunately that we often In particular, the "description"
need to cycle PIX/GPA/GPS2/Nsight to find tab can be very useful. You can scrub
one that works for our particular scene. through all GL draws/blits in the bottom
GPS2 works the most often by far.. timeline, and visualize how the frame is
16Assassins Creed III GPU PerfStudio2 composed in the app window. This helps you
Demo. get a feel for the overall flow of the
17FarCry 3: Data mine your app using GPU frame's GL calls. Most of our debugging is
PerfStudio2. done by scrubbing through draw/blit events
18GPU PerfSTudio 2 | Far Cry 3. and examining the state of render
Developed using the Dunia 2 engine The targets/textures. For example, we used
Dunia engine was originally used in this to debug particularly tricky GL
FarCry2 Dunia 2 was switched to a deferred texture completeness issues, by hacking a
renderer in the middle of FC3 development shader to only fetch from a single texture
4 out of 10 3D programmers used AMD GPUs 2 (sometimes with explicit LOD).
out of the 4 programmers used GPU 35GPU PerfSTudio 2 | Left for Dead 2
PerfStudio2 The remaining 2 programmers Porting Steam to Linux. The Frame Debugger
developed for console Highly optimized for saved our bacon countless times while
Xbox 360 and PS3 (SPU) Optimized later for porting TF2/L4D2 to GL PerfStudio2
PC. supports displaying both sampler objects
19GPU PerfSTudio 2 | FarCry3. Dunia 2- or texture parameters (most other tools
New rendering effects Deferred rendering I've seen don't support sampler objects
with multi-sample anti-aliasing (MSAA) yet) We can also run our titles in D3D9
Analysis of each scene/level in the game, mode, and use PIX for Windows to capture
selectively enabling MSAA on sections of frames. In a few cases, it was invaluable
the scene (like trees and lighting) that to be able to capture a frame in both PIX
would benefit from the technique. Avoiding and GPS2 and manually compare the states,
MSAA on sections that would slow the game framebuffers, shaders, etc.
with no visual improvement. Comprehensive 36Left for Dead 2 GPU PerfStudio2 Demo.
light-culling system. This mechanism 37GPU PerfSTudio 2 | Left for Dead 2
performs intelligent, real-time Porting Steam to Linux. Trouble shooting
calculation of the lighting that would be GPU PerfStudio2 with OpenGL apps If you
visible to the player, then lets the GPU have problems capturing frames with
reject the material that wont be seen. PerfStudio 2 in GL mode: First try
Not only is the MSAA faster than it would capturing a sample GL app, before trying
otherwise be (when enabled), but general to capture a bigger app Try experimenting
frame rates are improved versus engines with the Server Settings - try "Slow
without this technology. Motion" or "None Try disabling
http://engineroom.ubi.com/wp-content/bigfi multithreading in your app On one new
es/farcry3_drtv_lowres.pdf project, that didn't use SDL to create the
http://blogs.amd.com/play/2012/12/10/far-c GL context, we had some problems getting
y-3-in-depth/. GPS2 to connect: Try statically linking
20GPU PerfSTudio 2 | FarCry3. Dunia 2- against opengl32.lib, not dynamically
New rendering effects Transparency loading it and calling GetProcAddress()
super-sample anti-aliasing (SSTr) Check how you're calling SwapBuffers: try
Real-time global illumination SwapBuffers() instead of calling
DirectCompute-accelerated ambient wglSwapBuffers() Double and triple check
occlusion Advanced hair and skin shading. how you're creating the GL context, what
21GPU PerfSTudio 2 | Far Cry 3. What version it is, its attributes, etc. Proper
GPUPerfStudio2 was used for on Far Cry 3 GL context creation is surprisingly
Mainly used the Frame Debugger to tricky. AMD's CodeXL can help you debug
investigate rendering bugs Issues when context creation code - it checks for a
activating DX11 multithreaded rendering bunch of common GL context creation
(bad ordering of sync points) Issues with errors.
using wrong render targets in MSAA For 38GPU PerfSTudio 2 | Working with Steam,
example using MSAA color with non-MSAA UPlay, and Origin. Using GPU PerfStudio2
depth in the same draw call Stencil issues with Steam Do not start your game directly
for skin and hair rendering Crossfire with GPU PerfStudio2 Make sure that
related issues Used in-house profiling Steam.exe is NOT already running (check
tools. using the Task Manager) Start by dragging
22GPU PerfSTudio 2 | Data mine your app and dropping Steam.exe onto the GPU
using GPU PerfStudio2. Understanding the PerfStudio2 server GPU PerfStudio2 will
client server model As mentioned at the inject into Steam.exe In the Steam
beginning of this presentation the client settings turn off Enable Steam Community
and server exchange data through a web In-Game. Start the game using the Steam
server You can see the commands arrive at UI GPU PerfStudio2 will inject into the
the server in the console window. game Start the GPU PerfClient and attach
23GPU PerfSTudio 2 | Data mine your app it to the game Use similar approach to
using GPU PerfStudio2. Understanding the Origin and UPlay.
client server model You can view all of 39AMD Developer ToolS. Download from AMD
the commands sent to the server during Developer Central
your debug session in the client server http://developer.amd.com/tools/ GPU
log Open the Server Log from the client PerfStudio2 GPU Profiling and debugging
Help menu. DX11, DX10, OpenGL CodeXL CPU/GPU
24GPU PerfSTudio 2 | Data mine your app Profiling GPU debugging (OpenGL, OpenCL)
using GPU PerfStudio2. Understanding the OpenCL Kernel Analyzer gDEBugger OpenCL
client server model. The log displays the OpenGL debugger memory analyzer.
commands sent from the client to the 40GPU PerfSTudio 2 | Thank you. To
server. These look like URLs. The log Ubisoft and Valve for supporting this
will contain any error messages generated presentation Thanks to my co-presenters
by the server. Jean-Francois St-Amour (Ubisoft) Rich
25GPU PerfSTudio 2 | Data mine your app Geldreich (Valve) For FarCry3 information
using GPU PerfStudio2. FarCry3 running Jean-Sebastien Guay (Ubisoft) For
with GPU PerfStudio2. Use the command URL supporting GPU PerfStudio2 Layla Mah (AMD
in a web browser to request data from the ISV Engineer FarCry3) Raul Aguaviva (AMD
server. We can see the data command ISV Engineer).
requests in the server console window. We 41Questions gordon.selley@amd.com.
can access state data. We can access the 42Disclaimer & Attribution The
shader code. In fact we can access all information presented in this document is
data necessary to reconstruct the draw for informational purposes only and may
call. Attach the GPU PerfClient, pause the contain technical inaccuracies, omissions
app, move to draw call. and typographical errors. The information
26GPU PerfSTudio 2 | Data mine your app contained herein is subject to change and
using GPU PerfStudio2. Cool, my game is a may be rendered inaccurate for many
web server, I can script that It is reasons, including but not limited to
possible to use PerfStudio2 web requests product and roadmap changes, component and
in scripts to automate and customize motherboard version changes, new model
access to your apps data As part of the and/or product releases, product
work carried out on Far Cry3 we needed to differences between differing
know where specific sections of HLSL code manufacturers, software changes, BIOS
were being used in a frame. We were able flashes, firmware upgrades, or the like.
to use a script to retrieve the HLSL code There is no obligation to update or
from each draw call in a frame an search otherwise correct or revise this
the code for keywords that would identify information. However, we reserve the right
the code. Lets look at an example that to revise this information and to make
does something similar. changes from time to time to the content
27GPU PerfSTudio 2 | Data mine your app hereof without obligation to notify any
using GPU PerfStudio2. After a script has person of such revisions or changes. NO
run on FarCry3. The render target overlay REPRESENTATIONS OR WARRANTIES ARE MADE
shows its contents at draw call 10 the WITH RESPECT TO THE CONTENTS HEREOF AND NO
breakpoint the script finished at. The RESPONSIBILITY IS ASSUMED FOR ANY
server log shows the breakpoint and code INACCURACIES, ERRORS OR OMISSIONS THAT MAY
viewer commands. The script finds 2 unique APPEAR IN THIS INFORMATION. ALL IMPLIED
shaders in the first 10 draw calls. # WARRANTIES OF MERCHANTABILITY OR FITNESS
Create a user agent object use FOR ANY PARTICULAR PURPOSE ARE EXPRESSLY
LWP::UserAgent; $ua = new LWP::UserAgent; DISCLAIMED. IN NO EVENT WILL ANY LIABILITY
$ua->agent("AgentName/0.1 " . TO ANY PERSON BE INCURRED FOR ANY DIRECT,
$ua->agent); my $HTML_Request = INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL
"text/html"; my $XML_Request = DAMAGES ARISING FROM THE USE OF ANY
"text/xml"; my $Google_URL = INFORMATION CONTAINED HEREIN, EVEN IF
"http://www.google.com"; my EXPRESSLY ADVISED OF THE POSSIBILITY OF
$GPS_APP_SERVER = "10176"; my SUCH DAMAGES. AMD, the AMD arrow logo, and
$GPS_BreakpointID = "104"; my combinations thereof are trademarks of
$GPS_CodeViewer_URL = Advanced Micro Devices, Inc. All other
"http://localhost/$GPS_APP_SERVER/DX1 names used in this presentation are for
/FD/Pipeline/PS/codeviewer.xml"; my informational purposes only and may be
$GPS_Breakpoint_URL = trademarks of their respective owners. [
"http://localhost/$GPS_APP_SERVER/DX1 2012 Advanced Micro Devices, Inc.
/FD/BreakPoint=$GPS_BreakpointID"; my 43Trademark Attribution AMD, the AMD
$GPS_NumBreakpoints = 100; sub Arrow logo and combinations thereof are
http_Request { my($Request_URL, trademarks of Advanced Micro Devices, Inc.
$Request_Type) = @_; # Create a request my in the United States and/or other
$req = new HTTP::Request GET => jurisdictions. Other names used in this
$Request_URL; $req->content_type( presentation are for identification
$Request_Type ); #$req->content(''); # purposes only and may be trademarks of
Pass request to the user agent and get a their respective owners. 2012 Advanced
response back my $res = Micro Devices, Inc. All rights reserved.
$ua->request($req); # Check the outcome
Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2.ppsx
http://900igr.net/kartinka/anglijskij-jazyk/behind-the-scenes-optimizing-farcry-3-left-4-dead-2-and-assassins-creed-3-using-amds-gpu-perfstudio2-238884.html
c

Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2

Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2

The english-speaking countries - USA. Disneyland. Australia. The English-speaking countries. Scotland. Great Britain.

the woman - A good wife makes a good husband. ; , , . Un homme- . A man - . As great a pity to see a woman cry as a goose go barefoot. . . = . A womans tongue wags like a lambs tail.

The green movement - The countries in which there are offices Greenpeace. Several active workers managed to steal up on a raft to a platform and to chain themselves to it. The main objective to achieve the decision of global environmental problems, including by attraction to them of attention of the public and the authorities.

The animals - DOLPHIN. GORILLA. The animals which live in a SAVANNA. GRIFFIN. GIRAFFE. The animals which live in the polar regions. The ANIMALS of our planet. REINDEER. The animals which live in Australia. LION. KANGAROO. SEAL. PANDA. FISH. PENGUIN. The animals which live in the desert. LIZARD. STARFISH. ELEPHANT.

Healthy lifestyle - Being healthy can also be fun! Ways to exercise( ). Drink (). Push-ups. ! Tempering (). Living a Healthy Lifestyle. ( .). For this purpose what to observe a healthy lifestyle it would be necessary: Lifting weights.

Teddy bear - Some 38 million years ago bears began to go their own evolutionary way. Kodiak Bear (Ursus arctos middendorffi) is the largest terrestrial carnivore. Polar Bear. The grizzly has 30 years an average life. The size of the large males Kodiak Bear exceeds 3 m and their weight can reach a ton. Black bear.

46

29
900igr.net > > > Behind the Scenes: Optimizing FarCry 3, Left 4 Dead 2 and Assassins Creed 3 using AMDs GPU PerfStudio2