Quantcast
Channel: DirectX Developer Blog
Viewing all 291 articles
Browse latest View live

DirectX 12

$
0
0

What's the big deal?

DirectX 12 introduces the next version of Direct3D, the graphics API at the heart of DirectX.  Direct3D is one of the most critical pieces of a game or game engine, and we’ve redesigned it to be faster and more efficient than ever before.  Direct3D 12 enables richer scenes, more objects, and full utilization of modern GPU hardware.  And it isn’t just for high-end gaming PCs either – Direct3D 12 works across all the Microsoft devices you care about.  From phones and tablets, to laptops and desktops, and, of course, Xbox One, Direct3D 12 is the API you’ve been waiting for.

What makes Direct3D 12 better?  First and foremost, it provides a lower level of hardware abstraction than ever before, allowing games to significantly improve multithread scaling and CPU utilization.  In addition, games will benefit from reduced GPU overhead via features such as descriptor tables and concise pipeline state objects.  And that’s not all – Direct3D 12 also introduces a set of new rendering pipeline features that will dramatically improve the efficiency of algorithms such as order-independent transparency, collision detection, and geometry culling.

Of course, an API is only as good as the tools that help you use it.  DirectX 12 will contain great tools for Direct3D, available immediately when Direct3D 12 is released.

We think you’ll like this part:  DirectX 12 will run on many of the cards gamers already have.  More on that in our FAQ.

 

Is this marketing spin?

We (the product team) read the comments on twitter and game development/gamer forums and many of you have asked if this is real or if our marketing department suddenly received a budget infusion.  Everything you are reading is coming directly from the team who has brought you almost 20 years of DirectX.

It’s our job to create great APIs and we have worked closely with our hardware and software partners to prove the significant performance wins of Direct3D 12.  And these aren’t just micro-benchmarks that we hacked up ourselves – these numbers are for commercially released game engines or benchmarks, running on our alpha implementation.  The screenshots below are from real Direct3D 12 app code running on a real Direct3D 12 runtime running on a real Direct3D 12 driver.

 

3DMark – Multi-thread scaling + 50% better CPU utilization

If you’re a gamer, you know what 3DMark is – a great way to do game performance benchmarking on all your hardware and devices.  This makes it an excellent choice for verifying the performance improvements that Direct3D 12 will bring to games.  3DMark on Direct3D 11 uses multi-threading extensively, however due to a combination of runtime and driver overhead, there is still significant idle time on each core.  After porting the benchmark to use Direct3D 12, we see two major improvements – a 50% improvement in CPU utilization, and better distribution of work among threads.

Tested on GIGABYTE BRIX Pro (Intel Core i7-4770R + Iris Pro Graphics 5200)

 

Direct3D 11

Direct3D 12

 

Forza  Motorsport 5 Tech Demo – console-level efficiency on PC

Forza Motorsport 5 is an example of a game that pushes the Xbox One to the limit with its fast-paced photorealistic racing experience.  Under the hood, Forza achieves this by using the efficient low-level APIs already available on Xbox One today.  Traditionally this level of efficiency was only available on console – now, Direct3D 12, even in an alpha state, brings this efficiency to PC and Phone as well.  By porting their Xbox One Direct3D 11.X core rendering engine to use Direct3D 12 on PC, Turn 10 was able to bring that console-level efficiency to their PC tech demo.

 

 

Where does this performance come from?

 Direct3D 12 represents a significant departure from the Direct3D 11 programming model, allowing apps to go closer to the metal than ever before.  We accomplished this by overhauling numerous areas of the API.  We will provide an overview of three key areas: pipeline state representation, work submission, and resource access.

Pipeline state objects

Direct3D 11 allows pipeline state manipulation through a large set of orthogonal objects.  For example, input assembler state, pixel shader state, rasterizer state, and output merger state are all independently modifiable.  This provides a convenient, relatively high-level representation of the graphics pipeline, however it doesn’t map very well to modern hardware.  This is primarily because there are often interdependencies between the various states.  For example, many GPUs combine pixel shader and output merger state into a single hardware representation, but because the Direct3D 11 API allows these to be set separately, the driver cannot resolve things until it knows the state is finalized, which isn’t until draw time.  This delays hardware state setup, which means extra overhead, and fewer maximum draw calls per frame.

Direct3D 12 addresses this issue by unifying much of the pipeline state into immutable pipeline state objects (PSOs), which are finalized on creation.  This allows hardware and drivers to immediately convert the PSO into whatever hardware native instructions and state are required to execute GPU work.  Which PSO is in use can still be changed dynamically, but to do so the hardware only needs to copy the minimal amount of pre-computed state directly to the hardware registers, rather than computing the hardware state on the fly.  This means significantly reduced draw call overhead, and many more draw calls per frame.

Command lists and bundles

In Direct3D 11, all work submission is done via the immediate context, which represents a single stream of commands that go to the GPU.  To achieve multithreaded scaling, games also have deferred contexts available to them, but like PSOs, deferred contexts also do not map perfectly to hardware, and so relatively little work can be done in them.

Direct3D 12 introduces a new model for work submission based on command lists that contain the entirety of information needed to execute a particular workload on the GPU.  Each new command list contains information such as which PSO to use, what texture and buffer resources are needed, and the arguments to all draw calls.  Because each command list is self-contained and inherits no state, the driver can pre-compute all necessary GPU commands up-front and in a free-threaded manner.  The only serial process necessary is the final submission of command lists to the GPU via the command queue, which is a highly efficient process.

In addition to command lists, Direct3D 12 also introduces a second level of work pre-computation, bundles.  Unlike command lists which are completely self-contained and typically constructed, submitted once, and discarded, bundles provide a form of state inheritance which permits reuse.  For example, if a game wants to draw two character models with different textures, one approach is to record a command list with two sets of identical draw calls.  But another approach is to “record” one bundle that draws a single character model, then “play back” the bundle twice on the command list using different resources.  In the latter case, the driver only has to compute the appropriate instructions once, and creating the command list essentially amounts to two low-cost function calls.

Descriptor heaps and tables

Resource binding in Direct3D 11 is highly abstracted and convenient, but leaves many modern hardware capabilities underutilized.  In Direct3D 11, games create “view” objects of resources, then bind those views to several “slots” at various shader stages in the pipeline.  Shaders in turn read data from those explicit bind slots which are fixed at draw time.  This model means that whenever a game wants to draw using different resources, it must re-bind different views to different slots, and call draw again.  This is yet another case of overhead that can be eliminated by fully utilizing modern hardware capabilities.

Direct3D 12 changes the binding model to match modern hardware and significantly improve performance.  Instead of requiring standalone resource views and explicit mapping to slots, Direct3D 12 provides a descriptor heap into which games create their various resource views.  This provides a mechanism for the GPU to directly write the hardware-native resource description (descriptor) to memory up-front.  To declare which resources are to be used by the pipeline for a particular draw call, games specify one or more descriptor tables which represent sub-ranges of the full descriptor heap.  As the descriptor heap has already been populated with the appropriate hardware-specific descriptor data, changing descriptor tables is an extremely low-cost operation.

In addition to the improved performance offered by descriptor heaps and tables, Direct3D 12 also allows resources to be dynamically indexed in shaders, providing unprecedented flexibility and unlocking new rendering techniques.  As an example, modern deferred rendering engines typically encode a material or object identifier of some kind to the intermediate g-buffer.  In Direct3D 11, these engines must be careful to avoid using too many materials, as including too many in one g-buffer can significantly slow down the final render pass.  With dynamically indexable resources, a scene with a thousand materials can be finalized just as quickly as one with only ten.

 

Want to know more?

Subscribe to this blog

Follow us @DirectX12

Come see us at //build

AMD Press Release - DirectX 12

NVIDIA Blog - DirectX 12

 

Want to be one of the first?

Are you a professional game developer?  Do you think Direct3D 12 would ignite your game’s performance?  Click here to apply for the DirectX 12 early access program.

Privacy Statement

 

FAQ

Q: Should I wait to buy a new PC or GPU?
A: No – if you buy a PC with supported graphics hardware (over 80% of gamer PCs currently being sold), you’ll be able to enjoy all the power of DirectX 12 games as soon as they are available.

Q: Does DirectX 12 include anything besides Direct3D 12?
A: Also new is a set of cutting-edge graphics tools for developers.  Since this is a preview of DirectX 12 focused on Direct3D 12, other technologies may be previewed at a later date.
 
Q: When will I be able to get my hands on DirectX 12?
A: We are targeting Holiday 2015 games.

Q: What hardware will support Direct3D 12 / will my existing hardware support Direct3D 12?
A: We will link to our hardware partners’ websites as they announce their hardware support for Direct3D 12.

 


DirectX 12 Developer Videos

$
0
0

DirectX 12 developer session recordings now available!

Missed us at GDC and BUILD? Check out the DirectX 12 developer session recordings below to learn more about the API or just watch some cool demos!

 

DirectX: Evolving Microsoft's Graphics Platform

In this session, Anuj Gosalia, Partner Development Manager at Microsoft, along with representatives from AMD, Intel, NVIDIA, Qualcomm, and Turn 10 Studios, outline the future of graphics with an introduction to DirectX 12.

Video Link: http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform

 

Direct3D 12 API Preview

In this session, Max McMullen, Principal Development lead for Direct3D, provides an overview of some of the API changes coming in Direct3D 12 and explains why games built with Direct3D 12 will be faster than ever!

Video Link: https://channel9.msdn.com/Events/Build/2014/3-564

 

DirectX 12 - High Performance and High Power Savings

$
0
0

You probably know that DirectX 12 is designed for performance.

What you may not know is that the same design decisions that make DirectX 12 so performant also make it incredibly power efficient.  This allows you to play all of your favorite games on portable devices without having an uncomfortably hot device on your lap or as much of a need to carry around a cumbersome power adapter.

Keep reading as Intel shows exactly how significant these benefits are!

Intel’s DirectX 12 Demo

Our friends at Intel created a SIGGRAPH 2014 demo to demonstrate the performance and power benefits of DirectX 12 on the Surface Pro 3 with Intel HD4400 graphics.

Intel’s SIGGRAPH 2014 booth where their DirectX 12 demo is being shown.

The demo renders an asteroid field with 50,000 unique asteroids in it which equates to 50,000 draws per frame.  Each asteroid has a unique combination of vertices, textures, and constants.

The demo can switch between DirectX 11 and DirectX 12 at the press of a button.  It can also lock the frame rate to keep the GPU workload constant.

Overlaid on top of the full-screen demo is a real-time graph of the CPU and GPU power being consumed. 

Over 50% CPU Power Usage Reduction on Surface Pro 3!

To demonstrate the power gains of DirectX 12, Intel locked the framerate of the demo, rendered with DirectX 11 for a period of time and then toggled to DirectX 12 rendering the exact same content for an equal period of time.  The graph below clearly indicates that DirectX 12 CPU power consumption was reduced more than 50% when compared to DirectX 11 rendering the exact same content at the same framerate.  These power savings mean that your device can run longer and cooler!

