visual studio 11 for game developers boris jabes senior program manager microsoft corporation
TRANSCRIPT
Visual Studio 11 for Game Developers
Boris JabesSenior Program ManagerMicrosoft Corporation
• Visual Studio: optimized for modern Windows 8 development• The most powerful programming language just got more
powerful
A Story in 3 Parts• The world’s first IDE with integrated support for 3D graphics
demo
Welcome to a New Visual Studio
New Look, New Skills
Projects & solutions Backward compatibility Browse in Solution Explorer
Window management Pin files File preview Enhanced multi-monitor
Search everywhere Quick command search Tool window search Integrated find & replace
C++ code editor enhancements Semantic colorization Reference highlighting C++/CLI IntelliSense! Code snippets
HLSL code editor
New Look, New Skills
Projects & solutions• Backwards compatibility• Browse structure from Solution Explorer
Window management• Ability to pin & preview files• Enhanced multi-monitor
Search everywhere• Quick command search• Tool window search• Integrated find & replace
Visual Studio
2010 SP1
Visual Studio 11
Code Editor
Semantic colorization• Rich understanding & highlighting of source code• Lots of customization options
Improved IntelliSense• Brought back support for C++/CLI• Support for code snippets• Automatic smart filtering of completion set
HLSL!• Basic support for outlining, colorization, and indentation• Builds automatically through Visual Studio
Optimized for Metro-Style AppsDesign & test• Use XAML to build all native C++ UI• Rich visual designer (Blend) works for HTML/JS, C#/VB, and C++• Unit testing support for C++ in Visual Studio Express
Rich diagnostics• Simulate how the app runs in any form factor with simulator• Seamless remote debugging• Static code analysis rules available in Visual Studio Express• Parallel debugging support in Visual Studio Express
Package & publish!• Support for licensing and preparing for store submission directly in Visual Studio
Design
Configure
Simulate
Test
New Versions
Visual Studio Express for Windows 8 Includes HTML/JS, C#/VB, and C++ Includes Expression Blend Basic code analysis rules Unit testing support
Visual Studio Professional Full native-code analysis Full profiler
Visual Studio Ultimate Full application lifecycle management (ALM) suite
C++, Language of Champions
HARDERBETTERFASTERSTRONGER
Harder, Better, Faster, Stronger
Free speed• Test results from Spec2k6 improved 4-5% on x86 and 8-12% on x64• Compiler can auto-vectorize & auto-parallelize for potential 30× speedup
A new C++• Support for GPU Compute with C++AMP• Seamless access to WinRT with C++/CX• Awesome standard language improvements with C++11
Libraries• Full C++11 Standard Library included (now with threading/async libraries!)• Improved Parallel Patterns Library, optimized for Windows 8
C++/CX
Language extensions and libraries to allow direct consumption and authoring of Windows Runtime types.
Strongly-typed system for Windows Runtime Automatically reference counted Exception-based Deep integration with STL Well-defined binary contract across module boundaries
C++ AMP
C++, not C mainstream, programmable by millions minimal, just one general language extension portable, mix & match hardware from any vendor, one
EXE general and future-proof, designed to cover the full
range of hardware heterogeneity — hardware is still in motion
open specification
C++ AMP - Example
#include <amp.h>using namespace concurrency;void AddArrays(int n, int *pA, int *pB, int *pC){ array_view<int,1> a(n, pA); array_view<int,1> b(n, pB); array_view<int,1> sum(n, pC); parallel_for_each(sum.grid, [=](index<1> idx) restrict(amp) { sum[idx] = a[idx] + b[idx]; } );}
C++11 at a Glance
Then Nowcircle* p = new circle( 42 );
vector<shape*> vw = load_shapes();
for(vector<circle*>::iterator i = vw.begin(); i!=vw.end(); ++i)
{ if( *i && **i == *p ) cout << **i << “ is a match\n”;}
for(vector<circle*>::iterator i = vw.begin(); i!=w.end(); ++i)
{ delete *i;}
delete p;
auto p = make_shared<circle>( 42 );
vector<shared_ptr<shape>> vw = load_shapes();
for_each( begin(vw), end(vw), [&]( shared_ptr<circle>& s ) { if( s && *s == *p ) cout << *s << “ is a match\n”;} );
Complete C++11 Standard Libraries
<atomic> <chrono> <condition_variable> <future> <mutex> <ratio> <scoped_allocator> <thread> <filesystem>
Make it Better
“The most important thing I have done as a programmer in recent years is to aggressively pursue static code analysis.”
— John Carmack
Visual Studio: Graphics Tools
demo
Working with AssetsImages & textures• Support for 32-bit images and alpha channel• Support for modern image formats (PNG, JPG, BMP, TIFF, & DDS)• Support for MIP maps
Models & meshes• Inspect standard models (FBX, DAE, and OBJ)• Basic manipulation (camera controls, and so on)• Experiment & learn (basic shapes and transforms)
Visual shader designer• Support for designing pixel shaders with live preview and export to HLSL
Graphics Debugging
Direct3D 10+Event HistoryPixel HistoryPipeline ViewerObject TableCall Stacks
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be
interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.