Intel Asteroids Demo DirectX 12 – Locked FPS

Intel’s Asteroids demo showing the stark power reduction when switching from DirectX 11 to DirectX 12

Graph Close Up

Close up of another CPU/GPU power graph taken during a locked framerate Intel Asteroids demo showing over 50% CPU power usage reduction

Can reduced CPU power consumption lead to increased performance?

Absolutely!

With certain applications, reduced power consumption means the device generates less heat and can run even faster!  DirectX 12 can allow the CPU to consume less energy and run cooler allowing the GPU to run hotter and faster.  In some cases, DirectX 12 can take a game that’s otherwise unplayable on DirectX 11 without even increasing the power your device consumes!

Intel was able to demonstrate this by unlocking the framerate cap on their Asteroids demo showing more than a 50% increase in FPS using DirectX 12 without drawing any extra power.

Intel Asteroids Demo DirectX 11 – 19fps

Intel Asteroids Demo DirectX 12 – 33fps

Graph Close Up

Close up of another CPU/GPU power graph taken during an Intel Asteroids demo without framerate lock.  Notice the increased GPU utilization after switching to DirectX 12; this directly translates to an FPS gain.

How does all this work?

The power savings are coming directly from the efficiency improvements that inherently come with using the DirectX 12 API.  Lower level access to the hardware than ever before allows applications to significantly improve their CPU utilization, enabling them to draw extremely complex scenes at a significantly reduced energy cost.

Like the Surface Pro 3, all devices which support DirectX 12 can benefit from DirectX 12 reduced power consumption, either in the form of longer battery life, increased performance, or some combination of the two.

Watch Intel explain in more detail during their video interview on Thursday August 14th at 2pm PDT here:

http://www.waskul.tv/

Want to see demos (including source code) on your own Intel graphics powered device?  Sign up for the DirectX 12 Early Access Program here and we’ll keep you updated!

Recap

DirectX 12 can save more than 50% of CPU power compared to DirectX 11.

When allowed to use equivalent power to DirectX 11, DirectX 12 can also yield 50% better FPS performance.

DirectX 12 can run and show these improvements on a wide variety of devices including Microsoft’s flagship device the Surface Pro 3.

There’s more to come; more demos, more power gains, more performance gains; sign up for the DirectX 12 Early Access Program to keep up to date!

More information

DirectX 12 Early Access Program signup: http://1drv.ms/1dgelm6

Follow us on Twitter: @DirectX12

Intel Gamedev: www.intel.com/software/gamedev

Intel blog post: https://software.intel.com/en-us/blogs/2014/08/11/siggraph-2014-directx-12-on-intel

 

DirectX 12 Lights Up NVIDIA’s Maxwell Launch

$
0
0

Our mission in the DirectX team is to provide the best graphics API in the world and have it work on as many graphics cards as possible.  To do this, we work very closely with game developers and graphics hardware vendors. So, when one of our close partners invites us to an event, we’re always happy to participate. 

Last week, at the NVIDIA Editor's Day keynote, Max McMullen, our development lead, unveiled the result of a great partnership between Epic, NVIDIA, and Microsoft.  

Awesome Hardware + Awesome Engine + Awesome API  + You = Awesome Games.

 

Epic’s Unreal Engine 3 has been used to ship more than 350 PC and console games.  Epic's Unreal Engine 4 is even more powerful, scalable, and accessible.  Also, it features an entirely new open model of development – any developer can access the engine’s complete source, along with great sample content by purchasing a UE4 subscription.

The DirectX team was inspired by Epic’s unprecedented open development model. Wouldn’t it be awesome if there was a DirectX 12 version of UE4 that was developed in a similarly open manner using the GitHub community?  We shared this idea with Epic, and they were enthusiastic about giving UE4 developers the opportunity to use the same familiar path to get a head start on DX12 development, contribute back to the community, and even influence the final design of DX12!

Those of you who saw our presentation at GDC 2014 may recall that NVIDIA announced Epic’s commitment to support DX12 in UE4.  So naturally, when we told NVIDIA about our plans to partner with Epic and develop in an open manner, NVIDIA enthusiastically agreed to pull out all the stops to support our effort.   

Developing an API requires working in a graphics stack where many pieces are constantly changing: the graphics kernel, hardware specific kernel drivers, the API, hardware specific user-mode drivers, and the app itself.  Adding new features and fixing bugs in such an environment requires the owners of each piece to work together in real-time to solve problems together.  For several months, NVIDIA’s engineers worked closely with us in a zero-latency environment.  When we encountered bugs, NVIDIA was right there with us to help investigate.  When we needed new driver features to make something run, NVIDIA set an aggressive implementation date and then met that date.

The result of this intense collaboration?  

 

Elemental and Infiltrator running beautifully on DX12 on Maxwell at NVIDIA’s Editor’s Day.  Best of all, we announced that UE4 developers can now benefit from this effort:  UE4 subscribers who are accepted into the DX12 early access program will receive source access to the alpha DX12 version of UE4!  Developers who want to be the first to bring their UE4 games to DX12 now have everything they need to get started, including building and running the exact Elemental demo that was featured in the keynote on their own Maxwell cards!

How do we know DirectX 12 on Unreal Engine 4 is ready for game developers? 

At E3 this year, Microsoft showed off “Fable Legends” for Xbox One, a new take on the RPG franchise’s well-loved world of magic, humor and high adventure.  Fable Legends’ stunning visuals were created using Unreal Engine 4, so, we asked our friends at Lionhead if they’d do a bit of experimentation with us. The resulting tech demo created by Lionhead showcases the rich, immersive graphics of Albion that are possible with DX12 and Maxwell.

You can see the full video here.  In addition to the demos, Max also discussed new hardware features supported by both DX11.3 and DX12, which you can see here.

Next up…your game?

We are always excited to share some of the progress we’ve made with our partners.  There is much left to do, however:  final features to be added, bugs to be fixed, optimizations to be made, and content to be ported.  If you think your game can help us shape DX12 to be the best graphics API, and you want to see your game showcased to the world as an example of amazing graphics, now is the time to join our early access program.

We’ve got cool things in the pipeline that we’ll be sharing in the coming months, so stay tuned to this site and follow us @DirectX12 for all the latest!

Resources

NVIDIA blog

Apply for DirectX 12 early access

Unreal Engine 4

DirectX 12 and Windows 10

$
0
0

As a part of the Windows team, we’re super excited about the Windows 10 Technical Preview that was just released!  The final version of Windows 10 will ship with DirectX 12, and we think it's going to be awesome.

We especially encourage gamers to help us make this release great for you by becoming Windows Insiders.  Game developers who are part of our DirectX 12 Early Access program have even more incentive to join the Windows Insider program.  These game developers will receive everything they need to kickstart their DX12 development, including: updated runtime, API headers, drivers, documentation, and samples, all of which will work with the Windows 10 Technical Preview.

We have a few more treats for game developers...

Unreal 4 Engine 4.4 Supports DirectX 12!

As we announced in our last blog post, members of our Early Access program who subscribe to Unreal Engine 4 can receive source access to the DX12 port of UE4. We’ve worked with Epic to create a DX12 branch on the UE4 GitHub repository.  This branch supports UE 4.4, the latest publically released version of the Unreal 4 Engine!  Come join our open development project and help make DX12 great!

From Asteroids to Mountains, Intel Rocks!

In the comments section of our last blog post, several of you asked about support for other graphics vendors.  We have great working relationships with all graphics vendors and you can expect to see a continual showcase of their progress.   

In fact, in the same week as the Maxwell event, Max McMullen, our development lead, was also present at the Intel Development Forum where he unveiled the latest details on our new binding model while Michael Apodaca from Intel explained how Intel has optimized their driver for DX12.  These optimizations made it possible for Intel to create the Asteroids demo, which they revealed at Siggraph, showing the performance and power savings of DX12.  You can see more details on the asteroids demo here.

Intel has graciously agreed to make the source for their compelling Asteroids demo available to all developers in the DX12 Early Access program. 

Oh, and the screenshot above?  That was a screenshot from an Intel Haswell graphics DX12 machine running UE4.4’s Landscape Mountains demo.

As always, we’ve got even more in the pipeline that we’ll be sharing in the coming months here, via Early Access Program and via @DirectX12.  If you haven’t signed up for these already, you have no excuse now!

DirectX 12 at GDC 2015

$
0
0
Are you ready to bring the power of DirectX 12 to your game?

Hear Phil Spencer, head of Xbox, talk about The Future of Gaming Across the Microsoft Ecosystem

Attend our technical sessions to learn the latest about DirectX 12

Advanced DirectX12 Graphics and Performance (Wednesday 2-3pm, West Hall 2008): This technical session goes deep into the DirectX12 APIs you can use to reduce CPU rendering overhead, manage GPU resource usage more efficiently, and express the most cutting-edge 3D graphics possible across the spectrum of Windows 10 devices. Whether you are building a game for the phone, PC, or Xbox - you don't want to miss this talk.

Solve the Tough Graphics Problems with Your Game Using DirectX Tools (Thursday 5:30-6:30pm, West Hall 2008): This session shows the latest update of a set of great graphics tools in Visual Studio and Windows that enable you to build great games. Come to this talk to learn about our currently shipping features, the upcoming DirectX 12 toolset, and discuss future directions. This talk will highlight top graphics debugging and performance problems and map key features to help you address those problems.

Better Power, Better Performance: Your Game on DirectX12 (Friday 10-11am, West Hall 2008): This session demonstrates how to architect your game engine to best reduce CPU overhead, increase GPU efficiency, and improve frame-rate stability using the new Direct3D 12 API. Understand the fundamentals for building a fast-performing, efficient game engine on Direct3D 12 and where to find the best resources for diving deeper.

Visit our demo booths to witness firsthand the power of DirectX 12

Learn how to harness the power of DirectX 12 in your own game at our Quick Start Challenge

We have showed you projects based on Unreal Engine 4 running on DirectX 12, and also announced that Unity is releasing DirectX 12 support in the Unity 5 cycle. Now, you can see your games based on those engines running on DirectX 12! Bring us your packaged game projects, and Microsoft Engineers from the DirectX team will help you run your games on DirectX 12, show you directions for further performance optimization, and answer your questions. Even if you are not bringing your projects with you to GDC, we are glad to show you Unreal- and Unity-based demo projects running on DirectX12, and to answer your questions to bring you onto DirectX12. So make sure to check it out!

 

Packaging your Unreal Engine 4 projects: To simplify the exercise at the show floor, we ask you to bring in your project based on the unmodified engine and packaged for Windows 64-bit. Here’s how to get started:

  • Create a new folder on your computer.
  • Open your project in Unreal Engine 4.6.
  • From the toolbar, select File -> Package -> Settings. Uncheck “Use PAK” and change the configuration to Shipping.
  • From the toolbar, select File -> Package -> Windows -> Windows 64.
  • In the dialog box, provide the path the folder you created in Step 1 and select OK.
  • Verify your content works.
  • Copy the entire folder to a USB device and bring it with you to GDC!
Packaging your Unity 5 projects: In order to run your project on a DX12-enabled version of the Unity 5 beta engine, please ensure it meets the following requirements:
  • Unity 5 RC2 beta project on a USB flash drive
  • Must be able to target Windows 64-bit standalone
  • Must not require any non-standard libraries or extensions
Does your game require custom libraries or a different version of Unreal 4 Engine or Unity?  Is your game DirectX11?

While we can’t promise a DirectX 12 port in such a short period of time, we’d love to talk to you about your game, how it might benefit from DirectX 12, and even walk you through some DirectX 12 sample code.  So don’t be afraid to stop by!

Not coming to GDC this year?

No problem. Apply to the DirectX Early Access Program at aka.ms/dxeap to be the first to get new DX12 developer content!

DirectX 12 - Looking back at GDC 2015 and a year of amazing progress

$
0
0

Last year at GDC 2014, we announced DirectX 12.  Since then, we have made amazing progress, and we were excited to showcase this progress at GDC 2015.

At the GDC 2015 Expo, we had a range of live demos including Lionhead Studio’s next beautiful game Fable Legends, Epic Games’ Unreal Engine 4, Unity Technologies’ 3D game engine, Futuremark’s “Farandole” performance benchmark, and Oxide Games’ new game Ashes of the Singularity; all running using DirectX 12 on all the PC hardware you care about:  AMD, Intel, and NVIDIA.

To help developers get started in using our API, we featured a Quick Start Challenge, where developers could bring their Unity or Unreal Engine games to port them to DirectX 12.  Developers also had the option of attending three sponsored sessions to learn how to effectively use the power of DirectX 12 in their games.

The industry’s leading game developers, engine developers, and hardware vendors are all aligning around DirectX 12.  Read on to find out why.

 

20% performance improvements in GPU bound games

One question that has been asked is “I know DirectX 12 provides great CPU and power efficiency, but what if my game is GPU bound?  Can DirectX 12 still help me get performance improvements?”  Our answer to that is “Yes, absolutely!”

We worked closely with Lionhead Studio’s to show this in action with their new AAA title, Fable Legends.  Below, we have screenshots of an in-game scene; only the first image is rendering using DirectX 11 and the second image DirectX 12.  We also have an FPS overlay to show the difference in performance.

Fable Legends DX11 - 44.5 FPS 

Fable Legends DX12 - 53 FPS 

This game is GPU bound and by using optimizations only possible in DirectX 12, we see a significant 20% boost in FPS here.

How does this work?  In DirectX 12 the app has lower level access to the hardware and when combined with higher level app knowledge of when things like resource synchronization need to happen, the app has the power to make optimizations specific to its use case.

An important thing to note is that these gains are not occurring on some motley hand-picked mix of hardware.  We went and found one of the most powerful gaming configurations you can buy -  an 8-core Intel i7 CPU with a NVIDIA GeForce GTX 980, and DirectX 12 still manages to raise the performance bar.

 

Oxide Games' Ashes of the Singularity

We also wanted to take the opportunity to show you how DirectX 12’s CPU performance gains can enable gameplay that was never possible before. Oxide Games announced their new game, Ashes of the Singularity and with this, they wanted to redefine what ‘large scale’ meant in the world of RTS games.  Working closely together with Oxide, we found that DirectX 12 in conjunction with their massively scalable Nitrous engine cut CPU usage to a fraction of what it was on DirectX 11 and improved overall FPS in their live demo flythrough by 20%. More importantly, certain parts of the game which simply would be unplayable due to scene complexity in DirectX 11 can be rendered in its full glory on DirectX 12.

 

Futuremark's 3DMark

Finally, to drive the performance story home, we showed Futuremark’s new “Farandole” API overhead benchmark on all our booth hardware: the NVIDIA and AMD machines mentioned above as well as the incredibly compact Brix Pro machine powered by Intel Iris Pro Graphics 5200.

“Farandole” demonstrates how we can extract the raw power of the hardware far more efficiently with DirectX 12 over DirectX 11.  On the Intel’s Iris Pro Graphics demo machine, this increased of the number of possible draw calls by a factor of 3x.

 

How we make both GPU and CPU performance magic happen using DirectX 12

One of the things that we are particularly excited about is the fact that DirectX 12 can help you squeeze that extra GPU and CPU performance out of hardware that over 50% of PC Gamers already have! (Based on Steam survey). 

We held a few talks at GDC to tell you exactly how you as developers can bring those performance wins to your content.  Here are the highlights.

 

GPU Efficiency

Currently, there are three key areas where GPU improvements can be made that weren’t possible before: Explicit resource transitions, parallel GPU execution, and GPU generated workloads.  Let’s take a quick look at all three.

Explicit resource transitions

In DirectX 12, the app has the power of identifying when resource state transitions need to happen.  For instance, a driver in the past would have to ensure all writes to a UAV are executed in order by inserting ‘Wait for Idle’ commands after each dispatch with resource barriers.

If the app knows that certain dispatches can run out of order, the ‘Wait for Idle’ commands can be removed.

Using the new Resource Barrier API, the app can also specify a ‘begin’ and ‘end’ transition while promising not to use the resource while in transition.  Drivers can use this information to eliminate redundant pipeline stalls and cache flushes.

Parallel GPU execution

Modern hardware can run multiple workloads on multiple ‘engines’.  Three types of engines are exposed in DirectX 12: 3D, Compute, and Copy.  It is up to the app to manage dependencies between queues.

We are really excited about two notable compute engine scenarios that can take advantage of this GPU parallelism: long running but low priority compute work; and tightly interleaved 3D/Compute work within a frame.  An example would be compute-heavy dispatches during shadow map generation.

Another notable example use case is in texture streaming where a copy engine can move data around without blocking the main 3D engine which is especially great when going across PCI-E.

GPU-generated workloads

ExecuteIndirect is a powerful new API for executing GPU-generated Draw/Dispatch workloads that has broad hardware compatibility.  Being able to vary things like Vertex/Index buffers, root constants, and inline SRV/UAV/CBV descriptors between invocations enables new scenarios as well as unlocking possible dramatic efficiency improvements.

 

CPU Efficiency

In mid 2014, we worked with Intel to show how DirectX 12 can provide both power efficiency and performance gains (http://blogs.msdn.com/b/directx/archive/2014/08/13/directx-12-high-performance-and-high-power-savings.aspx).

With DirectX 12’s ability to scale efficiently across multiple CPU cores, Oxide’s game Ashes was also able to put an unprecedented number of units, particles, and effects on screen without sacrificing performance.

The Ashes live demo was also shown on one of the highest end gaming configurations you can have, the same 8-core Intel i7 CPU and an AMD R9 290X; once more showing how DirectX 12 can raise the highest of performance bars.

We also announced a shader caching feature which allows app controlled serialization and deserialization of Pipeline State Objects.  This will help apps optimize startup and level load times while also reducing in-game glitches.

 

Where can I learn more about improving GPU and CPU efficiency using DirectX 12?

All of the above is covered in Bennett Sorbo’s “Better Power, Better Performance: Your Game on DirectX12” and Max McMullen’s “Advanced DirectX12 Graphics and Performance” GDC 2015 technical talks linked below:

http://channel9.msdn.com/events/GDC/GDC-2015/Better-Power-Better-Performance-Your-Game-on-DirectX12

http://channel9.msdn.com/events/GDC/GDC-2015/Advanced-DirectX12-Graphics-and-Performance

 

We're making it easy for you to dive right into DirectX 12!

DirectX 12 is a new API and as developers, we understand that learning a new API takes work.    That’s why we brought you the DirectX 12 Quick Start Challenge (QSC) booths at GDC 2015.

We worked closely with Epic Games and Unity to back their respective engines with DirectX 12.  We then encouraged all of you to bring your Unreal Engine 4 or Unity 5 Beta projects to our QSC booths where you could get your content running on DirectX 12 right there and then!  We were ecstatic that some of you managed to bring your content in and get it working.

Keep in touch and up to date with DirectX 12!

As a result of GDC, we have seen a surge of applications to our DirectX 12 Early Access Program and we want to continue to encourage game developers to apply. 

If you think your game will benefit from DirectX 12, just fill in the online OneDrive survey at http://aka.ms/dxeap.  Make sure to fill out as much of the survey as possible to let us know what cool things you want to do with DirectX 12!

In the meantime, stay tuned to this blog and follow us @DirectX12 for all of the latest!

 

 

 

 

 

 

 

 

 

 

DirectX 12 Rocks in 3DMark’s API Overhead Test

$
0
0

Have you been itching to try DirectX 12 for yourself?  Well today you can, with the release of Futuremark’s 3DMark API Overhead feature test, the first publicly available DirectX 12 application!  The fact that DirectX 12 dramatically improves multithread scaling and CPU performance isn’t a surprise, but the extent of the improvement is profoundly exemplified in 3DMark’s new feature test.  Try it for yourself and find out how much your system can benefit from the CPU-side improvements of DirectX 12!

To run the new test, make sure you’re running Windows 10 Technical Preview (build 10041 or later) with the latest graphics drivers from Windows Update.  To ensure you have the latest updates, go to Start > Settings > Update & recovery, then check for and apply any pending updates.  You also must install or update to the latest version of 3DMark (Advanced Edition is required).  For more details on the test, system requirements, and info on how to get 3DMark, check out Futuremark’s overview page here.  After you run the test, tweet us your results!

Want to know more about the gains possible with DirectX 12?  Read about them here.

Stay tuned to this blog for more DirectX 12 excitement, and don’t forget to join us at //build 2015!


DirectX 12 Multiadapter: Lighting up dormant silicon and making it work for you

$
0
0

Are you one of the millions of PC users with a laptop or a desktop system with an integrated GPU as well as a discrete GPU?  Before Windows 10 and DirectX 12, all the performance potential from the second GPU goes unused.  With DirectX 12 and Windows 10, application developers can use every GPU on the system simultaneously!

Are you an elite power gamer with multiple graphics cards?  Well, by giving the applications direct control over all of the hardware on the system, applications can optimize more effectively for the ultra-high end, squeezing even more performance out of the most powerful systems available today and in the future.

We’re calling this DX12 feature “Multiadapter”, and applications can use it to unlock all that silicon that would otherwise be sitting dormant doing nothing.

At //build 2015 we both announced the Multiadapter feature and showed several examples of how it can be used.

Square Enix and DirectX 12 Multiadapter

Square Enix created a demo called “WITCH CHAPTER 0 [cry]” running on DirectX 12 and we were very happy to be able to show it at //build 2015.

With about 63 million polygons per scene and 8k by 8k textures, the demo showed the unprecedented level of detail you can achieve with DirectX 12 and Windows 10.

Square Enix’s DirectX 12 demo rendering in real-time on stage at //build 2015

The demo utilized four NVIDIA GeForce GTX Titan X cards enabling Square Enix to achieve extremely realistic cinematic level rendering; only instead of pre-rendered content, this was being rendered in real-time!

This demonstrated the upper end of what’s possible using multiple high power GPUs and DirectX 12. 

Take a look at the live demo video from April 30th's Keynote Presentation.

Now let’s take a look at how DirectX 12’s Multiadapter is also designed to extract all the power from a variety of mixed power hardware.

Explicit Multiadapter control in Unreal Engine 4

We used Epic Games’ DX12 Unreal Engine 4 to split the rendering workload across an integrated Intel GPU and a discrete NVIDIA GPU to showcase how it is possible to use two disparate GPUs simultaneously to maximize performance.

To show how this extra boost can help gamers, we set up a race between a single discrete NVIDIA GPU and a Multiadapter configuration consisting of the same single discrete GPU + an integrated Intel GPU.  In this race, each configuration rendered 635 frames of the UE4 Elemental demo as quickly as it was able to.

The results below show that the Multiadapter configuration manages to beat the single adapter configuration in a race to 635 frames.  At the end of the benchmark, we can calculate the overall fps where Multiadapter comes out as the definitive winner.

Multiadapter already beating single adapter at ~6 seconds


Final results of the fixed-frame-count benchmark

How does it work?

We recognized that most mixed GPU systems in the world were not making the most out of the hardware they had.  So in our quest to maximize performance, we set out to enable separable and contiguous workloads to be executed in parallel on separate GPUs.  One such example of separable workloads is postprocessing.

Virtually every game out there makes use of postprocessing to make your favorite games visually impressive; but that postprocessing work doesn’t come free.  By offloading some of the postprocessing work to a second GPU, the first GPU is freed up to start on the next frame before it would have otherwise been able to improving your overall framerate.

Analyzing the results

The below image shows the real workload timeline of the Intel and NVIDIA GPUs (to scale).  You can see how the workload that would normally be on the NVIDIA GPU is being executed on the Intel GPU instead.

In the demo, we even make use of DirectX 12’s Multiengine feature to complement the Multiadapter feature.  You can see that the copy operations on NVIDIA’s copy engine execute in parallel with the NVIDIA 3D engine operations improving performance even more.

GPU workload timeline (to scale)

Taking a look at the Intel workload, we can see that we still have some unused GPU time that we can take advantage of.  The final GPU utilization results were:

  • NVIDIA: ~100% utilization on average
  • Intel: ~70% utilization on average

Looking to the future, this tells us that the opportunity exists to extract even more performance out of the demo hardware.

For more details, take a look at Max McMullen’s talk at //build 2015 (when available):

http://channel9.msdn.com/Events/Build/2015/3-673

You can also take a look at a video of the actual benchmark here:

http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-12-Multiadapter-Unreal-Engine-4

Opening doors to new possibilities

DirectX 12 already helps you maximize performance by bringing apps closer to the metal.  At //build 2015, we have shown you a glimpse of the performance possibilities with DirectX 12 and how it can light up that precious but dormant silicon already in your machine using Multiadapter.

The fine grained-control over ALL of the hardware in the system offered by DirectX 12 gives game developers the power to use techniques that were simply not possible in DirectX 11. Our Multiadapter demos only scratch the surface of what creative game developers can do now that they have the ability to directly use ALL of the graphics hardware in the system, even if such hardware has different capabilities and is from different manufacturers.

GRFX at //build 2015: What will you build?

$
0
0

Hi all!

Wow, we've had a busy year for the graphics teams here at Microsoft.  In addition to busily building the graphics features and upgrades you’ll get your hands on with Windows 10, we've been out and about. We've run into you at standout events like GDC, XFest, and, most recently, //build.Read on for a high-level recap of the Graphics team’s shenanigans in the Moscone Center.

Wait, why are you talking about the “graphics team”? I thought this was the DirectX blog.

Though DirectX is the close-to-the-metal path that powers the most visually impressive games on the market, Windows has an incredibly broad array of applications which meet a similarly broad array of graphical needs.  To meet the varied needs of our customers, we've built a number of technologies on top of DirectX:

  • Win2D – A new 2D drawing API built on Direct2D and DirectWrite that is available in C# and is as easy to use as .NET-level APIs 
  • Direct2D & DirectWrite – Two feature-rich, high performance APIs which give developers precise control over text, geometry, image effects, and other 2D primitives
  • Graphics Debugging Tools – A comprehensive set of tools which allows developers to debug rendering errors and optimize performance
  • ANGLE – An open source technology which allows OpenGL developers to quickly bring their games onto Windows and DirectX 

So, in order to give you the full picture of the graphics story at //build, I want to share the great advancements our sister teams have accomplished. 

At //build 2015, the graphics team delivered the following presentations, which you can see on @ch9 by clicking below:

Introducing Win2D: DirectX-Powered Drawing in C#

What’s New in Direct2D and DirectWrite for Windows 10

ANGLE: Running OpenGL ES 2.0 Graphics Code on Windows

Advanced DirectX12 Graphics and Performance

 

 Thank you to @ch9 for the great support for this year's //build talks! PS - sweet digs. 

 

Noteworthy:

If you saw only one single thing from //build, it was probably Square Enix’s stunning Art and Tech demo from Steve Guggenheimer’s Keynote, which included plenty of DirectX 12 love, including  our new Multiadapter feature. If you saw TWO things from //build, you probably saw that DirectX 12 got its very first game trailer, courtesy of our talented friends at Snail Games, xie xie!

 

Simon Tao dazzled the audience at his Win2D talk. He also even hosted a Win2D Quick Start Challenge. If you weren't at the conference you needn't feel left out, because the challenges featured at //build are online so you can participate from home. Take the Win2D Challenge for a spin, and then give the others a try. Tweet us @directx12 to tell us how you've done!

 

Anthony’s Direct2D and DirectWrite session showcased new functionality and performance improvements for Windows 10. He introduced new image effects and loading advancements as well as an exciting new cloud-powered font service in DirectWrite. These enhancements will benefit not just PCs, but mobile as well… check out Jeff Mlakar’s post for a nice audience-eye-view of the talk.

 

Tony presented ANGLE, an open source project MS is involved with, which allows Windows to seamlessly run OpenGL ES 2.0 content. By running your OpenGL ES code on Windows, devs can spend less time refactoring graphics code and more time making apps great(er)! ANGLE info and source is available here

 

Last, but certainly not least, DirectX 12 was represented in the Keynote. If that left you needing more information, the best way to really dig into DirectX 12’s new hotness discussed at //build is to watch Dev Lead Max McMullen's standing-room-only technical session. Though you may feel the need to take notes, take a break because Max’s slides are here. Max illustrated how DirectX 12 puts power and control in the developers hands to reduce their CPU overhead, manage GPU resources more efficiently, and create gorgeous 3D graphics. Some developers have already done amazing things…. We've discussed the lovely Square Enix demo already, so let’s focus for a moment on a developer who may be new to you:  Snail Games, from Suzhou China. Snail Games is one of the country’s top game developers and we are proud to have worked with them to port their beautiful, newly announced game, King of Wushu, from DirectX 11 to DirectX 12. If you missed it in the DirectX 12 video, Snail was able to complete the port with only two developers over six weeks. DirectX 12’s hardware control and flexibility helped them reduce CPU usage and increase framerate by ~10%, and they believe they can improve that. Finally, I’d be remiss if I didn't thank Ivan from Square Enix and the entire Fable Legends team for their participation in this talk and our //build effort. So, thank you all! 

 

Before I sign off, I want to bring your attention to the extra cool, heretofore undisclosed, Surface docking station my pal and teammate DanChar created with his hackathon team at the Microsoft Maker garage. The eagle-eyed among you may have spotted it in the Win2D session. Check out Dan’s MSDN blog post for information on this mystery hardware.

 

That’s the news fit to print, folks. Thanks for reading, thanks for attending events, saying hi, giving us feedback, and making your awesome apps. If you want to reach out to the DirecxtX 12 team please do so @directx12 or on the forums. We want to hear from you! If you want to talk to me, I’m @alisonst.

 

See you at the next event!

Hello World: DirectX 12 developer edition

$
0
0

Hello graphics developer pals! We're as excited as a ninja-cat-riding-a-T-Rex to share our work with you all. We’ve been working with some of you already and we're excited to welcome any newcomers! So, let me give you a little tour of where you can find the content you may be looking for. Let’s meet up after the T-Rex, shall we?

 

There are a few places a graphics developer like yourself should know about when working with DirectX 12. Let me give you a tour of the hot spots:  

 

Well, that, in brief, is your pocket guide to DirectX 12 information and education at the moment. We anticipate a few new spots lighting up very soon and will let you know when they do! 

In the meantime, please let us know what you think of what you’ve seen so far.

Windows 10 and DirectX 12 released!

$
0
0

One giant leap for gamers!

It’s been less than 18 months since we announced DirectX 12 at GDC 2014.  Since that time, we’ve been working tirelessly with game developers and graphics card vendors to deliver an API that offers more control over graphics hardware than ever before.  When we set out to design DirectX 12, game developers gave us a daunting set of requirements:

1)      Dramatically reduce CPU overhead while increasing GPU performance

2)      Work across the Windows and Xbox One ecosystem

3)      Provide support for all of the latest graphics hardware features

Today, we’re excited to announce the fulfillment of these ambitious goals!  With the release of Windows 10, DirectX 12 is now available for everyone to use, and the first DirectX 12 content will arrive in the coming weeks.  For a personal message from our Vice President of Development, click here

What will DirectX 12 do for me?

We’re very pleased to see all of the excitement from gamers about DirectX 12!  This excitement has led to a steady stream of articles, tweets, and YouTube videos discussing DirectX 12 and what it means to gamers.  We’ve seen articles questioning whether DirectX 12 will provide substantial benefits, and we’ve seen articles that promise that with DirectX 12, the 3DFX Voodoo card you have gathering dust in your basement will allow your games to cross the Uncanny Valley.

Let’s set the record straight.  We expect that games that use DirectX 12 will:

1)      Be able to write to one graphics API for PCs and Xbox One

2)      Reduce CPU overhead by up to 50% while scaling across all CPU cores

3)      Improve GPU performance by up to 20%

4)      Realize more benefits over time as game developers learn how to use the new API more efficiently

To elaborate, DirectX 12 is a paradigm shift for game developers, providing them with a new way to structure graphics workloads.  These new techniques can lead to a tremendous increase in expressiveness and optimization opportunities.   Typically, when game developers decide to support DirectX 12 in their engine, they will do so in phases.  Rather than completely overhauling their engine to take full advantage of every aspect of the API, they will start with their DirectX 11 based engine and then port it over to DirectX 12.  We expect such engine developers to achieve up to a 50% CPU reduction while improving GPU performance by up to 20%.   The reason we mention “up to” is because every game is different – the more of the various DirectX 12 features (see below) a game uses, the more optimization they can expect.

Over time, we expect that games will build DirectX 12’s capabilities into the design of the game itself, which will lead to even more impressive gains.  The game “Ashes of the Singularity” is a good example of a game that bakes DirectX 12’s capabilities into the design itself.  The result:  a RTS game that can show tens of thousands of actors engaged in dozens of battles simultaneously. 

Speaking of games, support for DirectX 12 is currently available to the public in an early experimental mode in Unity 5.2 Beta and in Unreal 4.9 Preview, so the many games powered by these engines will soon run on DirectX 12. In addition to games based on these engines, we’re on pace for the fastest adoption of a new DirectX technology that we’ve had this millennium – so stay tuned for lots of game announcements!

What hardware should I buy?

The great news is that, because we’ve designed DirectX 12 to work broadly cross a wide variety of hardware, roughly 2 out of 3 gamers will not need to buy any new hardware at all.  If you have supported hardware, simply get your free upgrade to Windows 10 and you’re good to go. 

However, as a team full of gamers, our professional (and clearly unbiased) opinion is that the upcoming DirectX 12 games are an excellent excuse to upgrade your hardware.  Because DirectX 12 makes all supported hardware better, you can rest assured that whether you speed $100 or $1000 on a graphics card, you will benefit from DirectX 12.

But how do you know which card is best for your gaming dollar?  How do you make sense of the various selling points that you see from the various graphics hardware vendors?  Should you go for a higher “feature level” or should you focus on another advertised feature such as async compute or support for a particular bind model?

Most of these developer-focused features do provide some incremental benefit to users and more information on each of these can be found later in this post. However, generally speaking, the most important thing is to simply get a card that supports DirectX 12.  Beyond that, we would recommend focusing on how the different cards actually perform on real games and benchmarks.  This gives a much more reliable view of what kind of performance to expect.

DirectX 11 game performance is widely available today, and we expect DirectX 12 game performance to be data available in the very near future.  Combined, this performance data is a great way to make your purchasing decisions. 

 

Technical Details: (note much of this content is taken from earlier blogs)

 

CPU Overhead Reduction and Multicore Scaling

 

Pipeline state objects

Direct3D 11 allows pipeline state manipulation through a large set of orthogonal objects.  For example, input assembler state, pixel shader state, rasterizer state, and output merger state are all independently modifiable.  This provides a convenient, relatively high-level representation of the graphics pipeline, however it doesn’t map very well to modern hardware.  This is primarily because there are often interdependencies between the various states.  For example, many GPUs combine pixel shader and output merger state into a single hardware representation, but because the Direct3D 11 API allows these to be set separately, the driver cannot resolve things until it knows the state is finalized, which isn’t until draw time.  This delays hardware state setup, which means extra overhead, and fewer maximum draw calls per frame.

Direct3D 12 addresses this issue by unifying much of the pipeline state into immutable pipeline state objects (PSOs), which are finalized on creation.  This allows hardware and drivers to immediately convert the PSO into whatever hardware native instructions and state are required to execute GPU work.  Which PSO is in use can still be changed dynamically, but to do so the hardware only needs to copy the minimal amount of pre-computed state directly to the hardware registers, rather than computing the hardware state on the fly.  This means significantly reduced draw call overhead, and many more draw calls per frame.

Command lists and bundles

In Direct3D 11, all work submission is done via the immediate context, which represents a single stream of commands that go to the GPU.  To achieve multithreaded scaling, games also have deferred contexts available to them, but like PSOs, deferred contexts also do not map perfectly to hardware, and so relatively little work can be done in them.

Direct3D 12 introduces a new model for work submission based on command lists that contain the entirety of information needed to execute a particular workload on the GPU.  Each new command list contains information such as which PSO to use, what texture and buffer resources are needed, and the arguments to all draw calls.  Because each command list is self-contained and inherits no state, the driver can pre-compute all necessary GPU commands up-front and in a free-threaded manner.  The only serial process necessary is the final submission of command lists to the GPU via the command queue, which is a highly efficient process.

In addition to command lists, Direct3D 12 also introduces a second level of work pre-computation, bundles.  Unlike command lists which are completely self-contained and typically constructed, submitted once, and discarded, bundles provide a form of state inheritance which permits reuse.  For example, if a game wants to draw two character models with different textures, one approach is to record a command list with two sets of identical draw calls.  But another approach is to “record” one bundle that draws a single character model, then “play back” the bundle twice on the command list using different resources.  In the latter case, the driver only has to compute the appropriate instructions once, and creating the command list essentially amounts to two low-cost function calls.

Descriptor heaps and tables

Resource binding in Direct3D 11 is highly abstracted and convenient, but leaves many modern hardware capabilities underutilized.  In Direct3D 11, games create “view” objects of resources, then bind those views to several “slots” at various shader stages in the pipeline.  Shaders in turn read data from those explicit bind slots which are fixed at draw time.  This model means that whenever a game wants to draw using different resources, it must re-bind different views to different slots, and call draw again.  This is yet another case of overhead that can be eliminated by fully utilizing modern hardware capabilities.

Direct3D 12 changes the binding model to match modern hardware and significantly improve performance.  Instead of requiring standalone resource views and explicit mapping to slots, Direct3D 12 provides a descriptor heap into which games create their various resource views.  This provides a mechanism for the GPU to directly write the hardware-native resource description (descriptor) to memory up-front.  To declare which resources are to be used by the pipeline for a particular draw call, games specify one or more descriptor tables which represent sub-ranges of the full descriptor heap.  As the descriptor heap has already been populated with the appropriate hardware-specific descriptor data, changing descriptor tables is an extremely low-cost operation.

In addition to the improved performance offered by descriptor heaps and tables, Direct3D 12 also allows resources to be dynamically indexed in shaders, providing unprecedented flexibility and unlocking new rendering techniques.  As an example, modern deferred rendering engines typically encode a material or object identifier of some kind to the intermediate g-buffer.  In Direct3D 11, these engines must be careful to avoid using too many materials, as including too many in one g-buffer can significantly slow down the final render pass.  With dynamically indexable resources, a scene with a thousand materials can be finalized just as quickly as one with only ten.

Modern hardware has a variety of different capabilities with respect to the total number of descriptors that can reside in a descriptor heap, as well as the number of specific descriptors that can be referenced simultaneously in a particular draw call.  With DirectX 12, developers can take advantage of hardware with more advanced binding capabilities by using our tiered binding system.  Developers who take advantage of the higher binding tiers can use more advanced shading algorithms which lead to reduced GPU cost and higher rendering quality.

 

 

Increasing GPU Performance

 

GPU Efficiency

Currently, there are three key areas where GPU improvements can be made that weren’t possible before: Explicit resource transitions, parallel GPU execution, and GPU generated workloads.  Let’s take a quick look at all three.

Explicit resource transitions

In DirectX 12, the app has the power of identifying when resource state transitions need to happen.  For instance, a driver in the past would have to ensure all writes to a UAV are executed in order by inserting ‘Wait for Idle’ commands after each dispatch with resource barriers.

 

If the app knows that certain dispatches can run out of order, the ‘Wait for Idle’ commands can be removed.

 

Using the new Resource Barrier API, the app can also specify a ‘begin’ and ‘end’ transition while promising not to use the resource while in transition.  Drivers can use this information to eliminate redundant pipeline stalls and cache flushes.

Parallel GPU execution

Modern hardware can run multiple workloads on multiple ‘engines’.  Three types of engines are exposed in DirectX 12: 3D, Compute, and Copy.  It is up to the app to manage dependencies between queues.

We are really excited about two notable compute engine scenarios that can take advantage of this GPU parallelism: long running but low priority compute work; and tightly interleaved 3D/Compute work within a frame.  An example would be compute-heavy dispatches during shadow map generation.

Another notable example use case is in texture streaming where a copy engine can move data around without blocking the main 3D engine which is especially great when going across PCI-E.  This feature is often referred to in marketing as “Async computing”

GPU-generated workloads

ExecuteIndirect is a powerful new API for executing GPU-generated Draw/Dispatch workloads that has broad hardware compatibility.  Being able to vary things like Vertex/Index buffers, root constants, and inline SRV/UAV/CBV descriptors between invocations enables new scenarios as well as unlocking possible dramatic efficiency improvements.

Multiadapter Support

DirectX 12 allows developers to make use of all graphics cards in the system, which opens up a number of exciting possibilities:.  

1)      Developers no longer need to rely on multiple manufacturer-specific code paths to support AFR/SFR for gamers with CrossFire/SLI systems

2)      Developers can further optimize for gamers who have CrossFire/SLI systems

Developers can also make use of the integrated graphics adapter, which previously sat idle on gamer’s machines.  

Support for new hardware features

DirectX has the notion of “Feature Level” which allows developers to use certain graphics hardware features in a deterministic way across different graphics card vendors.  Feature levels were created to reduce complexity for developers.  A given “Feature Level” combines a number of different hardware features together, which are then supported (or not supported) by the graphics hardware.  If the hardware supports a given “Feature Level” the hardware must support all features in that “Feature Level” and in previous “Feature Levels.”  For instance, if hardware supports “Feature Level 11_2” the hardware must also support “Feature Level 11_1, 11_0”, etc.  Grouping features together in this way dramatically reduces the number of hardware permutations that developers need to worry about. 

“Feature Level” has been a source of much confusion because we named it in a confusing way (we even considered changing the naming scheme as part of the DirectX 12 API release but decided not to since changing it at this point would create even more confusion).  Despite the numeric suffix of “Feature Level ‘11’” or “Feature Level ‘12’”, these numbers are mostly independent of the API version and are not indicative of game performance. For example, it is entirely possible that a “Feature Level 11” GPU could substantially outperform “Feature Level 12” GPU when running a DirectX 12 game.. 

With that being said, Windows 10 includes two new “Feature Levels” which are supported on both the DirectX 11 and DirectX 12 APIs (as mentioned earlier, “Feature Level” is mostly independent of the API version). 

  • Feature Level 12.0
    • Resource Binding Tier 2
    • Tiled Resources Tier 2: Texture3D
    • Typed UAV Tier 1
  • Feature Level 12.1
    • Conservative Rasterization Tier 1
    • ROVs

More information on the new rendering features can be found here.

You passed the endurance test!

If you’ve made it this far, you should check out our instructional videos here.  Ready to start writing some code?  Check out our samples here to help you get started.  Oh, and to butcher Churchill - this is end of the beginning, not the end or the beginning of the end.  There is much, much more to come.  Stay tuned! 

 

Ashes of the Singularity makes gaming history with DirectX 12

$
0
0

Back in April, we described Multiadapter, a DirectX 12 feature which gives game developers the power to light up every GPU on a user's system.  Prior to this feature, developers had to rely on help from hardware vendors to use multiple GPUs, with the restriction that the GPUs be homogeneous.  

DirectX 12 removes all such limitations.  In our April post, we showed that an integrated and discrete GPU could be used together to obtain a performance boost over 10%.  This was early prototype code and was meant as a call to action for developers to explore the new possibilities.

Fast-forward six months, and we're happy to report that Oxide, in their new Ashes of the Singularity game, has risen to make gaming history by being the first DirectX 12 game to render on both an AMD and an NVIDIA card at the same time.   Anandtech has the details. 

If you are a lifelong gamer like I am, I don't need to tell you how exciting this is, with even greater benefits to come.  Now that Oxide has proved that heterogeneous adapters can work together to accelerate rendering, it isn't too far-fetched to imagine a game making use of all graphics cards: integrated, high end discrete, and low end discrete.  With DirectX 12's extremely rapid adoption, we can imagine a world in the not-too-distant future where upgrading your discrete graphics card doesn't require you to throw away or ebay your old card. Instead, you just put your new graphics card in and instantly benefit from both cards.

Realizing this future will require significant work from game developers- but Oxide has taken the first step down this path, and we couldn't be happier. You can learn more about Ashes of the Singularity and Oxide's experience using DirectX 12 in our guest post below, by Brad Wardell of Oxide Games.  You can learn more technical details about DirectX 12 features by subscribing to our YouTube channel. If your game is making history with DirectX 12, send us a note - we'd love to share more developer stories and experiences! 

 

DirectX 12 reinvents the game

 

By Brad Wardell

Co-Founder, Oxide Games

CEO, Stardock Corp.

 

A tribute to DirectX 10

A lot has changed in the nine years since DirectX 10 was released. At the time, DirectX 10 was a pretty big deal. With it, games could use multiple threads to construct scenes in their games delivering substantial visual benefits.

With the release of Windows 10, Microsoft has unleashed the power of your modern PC with the debut of DirectX 12. Microsoft’s new platform is nothing short of a revolution for game developers. Now, every core on your modern, multi-core CPU can directly access your ever increasing GPU simultaneously. This translates to
a quantum leap in what games can do.

The effect of single core gaming on your games

If you’ve thought that gaming innovation had slowed over the past decade, you were right. It was. It was unavoidable in fact. That’s because prior to DirectX 12, only one of your CPU cores could talk to the GPU at a time. And as savvy PC gamers can tell you, the actual speed of an individual core hasn’t dramatically
changed over the past decade.

In response to the limitation in hardware access, the game industry has had to make games that are simpler in order to deliver a steady rate of visual improvements. This has been particularly noticeable in strategy and role playing games where the number of objects a player interacts with has decreased even as the visual fidelity has increased. Hence, the rise of first person role playing games and strategy games in which the player only controls a single unit.

The heart of DirectX 12

By allowing developers to talk to graphics cards from every core, at the same time, we can now have hundreds or even thousands of objects on-screen with the same level of fidelity that you previously would have had in a game with only a handful of units.

DirectX 12 also opens the door for real-time CGI quality game visuals. Consider for a moment some of the scenes from the Star Wars prequels. Many of those scenes could be rendered today, in real-time on a modern PC. Just think how much faster PCs are today than they were in 1997 (Phantom Menace). How about the
battles in Lord of the Rings. Even as I write this, AMD and NVIDIA are both working on GPUs that could potentially render these scenes in real-time provided that the OS allows the software to communicate with them from every CPU core – which DirectX 12 does.

Ashes of the Singularity

Our upcoming, epic-scale, real-time strategy game, Ashes of the Singularity, leverages the power of DirectX 12 to deliver thousands of high-fidelity units on-screen at once while maintaining a high frame rate.

Ashes also uses a new type of 3D engine that is based on the hardware capabilities of modern PCs. For example, it doesn’t use deferred rendering but rather uses Object Space Rendering (OSR) which is similar to how CGI in movies have been rendered except we’re able to do it in real-time. While we are able to present
this on DirectX 11, with DirectX 12, we can support rendering vastly more objects on screen at the same time.

One of the reasons why games seem to always look like games and not CGI is due to the way a given scene is composited. That’s why our new engine uses OSR. That’s why even the relatively simple 3D models in Ashes look so distinctive. They look more like something you’d see in a CGI-style visual rather than a game.

The visuals in Ashes is only possible because every element of the scene is able to be blended together with light and materials as it’s being composited together. There is no such thing as full-screen antialiasing in such a system. There’s no, well, aliasing to anti-alias. And thanks to DirectX 12, we show potentially tens of thousands of units on-screen at once.

What’s next

Over the next couple of years, we will see a fundamental reinvention of digital entertainment driven by DirectX 12. DirectX 12 makes augmented reality practical (you need 90fps to not get dizzy imo, you’re not doing that with high fidelity on anything less than DirectX 12). It will change the way we design
our games (we can make games with a lot more interactive objects). And it will change the way our games look (goodbye deferred rendering, hello object space rendering).

About Ashes of the Singularity

Developed by Oxide Games and Published by Stardock Entertainment, Ashes of the Singularity is a new real-time strategy game set in the future in which humanity has expanded to the stars and is in conflict with a deadly enemy across many different worlds.

Learn more about Ashes of the Singularity at ashesgame.com

About Oxide Games

Founded by engineers Dan Baker, Tim Kipp, Brian Wade, Marc Meyer and Brad Wardell, Oxide Games is developing a next-generation 3D engine called Nitrous. This engine uses similar techniques to what CGI in movies use to create scenes of unrivaled complexity and fidelity – in real time.

Learn more about the Nitrous Engine at oxidegames.com

About Stardock Corp.

Founded in 1993, Stardock has been a leader in technology innovation since its inception developing the first commercial 32-bit PC game (Galactic Civilizations) as well as develop and publish highly acclaimed games including Sins of a Solar Empire, Demigod and more. Stardock is also a leader in PC
desktop software with products including Fences, ObjectDock, WindowBlinds, Start8, Start10 and more.

Learn more about Stardock at stardock.com

 

DirectX 12 Lights Up NVIDIA’s Maxwell Launch

$
0
0

Our mission in the DirectX team is to provide the best graphics API in the world and have it work on as many graphics cards as possible.  To do this, we work very closely with game developers and graphics hardware vendors. So, when one of our close partners invites us to an event, we’re always happy to participate. 

Last week, at the NVIDIA Editor’s Day keynote, Max McMullen, our development lead, unveiled the result of a great partnership between Epic, NVIDIA, and Microsoft.  

Awesome Hardware + Awesome Engine + Awesome API  + You = Awesome Games.

 

Epic’s Unreal Engine 3 has been used to ship more than 350 PC and console games.  Epic’s Unreal Engine 4 is even more powerful, scalable, and accessible.  Also, it features an entirely new open model of development – any developer can access the engine’s complete source, along with great sample content by purchasing a UE4 subscription.

The DirectX team was inspired by Epic’s unprecedented open development model. Wouldn’t it be awesome if there was a DirectX 12 version of UE4 that was developed in a similarly open manner using the GitHub community?  We shared this idea with Epic, and they were enthusiastic about giving UE4 developers the opportunity to use the same familiar path to get a head start on DX12 development, contribute back to the community, and even influence the final design of DX12!

Those of you who saw our presentation at GDC 2014 may recall that NVIDIA announced Epic’s commitment to support DX12 in UE4.  So naturally, when we told NVIDIA about our plans to partner with Epic and develop in an open manner, NVIDIA enthusiastically agreed to pull out all the stops to support our effort.   

Developing an API requires working in a graphics stack where many pieces are constantly changing: the graphics kernel, hardware specific kernel drivers, the API, hardware specific user-mode drivers, and the app itself.  Adding new features and fixing bugs in such an environment requires the owners of each piece to work together in real-time to solve problems together.  For several months, NVIDIA’s engineers worked closely with us in a zero-latency environment.  When we encountered bugs, NVIDIA was right there with us to help investigate.  When we needed new driver features to make something run, NVIDIA set an aggressive implementation date and then met that date.

The result of this intense collaboration?  

 

Elemental and Infiltrator running beautifully on DX12 on Maxwell at NVIDIA’s Editor’s Day.  Best of all, we announced that UE4 developers can now benefit from this effort:  UE4 subscribers who are accepted into the DX12 early access program will receive source access to the alpha DX12 version of UE4!  Developers who want to be the first to bring their UE4 games to DX12 now have everything they need to get started, including building and running the exact Elemental demo that was featured in the keynote on their own Maxwell cards!

How do we know DirectX 12 on Unreal Engine 4 is ready for game developers? 

At E3 this year, Microsoft showed off “Fable Legends” for Xbox One, a new take on the RPG franchise’s well-loved world of magic, humor and high adventure.  Fable Legends’ stunning visuals were created using Unreal Engine 4, so, we asked our friends at Lionhead if they’d do a bit of experimentation with us. The resulting tech demo created by Lionhead showcases the rich, immersive graphics of Albion that are possible with DX12 and Maxwell.

You can see the full video here.  In addition to the demos, Max also discussed new hardware features supported by both DX11.3 and DX12, which you can see here.

Next up…your game?

We are always excited to share some of the progress we’ve made with our partners.  There is much left to do, however:  final features to be added, bugs to be fixed, optimizations to be made, and content to be ported.  If you think your game can help us shape DX12 to be the best graphics API, and you want to see your game showcased to the world as an example of amazing graphics, now is the time to join our early access program.

We’ve got cool things in the pipeline that we’ll be sharing in the coming months, so stay tuned to this site and follow us @DirectX12 for all the latest!

Resources

NVIDIA blog

Apply for DirectX 12 early access

Unreal Engine 4

DirectX 12 and Windows 10

$
0
0

As a part of the Windows team, we’re super excited about the Windows 10 Technical Preview that was just released!  The final version of Windows 10 will ship with DirectX 12, and we think it’s going to be awesome.

We especially encourage gamers to help us make this release great for you by becoming Windows Insiders.  Game developers who are part of our DirectX 12 Early Access program have even more incentive to join the Windows Insider program.  These game developers will receive everything they need to kickstart their DX12 development, including: updated runtime, API headers, drivers, documentation, and samples, all of which will work with the Windows 10 Technical Preview.

We have a few more treats for game developers…

Unreal 4 Engine 4.4 Supports DirectX 12!

As we announced in our last blog post, members of our Early Access program who subscribe to Unreal Engine 4 can receive source access to the DX12 port of UE4. We’ve worked with Epic to create a DX12 branch on the UE4 GitHub repository.  This branch supports UE 4.4, the latest publically released version of the Unreal 4 Engine!  Come join our open development project and help make DX12 great!

From Asteroids to Mountains, Intel Rocks!

In the comments section of our last blog post, several of you asked about support for other graphics vendors.  We have great working relationships with all graphics vendors and you can expect to see a continual showcase of their progress.   

In fact, in the same week as the Maxwell event, Max McMullen, our development lead, was also present at the Intel Development Forum where he unveiled the latest details on our new binding model while Michael Apodaca from Intel explained how Intel has optimized their driver for DX12.  These optimizations made it possible for Intel to create the Asteroids demo, which they revealed at Siggraph, showing the performance and power savings of DX12.  You can see more details on the asteroids demo here.

Intel has graciously agreed to make the source for their compelling Asteroids demo available to all developers in the DX12 Early Access program. 

Oh, and the screenshot above?  That was a screenshot from an Intel Haswell graphics DX12 machine running UE4.4’s Landscape Mountains demo.

As always, we’ve got even more in the pipeline that we’ll be sharing in the coming months here, via Early Access Program and via @DirectX12.  If you haven’t signed up for these already, you have no excuse now!


DirectX 12 at GDC 2015

$
0
0
Are you ready to bring the power of DirectX 12 to your game?
Hear Phil Spencer, head of Xbox, talk about The Future of Gaming Across the Microsoft Ecosystem

Attend our technical sessions to learn the latest about DirectX 12
Advanced DirectX12 Graphics and Performance (Wednesday 2-3pm, West Hall 2008): This technical session goes deep into the DirectX12 APIs you can use to reduce CPU rendering overhead, manage GPU resource usage more efficiently, and express the most cutting-edge 3D graphics possible across the spectrum of Windows 10 devices. Whether you are building a game for the phone, PC, or Xbox – you don’t want to miss this talk.
Solve the Tough Graphics Problems with Your Game Using DirectX Tools (Thursday 5:30-6:30pm, West Hall 2008): This session shows the latest update of a set of great graphics tools in Visual Studio and Windows that enable you to build great games. Come to this talk to learn about our currently shipping features, the upcoming DirectX 12 toolset, and discuss future directions. This talk will highlight top graphics debugging and performance problems and map key features to help you address those problems.
Better Power, Better Performance: Your Game on DirectX12 (Friday 10-11am, West Hall 2008): This session demonstrates how to architect your game engine to best reduce CPU overhead, increase GPU efficiency, and improve frame-rate stability using the new Direct3D 12 API. Understand the fundamentals for building a fast-performing, efficient game engine on Direct3D 12 and where to find the best resources for diving deeper.
Visit our demo booths to witness firsthand the power of DirectX 12

Learn how to harness the power of DirectX 12 in your own game at our Quick Start Challenge

We have showed you projects based on Unreal Engine 4 running on DirectX 12, and also announced that Unity is releasing DirectX 12 support in the Unity 5 cycle. Now, you can see your games based on those engines running on DirectX 12! Bring us your packaged game projects, and Microsoft Engineers from the DirectX team will help you run your games on DirectX 12, show you directions for further performance optimization, and answer your questions. Even if you are not bringing your projects with you to GDC, we are glad to show you Unreal- and Unity-based demo projects running on DirectX12, and to answer your questions to bring you onto DirectX12. So make sure to check it out!

 

Packaging your Unreal Engine 4 projects: To simplify the exercise at the show floor, we ask you to bring in your project based on the unmodified engine and packaged for Windows 64-bit. Here’s how to get started:

  • Create a new folder on your computer.
  • Open your project in Unreal Engine 4.6.
  • From the toolbar, select File -> Package -> Settings. Uncheck “Use PAK” and change the configuration to Shipping.
  • From the toolbar, select File -> Package -> Windows -> Windows 64.
  • In the dialog box, provide the path the folder you created in Step 1 and select OK.
  • Verify your content works.
  • Copy the entire folder to a USB device and bring it with you to GDC!
Packaging your Unity 5 projects: In order to run your project on a DX12-enabled version of the Unity 5 beta engine, please ensure it meets the following requirements:
  • Unity 5 RC2 beta project on a USB flash drive
  • Must be able to target Windows 64-bit standalone
  • Must not require any non-standard libraries or extensions
Does your game require custom libraries or a different version of Unreal 4 Engine or Unity?  Is your game DirectX11?

While we can’t promise a DirectX 12 port in such a short period of time, we’d love to talk to you about your game, how it might benefit from DirectX 12, and even walk you through some DirectX 12 sample code.  So don’t be afraid to stop by!
Not coming to GDC this year?

No problem. Apply to the DirectX Early Access Program at aka.ms/dxeap to be the first to get new DX12 developer content!

DirectX 12 – Looking back at GDC 2015 and a year of amazing progress

$
0
0

Last year at GDC 2014, we announced DirectX 12.  Since then, we have made amazing progress, and we were excited to showcase this progress at GDC 2015.

At the GDC 2015 Expo, we had a range of live demos including Lionhead Studio’s next beautiful game Fable Legends, Epic Games’ Unreal Engine 4, Unity Technologies’ 3D game engine, Futuremark’s “Farandole” performance benchmark, and Oxide Games’ new game Ashes of the Singularity; all running using DirectX 12 on all the PC hardware you care about:  AMD, Intel, and NVIDIA.

To help developers get started in using our API, we featured a Quick Start Challenge, where developers could bring their Unity or Unreal Engine games to port them to DirectX 12.  Developers also had the option of attending three sponsored sessions to learn how to effectively use the power of DirectX 12 in their games.

The industry’s leading game developers, engine developers, and hardware vendors are all aligning around DirectX 12.  Read on to find out why.

 

20% performance improvements in GPU bound games

One question that has been asked is “I know DirectX 12 provides great CPU and power efficiency, but what if my game is GPU bound?  Can DirectX 12 still help me get performance improvements?”  Our answer to that is “Yes, absolutely!”

We worked closely with Lionhead Studio’s to show this in action with their new AAA title, Fable Legends.  Below, we have screenshots of an in-game scene; only the first image is rendering using DirectX 11 and the second image DirectX 12.  We also have an FPS overlay to show the difference in performance.

Fable Legends DX11 – 44.5 FPS 

Fable Legends DX12 – 53 FPS 

This game is GPU bound and by using optimizations only possible in DirectX 12, we see a significant 20% boost in FPS here.

How does this work?  In DirectX 12 the app has lower level access to the hardware and when combined with higher level app knowledge of when things like resource synchronization need to happen, the app has the power to make optimizations specific to its use case.

An important thing to note is that these gains are not occurring on some motley hand-picked mix of hardware.  We went and found one of the most powerful gaming configurations you can buy –  an 8-core Intel i7 CPU with a NVIDIA GeForce GTX 980, and DirectX 12 still manages to raise the performance bar.

 

Oxide Games’ Ashes of the Singularity

We also wanted to take the opportunity to show you how DirectX 12’s CPU performance gains can enable gameplay that was never possible before. Oxide Games announced their new game, Ashes of the Singularity and with this, they wanted to redefine what ‘large scale’ meant in the world of RTS games.  Working closely together with Oxide, we found that DirectX 12 in conjunction with their massively scalable Nitrous engine cut CPU usage to a fraction of what it was on DirectX 11 and improved overall FPS in their live demo flythrough by 20%. More importantly, certain parts of the game which simply would be unplayable due to scene complexity in DirectX 11 can be rendered in its full glory on DirectX 12.

 

Futuremark’s 3DMark

Finally, to drive the performance story home, we showed Futuremark’s new “Farandole” API overhead benchmark on all our booth hardware: the NVIDIA and AMD machines mentioned above as well as the incredibly compact Brix Pro machine powered by Intel Iris Pro Graphics 5200.

“Farandole” demonstrates how we can extract the raw power of the hardware far more efficiently with DirectX 12 over DirectX 11.  On the Intel’s Iris Pro Graphics demo machine, this increased of the number of possible draw calls by a factor of 3x.

 

How we make both GPU and CPU performance magic happen using DirectX 12

One of the things that we are particularly excited about is the fact that DirectX 12 can help you squeeze that extra GPU and CPU performance out of hardware that over 50% of PC Gamers already have! (Based on Steam survey). 

We held a few talks at GDC to tell you exactly how you as developers can bring those performance wins to your content.  Here are the highlights.

 

GPU Efficiency

Currently, there are three key areas where GPU improvements can be made that weren’t possible before: Explicit resource transitions, parallel GPU execution, and GPU generated workloads.  Let’s take a quick look at all three.

Explicit resource transitions

In DirectX 12, the app has the power of identifying when resource state transitions need to happen.  For instance, a driver in the past would have to ensure all writes to a UAV are executed in order by inserting ‘Wait for Idle’ commands after each dispatch with resource barriers.

If the app knows that certain dispatches can run out of order, the ‘Wait for Idle’ commands can be removed.

Using the new Resource Barrier API, the app can also specify a ‘begin’ and ‘end’ transition while promising not to use the resource while in transition.  Drivers can use this information to eliminate redundant pipeline stalls and cache flushes.

Parallel GPU execution

Modern hardware can run multiple workloads on multiple ‘engines’.  Three types of engines are exposed in DirectX 12: 3D, Compute, and Copy.  It is up to the app to manage dependencies between queues.

We are really excited about two notable compute engine scenarios that can take advantage of this GPU parallelism: long running but low priority compute work; and tightly interleaved 3D/Compute work within a frame.  An example would be compute-heavy dispatches during shadow map generation.

Another notable example use case is in texture streaming where a copy engine can move data around without blocking the main 3D engine which is especially great when going across PCI-E.

GPU-generated workloads

ExecuteIndirect is a powerful new API for executing GPU-generated Draw/Dispatch workloads that has broad hardware compatibility.  Being able to vary things like Vertex/Index buffers, root constants, and inline SRV/UAV/CBV descriptors between invocations enables new scenarios as well as unlocking possible dramatic efficiency improvements.

 

CPU Efficiency

In mid 2014, we worked with Intel to show how DirectX 12 can provide both power efficiency and performance gains (http://blogs.msdn.com/b/directx/archive/2014/08/13/directx-12-high-performance-and-high-power-savings.aspx).

With DirectX 12’s ability to scale efficiently across multiple CPU cores, Oxide’s game Ashes was also able to put an unprecedented number of units, particles, and effects on screen without sacrificing performance.

The Ashes live demo was also shown on one of the highest end gaming configurations you can have, the same 8-core Intel i7 CPU and an AMD R9 290X; once more showing how DirectX 12 can raise the highest of performance bars.

We also announced a shader caching feature which allows app controlled serialization and deserialization of Pipeline State Objects.  This will help apps optimize startup and level load times while also reducing in-game glitches.

 

Where can I learn more about improving GPU and CPU efficiency using DirectX 12?

All of the above is covered in Bennett Sorbo’s “Better Power, Better Performance: Your Game on DirectX12” and Max McMullen’s “Advanced DirectX12 Graphics and Performance” GDC 2015 technical talks linked below:

http://channel9.msdn.com/events/GDC/GDC-2015/Better-Power-Better-Performance-Your-Game-on-DirectX12

http://channel9.msdn.com/events/GDC/GDC-2015/Advanced-DirectX12-Graphics-and-Performance

 

We’re making it easy for you to dive right into DirectX 12!

DirectX 12 is a new API and as developers, we understand that learning a new API takes work.    That’s why we brought you the DirectX 12 Quick Start Challenge (QSC) booths at GDC 2015.

We worked closely with Epic Games and Unity to back their respective engines with DirectX 12.  We then encouraged all of you to bring your Unreal Engine 4 or Unity 5 Beta projects to our QSC booths where you could get your content running on DirectX 12 right there and then!  We were ecstatic that some of you managed to bring your content in and get it working.

Keep in touch and up to date with DirectX 12!

As a result of GDC, we have seen a surge of applications to our DirectX 12 Early Access Program and we want to continue to encourage game developers to apply. 

If you think your game will benefit from DirectX 12, just fill in the online OneDrive survey at http://aka.ms/dxeap.  Make sure to fill out as much of the survey as possible to let us know what cool things you want to do with DirectX 12!

In the meantime, stay tuned to this blog and follow us @DirectX12 for all of the latest!

 

 

 

 

 

 

 

 

 

 

DirectX 12 Rocks in 3DMark’s API Overhead Test

$
0
0

Have you been itching to try DirectX 12 for yourself?  Well today you can, with the release of Futuremark’s 3DMark API Overhead feature test, the first publicly available DirectX 12 application!  The fact that DirectX 12 dramatically improves multithread scaling and CPU performance isn’t a surprise, but the extent of the improvement is profoundly exemplified in 3DMark’s new feature test.  Try it for yourself and find out how much your system can benefit from the CPU-side improvements of DirectX 12!

To run the new test, make sure you’re running Windows 10 Technical Preview (build 10041 or later) with the latest graphics drivers from Windows Update.  To ensure you have the latest updates, go to Start > Settings > Update & recovery, then check for and apply any pending updates.  You also must install or update to the latest version of 3DMark (Advanced Edition is required).  For more details on the test, system requirements, and info on how to get 3DMark, check out Futuremark’s overview page here.  After you run the test, tweet us your results!

Want to know more about the gains possible with DirectX 12?  Read about them here.

Stay tuned to this blog for more DirectX 12 excitement, and don’t forget to join us at //build 2015!

DirectX 12 Multiadapter: Lighting up dormant silicon and making it work for you

$
0
0

Are you one of the millions of PC users with a laptop or a desktop system with an integrated GPU as well as a discrete GPU?  Before Windows 10 and DirectX 12, all the performance potential from the second GPU goes unused.  With DirectX 12 and Windows 10, application developers can use every GPU on the system simultaneously!

Are you an elite power gamer with multiple graphics cards?  Well, by giving the applications direct control over all of the hardware on the system, applications can optimize more effectively for the ultra-high end, squeezing even more performance out of the most powerful systems available today and in the future.

We’re calling this DX12 feature “Multiadapter”, and applications can use it to unlock all that silicon that would otherwise be sitting dormant doing nothing.

At //build 2015 we both announced the Multiadapter feature and showed several examples of how it can be used.

Square Enix and DirectX 12 Multiadapter

Square Enix created a demo called “WITCH CHAPTER 0 [cry]” running on DirectX 12 and we were very happy to be able to show it at //build 2015.

With about 63 million polygons per scene and 8k by 8k textures, the demo showed the unprecedented level of detail you can achieve with DirectX 12 and Windows 10.

Square Enix’s DirectX 12 demo rendering in real-time on stage at //build 2015

The demo utilized four NVIDIA GeForce GTX Titan X cards enabling Square Enix to achieve extremely realistic cinematic level rendering; only instead of pre-rendered content, this was being rendered in real-time!

This demonstrated the upper end of what’s possible using multiple high power GPUs and DirectX 12.

Take a look at the live demo video from April 30th’s Keynote Presentation.

Now let’s take a look at how DirectX 12’s Multiadapter is also designed to extract all the power from a variety of mixed power hardware.

Explicit Multiadapter control in Unreal Engine 4

We used Epic Games’ DX12 Unreal Engine 4 to split the rendering workload across an integrated Intel GPU and a discrete NVIDIA GPU to showcase how it is possible to use two disparate GPUs simultaneously to maximize performance.

To show how this extra boost can help gamers, we set up a race between a single discrete NVIDIA GPU and a Multiadapter configuration consisting of the same single discrete GPU + an integrated Intel GPU.  In this race, each configuration rendered 635 frames of the UE4 Elemental demo as quickly as it was able to.

The results below show that the Multiadapter configuration manages to beat the single adapter configuration in a race to 635 frames.  At the end of the benchmark, we can calculate the overall fps where Multiadapter comes out as the definitive winner.

Multiadapter already beating single adapter at ~6 seconds


Final results of the fixed-frame-count benchmark

How does it work?

We recognized that most mixed GPU systems in the world were not making the most out of the hardware they had.  So in our quest to maximize performance, we set out to enable separable and contiguous workloads to be executed in parallel on separate GPUs.  One such example of separable workloads is postprocessing.

Virtually every game out there makes use of postprocessing to make your favorite games visually impressive; but that postprocessing work doesn’t come free.  By offloading some of the postprocessing work to a second GPU, the first GPU is freed up to start on the next frame before it would have otherwise been able to improving your overall framerate.

Analyzing the results

The below image shows the real workload timeline of the Intel and NVIDIA GPUs (to scale).  You can see how the workload that would normally be on the NVIDIA GPU is being executed on the Intel GPU instead.

In the demo, we even make use of DirectX 12’s Multiengine feature to complement the Multiadapter feature.  You can see that the copy operations on NVIDIA’s copy engine execute in parallel with the NVIDIA 3D engine operations improving performance even more.

GPU workload timeline (to scale)

Taking a look at the Intel workload, we can see that we still have some unused GPU time that we can take advantage of.  The final GPU utilization results were:

  • NVIDIA: ~100% utilization on average
  • Intel: ~70% utilization on average

Looking to the future, this tells us that the opportunity exists to extract even more performance out of the demo hardware.

For more details, take a look at Max McMullen’s talk at //build 2015 (when available):

http://channel9.msdn.com/Events/Build/2015/3-673

You can also take a look at a video of the actual benchmark here:

http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-12-Multiadapter-Unreal-Engine-4

Opening doors to new possibilities

DirectX 12 already helps you maximize performance by bringing apps closer to the metal.  At //build 2015, we have shown you a glimpse of the performance possibilities with DirectX 12 and how it can light up that precious but dormant silicon already in your machine using Multiadapter.

The fine grained-control over ALL of the hardware in the system offered by DirectX 12 gives game developers the power to use techniques that were simply not possible in DirectX 11. Our Multiadapter demos only scratch the surface of what creative game developers can do now that they have the ability to directly use ALL of the graphics hardware in the system, even if such hardware has different capabilities and is from different manufacturers.

GRFX at //build 2015: What will you build?

$
0
0

Hi all!

Wow, we’ve had a busy year for the graphics teams here at Microsoft.  In addition to busily building the graphics features and upgrades you’ll get your hands on with Windows 10, we’ve been out and about. We’ve run into you at standout events like GDC, XFest, and, most recently, //build.Read on for a high-level recap of the Graphics team’s shenanigans in the Moscone Center.

Wait, why are you talking about the “graphics team”? I thought this was the DirectX blog.

Though DirectX is the close-to-the-metal path that powers the most visually impressive games on the market, Windows has an incredibly broad array of applications which meet a similarly broad array of graphical needs.  To meet the varied needs of our customers, we’ve built a number of technologies on top of DirectX:

  • Win2D – A new 2D drawing API built on Direct2D and DirectWrite that is available in C# and is as easy to use as .NET-level APIs 
  • Direct2D & DirectWrite – Two feature-rich, high performance APIs which give developers precise control over text, geometry, image effects, and other 2D primitives
  • Graphics Debugging Tools – A comprehensive set of tools which allows developers to debug rendering errors and optimize performance
  • ANGLE – An open source technology which allows OpenGL developers to quickly bring their games onto Windows and DirectX 

So, in order to give you the full picture of the graphics story at //build, I want to share the great advancements our sister teams have accomplished. 

At //build 2015, the graphics team delivered the following presentations, which you can see on @ch9 by clicking below:

Introducing Win2D: DirectX-Powered Drawing in C#

What’s New in Direct2D and DirectWrite for Windows 10

ANGLE: Running OpenGL ES 2.0 Graphics Code on Windows

Advanced DirectX12 Graphics and Performance

 

 Thank you to @ch9 for the great support for this year’s //build talks! PS – sweet digs. 

 

Noteworthy:

If you saw only one single thing from //build, it was probably Square Enix’s stunning Art and Tech demo from Steve Guggenheimer’s Keynote, which included plenty of DirectX 12 love, including  our new Multiadapter feature. If you saw TWO things from //build, you probably saw that DirectX 12 got its very first game trailer, courtesy of our talented friends at Snail Games, xie xie!

 

Simon Tao dazzled the audience at his Win2D talk. He also even hosted a Win2D Quick Start Challenge. If you weren’t at the conference you needn’t feel left out, because the challenges featured at //build are online so you can participate from home. Take the Win2D Challenge for a spin, and then give the others a try. Tweet us @directx12 to tell us how you’ve done!

 

Anthony’s Direct2D and DirectWrite session showcased new functionality and performance improvements for Windows 10. He introduced new image effects and loading advancements as well as an exciting new cloud-powered font service in DirectWrite. These enhancements will benefit not just PCs, but mobile as well… check out Jeff Mlakar’s post for a nice audience-eye-view of the talk.

 

Tony presented ANGLE, an open source project MS is involved with, which allows Windows to seamlessly run OpenGL ES 2.0 content. By running your OpenGL ES code on Windows, devs can spend less time refactoring graphics code and more time making apps great(er)! ANGLE info and source is available here

 

Last, but certainly not least, DirectX 12 was represented in the Keynote. If that left you needing more information, the best way to really dig into DirectX 12’s new hotness discussed at //build is to watch Dev Lead Max McMullen’s standing-room-only technical session. Though you may feel the need to take notes, take a break because Max’s slides are here. Max illustrated how DirectX 12 puts power and control in the developers hands to reduce their CPU overhead, manage GPU resources more efficiently, and create gorgeous 3D graphics. Some developers have already done amazing things…. We’ve discussed the lovely Square Enix demo already, so let’s focus for a moment on a developer who may be new to you:  Snail Games, from Suzhou China. Snail Games is one of the country’s top game developers and we are proud to have worked with them to port their beautiful, newly announced game, King of Wushu, from DirectX 11 to DirectX 12. If you missed it in the DirectX 12 video, Snail was able to complete the port with only two developers over six weeks. DirectX 12’s hardware control and flexibility helped them reduce CPU usage and increase framerate by ~10%, and they believe they can improve that. Finally, I’d be remiss if I didn’t thank Ivan from Square Enix and the entire Fable Legends team for their participation in this talk and our //build effort. So, thank you all! 

 

Before I sign off, I want to bring your attention to the extra cool, heretofore undisclosed, Surface docking station my pal and teammate DanChar created with his hackathon team at the Microsoft Maker garage. The eagle-eyed among you may have spotted it in the Win2D session. Check out Dan’s MSDN blog post for information on this mystery hardware.

 

That’s the news fit to print, folks. Thanks for reading, thanks for attending events, saying hi, giving us feedback, and making your awesome apps. If you want to reach out to the DirecxtX 12 team please do so @directx12 or on the forums. We want to hear from you! If you want to talk to me, I’m @alisonst.

 

See you at the next event!

Viewing all 291 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>