NVIDIA Developer Blog NVIDIA Developer Blog https://developer.nvidia.com/ Thu, 17 Apr 2014 14:42:32 -0700 Mon, 21 Apr 2014 12:33:37 -0700 From Terrain to Godrays: Better Use of DX11 Tessellation http://developer.nvidia.com/node/854841 <p> Hardware Tessellation is one of the latest additions to the graphics programmer's tool kit. Originally only available on the PC it is also now available on next generation consoles as well as mobile devices like Tegra K1. Implementing tessellation in hardware is faster and more bandwidth efficient when compared to doing it in software. The DX11 pipeline adds several stages and is fully programmable which opens it up for a variety of interesting techniques. Developers creating AAA content are already using these techniques in shipping products including Metro Last Light, Batman Arkham Origins and Assassin's Creed IV: Black Flag. </p> <h3>Terrain</h3> <p> The most obvious use for Tessellation is to add detail to Terrain which has to look good at a wide range of distances. See this paper about <a href ="/sites/default/files/akamai/gamedev/files/sdk/11/TerrainTessellation_WhitePaper.pdf" >Tessellation for Terrain</a> for more details. </p> <h3>Displacement Mapping</h3> <p> Bump mapping simulates surface texture by storing surface normals in a texture. Resulting objects appear to have more surface detail without adding geometry. With tessellation it is possible to subdivide geometry and then actually displace the surface based on a values stored in a texture, giving true surface displacement before lighting for a more realistic effect. All data expansion takes place inside the GPU so the impact on memory and bandwidth is less than with a traditional technique. </p> <div class="row"> <div class="col-md-6"> <img src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/GDC14/tessmetrooff.jpg" width="100%" /> </div> <div class="col-md-6"> <img src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/GDC14/tessmetroon.jpg" width="100%" /> </div> </div> <h3>Adjustable Shading Rate</h3> <p> In a traditional graphics pipeline developers have two places to do calculations, the fragment and vertex shaders. For a large triangle applying shading in the vertex shader may not provide sufficient visual quality but applying it per fragment maybe too expensive. Tessellation and an almost completely programmable pipeline allows developers to tessellate geometry to perform expensive calculations at an appropriate frequency. This leads to some interesting possibilities for things like self-shadowing particles and godrays. </p> <div class="row"> <div class="col-md-6"> <img src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/GDC14/godrays_off.jpg" width="100%" /> </div> <div class="col-md-6"> <img src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/GDC14/godrays_on.jpg" width="100%" /> </div> </div> <h3>Do you want to know more?</h3> <p> Check out this presentation from NVIDIA engineers Andrei Tatarinov and Iain Cantlay called <a href = "/sites/default/files/akamai/gameworks/events/gdc14/GDC_14_From%20Terrain%20to%20Godrays%20-%20Better%20Use%20of%20DirectX11CantlayTatarinov.pdf">From Terrain to Godrays - Better Use of DirectX11</a> which shows how DX 11 tessellation can be used for terrain, displacement mapping as well as for volumetric effects like self-shadowing particle effects and Godrays. </p> <p>Check out other presentations from GDC 2014 <a href = "/gdc-2014">here</a>.</p> NVIDIA Developer Blog Watch Dogs: GeForce GTX PC Technology Trailer http://developer.nvidia.com/node/852964 <p>Ubisoft and NVIDIA have been working closely in order to create the most vivid and breath taking Chicago possible for the PC version of Watch Dogs. In this video, Paul Vlasie, the PC Lead Engineer on Watch_Dogs, describes how HBAO+ and TXAA technologies from NVIDIA were integrated into the PC version of the game. </p> <p>The Windy City as you've never seen it before.</p> <h3>Horizon Based Ambient Occlusion</h3> <p>Screen space ambient occlusion is an approximation for more expensive global illumination effects. It adds realism to rendered scenes by making objects appear more anchored in the environment.</p> <p>HBAO+ is a screen space ambient occlusion technique that is both fast and produces great looking results.</p> <p>To learn more about HBAO+ click <a href = "http://www.geforce.com/hardware/technology/hbao-plus/technology">here</a>.</p> <h3>Real-Time Temporal Anti-Aliasing</h3> <p>TXAA is a film-style anti-aliasing technique designed specifically to reduce temporal aliasing (crawling and flickering seen in motion when playing games). This technology is a mix of a temporal filter, hardware anti-aliasing, and custom CG film-style anti-aliasing resolves. To filter any given pixel on the screen, TXAA uses a contribution of samples, both inside and outside of the pixel, in conjunction with samples from prior frames, to offer the highest quality filtering possible.</P> <p>To learn more about TXAA click <a href = "http://www.geforce.com/hardware/technology/txaa/technology">here</a>.</p> <h3>Watch the Video</h3> <div data-responsive-video="true"> <iframe width="560" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/3eHCJ8pWdf0" frameborder="0" allowfullscreen></iframe> </div> NVIDIA Developer Blog GPU Technology Conference 2014 http://developer.nvidia.com/node/845982 <p>It’s the second day of the GPU Technology Conference and NVIDIA CEO Jen-Hsun Huang has given his keynote revealing news about next generation GPUs for mobile and desktop as well as unveiling the Titan Z and new SHIELD firmware updates. <br> Here are some of the highlights relevant to game developers: </p> <h3> KeyNote</h3> <p>Jen-Hsun covered a lot in the keynote. You can watch the streamed version <a href="http://www.gputechconf.com/page/live-stream-source2.html">here</a> or check out this <a href="http://blogs.nvidia.com/blog/2014/03/25/eight-highlights/">blog post</a>.</p> <h3> Geforce Titan Z</h3> <p><img class="pull-left padding-sm-right padding-sm-bottom" src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/titanz.jpg" width="30%" /> Introducing the GeForce GTX TITAN Z graphics card. With two Kepler GPUs and 12GB of dedicated frame buffer memory, TITAN Z is ready for next-gen 5k and multi-monitor gaming. With two GK110 chips, TITAN Z is powered by a total of 5,760 processing cores. Unlike traditional dual-GPU cards, Titan Z&rsquo;s twin GPUs are tuned to run at the same clock speed, and with dynamic power balancing. So neither GPU creates a performance bottleneck. And that performance is delivered in a card that is cool and quiet, rather than hot and loud. Low-profile components and ducted baseplate channels minimize turbulence and improve acoustic quality. So if you want to build the ultimate ultra-high definition gaming rig that can harness the power of quad GPUs working in tandem, <a href="http://www.geforce.com/whats-new/articles/announcing-the-geforce-gtx-titan-z"> TITAN Z </a> is the perfect graphics card.<br /> <br /> &nbsp;</p> <h3> Shield</h3> <p><img class="pull-left padding-sm-right padding-sm-bottom" src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/portalrect.jpg" width="30%" /> Valve's popular PC title is coming to SHIELD. Winner of over 70 industry awards and 95% MetaCritic score, Portal is a hybrid of FPS and puzzle style gaming that creates a a new genre of spatial brain teasers, offering hours of totally unique gameplay. "NVIDIA has created a very powerful and unique device with SHIELD," said Doug Lombardi at Valve. "Our companies have a strong history working together and we're looking forward to Portal's arrival on SHIELD."</p> <p>SHIELD is also getting an over the air upgrade to Android 4.4.2 (KitKat) with updates starting around April 2nd. In addition the update also enables Remote GameStream which allows users to stream PC titles to their SHIELD from anywhere on the planet. If that wasn't enough, the price has been dropped to $199 through April. Read the official announcement <a href="http://blogs.nvidia.com/blog/2014/03/25/shield-199/">here</a> and Forbes review <a href="http://www.forbes.com/sites/jasonevangelho/2014/03/25/how-nvidias-shield-just-became-the-best-handheld-gaming-console-available/ ">here</a>.</p> <h3> Tegra K1 Development Systems now available for preoder</h3> <p><img class="pull-left padding-sm-right padding-sm-bottom" src="https://developer.nvidia.com/sites/default/files/akamai/gameworks/images/jetsontk1.jpg" width="30%" /> Jetson TK1 is the first developer platform for 192-core Tegra K1. It features a full C/C++ toolkit based on CUDA as well as a host of other developer tools, and comes with 2GB of memory and input/output connectors for USB 3.0 and HDMI 1.4. Preorder in the US starting today for $192.</p> <p>More details <a href="https://developer.nvidia.com/jetson-tk1#source=pr">here</a>.</p> NVIDIA Developer Blog GDC'14 Show Update http://developer.nvidia.com/node/843770 <p class="lead">Thursday is Sponsored Session day from NVIDIA with 6 intense tech talks covering everything from mobile, though desktop to cloud rendering. </p> <p class="lead">Also don't forget to stop by the booth and check out G-SYNC, GameWorks, Shield, GRID Streaming and the amazing Tegra K1. We have many engineers in the booth and they love to talk to developers so be sure to stop by. </p> <p class ="lead">There is also a DirectX 12 announcement from <a href="http://blogs.msdn.com/b/directx/p/directx12.aspx">Microsoft</a> today at 10am.</p> <div class="row"> <div class="col-md-6"> <div class="panel panel-success"> <div class="panel-heading"> News from the Show </div> <div class="panel-body"> <h3> Epic is putting Unreal into more hands than ever </h3> <p> Epic Games announced today a new licensing program for Unreal Engine 4 and expanded support for Android. We think this move will revolutionize game development by making their state-of-the-art game engine accessible to a vast number of game developers. </p> <p> Together with Epic, we’ve incorporated support for NVIDIA GameWorks directly into Unreal Engine 4 making it easier for UE4 licensees to take advantage of our technology. NVIDIA Gameworks libraries are designed to help developers create a wide variety of special effects, such as more realistic clothing or destruction, and now these effects are available to every developer with a UE4 license. </p> <p> <a class="btn btn-success" href="http://blogs.nvidia.com/blog/2014/03/19/epic-games/">Read More <i class="fa fa-angle-right"></i></a> </p> <h3> Crytek Adds NVIDIA GameWorks to “Warface” </h3> <p> We’re announcing today at the Game Developers Conference, in San Francisco, that we’ve teamed up with Crytek to add support for several NVIDIA GameWorks technologies to its hit free-to-play online first-person shooter “Warface,” powered by CRYENGINE, their award-winning game development solution. </p> <p> “Warface” uses CRYENGINE’s advanced graphics and game technology to create a fast-paced, online first-person shooter, featuring intuitive controls and slick gameplay. The addition of GameWorks technologies like NVIDIA PhysX and VisualFX will take the gameplay in “Warface” to a higher plane of realism and engagement. </p> <p> <a class="btn btn-success" href="http://blogs.nvidia.com/blog/2014/03/19/crytek/">Read More <i class="fa fa-angle-right"></i></a> </p> <h3> Titanfall to Get More Eye Candy with NVIDIA </h3> <p> Mixing mayhem and monstrous machines in never-before-seen ways, Titanfall has already reinvigorated the first-person shooter genre. Now, we’ll be working with Titanfall’s game developer, Respawn Entertainment, to keep their multiplayer, first-person shooter at the cutting edge of image quality. </p> <p> One of the key GameWorks features that will be built into Titanfall: Temporal anti-aliasing (TXAA), a film–style anti–aliasing technique that reduces the crawling and flickering seen in motion when playing games. </p> <p> We will also be working together to add Horizon Based Ambient Occlusion+ (HBAO+) technologies to create more lifelike shadows in Titanfall. HBAO+ uses advanced algorithms to create shadows that react accurately on and around objects in Titanfall in a lifelike, non-uniform fashion. </p> <p> <a class="btn btn-success" href="http://blogs.nvidia.com/blog/2014/03/19/titanfall/">Read More <i class="fa fa-angle-right"></i></a> </p> <h3> What is NVIDIA GameWorks? </h3> <p> NVIDIA GameWorks represents our promise to gamers and developers to make the best game experience possible. GameWorks is a collection of technologies and tools that include visual and physical simulation software, development kits, debuggers, algorithms, engines and libraries that can already be found in top-selling games. </p> <p> <a class="btn btn-success" href="http://blogs.nvidia.com/blog/2014/03/17/nvidia-gameworks-2014/">Read More <i class="fa fa-angle-right"></i></a> </p> </div> </div> </div> <div class="col-md-6" > <div class="panel panel-success"> <div class="panel-heading"> Sponsored Sessions </div> <div class="panel-body"> <p> Thursday, March 20 | West Hall, Room #2004 </p> <h3> Cloud Architectures, Onboarding, and Game Streaming with NVIDIA GRID™ </h3> <p class = "small"> <ul> <li>10:00 am to 11:00 am</li> <li>Franck Diard (Chief SW Architect, NVIDIA)</li> <li>Samuel Gateau (Software Engineer, NVIDIA)</li> <li>Eric Young (Manager of Content and Technology, NVIDIA)</li> </ul> This session presents the technologies behind NVIDIA GRID and game streaming in the cloud. In the first part, we'll cover the key components of GRID - like using the GRID API's optimal capture, efficient compression, fast streaming, and low latency to deliver an ultimate cloud gaming experience. In the second part, we'll go over optimization guidelines and available libraries that can be used for game engines running in the cloud - gamepad controller support, improved sign-on for games, adding global illumination, and PhysX. In the third part, we'll demonstrate how to use Amazon G2 servers with the NVIDIA GRID APIs to stream games on the cloud. </p> <h3> DirectX Advancements in the Many-Core Era: Getting the Most out of the PC Platform </h3> <p> <ul> <li>11:30 am - 12:30 pm</li> <li>Yury Uralsky (Director of Developer Technology, NVIDIA)</li> <li>Dan Baker (Partner, Oxide Games)</li> </ul> See how upcoming improvements in Windows graphics APIs can be practically used by next-generation game engines to get dramatic gains in work submission efficiency and scalability across multiple CPU cores. </p> <h3> Approaching Zero Driver Overhead in OpenGL </h3> <p> <ul> <li>1:00 pm - 2:30 pm <li>Cass Everitt, (OpenGL Engineer, NVIDIA)</li> <li>John McDonald (Senior SW Engineer, NVIDIA)</li> <li>Graham Sellers (Senior Manager & Software Architect, AMD)</li> <li>Tim Foley (Advanced Rendering Technology team lead, Intel)</li> </ul> Driver overhead has been a frustrating reality for game developers since the beginning of the PC game industry. On desktop systems, driver overhead can decrease frame rate, while on mobile devices driver overhead is more insidious-robbing both battery life and frame rate. In this unprecedented sponsored session, Graham Sellers (AMD), Tim Foley (Intel), Cass Everitt (NVIDIA) and John McDonald (NVIDIA) will present high-level concepts available in today's OpenGL implementations that radically reduce driver overhead by up to 10x or more. The techniques presented will apply to all major vendors and are suitable for use across multiple platforms. Additionally, presenters will demo practical applications of the techniques in an extensible, open source comparison framework. </p> <h3> Bringing Unreal Engine 4 to OpenGL: Enabling High-End Visuals from PC to Mobile </h3> <p> <ul> <li>2:30 pm - 3:30 pm</li> <li>Evan Hart (Principal Engineer, NVIDIA)</li> <li>Mathias Schott (Senior SW Engineer, NVIDIA)</li> <li>Nick Penwarden (Lead Graphics Programmer, Epic Games)</li> </ul> This talk will focus on the path toward bringing a fully capable OpenGL renderer to Unreal Engine 4. It will cover the challenges of mapping to the API, cross-platform shader management, porting to Android, and the steps needed to get great performance. Additionally, we'll dive into the Tegra K1 processor and demonstrate how having a fully functional OpenGL path enables high-quality rendering on a handheld device powered by Tegra K1. Attendees will leave this session with an understanding of the work required to get a fully functional, high-performance OpenGL backend on a modern engine that can span mobile to high-end PCs. </p> <h3> Experience the magic of Respawn's Titanfall™ with the new NVIDIA Nsight 4.0 </h3> <p> <ul> <li>4:00 pm - 5:00 pm </li> <li>Jeffrey Kiel (Sr. Manager Developer Tools, NVIDIA)</li> </ul> In this talk, Jeffrey Kiel, Sr. Manager Developer Tools, unveils the redesigned NVIDIA® Nsight™ 4.0 Direct3D 11 user experience through the lens of Respawn Studios highly anticipated game title, Titanfall. You'll see how Nsight's new GUI quickly and efficiently dissects the advanced graphics content of this game. Advanced features for compute shader profiling provide unprecedented insight into the performance characteristics of DirectCompute workloads. Improvements to Nsight's unique hardware shader debugging capabilities broaden pixel history handling of shaders compiled without symbols, and much more. Come learn what the new Direct3D 11 user experience in Nsight 4.0 can do for you and get a glimpse behind the curtain at the magic of Titanfall! </p> <h3> The Witcher 3: Enabling Next-Gen Effects through NVIDIA GameWorks </h3> <p> <ul> <li>5:30 pm - 6:30 pm</li> <li>Balázs Török (Lead Engine Programmer, CD Projekt RED)</li> <li>Monier Maher (Director, VisualFX, NVIDIA) </li> <li>Dane Johnston (Content Manager, NVIDIA)</li> </ul> NVIDIA GameWorks allows the creation of a more immersive game environment than was possible in previous-generation games. In the first part of the presentation, we'll show how CD Projekt RED integrated NVIDIA HairWorks into The Witcher 3 to provide more realistic fur and hair simulation. We'll discuss how to avoid common problems when using dynamic fur and hair, and we'll also go over the artist workflow. In the second part of the presentation, we'll provide an overview of the different GameWorks components: simulating realistic waves with NVIDIA WaveWorks, cinematic smoke and fire through NVIDIA FlameWorks, realistic skin rendering with NVIDIA FaceWorks, improved shadows with NVIDIA ShadowWorks, and more. </p> </div> </div> </div> NVIDIA Developer Blog All-New Tegra Android Development Pack 2.0r8 Now Available under NVIDIA GameWorks! http://developer.nvidia.com/node/842807 <p>The latest public release of <strong>Tegra Android Development Pack (2.0r8)</strong> is now available under the new <strong>NVIDIA GameWorks&trade;</strong> platform of NVIDIA Developer Tools. <strong>Tegra Android Development Pack (TADP)</strong> is a suite of SDKs, developer tools, drivers and OS images bundled in a single package to help simplify setting up and managing an Android development environment.</p> <p>This version includes Android SDK (22.3) and NDK (r9c) support, new versions of NVIDIA Android Developer Tools (<strong>Tegra System Profiler</strong>, <strong>Nsight Tegra, Visual Studio Edition</strong>, <strong>PerfHUD ES</strong>), drivers and Tegra Developer Kit OS images; bringing cutting edge features and support for latest Android devices including the <strong>NVIDIA&reg; SHIELD&trade;</strong> portable gaming device.</p> <h4> Release Highlights</h4> <ul> <li> Latest Android SDK (22.3), NDK (r9c) and Build/Platform Tools from Google.</li> <li> First production release of <a href="https://developer.nvidia.com/tegra-profiler">Tegra System Profiler 2.0</a>, featuring a re-engineered cross-platform user interface for Windows and Linux with full support for NVIDIA&reg; SHIELD&trade;and NVIDIA&reg; Tegra NOTE 7</li> <li> <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight&trade; Tegra&reg;, Visual Studio Edition 1.5</a> now supports Visual Studio 2013, updated support for the latest NDK version (r9c), loading performance speedups and improved MSBuild/makefile compatibility.</li> <li> Updated to <a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES 2.2</a>, adding up-to 10x faster frame debugger captures, support retrospect 2x2 texture and zero viewpoints and various feature updates and bug fixes</li> <li> Improved web installer for better support for multithreading and connections behind a proxy server.</li> <li> Revamped documentation under the <a href="http://docs.nvidia.com/gameworks/index.html">NVIDIA GameWorks Documentation</a></li> <li> Numerous performance and stability enhancements.</li> </ul> <p>A complete list of features can be found at the <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a> main page.</p> <p>Tegra resources are now consolidated under the new <a href="http://developer.nvidia.com/gameworksdownload">NVIDIA GameWorks Download Center</a>.</p> <h4> <a href="http://developer.nvidia.com/gameworksdownload#?dn=tegra-android-development-pack-2-0r8">Download TADP 2.0r8 now!</a></h4> <p><strong>To download TADP</strong>, you must be a member of the <a href="https://developer.nvidia.com/gameworks-registered-developer-program">NVIDIA GameWorks Registered Developer Program</a>. To join, simply <a href="https://developer.nvidia.com/register-gameworks-registered-developer-program">create a new account</a> (it's free and easy) and then view the available TADP downloads <a href="http://developer.nvidia.com/gameworksdownload#?search=Tegra%20Android%20Development%20Pack">here</a>.</p> <p><strong>Please note: NVIDIA&reg;</strong> <strong>SHIELD requires the latest software updates to enable debugging and PerfHUD ES 2.2 support. </strong></p> <br /> <h4> Sign up for free NVIDIA GameWorks Hand-On Sessions @ GDC 2014</h4> <p>The Developer Tools team will be in San Francisco at Game Developer Conference 2014 hosting dedicated hands-on sessions with the latest Nsight Visual Studio Edition and Tegra developments tools on the latest <strong>NVIDIA Tegra K1</strong>.</p> <p>For each session, the first 30 developers to check-in in person and have registered online for the Tegra K1 Developers Tools labs will receive a NVIDIA&reg; SHIELD&trade; Developer Kit. So hurry and <u><a href="http://developer.nvidia.com/content/nvidia-gameworks-developer-tools-labs-gdc14">reserved a spot online</a></u> before someone else does!</p> <p><strong>Secure your spot now at</strong><u><a href="http://developer.nvidia.com/content/nvidia-gameworks-developer-tools-labs-gdc14">NVIDIA Developer</a></u>.</p> <p>The NVIDIA Developer Tools Team</p> NVIDIA Developer Blog ANDROID DEVELOPER TOOLS LAB AT GDC’14 (Free NVIDIA Shield DevKit for attendees) http://developer.nvidia.com/node/842454 <p>Tegra K1 from NVIDIA is the next generation mobile chip with power comparable to an Xbox360 and full support for OpenGL 4.4. Tegra Graphics Debugger gives you the control to harness that power. Come and learn about the future of mobile graphics at our Code Lab on Wednesday 19th. The first 30 developers to register for each session and show up at the labs will be awarded an NVIDIA Shield DevKit. Register <a href="http://www.eventbrite.com/e/tegra-k1-game-console-class-development-tools-for-android-tickets-10436952205">here</a> to reserve yours!</p> <p>&nbsp;</p> <p>In this hands-on lab, you'll learn tools and techniques for porting and developing high-quality game titles on Android, such as Croteam's Serious Sam 3. You'll learn details of developing for Android using Nsight Tegra, NVIDIA's Visual Studio based Android development environment. Don&rsquo;t use Visual Studio? Don't despair, you'll also learn how to optimize mobile CPU workloads using Tegra System Profiler and debug and optimize graphics applications using the Tegra Graphics Debugger for Tegra K1. Secure your development station now to get a preview of programming with Tegra K1 before anyone else!></p> <p>&nbsp;</p> <p>Tegra Graphics Debugger's powerful workflows enable game and graphics developers to get the most out of Tegra K1. Available on Windows, OSX and Linux, this tool for modern graphics development fits easily into your Android development environment. Redefine next-gen with Tegra K1 and NVIDIA GameWorks Developer Tools.</p> <p align="center"><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/iJLiW6JjYlM?list=UUASOkSclENSWAyIovnY8Wdw" width="560"></iframe></p> NVIDIA Developer Blog GAME STREAMING IS THE FUTURE OF THE GAME INDUSTRY http://developer.nvidia.com/node/840008 <p>They laughed at Pandora and said that music streaming would never take off. They scoffed at Netflix and said that movie streaming would never last. Does anyone really want to bet against game streaming?</p> <p>At NVIDIA, we believe that the future of video games is streaming because of the overwhelming consumer preference for the convenience, value, and instant access capability provided by cloud streaming to all types of digital media on multiple platforms. That&rsquo;s why we invented NVIDIA GRID for cloud gaming.</p> <p>Game streaming services based on GRID are already up and running at major broadband ISPs in France, Korea, and Japan&mdash;with pilots running in many other countries. We firmly believe that 2014 will be a defining year for game streaming&mdash;and now is the time to get in on the ground floor.</p> <p>Did you also know that GRID is now hosted by Amazon Web Services (AWS) in five data centers around the world and can be rented for as little as $0.75/hour&mdash;or about the price of a Snickers bar? Check it out <a href="http://aws.typepad.com/aws/2013/11/build-3d-streaming-applications-with-ec2s-new-g2-instance-type.html">here</a> .</p> <h3> NVIDIA GRID - Game Streaming at GDC14</h3> <p>At GDC 2014 this year, NVIDIA will showcase the latest GRID technology streaming games to multiple client devices in our booth. And our leading GRID architect and developer relations experts will give a presenation: &nbsp;<a href="http://schedule.gdconf.com/session-id/828314">Cloud Architectures, Onboarding, and Game Streaming with NVIDIA GRID</a>&nbsp;on Thursday, March 20 at 10:00am in West Hall, Room #2004.</p> <p>During the GRID presentation on Thursday, not only will you learn about the latest cloud gaming technology and the innovations that have occurred over the last three years, but also about the exciting potential the next few years represent as Moore&rsquo;s law is applied to GPUs in the cloud and consumer bandwidth continues to increase.</p> <p>The second half of the GRID presentation will be like a workshop where we show you how to use the GRID SDK to load a game onto an AWS G2 instance and start streaming. Participants will be eligible to get special support from NVIDIA&rsquo;s Developer Technology team to prototype streaming their game on AWS and have the opportunity to list their game on the GRID California beta and field test streaming to 10,000 users. Sign up as a registered developer, and download the GRID SDK <a href="https://developer.nvidia.com/grid-app-game-streaming">here</a>.</p> <p>If you are in the games industry, game streaming is an inflection point in the consumption of video games that you do not want to miss. Don&rsquo;t be Blockbuster. Come to the NVIDIA GRID cloud gaming session and learn how to be Netflix for games. For more details about the sponsored session click <a href="http://schedule.gdconf.com/session-id/828314">here</a>.</p> NVIDIA Developer Blog NVIDIA GameWorks™: Announcing Tegra Graphics Debugger 1.0 http://developer.nvidia.com/node/835276 <p>Debug and profile OpenGL ES 2.0, OpenGL ES 3.0 and even OpenGL 4.x on Windows, OSX and Linux. Sharing a common UI with NVIDIA Nsight, Visual Studio Edition, you can leverage your experience across mobile, desktop and the cloud. &nbsp;</p> <p>While not yet publicly available (we anticipate sometime in Q2), at GDC&rsquo;14, you can learn to use this powerful graphics debugging and profiling tool directly from the graphics wizards that crafted it.</p> <p style="margin-left:.5in;"><strong><em>Unleash the power of Tegra K1 with game-console-class development tools for Android</em></strong></p> <p style="margin-left:.5in;"><em>Wednesday, March 19<sup>th</sup> | The first session starts at 9:00 am and the last session starts at 6:00 pm.</em></p> <p style="margin-left:.5in;"><em>In this hands-on lab, you'll learn tools and techniques for porting and developing high-quality game titles on Android, such as Croteam's Serious Sam 3. You'll learn details of developing for Android using Nsight Tegra, NVIDIA's Visual Studio based Android development environment. Don&rsquo;t use Visual Studio? Don't despair, you'll also learn how to optimize mobile CPU workloads using Tegra System Profiler and debug and optimize graphics applications using the Tegra Graphics Debugger for Tegra K1. Secure your development station now to get a preview of programming with Tegra K1 before anyone else!</em></p> <p style="margin-left:.5in;"><em>Seating is limited, sign up <a href="http://www.eventbrite.com/e/nvidia-gameworks-developer-tools-labs-tickets-10436952205">here</a>&nbsp;to reserve your spot!</em></p> <p>Don&rsquo;t have time for a full tutorial? Come by the NVIDIA booth for a personal tour. For the latest on Tegra development tools and many others, join the NVIDIA Tegra Registered Developer Program <a href="https://developer.nvidia.com/programs/tegra/register">here</a>.&nbsp;</p> <p>Tegra Graphics Debugger allows you to quickly connect to Tegra K1 Android devkit or upcoming Tegra K1 consumer device, and attach to your graphics mobile application to monitor key software and hardware performance metrics, such as "frames per second" to gauge rendering performance and "GPU utilization" to ensure you're taking full advantage of the hardware. Simple, yet effective, directed tests provide a painless method for identifying application bottlenecks.</p> <p align="center"><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/tegragraphicsdebugger2.png" style="width: 600px; " /><br /> Tegra Graphics Debugger</p> <p>The frame debugger grabs a rendered frame from your mobile application for further analysis and debugging. Powerful tools, such as the frame scrubber and the event list allow you to navigate the massive amounts of data generated by your application. Other views, such as the resource viewer, allow you to explore your application, examining the various assets, while the API inspector provides a view into the internals of your application.</p> <p>The frame profiler uses hardware performance monitors to measure unit utilization and bottlenecks, reporting the performance limiters for the rendered frame. The high level overview shows where compute cycles are spent and how much memory traffic is happening where. This gives you a basic idea of how efficient your application is. Additional tools provide more granular details, such as the state bucket, which groups similar rendering commands allowing for optimizations that provide the maximum bang for your buck.</p> <p>With Tegra Graphics Debugger, you can edit and recompile graphics shader source code on the fly, allowing you to experiment with modifications to your shader source for both performance and debugging. These modifications can easily be toggled or updated to compare rendering or performance results in conjunction with directed tests.</p> <p>Tegra Graphics Debugger's powerful workflows enable game and graphics developers to get the most out of Tegra K1. Available on Windows, OSX and Linux, this tool for modern graphics development fits easily into your Android development environment. Redefine next-gen with Tegra K1 and NVIDIA GameWorks Developer Tools.</p> <p align="center"><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/iJLiW6JjYlM?list=UUASOkSclENSWAyIovnY8Wdw" width="560"></iframe></p> NVIDIA Developer Blog Introducing NVIDIA GameWorks™ http://developer.nvidia.com/node/830746 <p>NVIDIA GameWorks&trade; pushes the limits of gaming by providing a more interactive and cinematic game experience and thus enabling next gen gaming for current games. We provide technologies e.g. PhysX and VisualFX, which are easy to integrate into games as well as tutorials and tools to quickly generate game content. In addition we also provide tools to debug, profile and optimize your code.</p> <h3> Upcoming Technology</h3> <p><strong>NVIDIA FlameWorks</strong> enables cinematic smoke, fire and explosions. It combines a state-of-the-art grid based fluid simulator with an efficient volume rendering engine. The system is highly customizable, and supports user-defined emitters, force fields, and collision objects</p> <div align="center"> <iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/lyVLfySxOO8" width="560"></iframe></div> <div align="center"> &nbsp;</div> <div> <p><strong>PhysX FleX</strong> is a particle based simulation technique for real-time visual effects. It will be introduced as a new feature in the upcoming PhysX SDK v3.4. The FleX pipeline encapsulates a highly parallel constraint solver that exploits the GPU&rsquo;s compute capabilities effectively.&nbsp;</p> </div> <div align="center"> <iframe width="560" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/vDFHqzYhffs" frameborder="0" allowfullscreen></iframe></div> <br /> <h3> NVIDIA GameWorks technology in released games</h3> <p><strong>Call of Duty: Ghosts&nbsp;</strong>is using NVIDIA HairWorks to provide a more realistic Riley and wolves. Each hair asset has about 400-500K hair strands. Most of these hair assets are created on the fly inside the GPU from roughly 10K guide hairs. Additional technologies used in the game are NVIDIA Turbulence for the smoke bombs, as well as TXAA.</p> <div align="center"> <iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/MskSXO3Mx4c" width="560"></iframe> <div align="center"> &nbsp;</div> <p class="rteleft"><strong>Batman Arkham Origins </strong>is loaded with NVIDIA GameWorks technologies; NVIDIA Turbulence &nbsp;for the snow, steam/fog and shock gloves as well as PhysX Cloth for ambient cloth. In addition NVIDIA ShadowWorks for HBAO+ and advanced soft shadows and NVIDIA CameraWorks for TXAA and DoF.&nbsp;</p> </div> <div align="center"> <iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/E0GnVSyYDjQ" width="560"></iframe></div> <div> <p><br /> &nbsp;</p> <h3> NVIDIA GameWorks Developer Tools</h3> <p>NVIDIA GameWorks provides the development tools developers need. Products such as NVIDIA Nsight, Visual Studio Edition are available for both GeForce and Tegra product lines, giving developers the tools they need to quickly and easily optimize game titles for both desktop and mobile.&nbsp; NVIDIA GameWorks provides improved integration, documentation and learning materials.</p> <h3> NVIDIA GameWorks Availability</h3> <p>Portions of NVIDIA GameWorks technologies are already available, see table below. We are working on several updated versions and new content, which will be available for GDC, so stay tuned.&nbsp;</p> </div> <table> <thead> <tr> <th> Category</th> <th> Availability</th> <th> Links</th> </tr> </thead> <tbody border="1"> <tr> <td align="left" valign="top"> <strong>PhysX</strong></td> <td> <i>Most popular physics engine: 500+ games</i> <ul> <li> PhysX SDK</li> <li> PhysX Clothing and Tools</li> <li> PhysX Destruction and Tools</li> </ul> </td> <td align="left" valign="top"> <a href="http://developer.nvidia.com/physx"> PhysX Info</a><br /> <a href="https://developer.nvidia.com/apex-physx-tutorials">Tutorials</a></td> </tr> <tr> <td align="left" valign="top"> <strong>VisualFX</strong></td> <td> <i>Solutions for complex, realistic effects</i> <ul> <li> NVIDIA Turbulence</li> <li> NVIDIA&nbsp;WaveWorks</li> <li> NVIDIA&nbsp;CameraWorks (TXAA, DoF)</li> <li> NVIDIA&nbsp;ShadowWorks (HBAO+, Advanced Shadows)</li> <li> NVIDIA&nbsp;FlameWorks (closed beta end of March)</li> <li> NVIDIA&nbsp;HairWorks (closed beta end of March)</li> <li> NVIDIA&nbsp;FaceWorks (closed beta end of March)</li> <li> NVIDIA&nbsp;GI Works (closed beta end of March)</li> </ul> </td> <td align="left" valign="top"> <a href="https://developer.nvidia.com/apex-turbulence"> Turbulence</a><br /> <a href="mailto:gameworks@nvidia.com?subject=VisualFX%20Enquiry">VisualFX</a></td> </tr> <tr> <td align="left" valign="top"> <strong>OptiX</strong></td> <td> <i>Ray Tracing engine and framework</i></td> <td align="left" valign="top"> <a href="https://developer.nvidia.com/optix">OptiX</a></td> </tr> <tr> <td align="left" valign="top"> <strong>Graphics Samples</strong></td> <td> <i>Samples, documentation, tutorials (Coming Soon)</i></td> <td align="left" valign="top"> &nbsp;</td> </tr> <tr> <td align="left" valign="top"> <strong>Developer Tools</strong></td> <td> <i>Build, debug, profile, optimize</i> <ul> <li> Tegra Android Developer Pack</li> <li> Nsight, Visual Studio Edition</li> </ul> </td> <td align="left" valign="top"> <a href="https://developer.nvidia.com/tegra-android-development-pack">TADP</a><br /> <a href="https://developer.nvidia.com/nvidia-nsight-visual-studio-edition">NSIGHT Visual Studio Edition</a></td> </tr> </tbody> </table> <p>&nbsp;</p> <h3> To learn more:</h3> <p>More information on NVIDIA GameWorks will be announced in the coming weeks.&nbsp;</p> <p>Please sign up for the following Registered Developer Program to gain access to existing products:&nbsp;</p> <ul> <li> <a href="https://developer.nvidia.com/programs/apex/register">APEX/PhysX Registered Developer Program</a></li> <li> <a href="https://developer.nvidia.com/programs/nsight/register">Nsight Visual Studio Edition Registered Developer Program</a></li> <li> <a href="https://developer.nvidia.com/programs/tegra/register">Tegra Registered Developer Program</a></li> </ul> <p><br /> Be sure to follow us on Twitter and subscribe to our YouTube channel:<br /> <br /> &nbsp;&nbsp;&nbsp;Twitter: <a href="https://twitter.com/nvidiadeveloper">https://twitter.com/nvidiadeveloper</a><br /> &nbsp;&nbsp;&nbsp;YouTube: <a href="http://www.youtube.com/user/NvidiaGameWorks">http://www.youtube.com/user/nvidiagameworks</a><br /> &nbsp;</p> NVIDIA Developer Blog GDC 2014 http://developer.nvidia.com/node/831651 <p>NVIDIA&rsquo;s presence at GDC this year will be larger than ever.&nbsp; Whether you want to see the most powerful mobile processors, learn about rendering in the cloud or see the latest developments in PC gaming, we have something for you. Check out our official website and show guide <a href="http://www.nvidia.com/object/gdc2014.html">here</a> or keep reading for a few of our show highlights.</p> <h2> What are you interested in?</h2> <ul> <li> <a href="#gameworkstag">NVIDIA GameWorks&trade;</a></li> <li> <a href="#profiletag">NVIDIA GameWorks&trade; Developer Tools Labs at GDC'14</a></li> <li> <a href="#cloudtag">Cloud</a></li> <li> <a href="#gsynctag">G-Sync</a></li> <li> <a href="#opengltag">OpenGL</a></li> <li> <a href="#directxtag">DirectX</a></li> <li> <a href="#mobiletag">Mobile</a></li> <li> <a href="#contesttag">Android Coding Contest</a></li> </ul> <hr /> <p><a name="gameworkstag"></a></p> <h3> NVIDIA GameWorks&trade; for Game Development</h3> <p>NVIDIA GameWorks&trade; pushes the limits of gaming, providing a more interactive and cinematic game experience, redefining next-gen gaming through tools and technologies that supercharge game visuals. This game development platform transfers information and skills from NVIDIA to the real-time game and graphics community enabling developers to advance the cutting edge of gaming on desktop, mobile and the cloud.</p> <p>To learn more click <a href="https://developer.nvidia.com/content/introducing-nvidia-gameworks">here</a>. We will be showing a wide range of tools and some new technologies like <a href="http://youtu.be/lyVLfySxOO8">FlameWorks</a> at the booth so stop by and check it out. It is a great opportunity to engage with our engineers.</p> <p>To learn more about how NVIDIA GameWorks&trade; can add value to your game, attend this sponsored session:</p> <p><strong>Sponsored Session: The Witcher 3: Enabling Next-Gen Effects through NVIDIA GameWorks&trade;</strong></p> <ul> <li> Speakers : Dane Johnston, Monier Maher, Balazs Torok(Lead Engine Programmer, CD Projekt RED)</li> <li> March 20<sup>th</sup> in the West Hall, Room #2004, 5:30 pm - 6:30 pm</li> </ul> <hr /> <p><a name="profiletag"></a></p> <h3> NVIDIA GameWorks&trade; Developer Tools Labs at GDC'14</h3> <p>Graphics profiling and debugging tools are the most important items in a game developer&rsquo;s tool chest.&nbsp; NVIDIA Nsight makes you more productive and is fully integrated into Visual Studio.</p> <p>We are hosting 2 days of coding labs during GDC, using assets from Serious Sam 3, targeted to improve your graphics debugging and profiling skills.&nbsp; We have sessions for both GeForce and Tegra.&nbsp; Come by and get schooled!&nbsp; Knowledge is power!</p> <p>Click <a href="https://developer.nvidia.com/content/nvidia-gameworks-developer-tools-labs-gdc14">here</a> to find out more and register.</p> <hr /> <p><a name="cloudtag"> </a></p> <h3> Cloud</h3> <p>Are you interested in Cloud rendering?&nbsp; You should be.&nbsp; <a href="http://www.theguardian.com/technology/2014/jan/23/south-korea-intenet-download-speeds-5g">5G download speeds</a> in Korea were recently reported at incredible 800Mb/sec.&nbsp; Latency continues to drop and with technologies like <a href="https://developer.nvidia.com/grid-app-game-streaming">NVIDIA GRID</a> becoming available through <a href="https://aws.amazon.com/marketplace/pp/B00FYCDDTE">Amazon Web Services</a> the reasons to investigate cloud rendering continue to increase.</p> <p>We have a sponsored session you must attend, plus, we&rsquo;re showing streaming to tablets and other Android devices in the booth.</p> <p><strong>Sponsored Session: Cloud Architectures, Onboarding, and Game Streaming with NVIDIA GRID</strong></p> <ul> <li> Speakers: Franck Diard, Samuel Gateau , Eric Young</li> <li> March 20<sup>th</sup> in the West Hall, Room #2004, 10am to 11am &nbsp; &nbsp;</li> </ul> <hr /> <p><a name="gsynctag"></a></p> <h3> G-Sync</h3> <p>This technology simply has to be seen to be <a href="http://www.geforce.com/hardware/technology/g-sync">believed</a>.&nbsp; Come to our booth and see how NVIDIA has eliminated input lag and tearing for the PC gamer.&nbsp;</p> <hr /> <p><a name="opengltag"></a></p> <h3> OpenGL</h3> <p>OpenGL is more relevant than ever.&nbsp; Still popular for windows game development, it is also the only game in town for high performance mobile development.&nbsp; With Valve&rsquo;s announcement of Steam Machines and the attraction of running a free reliable operating system like Linux in the cloud just adds fuel to the fire.</p> <p><strong>Sponsored Session: Approaching Zero Driver Overhead in OpenGL</strong></p> <ul> <li> Cass Everitt, John McDonald , Graham Sellers (Senior Manager and Software Architect , AMD),Tim Foley (Advanced Rendering Technology team lead, Intel)</li> <li> March 20th in the West Hall, Room #2004, 1:00PM - 2:30PM</li> </ul> <p>&nbsp;</p> <p><strong>Sponsored Session: Bringing Unreal Engine 4 to OpenGL: Enabling High-End Visuals from PC to Mobile</strong></p> <ul> <li> Evan Hart, Mathias Schott, Nick Penwarden (Lead Graphics Programmer, Epic Games)</li> <li> March 20th in the West Hall, Room #2004, 2:30PM-3:30 PM</li> </ul> <hr /> <p><a name="directxtag"></a></p> <h3> DirectX</h3> <p>Using DirectX? Do you feel the need? The need for speed? &nbsp;We&rsquo;ve got you covered with plenty of presentations about unlocking performance.&nbsp; You shouldn&rsquo;t miss these presentations!</p> <p><a href="http://schedule.gdconf.com/session-id/825671"><strong>Avoiding Catastrophic Performance Loss: Detecting CPU-GPU Sync Points</strong></a></p> <ul> <li> NVIDIA Speakers: John McDonald</li> <li> Location: Room 303, West Hall</li> <li> When: Session on Wednesday, March 19, 2:00 pm &ndash; 2:25 pm</li> </ul> <p><a href="http://schedule.gdconf.com/session-id/828160"><strong>Advanced Visual Effects with DirectX 11: Real Virtual Texturing - Taking Advantage of DirectX 11.2 Tiled Resources</strong></a></p> <ul> <li> NVIDIA Speakers: Cem Cebenoyan</li> <li> Location: Room 2006, West Hall</li> <li> When: Monday, March 17, 11:15am-11:45am</li> </ul> <p><a href="http://schedule.gdconf.com/session-id/828165"><strong>Advanced Visual Effects with DirectX 11: From Terrain to Godrays - Better Use of DirectX11</strong></a></p> <ul> <li> NVIDIA Speakers: Andrei Tatarinov and Iain Cantlay</li> <li> Location: 2006, West Hall</li> <li> When: Monday, March 17, 4:30pm-5:15pm</li> </ul> <p><a href="http://schedule.gdconf.com/session-id/828164"><strong>Advanced Visual Effects with DirectX 11: Efficient Work Submission in Direct3D</strong></a></p> <ul> <li> NVIDIA Speakers: Evan Hart</li> <li> Location: Room 2006, West Hall</li> <li> When: Monday, March 17, 3:30pm-4:00pm</li> </ul> <hr /> <p><a name="mobiletag"> </a></p> <h3> Mobile</h3> <p>Want to see how Epics Unreal Engine 4 was brought to mobile? You've got to see this! &nbsp;Also stop by the booth and check out NVIDIA SHIELD and other class leading Tegra 4 powered devices.</p> <p><strong>Bringing Unreal Engine 4 to OpenGL: Enabling High-End Visuals from PC to Mobile</strong></p> <ul> <li> Evan Hart, Mathias Schott, Nick Penwarden (Lead Graphics Programmer, Epic Games)</li> <li> March 20<sup>th</sup> in the West Hall, Room #2004&nbsp;2:30PM-3:30 PM</li> </ul> <hr /> <p><a name="contesttag"></a></p> <h3> Android Coding Contest</h3> <p>At NVIDIA we want you to be in control and that means gamepads, not touch screens.&nbsp; Bring your gamepad enabled game to the <a href="http://www.nvidia.com/object/gdc2014-contest.html">Get in Control</a> with NVIDIA SHIELD event and we&rsquo;ll give you 2 tickets to the NVIDIA party and a SHIELD development kit.&nbsp; The SHIELD is equipped with a class leading Tegra4 SOC, a console game controller and stuff like HDMI out making it the perfect development system for next generation Android entertainment.</p> NVIDIA Developer Blog NVIDIA GameWorks™ Developer Tools Labs at GDC'14 http://developer.nvidia.com/node/826902 <p>Get your hands dirty and experience the latest and greatest tools for modern game development. Join us at GDC'14 for a set of hands-on labs, using content and technology from Croteam's Serious Sam 3, to learn the skills required to debug and optimize your game title for the latest gaming hardware for Desktop and Android. Multiple sessions are scheduled each day and each lab runs approximately 80 minutes.</p> <p>&nbsp;</p> <hr /> <div> <h3> Where:&nbsp;</h3> </div> <ul> <li> <strong>InterContinental SF Hotel</strong></li> <li> <strong>888 Howard Street at 5th Street</strong></li> <li> <strong>San Francisco</strong></li> </ul> <div> <hr /> </div> <h3> Direct3D 11 development redefined with NVIDIA Nsight Visual Studio Edition 4.0</h3> <div> <strong>Tuesday, March 18th | The first session starts at 9:00 am and the last session starts at 5:00 pm.</strong></div> <div> &nbsp;</div> <div> In this hands-on lab, you'll use the adventures of Sam "Serious" Stone to learn to use the latest features of Nsight, focused on Direct3D 11 development. We'll show you the in's and out's of the new user experience for Direct3D, using the Croteam's Serious Engine. You'll learn about Nsight's tighter integration with Microsoft Visual Studio, experience new shader debugging and profiling features and be the first to see the new compute shader profiling capabilities.</div> <div> Seating is limited, <a href="http://www.eventbrite.com/e/direct3d-11-development-with-nvidia-nsight-visual-studio-edition-40-tickets-10434791743">sign up here</a> to reserve your spot!</div> <div> <hr /> </div> <h3> Unleash the power of Tegra K1 with game-console-class development tools for Android</h3> <div> <strong>Wednesday, March 19th | The first session starts at 9:00 am and the last session starts at 6:00 pm.</strong></div> <div> &nbsp;</div> <div> In this hands-on lab, you'll learn tools and techniques for porting and developing high-quality game titles on Android, such as Croteam's Serious Sam 3. You'll learn details of developing for Android using Nsight Tegra, NVIDIA's Visual Studio based Android development environment. Don&rsquo;t use Visual Studio? Don't despair, you'll also learn how to optimize mobile CPU workloads using Tegra System Profiler and debug and optimize graphics applications using the Tegra Graphics Debugger for Tegra K1. Secure your development station now to get a preview of programming with Tegra K1 before anyone else!</div> <div> Seating is limited, <a href="http://www.eventbrite.com/e/tegra-k1-game-console-class-development-tools-for-android-tickets-10436952205">sign up here</a> to reserve your spot!</div> <div> &nbsp;</div> <div> &nbsp;</div> NVIDIA Developer Blog How Modern OpenGL Can Radically Reduce Driver Overhead http://developer.nvidia.com/node/819378 <p>In this presentation, Cass Everitt and John McDonald talk about some newer extensions to OpenGL and how they can reduce (or even eliminate) driver overhead. We'll discuss where performance goes, fundamentals of the graphics driver stack and specific GL extensions--such as Bindless rendering and MultiDraw commands.</p> <p>&nbsp;</p> <h2> This presentation covers:</h2> <ul> <li> Dynamic Buffer Generation</li> <li> Efficient Texture Management</li> <li> Techniques for Increasing Draw Call Counts</li> </ul> <br> <p> Watch the video on youtube:</p> <iframe width="560" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/-bCeNzgiJ8I?list=PLckFgM6dUP2hc4iy-IdKFtqR9TeZWMPjm" frameborder="0" allowfullscreen></iframe> <br><br> <p> v Click the image to see the slides:</p> <p class="rtecenter"><a href="http://www.slideshare.net/CassEveritt/beyond-porting"><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/beyondporting.jpg" style="width: 638px; height: 359px;" /></a></p> <p><a href="http://www.slideshare.net/CassEveritt/beyond-porting"> </a></p> <p>&nbsp;</p> <h2> KeyWords:</h2> <div> ARB_buffer_storage, ARB_sparse_texture, ARB_bindless_texture, ARB_shader_storage_buffer_object, ARB_multi_draw_indirect</div> NVIDIA Developer Blog Tegra K1 Whitepaper http://developer.nvidia.com/node/816804 <p>By now you&rsquo;ve probably heard about the Tegra K1.&nbsp; A family of power efficient SOCs that leverage the same Kepler GPU technology used in GeForce and Tesla graphics cards for mobile. The white paper goes over the SOC in more detail.</p> <h2> Tegra K1 features</h2> <ul> <li> Full OpenGL 4.4 feature set (Including Tessellation and Compute shaders)</li> <li> Performance comparable to a 7<sup>th</sup> generation console</li> <li> Low power consumption</li> </ul> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/TegraK1-statistics.png" style="width: 613px; height: 325px" /></p> <h2> CPU Choices</h2> <p>Tegra K1 can be selected either with 4 32-bit ARM Cortex A15 cores or a custom designed dual 64-bit Super Core CPU.&nbsp; The chip also features a powerful ISP Core delivering 1.2 Giga pixels of raw image processing power and a display engine capable of simultaneously driving internal and external 4K displays.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sameasgeforce2.jpg" style="width: 613px; height: 325px" /></p> <h2> Software Development</h2> <p>Tegra K1 developers have access to some of the best profiling and debugging tools in the industry as well as benefitting from NVIDIA&rsquo;s 200 strong world class team of graphics developers.</p> <h2> Epic Content</h2> <p>At CES 2014 NVIDIA showed EPICs Unreal Engine 4 running on Tegra K1, enabling game developers to take UE4 content and quickly move it to mobile.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/unreal2.jpg" style="width: 613px; height: 325px" /></p> <h2> Learn More</h2> <p>To learn more about the Tegra K1 download this <a href="http://www.nvidia.com/content/PDF/tegra_white_papers/Tegra_K1_whitepaper_v1.0.pdf">whitepaper</a>.</p> NVIDIA Developer Blog NVIDIA Unveils Tegra K1, a 192-Core Super Chip That Brings DNA of World's Fastest GPU to Mobile http://developer.nvidia.com/node/813537 <div> Last night, ahead of this year&rsquo;s International Consumer Electronics Show, NVIDIA CEO Jen-Hsun Huang introduced Tegra K1.&nbsp;</div> <div> &nbsp;</div> <div> The fifth-generation of NVIDIA&rsquo;s Tegra line of mobile processors, it&rsquo;s the first mobile SoC to support next-gen graphics capabilities. It does so by unleashing 192 Kepler graphics cores. These are the exact same cores used in GeForce graphics cards and Tesla supercomputer accelerators.</div> <div> &nbsp;</div> <div> &nbsp;</div> <div> &nbsp;</div> <div> One highlight from the event: Jen-Hsun showed Epic Games&rsquo; Unreal Engine 4 running on a Tegra K1 mobile processor. It&rsquo;s a breakthrough that promises to bring the kinds of applications originally built for designers, gamers and supercomputers to a broad range of devices, erasing the lines between desktop and mobile devices.</div> <div> &nbsp;</div> <h2> Unreal Engine 4 running on NVIDIA Tegra K1</h2> <div> In this video, Tim Sweeney, Founder and CEO of Epic Games and Tony Tomasi, SVP of Content and Technology at NVIDIA, talk about implementing Unreal Engine 4 on the Tegra K1.</div> <div> &nbsp;</div> <div> <div> <iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/GkJ5PupShfk" width="560"></iframe></div> <div> &nbsp;</div> <div> <h2> Press Release, CES Presentation and Corporate Blog posts</h2> <p>For more details on Tegra K1 and NVIDIA's other announcements try this links:</p> <ul> <li> For the press release follow this <a href="http://www.marketwired.com/press-release/NVIDIA-Unveils-Tegra-K1-192-Core-Super-Chip-That-Brings-DNA-Worlds-Fastest-GPU-NASDAQ-NVDA-1866171.htm">link</a></li> <li> For the live blog of the event including video click <a href="http://blogs.nvidia.com/blog/2014/01/05/live-las-vegas/">here</a></li> <li> More details on Tegra K1 can be found <a href="http://blogs.nvidia.com/blog/2014/01/06/the-192-core-super-chip-tegra-k1-brings-serious-gaming-chops-to-mobile/">here</a> and <a href="http://blogs.nvidia.com/blog/2014/01/05/nvidia-rips-the-lid-off-tegra-k1-demos-64-bit-mobile-processor-running-android/">here</a></li> </ul> <div> &nbsp;</div> </div> </div> NVIDIA Developer Blog CES 2014 NVIDIA Press Event http://developer.nvidia.com/node/813180 <p>The International Consumer Electronics Show begins next week in Las Vegas, and we’re getting an early start.<br /> We’re holding a press event on Sunday at 8 pm Pacific Time. Tune in: we’ll be live blogging the event, <a href="http://blogs.nvidia.com/">here</a>, and serving up a live video feed through Twitch.tv.</p> <p> Expect updates on our efforts to shape the <a href="http://www.nvidia.com/object/visual-computing.html">future of visual computing</a>, whether it’s powering your favorite game in your living room, or the car parked in your garage.  That’s a tale attendees at the show can experience in full during the week with a visit to our booth on the show floor.  Once the show opens to the public on Tuesday, you’ll find us in South Hall 3, Booth 30207. We’re hard to miss. Our booth is packed with polygons and decked out in black and green.</p> <p>  </p> <p> Inside, you’ll find stations that will allow you to get hands on with some of our latest technologies. Trust us: these are things you’ll want to experience firsthand. </p> <p>  </p> <p>  </p> NVIDIA Developer Blog Tegra Android Development Pack 2.0r7 Released! http://developer.nvidia.com/node/804217 <p>We are proud to announce the release of <b>Tegra Android Development Pack 2.0r7</b><b>, the ultimate </b>companion for developing native Android applications. <b>Tegra Android Development Pack (TADP) </b>is a single package that sets up an Android development environment and installs all software tools required to developing for Android.</p> <h2> Release Highlights</h2> <ul> <li> Latest Android SDK (22.3) and NDK (r9b).</li> <li> PhysX for Android updated to 3.3</li> <li> Tegra System Profiler 2.0 Beta, featuring a re-engineered cross-platform user interface for Windows and Linux.</li> <li> An updated <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight&trade; Tegra&reg;, Visual Studio Edition</a> with support for the latest NDK versions (r8b-r9b) and CLANG. See <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight&trade; Tegra&reg;, Visual Studio Edition</a> for full list of updates.</li> <li> Updated to the latest tools (<a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES 2.1</a>, <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Tegra System Profiler 1.3</a>). See <a href="https://developer.nvidia.com/tegra-android-development-pack">this</a> for full listing.</li> <li> Tools support for the new NVIDIA&reg; Tegra NOTE&trade; 7 derived family of devices.</li> <li> Latest samples, tips and documentation for Tegra Android development.</li> <li> Numerous performance and stability enhancements.</li> </ul> <p>A complete list of features can be found at the <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a> main page.</p> <h2> Download TADP</h2> <p><b>To download TADP</b>, you must be a member of the <a href="https://developer.nvidia.com/tegra-registered-developer-program">Tegra Registered Developer Program</a>. To join simply <a href="https://developer.nvidia.com/programs/tegra/register">create a new account</a> (it's free and easy) and then visit <a href="https://developer.nvidia.com/develop4tegra">Develop for Tegra</a> or the <a href="https://developer.nvidia.com/tegra-resources">Tegra Resources</a> page and download the version of TADP for your platform.</p> <p><b>Please note: SHIELD requires Software Update 65 or higher to enable debugging and PerfHUD ES 2.1 support. </b></p> <p>Enjoy!</p> <p>The NVIDIA Developer Tools Team</p> NVIDIA Developer Blog NVIDIA at G-STAR 2013 http://developer.nvidia.com/node/798566 <p>G_STAR 2013 is Korea's largest global game exhibition. &nbsp;Nvidia was there showing off its brand-new G-SYNC technology as well as the newly launched GeForce GTX 780 Ti. &nbsp;The four day show started Thursday November 14<sup>th</sup> until Sunday and various new technologies and products including SHIELD and Tegra Note were introduced.</p> <p>&nbsp;</p> <p>Aside from all the great products, one of the biggest events during G-STAR was held at NVIDIA booth. On Saturday, a five-to-five League of Legends(LOL) gaming match attracted a huge crowd as the LOL Season 3 World Champion winning team SKT T1 visited to participate. The competing teams were made up of two SKT T1 members and three amateur gamers, arousing curiosities among the audience which team will win. And the SKT T1 autograph event after the match just added more fun.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/booth2.jpg" style="width: 700px; height: 467px;" /></p> <br /> <h2> G-SYNC</h2> <p>During the exhibition, G-SYNC was set up on ASUS monitors for side by side comparison with a standard display. &nbsp;Gamers were clearly impressed by the smoother lag and tear free performance. &nbsp;</p> <h2> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/gsync.jpg" style="width: 700px; height: 467px;" /></h2> <h2> SHIELD</h2> <p>SHIELD was another technology that received much attention. NVIDIA offered a chance for the audience to first-hand explore the SHIELD device itself while enjoying the various entertainments SHIELD can offer. The &lsquo;SHIELD Ranking Match&rsquo; was successfully held every day for four days at the Gaming Zone inside NVIDIA booth. Many fans were disappointed when they learned that SHIELD will not be introduced in Korea this year. However, they highly complimented the SHIELD gaming experience through GameStream, the new PC streaming technology, as the future of the gaming industry.&nbsp;</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/shield%20gamers%201.jpg" style="width: 700px; height: 467px;" /></p> <p>&nbsp;</p> <h2> Tegra Note 7 (HP Slate 7 Extreme)</h2> <p>The audiences were able to experience all the features of a PC through the light-weighted and large screen HP Slate 7 Extreme tablets. Many people enjoyed smoother gaming experience through this Tegra-base tablet&rsquo;s high performance graphics processing abilities.</p> <br /> <h2> NVIDIA GeForce GTX 780Ti</h2> <p>Among all the great technologies and products, GeForce GTX 780 Ti was definitely the one that the audience showed the most interest in during G-STAR 2013. This new graphics card was also featured in the products introduced by NVIDIA partners, Gigabyte and Zotac, at the Blizzard booth. &nbsp;This is NVIDIA's fastest gaming graphics card so far with even more power than a the vaunted GTX Titan.</p> <p>To find out more about the GTX 780 Ti, click <a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-780-ti/reviews">here</a>.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/780.jpg" style="width: 700px; height: 467px;" /></p> <p>&nbsp;</p> <p>&nbsp;</p> NVIDIA Developer Blog NVIDIA at BlizzCon 2013 http://developer.nvidia.com/node/796159 <p>BlizzCon is one of the highlights of the year for North American gamers with thousands of attendees converging on the Anaheim Conference Center for 2 days of gaming, cosplay, e-sports, panels and events culminating with a Blink-182 concert.</p> <p>NVIDIA were there in force to show the highest possible graphics experience with Blizzard titles such as World of Warcraft, Starcraft 2 and Diablo3.</p> <h2> G-Sync</h2> <p>G-Sync makes games play better by allowing the GPU to update the screen at the optimal time rather than being constrained by the 60Hz legacy that traditional monitors use. This results in less input latency and a smoother experience with no tearing. It&rsquo;s one of the most exciting innovations for real time graphics in recent years.</p> <h2> ShadowPlay</h2> <p>Saving and sharing videos of game play is a big deal these days especially with the Blizzard crowd. ShadowPlay uses the Nvidia hardware video encode and data transfer to allow video capture with minimal impact on performance. At Blizzcon, attendees got a chance to record their own avatars dancing and capture their best moves in ShadowPlay.</p> <p>To find out more about G-Sync and ShadowPlay click <a href="https://developer.nvidia.com/content/g-sync™-gamestream™-and-shadowplay™-technologies-introduced-nvidia-editors-day">here</a>.</p> <p>&nbsp;</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/ShadowPlay.jpg" style="width: 700px; height: 467px;" /></p> <p>&nbsp;</p> <h2> 4k Ultra High Resolution Gaming</h2> <p>World of Warcraft, Starcraft 2 and Diablo 3 all natively support 4K resolution and looked stunning in our booth throughout the show. This was the best graphics experience possible for these titles and was a stunning treat for the Blizzcon attendees.</p> <p>&nbsp;</p> <h2> When 4K isn&rsquo;t enough!</h2> <p>NVIDIA showed a 3 screen 4K surround set up running WOW at the event. That&rsquo;s 25 Megapixels for those counting. This system was a Falcon Mach V with 3 GTX Titans. Crazy stuff!</p> <div> &nbsp;</div> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/4ksurround.jpg" style="width: 700px; height: 391px;" /></p> <p>&nbsp;</p> <h2> Gallery</h2> <p>Gamers check out tech at the NVIDIA Booth</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/gamers.jpg" style="width: 700px; height: 467px;" /></p> <p>The Cosplay contest this year was amazing</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/contest1.jpg" style="width: 700px; height: 394px;" /></p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/cosplay.jpg" style="width: 700px; height: 400px;" /></p> <p>&nbsp;</p> NVIDIA Developer Blog Workaround for Debugging on SHIELD OTA Update 63/64 (Android 4.3) http://developer.nvidia.com/node/794087 <p>Shortly after the release of the <b>NVIDIA SHIELD</b> update to Android 4.3 (OTA Update 63/64), a bug was discovered that prevents Nsight Tegra, and other debuggers, from attaching to applications for debugging.</p> <p>This bug does not affect devices that are flashed with a full image. Instead it only affects devices where the OTA Update 63/64 releases were applied as a System Update on the device. <b>A workaround to this issue is available</b> to developers by directly flashing a full image onto the device by following the below steps.</p> <ol> <li> <b>Download</b> a recovery image at <a href="http://developer.nvidia.com/tegra-resources">Tegra Resources</a></li> <li> <b>Flash</b> the OS via USB connection using the instructions provided (<a href="http://developer.nvidia.com/sites/default/files/akamai/mobile/docs/SHIELD_Flashing_Instructions.pdf">Windows</a>, <a href="http://developer.nvidia.com/sites/default/files/akamai/mobile/docs/HowTo-Flash-Recovery-Image.txt">Linux</a>)</li> </ol> <p>This bug was fixed recently by Google and we are working to include the fix in an upcoming SHIELD OTA release.</p> <p>We apologize for your inconvenience.</p> <p><i>--NVIDIA Developer Tools Team</i></p> NVIDIA Developer Blog FLEX: Unified GPU Physics http://developer.nvidia.com/node/794057 <p>At the Montreal editor's day we recently announced an exciting new PhysX simulation technology, FleX. Traditionally, visual effects are made using a combination of elements created using specialized solvers for rigid bodies, fluids, clothing, etc. Because FLEX uses a unified particle representation for all object types, it enables new effects where different simulated substances can interact with each other seamlessly.</p> <p>Such unified physics solvers are a staple of the offline computer graphics world, where tools such as Autodesk Maya's nCloth, and Softimage's Lagoa are widely used. The goal for FLEX is to use the power of GPUs to bring the capabilities of these offline applications to real-time computer graphics.</p> <p>FLEX is written in C++/CUDA, but a DirectCompute version is in the works,&nbsp;<span style="font-size: 12px;">a FleX feature will appear in the PhysX SDK v3.4, release date TBD, and in major game engines in the near future.</span></p> <p>&nbsp;</p> <p>Check out the videos belew then head over to <a href="http://physxinfo.com/news/11860/introducing-nvidia-flex-unified-gpu-physx-solver/">PhysXInfo</a> for an interview with Miles Mackin, one of NVIDIA's physics developers.</p> <h2> Flex Teaser Trailer</h2> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/lXxjleVS6pE" width="560"></iframe></p> <h2> Flex Technical Presentation</h2> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/rF1_Lo3Z3G4" width="420"></iframe></p> NVIDIA Developer Blog Tegra Note 7 with Direct Stylus Available for PreOrder http://developer.nvidia.com/node/793287 <p>The Tegra Note 7 tablet is equipped with the same best in class Tegra4 chip from NVIDIA. This is the same chip used in NVIDIA SHIELD making it one powerful tablet.</p> <h2> Great Development System</h2> <p>With Bluetooth controller support and HDMI out, this device also makes a great development platform for next generation Android games.&nbsp; NVIDIA supports Tegra with some of the best profiling tools in the industry like <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight Tegra</a> and the <a href="https://developer.nvidia.com/tegra-android-development-pack">TADP</a> development environment which make it easy to develop Android games using Visual Studio.</p> <p>If you want to develop for Android, NVIDIA has you covered with the best tools.</p> <h2> Direct Stylus</h2> <p>Touch screens are great for simple actions but for more refined input, such as might be needed when editing photographs or sketching, a stylus is better.&nbsp; After market styluses typically can only mimic a human finger and are crude in terms of pressure sensitivity.&nbsp; The <a href="http://blogs.nvidia.com/blog/2013/06/04/nvidia-showing-off-new-directstylus-capabilities-for-tegra-4-tablets/">DirectStylus</a> works in conjunction with DirectTouch 2.0 which supports 300 scans per second (5 times the typical scan rate for a touch screen) improving accuracy and responsiveness.</p> <p>Check out this video showing the performance of the stylus or head over to the <a href="http://blogs.nvidia.com/blog/2013/11/12/tegra-note-pre-order/">NVIDIA.COM</a> blog for more details.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/isUBBuDOtX4" width="560"></iframe></p> NVIDIA Developer Blog Native Code Game Controller Support goes Official in NDK r9b http://developer.nvidia.com/node/791456 <p>Android game developers using NVIDIA’s <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Developer Pack</a> sample code have known for over a year and a half that Android can support all game controller buttons and axes in pure native (C/C++) code.  But until now, developers wanting to access the all-important analog axes on those controllers had to manually query non-NDK (i.e. non “stable”) APIs from Android libraries at runtime.  In addition to being a bit of an inconvenience to query the function needed, there was always the chance that a later version of Android would change that API and break existing games (since the function was not officially exported to the NDK).  Well, that has all changed for the better with the release of the r9b version of the <a href="http://developer.android.com/tools/sdk/ndk/index.html">NDK</a>.  Android now supports the previously-missing game controller functions.<br />  <br /> The better news is that existing apps that used NVIDIA’s sample code should work on Android KitKat with no modifications whatsoever.  So existing controller-based apps should keep working just fine.  Apps upgrading to the NDK’s new r9b release can now replace calls to the queried function pointer with direct calls to the Android function AMotionEvent_getAxisValue.  They can remove their use of the TADP nv_input sample library, as the #defines in that header are now in the NDK’s android/input.h.<br />  <br /> Better yet is that Google made this change retroactive; in other words, NDK r9b actually added declarations and linkable symbols for the missing functions in all API levels 13 and newer, the exact set of OSes that always had the functions (internally) in the first place.  So by moving to using the Android-exported versions of the functions you need not change your call signatures and you need not raise your targeted or min application API spec!<br />  <br /> This upgrade in NDK r9b does indeed make the longstanding TADP sample library nv_input redundant; the function it queried at runtime from Android can now be linked at built time in the NDK.  We’ll be updating our existing NativeGamepad app in the next version of TADP to remove its dependency on nv_input and removing the library from TADP.  Having the NDK making this TADP helper library redundant is a good thing for everyone!  We couldn’t be happier – anything that makes it easier for apps to add great controller support to their Android apps is music to our ears.</p> NVIDIA Developer Blog NVIDIA, SHIELD and BBQ at the Big Android BBQ in Hurst, TX http://developer.nvidia.com/node/790634 <p>NVIDIA had a blast at the Big Android BBQ in Hurst, TX from Oct 12-14<sup>th</sup>.&nbsp; An enthusiast show on many levels, the BBQ brings together a great convergence of Android modders and hackers, most of whom also seemed to be avid gamers!&nbsp; NVIDIA showed off both high-end Android gaming and PC streaming on SHIELD with hands-on demos.&nbsp; We brought along a host of internal SHIELD development hardware, too; it provided these Android-savvy attendees with a really good idea of what it takes to bring an idea like SHIELD to the consumer market.</p> <p>The NVIDIA booth was manned almost entirely by engineers who had worked on SHIELD&rsquo;s Android OS modifications and enhancements, and this made for a lot of engaging discussions with the attendees.</p> <p>NVIDIA DevTechs presented a session on developing great games for NVIDIA SHIELD, NVIDIA TegraNote, Ouya, MadCatz Mojo and other dedicated Android gaming devices.&nbsp; We&rsquo;ve posted the slides from that talk with a <a href="https://developer.nvidia.com/sites/default/files/akamai/mobile/docs/NVIDIA_Dedicated_Android_Gaming_2013_updated.pdf">full set of notes</a>. &nbsp;They also hosted a coding challenge for the attendees; we drew a winner from the names of those who completed the coding challenge, and they walked away with an NVIDIA Shield!</p> <p>Finally, NVIDIA gave away two more SHIELDs during the event; one to the winner of the head-to-head SHIELD race-gaming competition (which was decided by a late pass 10 seconds from the finish line!), and one as a part of the charity raffle for Rafa House&nbsp;</p> <p><a href="http://www.bigandroidbbq.com/babbq13-raises-8506-for-the-rapha-house/">http://www.bigandroidbbq.com/babbq13-raises-8506-for-the-rapha-house/</a>.</p> <p>This is definitely an event that NVIDIA hopes to be a part of in future years; the grassroots community represented at the BABBQ is a wonderful, positive and eclectic group of people drawn together by their love for Android as an open platform for creative expression.</p> <table border="0" cellpadding="1" cellspacing="1" width="100%"> <tbody> <tr> <td class="rtecenter"> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/Blogs/babbq_2013_racing.JPG" style="width: 246px; height: 259px;" /></td> <td class="rtecenter"> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/Blogs/babbq_2013_booth.JPG" style="width: 246px; height: 259px;" /></td> </tr> </tbody> </table> <p>&nbsp;</p> <div> <div> &nbsp;</div> </div> NVIDIA Developer Blog Enhancing Dedalord’s Skiing Fred for Tegra 4 http://developer.nvidia.com/node/787233 <p>Our ill-fated hero goes turbo-speed to escape the ever more tenacious Grimmy, slamming unfortunate bystanders in his way and making more unnecessary enemies in the process. <a href="http://www.dedalord.com/">Dedalord</a> enhanced the game to take advantage of the power of Tegra 4. Mariano Merchante explains how they did it.</p> <h1> Introduction</h1> <p>Hi! I&rsquo;m Mariano Merchante, Technical Artist at Dedalord.&nbsp; When we had the opportunity to look at Tegra 4&rsquo;s graphics capabilities, we decided to explore its potential and take advantage of it in our latest Game, Skiing Fred. To upgrade Skiing Fred&rsquo;s graphics, we had to face some fun challenges involving shaders, lighting and effects inside Unity, which I&rsquo;ll further describe.</p> <p>Some context first: our freckled main character Fred is constantly escaping Grimmy, his cute and deadly antagonist. Fred ends up stranded in the middle of snowy mountains and has to use any means to avoid meeting his demise such as an outhouse door that doubles as a snowboard, snowmobiles and even prehistoric birds.</p> <p>The game starts with Fred making his way around a hazard ridden track, dodging deadly traps, explosive penguins and precipices while chased by Death itself!</p> <h2> Characters</h2> <p>-When we started upgrading the game&rsquo;s graphics for Tegra, we definitely wanted to give the characters a softer look. The previous shader was an unlit texture with color tinting, and because we decided to use Unity&rsquo;s lighting system, we had the opportunity to make it look good. With a little bit of research we decided to use a fake BRDF lookup table to fake the lighting of the character surface, a method used by a lot of other game developers, such as Madfinger.&nbsp; We decided to use the incidence of the camera (NdotE) instead of half direction (NdotH), so that we could focus on rim light instead of specularity. This later proved to be useful to highlight the snow track&rsquo;s turns and twists in the snow shader.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/characterlighting.jpg" style="width: 367px; height: 366px;" /></p> <p>&nbsp;</p> <h2> Snow</h2> <p>The game scenes are predominantly covered in snow. In real life, snow is not just full white: it has a lot of subtle tints that tend towards blue in shaded areas, ice crystals glitter under certain conditions, etc. However, simplified snow is portrayed with a white/bluish color, which became a problem at the moment of designing some effects (such as additive!).</p> <p>But with Tegra 4 we could use more advanced shaders to give the snow a chilly feeling. We ended up reusing our character shader with a nice and &ldquo;faked up&rdquo; BRDF lookup texture but with a twist: a bump map that had high frequency noise to simulate flakes, mapped in worldspace coordinates to prevent some stretching from the race track uvs. To exaggerate the snow shader, our main directional light has a low angle of incidence with respect to the floor.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/lutbump.jpg" style="width: 425px; height: 605px;" /></p> <p>Thanks to a bug, we discovered that the shader with no texture assigned looked awesome! So we took advantage of that and implemented it as an additional effect to the blizzard weather event. It looks chillingly cold:</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/cold.jpg" style="width: 434px; height: 436px;" /></p> <p>&nbsp;</p> <h2> Lighting</h2> <p>Since we decided to use Unity&rsquo;s lighting system, we really wanted to add dynamic lights to some of the events that occur in the game, such as the meteor shower and lightning storm. The only reasonable way to implement this was through vertex lights; we needed a lot of illumination sources and the performance would drop considerably otherwise.</p> <p>However, we quickly hit a limitation: Unity supports up to 4 simultaneous vertex &nbsp;lights (at the moment of development). Fortunately for us, because our game is essentially a runner, we already knew the order in which lights appeared, so we used that information to cull lights and force Unity to activate the closest 4 lights to the player. We also added a intensity fade when enabling/disabling lights which gave it a nice, smooth transition.&nbsp;</p> <p>As a secondary detail, we added a snowmobile spot light when the player is inside a cave, and because it is just one small light (and caves had less visible objects) we could afford using a pixel light with some culling options to just affect the snow track and some decorations.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/spotlight.jpg" style="width: 400px; height: 400px;" /></p> <h2> Weather</h2> <p>Having more GPU power with Tegra 4 gave us a bigger particle budget, which we took advantage of by adding weather effects such as rain and fire embers, and more particle count in other effects in general. Taken together with the dynamic lights previously discussed, these details really added to the feeling of chaos and danger in the game.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/weather.jpg" style="width: 474px; height: 472px;" /></p> <h2> Shadows</h2> <p>One important feature we wanted to have was shadows for the main character, Fred. Fortunately, Unity had just implemented shadows for mobile, and by enabling it, it &ldquo;just worked&rdquo; with Tegra 4 in terms of performance. It needed some fine tuning and culling, mainly because there are a lot of objects in the scene and we only wanted to cast shadows on the snow track, but overall it was straightforward, and the framerate drop was small in comparison to other devices.</p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/concimage.jpg" style="width: 350px; height: 353px;" /></p> <p>&nbsp;</p> <h1> Conclusion</h1> <p>And that&rsquo;s it! We did a lot of tweaking and upgrading of other ingame effects and shaders mostly minor such as the snowboards&rsquo; shader. We&rsquo;re amazed at the capabilities of Tegra 4, which enabled us to boost up visuals without needless hassle while maintaining a stable and smooth framerate at all times.</p> <p>&nbsp;</p> NVIDIA Developer Blog Tegra Android Development Pack Refreshed to Support SHIELD OTA Update 63 http://developer.nvidia.com/node/786821 <p>In conjunction with the latest <b>NVIDIA&reg; SHIELD&trade;</b> update, <b><a href="http://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack 2.0r6</a></b> provides same-day support for the powerful SHIELD game development tools, including Tegra Profiler, Nsight Tegra and PerfHUD ES.</p> <p><b>Tegra Android Development Pack (TADP)</b> is a suite of SDKs, developer tools, drivers and OS images bundled in a single package to help simplify setting up and managing an Android development environment. In addition to support for the latest Tegra SOC in mobile computing, <b>NVIDIA Tegra&reg; 4</b> which powers the <b>NVIDIA&reg; SHIELD&trade;</b>, TADP 2.0r6 adds the following updates.</p> <ul> <li> Support for <a href="http://shield.nvidia.com/release-notes/">SHIELD OTA Update 63</a></li> <li> Bug fixes and general improvements to Tegra Profiler and Nsight Tegra</li> <li> Updated OS images for Tegra Development Kit Platforms (Dalmore, Pluto, Ceres).</li> </ul> <p><b>To get started developing for NVIDIA SHIELD</b>, head over to <a href="http://developer.nvidia.com/how-getting-started-shield-development">HOW TO: Getting Started on SHIELD development</a> for detailed instructions on setting up your development environment and installing the tools necessary to develop apps for NVIDIA SHIELD.</p> <p>Learn more about and <a href="http://developer.nvidia.com/tegra-android-development-pack">download</a> Tegra Android Development Pack at <a href="http://developer.nvidia.com/tegra-android-development-pack">NVIDIA Developer Zone</a>.</p> <p><i>-- NVIDIA Developer Tools Team</i></p> NVIDIA Developer Blog G-SYNC™, GameStream™ and ShadowPlay™ technologies introduced at NVIDIA Editors Day http://developer.nvidia.com/node/785386 <p>Last week in Montreal NVIDIA renewed its commitment: &ldquo;The Way It&rsquo;s Meant To Be Played&rdquo; to gaming and technology press from around the globe at Editors Day.&nbsp; As well as highlighting unique content in the season&rsquo;s best <a href="http://blogs.nvidia.com/blog/2013/10/17/twimtbp/">games</a> a<span style="font-size: 12px;">nd a new top of the line </span><a href="http://www.geforce.com/whats-new/articles/introducing-nvidias-latest-extreme-performance-graphics-card" style="font-size: 12px;">graphics card</a><span style="font-size: 12px;">, three exciting new technologies were unveiled:&nbsp;</span><span style="font-size: 12px;">G-SYNC, GameStream and ShadowPlay.</span></p> <!--—break ----> <p>&nbsp;</p> <h2> G-SYNC</h2> <p>G-SYNC allows games to update the monitor when they want rather than waiting for a predefined V-SYNC.&nbsp; This allows games to run more smoothly with less latency and no tearing.&nbsp; It is a huge breakthrough for PC gaming and industry luminaries, John Carmack, Johan Andersson and Tim Sweeney were on stage to share their thoughts on the new system.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/BZS8Bbyf1to?list=UUHuiy8bXnmK5nisYHUd1J5g" width="560"></iframe></p> <p>Tim Sweeney, creator of Epic&rsquo;s industry-dominating Unreal Engine, called G-SYNC &ldquo;the biggest leap forward in gaming monitors since we went from standard definition to high-def.&rdquo; He added, &ldquo;If you care about gaming, G-SYNC is going to make a huge difference in the experience.&rdquo; The legendary John Carmack, architect of id Software&rsquo;s engine, was similarly excited, saying &ldquo;Once you play on a G-SYNC capable monitor, you&rsquo;ll never go back.&rdquo; Coming from a pioneer of the gaming industry, who&rsquo;s also a bonafide rocket scientist, that&rsquo;s high praise indeed.</p> <p>Tim and John are established game-engine gurus; fast approaching that status is Johan Andersson, DICE&rsquo;s technical director, and architect of the Frostbite engines that power several EA titles. As a man known for pushing the boundaries of technology, we were keen to shown Johan G-SYNC.</p> <p>Following the G-SYNC demo, Johan simply said, &ldquo;Our games have never looked or played better,&rdquo; adding, &ldquo;G-SYNC just blew me away!&rdquo;</p> <p>Read more about it on <a href="http://www.geforce.com/whats-new/articles/introducing-nvidia-g-sync-revolutionary-ultra-smooth-stutter-free-gaming">GeForce.com</a></p> <p>&nbsp;</p> <h2> Gamestream</h2> <p>NVIDIA GameStream, due to launch on October 28th, is NVIDIA&rsquo;s advanced streaming technology, combining the high performance of GeForce GTX graphics cards with advanced Wi-Fi technologies to deliver super smooth, low latency gaming on the go. It effectively puts the ultimate GeForce GTX gaming experience in the palm of your hands. With support for over 50 top PC games, including upcoming 2013 blockbuster releases Batman: Arkham Origins and Assassin's Creed IV Black Flag, there is plenty of gaming to be had. Initially, NVIDIA GameStream will be available for local PC Streaming, however, longer-term it will also support NVIDIA GRID cloud gaming services.</p> <p>Also announced is &ldquo;SHIELD Console Mode&rdquo;, which effectively transforms your portable SHIELD into a full gaming and entertainment console for your big-screen TV. Simply attach SHIELD to your HDTV via HDMI, pair it with a Pro Bluetooth game controller, and sit back on your couch and play your PC games with GameStream.</p> <p>In addition to streaming PC games, Console Mode enables gamers to play Android games, browse the web, and watch their favorite movies at native 1080p on the big screen.</p> <p><span style="font-size: 12px;">Read more about it on </span><a href="http://www.geforce.com/whats-new/articles/nvidia-gamestream-a-whole-new-way-to-game" style="font-size: 12px;">GeForce.com</a></p> <p>&nbsp;</p> <h2> Shadowplay</h2> <p>Fast, free and easy-to-use, ShadowPlay is a new approach to gameplay recording, utilizing an on-board H.264 encoder built into GeForce GTX 600 and 700 Series graphics cards, and an innovative recording mode that shadows your every in-game move.</p> <p>Shadow Mode follows your gameplay, saving the last ten to twenty minutes of action to a temporary buffer on your hard drive. When you pull off a particularly impressive in-game move, hit Alt + F10 to save the buffered footage to a permanent file, enabling you to capture your best exploits even after the fact.&nbsp; To prevent your HDD from piling up with large video files, files are not created automatically; ShadowPlay saves a clip only when you press the hotkey.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/Lyy3ZijLJ0s?list=UUHuiy8bXnmK5nisYHUd1J5g" width="560"></iframe></p> <p>ShadowPlay leverages the H.264 hardware encoder found on GeForce GTX 600 and 700 Series graphics cards to record 1920x1080, 60 frames per second. All DirectX 9 and newer games are supported. In comparison to software solutions that hammer the CPU, ShadowPlay&rsquo;s hardware solution has an approximate 5-10% performance impact when using the max-quality 50 mbps recording mode, and by saving to automatically-encoded and compressed H.264 .mp4 files, ShadowPlay avoids the disk-thrashing, humongous, multi-gigabyte files associated with other gameplay recording applications.</p> <p><span style="font-size: 12px;">Read more about it on </span><a href="http://www.geforce.com/whats-new/articles/geforce-shadowplay-beta-available-october-2" style="font-size: 12px;">GeForce.com</a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> NVIDIA Developer Blog New NVIDIA Nsight Visual Studio Edition 3.2 Available with Windows 8.1 Support and Improved DirectCompute Profiling http://developer.nvidia.com/node/783987 <p>A new version of <a href="https://developer.nvidia.com/nvidia-nsight-visual-studio-edition">NVIDIA&reg; Nsight&trade; Visual Studio Edition</a> is available for download now! The NVIDIA Developer Tools team is proud to announce the release of <a href="https://developer.nvidia.com/nsight-visual-studio-edition-3_2-new-features">Nsight Visual Studio Edition 3.2</a>. This new version officially supports <b>Windows 8.1</b>, profiling DirectCompute dispatches in the frame profiler and improved shader debugging performance.</p> <p>Please note that this release of Nsight&trade; Visual Studio Edition requires <b>NVIDIA Display Driver Release 327 or newer</b>.</p> <h3> <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Register</a></u> for free access to <a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-downloads"><u><b>download</b></u></a> (<a href="https://developer.nvidia.com/access-nsight-visual-studio-edition-registered-developer-program"><u>login</u></a> to <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Registered Developer Program</a></u> required).</h3> <ul> <li> Official support for <b>Microsoft Windows 8.1</b> operating system.</li> <li> Quadro K6000 is supported.</li> <li> Frame profiler supports profiling DirectCompute dispatches.</li> <li> Frame profiler can collect a custom list of counters for drawcalls or dispatches.</li> <li> Performance has been improved for local and replay-based shader debugging of Direct3D applications.</li> <li> Ability to visualize FP16 float in the memory viewer.</li> <li> Textures can be saved to disk on Direct3D 11 and Direct3D 11.1 applications.</li> <li> Concurrent kernel trace for DirectCompute is supported for Kepler and newer cards <b>(NVIDIA Display Driver 331 or higher required)</b>.</li> </ul> <p><i>The standalone Nsight&trade; Visual Studio Edition installer no longer bundles the CUDA Toolkit. Please obtain the latest version of CUDA 5.5 (available at <a href="http://www.nvidia.com/getcuda">http://www.nvidia.com/getcuda</a>) prior to installing Nsight&trade; Visual Studio Edition if you are using the compute feature set.</i></p> <p>We encourage all users to send feedback and report issues at the <a href="https://devtalk.nvidia.com/default/board/84/">Nsight&trade; Visual Studio Edition forums</a> or within the Nsight&trade; Visual Studio Edition Registered Developer Program to help improve the quality of the software for future releases.</p> NVIDIA Developer Blog Adding Particles and Turbulence to HAWKEN http://developer.nvidia.com/node/782851 <p>Winner of 10 E3 awards, <a href="https://www.playhawken.com//">HAWKEN</a> is a Free-to-Play online FPS developed by <a href="http://www.adhesivegames.com/">Adhesive Games</a>. &nbsp;Built using the <a href="https://developer.nvidia.com/unrealengine">Unreal Development Kit</a> (UDK), it features giant robots fighting in ruined futuristic cities.&nbsp;</p> <p>HAWKEN uses <a href="https://developer.nvidia.com/technologies/PhysX">PhysX</a> particles and <a href="https://developer.nvidia.com/apex">APEX</a> Turbulence to create a more immersive and realistic experience for the player.&nbsp; We talked to Johnny Costello of the NVIDIA PhysX Art Team to find out how it was done.</p> <!--—break ----> <h1> Looking at the Turbulence effects, they feature a huge number of particles, how did you achieve that?</h1> <p><span style="font-size: 12px;">Particle count for visual effects is usually something you have to limit in games due to performance reasons.&nbsp; However, Turbulence specializes in rendering tens of thousands of particles, simulating those particles so they will interact with the player and the game environment, and running everything quickly on the GPU.&nbsp; This tech seemed like the perfect thing to help show off HAWKEN. &nbsp;&nbsp;</span></p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/eGVXfvA_-fA?list=PLovDHjfAviJvlW2OFmhK-OpWugmnBGdxs" width="560"></iframe></p> <br /> <br /> <h1> How do artists create Turbulence content?</h1> <p><span style="font-size: 12px;">Turbulence is integrated directly into UE3, so authoring feels pretty natural.&nbsp; You need to bring together several assets depending on what type of Turbulence effect you&rsquo;re going for.&nbsp; First, you need an emitter that uses APEX particles, then a grid actor that provides the simulation volume, and finally you can add other APEX actors like jets, attractors, and vortices that can be used to influence the grid simulation.&nbsp; Additionally, you can also have certain collision shapes affect the simulation.&nbsp; All of these elements come together to create a compelling visual effect.</span></p> <p><span style="font-size: 12px;">For example, in the screenshot below, you can see the grid simulation volume (the large blue cube), a noise actor (smaller blue cube) that adds some interesting motion to the particles on top of the motion from the simulation, a jet actor (red capsule shape) that will push the simulation vectors to the right, and an emitter to provide the particles.&nbsp; All these components are combined to create the final effect.</span></p> <p><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/hawkentools.jpg" style="width: 700px; height: 392px;" /></p> <h1> What else could Turbulence be used for?</h1> <p><span style="font-size: 12px;">In HAWKEN, we focused on using Turbulence for mech sparks and various energy effects.&nbsp; However, you can also use the Turbulence simulation grid to drive other kinds of particles.&nbsp; We&rsquo;ve been experimenting with using shadowed sprite smoke particles to create dense smoke effects as well as using mesh particles with Turbulence to produce some pretty wild debris effects.&nbsp; You could also associate Turbulence assets like attractors and jets with weapon interactions to allow the player to directly manipulate the simulation with their weapons.&nbsp; There&rsquo;s really a lot you could do.</span></p> <h1> What&rsquo;s unique about PhysX mesh particles?</h1> <p><span style="font-size: 12px;">The PhysX particles that we added to HAWKEN were actual 3D meshes that could rotate and be shadowed rather than just 2D billboards.&nbsp; We felt that HAWKEN was such a gritty, visceral game that it would really benefit from more persistent debris in the world.&nbsp; It&rsquo;s fun to have a massive firefight with a bunch of futuristic mechs and watch bits of mech armor, rock chunks, and metal pieces break off during the action.&nbsp; And then, after the fight, the ground is littered with debris and continues to interact with your mech as you stomp your way to the next battle.&nbsp; Interactive particles really help reinforce the enormous size and mass of your mechs in the game world.</span></p> <h1> How do developers add PhysX particles to their game?</h1> <p><span style="font-size: 12px;">It&rsquo;s pretty easy!&nbsp; There are some great instructions to get you started on the Unreal Developer Network under our PhysX Particle Starter Kit page:</span></p> <p><a href="https://udn.unrealengine.com/docs/ue3/INT/Resources/Tutorials/Gems/StarterKits/PhysXParticles/index.html" style="font-size: 12px;">https://udn.unrealengine.com/docs/ue3/INT/Resources/Tutorials/Gems/StarterKits/PhysXParticles/index.html</a></p> <h1> How were these features configured to ensure a great play experience on a wide range of NVIDIA GPUs?&nbsp;</h1> <p><span style="font-size: 12px;">In HAWKEN, just like in most of our GPU PhysX titles, we implemented a system where the user can tune their PhysX effects just like any other video setting to allow for multiple configurations of the game that will run at high frame rates on varying machines.&nbsp; This allows gamers with aging systems to still experience some of the PhysX effects, and then gamers on more updated machines can crank this setting to the max and get all the PhysX goodness.&nbsp; We want the PhysX content to produce a positive play experience for gamers with machines at both ends of the spectrum.&nbsp; Specifically, in HAWKEN, for the &lsquo;PhysX On&rsquo; setting, players will see interactive PhysX particle effects, and for the &lsquo;PhysX High&rsquo; setting, gamers will get both the PhysX particles as well as all the Turbulence effects.</span></p> <h1> How do developers get a hold of APEX Turbulence?</h1> <p><span style="font-size: 12px;">We provide an APEX Turbulence Patch for UE3 and customers can get access to that by emailing us at </span><a href="mailto:apex-beta@nvidia.com" style="font-size: 12px;">apex-beta@nvidia.com</a><span style="font-size: 12px;">.&nbsp; The patch does require access to UE3 source and won&rsquo;t work with UDK.</span></p> <p><span style="font-size: 12px;">See also: </span><a href="http://developer.nvidia.com/physxapex-download-page" style="font-size: 12px;">http://developer.nvidia.com/physxapex-download-page</a></p> <p>&nbsp;</p> <p><span style="font-size: 12px;">For non-UE3 users we provide a standalone Particle Editing Tool for APEX 1.3. . The tool is currently in closed beta. &nbsp;Interested customers can request access to the tool by emailing us at </span><a href="mailto:apex-beta@nvidia.com" style="font-size: 12px;">apex-beta@nvidia.com</a><span style="font-size: 12px;">.</span></p> <p>&nbsp;</p> NVIDIA Developer Blog How Tegra 4 Helps Developers Build Great Games http://developer.nvidia.com/node/781464 <p>Spotlighting how our blazingly fast <a href="http://www.nvidia.com/tegra">Tegra 4</a> technology produces games with amazing visuals, including dynamic shadows, depth of field, and HDR to name a few, the video below shows game developers like Bitsquid, Steel Wool Games and Vivid Games show off their latest games running on Tegra 4.</p> <p>Discover the latest tools and resources available to Tegra developers at <a href="https://developer.nvidia.com/tegra-start">Getting Started with Tegra</a>.</p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="https://developer.nvidia.com//www.youtube.com/embed/5oCMJQsizbM?feature=player_detailpage" width="640"></iframe></p> <p>Read more on Tegra 4 in games in the <a href="http://blogs.nvidia.com/blog/2013/10/08/how-tegra-4-helps-developers-build-great-games/">featured post at NVIDIA Blog sister site</a>.</p> NVIDIA Developer Blog Big Android BBQ: Beyond Phones and Tablets: Developing for Dedicated Android Gaming Systems http://developer.nvidia.com/node/726977 <div> The <a href="http://www.bigandroidbbq.com/">Big Android BBQ</a> is the world's preeminent mobile technology conference for Android developers, hackers and enthusiasts. This year, the Big Android BBQ will return to the well-liked Hurst Convention Center in the Dallas Fort Worth area of Texas. &nbsp;NVIDIA's <a href="http://www.bigandroidbbq.com/speakers/lars-m-bishop/">Lars M. Bishop</a>&nbsp;and <a href="http://www.bigandroidbbq.com/speakers/seth-williams/">Seth Williams</a>&nbsp;will be presenting on "Beyond Phones and Tablets: Developing for Dedicated Android Gaming Systems". &nbsp;Be sure to check it out.</div> <div> &nbsp;</div> <h2> Session Title:&nbsp;<br /> Beyond Phones and Tablets: Developing for Dedicated Android Gaming Systems</h2> <div> &nbsp;</div> <h2> Abstract</h2> <div> <span style="font-size: 12px;">Android gaming has come into its own as the Android ecosystem has expanded to include not only tablets and smartphones, but also dedicated gaming handhelds like NVIDIA&rsquo;s <a href="http://shield.nvidia.com/">SHIELD</a> and consoles like OUYA. This session will cover a host of topics designed to illustrate the opportunities and challenges encountered when targeting games to the new generation of dedicated Android gaming systems. This will include: Game controller support in Java and NDK code, interaction design for external display-based platforms, supporting a wide range of display sizes and multiple simultaneous displays. In addition, the session will introduce Regal; a comprehensive, cross-platform, open source support library that makes it easy to handle the range of OpenGL ES extensions available on Android systems. The session will close with a demonstration of how to debug and optimize games using NVIDIA&rsquo;s Android-based graphical tools environment.</span></div> <div> &nbsp;</div> <h2> Info</h2> <ul> <li> Saturday, 12 Oct, 1:30-2:30pm</li> <li> <span style="font-size: 12px;">Title: &ldquo;Beyond Phones and Tablets: Developing for Dedicated Android Gaming Systems&rdquo;</span></li> <li> Format: 45min presentation</li> <li> Level: Intermediate to Advanced</li> <li> Intended Audience: Android game and application programmers interested in designing for dedicated gaming platforms</li> </ul> <div> &nbsp;</div> <div> &nbsp;</div> <h2> Speaker Biographies:</h2> <div> <strong>Lars M. Bishop</strong> is a Mobile Developer Technologies Engineer at NVIDIA. &nbsp;For the past 8 years, he has helped developers optimize and improve their applications for mobile and handheld platforms. &nbsp;He specializes in Android application programming, 3D rendering and mobile camera technologies. &nbsp;Prior to NVIDIA, he worked on cross-platform game engines as the CTO of Numerical Design, Limited. &nbsp;He is the co-author of both editions of Essential Mathematics for Games and Interactive Applications: A Programmer's Guide (2004 and 2008, Morgan Kaufman). &nbsp;He holds an ScB in Mathematics/Computer Science from Brown University and an MS in Computer Science from the University of North Carolina at Chapel Hill.</div> <div> &nbsp;</div> <div> <strong>Seth Williams</strong> is a Mobile Developer Technologies Engineer at NVIDIA. &nbsp;In the past 7 years there he's worn a few hats. &nbsp;He has worked as a Cg Runtime developer, a Cg shader-wrangler for OpenGL and D3D APIs, and as an OSX OpenGL driver developer, and now helps game developers directly to migrate their titles to mobile platforms and improve performance on Tegra SOCs. &nbsp;Prior to NVIDIA he worked as an OpenGL driver developer at 3Dlabs, and at Intel on their compilers and parallel programming tools. &nbsp;Seth holds a Bachelor of Science in Computer Engineering from University of Illinois at Urbana-Champaign.</div> <div> &nbsp;</div> NVIDIA Developer Blog Batman: Arkham Origins Is Bursting With NVIDIA Technology http://developer.nvidia.com/node/725944 <p>Our sister site <a href="http://www.geforce.com/whats-new/articles/batman-arkham-origins-is-bursting-with-nvidia-technology-check-out-the-trailer">GeForce.com</a> just released a tech trailer for the upcoming Batman: Arkham Origins from Warner Bros. The game features <a href="https://developer.nvidia.com/technologies/physx">NVIDIA PhysX</a> cloth, volumetric smoke, fluid and particle effects that interact with characters as well as HBAO+ temporal antialiasing. Head over to <a href="http://www.geforce.com/whats-new/articles/batman-arkham-origins-is-bursting-with-nvidia-technology-check-out-the-trailer">GeForce.com</a> to get the full details and see the video.</p> NVIDIA Developer Blog Android Development: Using the Hardware Scaler for Performance and Efficiency http://developer.nvidia.com/node/724617 <p>This is a great <a href="http://android-developers.blogspot.com/2013/09/using-hardware-scaler-for-performance.html">article</a> on why and how to take advantage of the hardware scaler available on Android platforms. This advice also applies to PC game developers where rendering to smaller buffers is common practice for performance reasons.<br /> Developers may also consider a hybrid approach where they render the 3d elements of their scene to a reduced resolution back buffer, scale this to the intended display resolution and then render 2D user interface elements such as text at the final display resolution. This has the advantage of ensuring that the user interface is rendered as sharply as possible.<br /> If fill rate is a big concern another solution is to perform a Z pre-pass. All of the scenes geometry is rendered using an inexpensive pixel shader. This primes the Z buffer for the actual render pass ensuring that the expensive final pixel shaders are only run for visible pixels.<br /> Another easy tip is to try to render from front to back. This occludes as much of the render buffer as early as possible again reducing the total amount of pixel shading required.<br /> Whatever kind of Android development you are doing, NVIDIA makes awesome tools.  Sign up and check out the free <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Developer Pack</a>. <br />  </p> NVIDIA Developer Blog Profiling OpenGL 4.2 with NVIDIA Nsight Visual Studio Edition 3.2 http://developer.nvidia.com/node/723782 <p>Learn how to profile OpenGL 4.2 applications with Nsight Visual Studio Edition 3.1. This webinar shows how you can use Nsight Visual Studio Edition can be used to tune graphics applications.</p> <p>Profiling applications early and often is key to achieving good performance. &nbsp;This is particularly true these days as modifying assets at the end of project to hit performance requirements is very expensive. &nbsp;Tools like Nsight make graphics developers more effective by giving them visibility into the graphics pipeline for debugging and profiling.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/8KR1Rx6ps0c" width="420"></iframe></p> <ul> <li> Get Nsight Visual Studio Edition: <a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition">http://developer.nvidia.com/nvidia-nsight-visual-studio-edition</a></li> <li> More Videos: <a href="http://developer.nvidia.com/nvidia-nsight-visual-edition-videos">http://developer.nvidia.com/nvidia-nsight-visual-edition-videos</a></li> </ul> NVIDIA Developer Blog Learn How to Debug OpenGL 4.2 with NVIDIA® Nsight™ Visual Studio Edition 3.1: Video now Available http://developer.nvidia.com/node/721770 <p>If you didn't have the chance to attend our recent webinar on debugging OpenGL using Nsight Visual Studio or if you want to review the presentation video online you now can.</p> <p><a href="https://developer.nvidia.com/nvidia-nsight-visual-studio-edition">NVIDIA&reg; Nsight&trade; Development Platform, Visual Studio Edition</a> brings GPU Computing into Microsoft Visual Studio. Build, Debug, Profile and Trace heterogeneous compute and graphics applications using CUDA C/C++, OpenCL, DirectCompute, Direct3D, and OpenGL. To find out more click <a href="https://developer.nvidia.com/nvidia-nsight-visual-studio-edition">here</a></p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/HAm5ziXE6pA" width="420"></iframe></p> <p><span style="font-size: 12px;">You can access this webinar and many others through NVIDIA's <a href="http://www.gputechconf.com/page/gtc-express-webinar.html">GTC Express</a> website. &nbsp;Head over there to check out the large number of training videos avialable.</span></p> <p>&nbsp;</p> NVIDIA Developer Blog Steam games in the Living Room http://developer.nvidia.com/node/721747 <p>This week Valve announced <a href="http://store.steampowered.com/livingroom/SteamOS/">SteamOS</a> targeting the living room and big screen TVs.</p> <p>Engineers from <a href="http://www.valvesoftware.com/">Valve</a> and NVIDIA have spent a lot of time collaborating on a common goal for SteamOS: to deliver an open-platform gaming experience with superior performance and uncompromising visuals directly on the big screen.</p> <p>NVIDIA engineers embedded at Valve worked on improving driver performance for OpenGL;&nbsp; optimizing performance on NVIDIA GPUs; and helping to port Valve&rsquo;s award-winning content library to SteamOS; and tuning SteamOS to lower latency, or lag, between the controller and onscreen action.</p> <p>SteamOS is based on Linux and uses OpenGL for rendering. To find out about porting games to Linux check this <a href="https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/Porting%20Source%20to%20Linux.pdf">article</a>.</p> <p>For more info head over to the NVIDIA corporate <a href="http://blogs.nvidia.com/blog/2013/09/25/steam-rolling-into-your-living-room/">blog</a>.</p> <p>&nbsp;</p> NVIDIA Developer Blog Tegra Developer Stories: Bringing BurnZombieBurn to Android http://developer.nvidia.com/node/719794 <p>TickTock Games recently ported the PS3 game BurnZombieBurn to Nvidia Shield. &nbsp;In this article Arden Aspinall explains how they did it.</p> <h1> Developer Bio</h1> <div> Arden Aspinall is the CTO of TickTock Games. He specialises in 3D graphic development and code optimisation. With over 25 years&rsquo; experience, he and his team are constantly looking for new challenges that push forward the boundaries of mobile game development.</div> <div> TickTock Games Limited</div> <ul> <li> www: <a href="http://www.ticktockgames.com/">http://www.ticktockgames.com/</a></li> <li> fb:<a href="http://www.facebook.com/TickTockGames"> http://www.facebook.com/TickTockGames</a></li> <li> tw: <a href="http://twitter.com/ticktockgames">http://twitter.com/ticktockgames</a></li> </ul> <h1> ECg - getting to the heart of the issue</h1> <div> When we started the port of BurnZombieBurn, we knew performance was going to be a massive issue. This was, after all, a game that was designed to look and play amazing on a PS3. However, we also had the small issue that Cg, which the PS3 game uses heavily, was just not available on Mobile devices.</div> <div> With this in mind, before even attempting to port to the Android we created a PC reference build and ripped out the Cg libraries from the game's beating heart and replaced it with a thin Cg API implementation of our own, which redirected all the Cg calls to GLES compatible functions.</div> <div> Of course, all the Cg shaders had to be refactored into GLSL. We originally thought this would be a complete nightmare; there were literally hundreds of shaders! Since we did not have the original source game assets we wrote code to extract the source from the game's data files and performed analysis on usage.</div> <div> We quickly realised we could create a hash from the shader's source code and redirect this to our refactored GLSL code. Not only that but we could reduce the number of unique shaders to a very manageable 30.</div> <div> ECg worked extremely well, and we very quickly resolved our bugs and our PC/GLSL reference build was running beyond our expectations.</div> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/burn_1.png" style="width: 320px; height: 307px; float: right;" /></div> <br /> <h1> Initial port to Android</h1> <div> Here at TickTock we are no strangers to Android development. Before embarking on this latest adventure we had already shipped six other Android games.</div> <div> However, our partners at NVIDIA were keen that we should use their newly released <a href="https://developer.nvidia.com/tegra-android-development-pack">TADP</a> (Tegra Android Developer Pack) with Visual Studio Integration. Up until this point we&rsquo;d had to spend a considerable amount of time streamlining our Android development pipeline.</div> <div> NVIDIA&rsquo;s single install TADP ( Tegra Android Development Pack ) gives you everything you need for Android native development. 15 minutes of install time and you can start development out of the box, no matter if your preferred development environment is Eclipse or Visual Studio. I just wish it had existed when we started Android development. I can&rsquo;t recommend TADP enough.</div> <div> With TADP installed, it was just a case of adding a new platform to our PC reference build. As the game was built for the PS3, it would just compile on the Android GCC compilers, right? Well, no. GCC had moved on a bit and we had some very interesting compiler errors. However, being able to work in the familiar environment of Visual Studio meant we could quickly jump around the code, diagnose the issues and fix them.</div> <div> After stitching in a bit of Java to get the basic Android lifecycle, it wasn't long before we could hit the build solution and spit out an APK ready to start testing on Android.</div> <br /> <h1> It&rsquo;s ALIVE!</h1> <div> With great trepidation, we ran the game for the first time. Expectations were very low that anything would work so early on. We&rsquo;d set the screen to clear with random colours, so if we saw flashing colours on the screen that in itself would be a huge step.</div> <div> I&rsquo;ve been at this point in the development process countless times, but what happened next was a genuine surprise. We had no flashing colours. Out of the blue, the music started playing. The only bit of middleware used in BZB is FMOD. If audio in game development isn&rsquo;t your thing, this result really is testament to how good an API FMOD is.</div> <div> Despite being a bit perplexed as to why we had no flashing colours, we decided to take things one step further and redirected a screen touch to act as the fire/select button. To our amazement, we found we could get right into the game. We started hearing the groans of the undead and the screams of our invisible hero Bruce as the zombies attacked. Probably a good reason to be scared of the dark.</div> <div> We felt it was only fair for Bruce to get the game rendering. To do so we took advantage of<a href="https://developer.nvidia.com/nvidia-perfhud-es"> PerfHUD ES</a>, the tool that gives you complete control of development. As any graphics developer will know, getting things rendering at the beginning of a new project where you have no existing code to draw upon is always tough. Doing so on mobile platforms even more so.</div> <div> PerfHUD ES, takes all the GL Commands from your mobile device and reconstructs them in its own Windows App. You get performance statistics, the ability to see stage by stage how your scene is built, from the comfort of your own PC. Throughout the development of BZB, we began to see the power of this tool and discovered really cool ways to use the information it provided.</div> <div> So through looking at the GL callstack and examining our render states, both features of PerfHUD ES, we quickly worked out we needed to modify the way we attached the Z Buffer to the render target and add a little extra code to present the screen.</div> <div> It wasn't long before we had our parity Android build running at a staggering 0.5fps. It looked amazing. It sounded amazing. The trouble was, it didn&rsquo;t take a super hero to work out it was completely unplayable!</div> <div> &nbsp;</div> <h1> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/bzb2_0.jpg" style="width: 600px; height: 337px; float: center;" /></h1> <h1> Pacemaker</h1> <div> It was a long, hard road getting BZB running at a decent frame rate. When we initially started talking to people about this project, most people thought it was impossible and crazy. A few people at NVIDIA believed that it was possible, but even they knew it would be hard.</div> <div> Very quickly we worked out we were CPU locked. Unfortunately for us, the Performance Analyser that is now part of the TDK wasn&rsquo;t available. Fortunately, we had our PC parity build, so to understand where our CPU cycles were going we profiled that. It wasn&rsquo;t perfect but it gave us a good view on where best to spend our time.</div> <div> The biggest bottleneck was somewhat of a surprise. It turned out it was taking a considerable amount of time sorting the game's geometry into depth order. Clearly, on the PS3/PC, this wasn&rsquo;t an issue, so we quickly implemented a few performance counters on the Android version and found the process was taking a minimum of 80ms per frame!</div> <div> The camera system in Burn Zombie Burn is always above the action, so this was a fantastic opportunity to pre-sort the geometry on load time and cut that whole process out.</div> <div> With this issue out of the way, we discovered the next CPU bottleneck was the animation and skinning. We&rsquo;d been advised by NVIDIA that it was probably best to keep the skinning on the CPU, so we set about optimising the old fashion way. First, we wrote code to find the most significant bone blending influence so we could reduce the number of bone influences per vertex from 4 to 1. I can imagine any graphic designers cringing at the thought of this and to be honest our original plan was to implement this as a level of detail. However, we abandoned this idea and stuck with the original optimisation as even the most critical eye couldn&rsquo;t see a difference.</div> <div> The game was now running between 6 to 9 fps and things were starting to get exciting. The game was playable; now it was just a case of getting the frame rate higher to get the responsiveness and smoothness we wanted.</div> <div> At the time, we were targeting the Tegra3 chipset, so we knew we wouldn&rsquo;t have the bandwidth to do full screen post process effects. This was something that Burn Zombie Burn needed so we had to come up with alternative solutions for things like fire. Although it didn&rsquo;t quite look the same, we tried to get it looking as similar as possible.</div> <div> Although we had started doing some heavy duty optimisations to the game, we made sure we could switch these on and off, so we could drop back to the Android Parity build at any time. As a team there were a LOT of arguments about this, but it was the best thing we could have done. It meant that as we found bugs in the game, we could quickly work out if it was due to our optimisation or due to an assumption made during the original porting process.</div> <div> We&rsquo;d now got the game up to 12fps; still not fast enough, but the momentum was finally on our side.</div> <div> It was time to fire up PerfHUD ES again to see what was going on. We started looking at the Polygon count; our brief was to use the original PS3 assets, so reducing them wasn&rsquo;t really on the agenda. However, they did seem ridiculously high. It turned out that all the geometry was rendered with indexed tri-strips, and the extra triangles were the degenerates. Fixing this was simple; on load time we just converted them to index tri-lists. The tri count was literally halved and the frame rate increased slightly.</div> <div> PerfHUD ES also showed us that we needed to get our geometry into VBOs. Fortunately, the original game engine did allow us to implement this relatively easily. However it took slightly more work than we originally planned as each section of geometry created a different VBO for each type of element within the vertex buffer. Ideally we needed them interleaving.</div> <div> Being able to see how the textures were rendered allowed us to rule out issues there. Tegra chipsets support DXT1/5 texture compression which is what was embedded into the game assets.</div> <div> The ability to look at shader usage from within PerfHUD ES gave us an amazing insight for optimisations. The ability to edit them on the fly and upload them back to device was really useful. Initially, it helped to get rid of the issues we introduced when we first refactored the code from Cg to GLSL. Later, it helped us optimise our shaders, moving things from the fragment shader to the vertex shaders to help improve performance whilst ensuring the changes didn&rsquo;t spoil the look of the game.</div> <div> As we reached the 25fps mark, we finally started to see the light at the end of a tunnel, until one October morning when a mysterious package arrived.</div> <br /> <h1> Shields up; it&rsquo;s time for a Zombie BBQ</h1> <div> The contents of the package were several circuit boards and a clear plastic housing. No instructions; this was clearly something cool, new and hot off the press from NVIDIA.</div> <div> We put our new and mysterious device together to find it was Android based so we did what any developer would do, we ran our game on it. To say we were blown away was an understatement. With no changes from our Tegra3 version BZB was running at 60fps, never dropping a frame. Very exciting!</div> <div> Our friends from NVIDIA asked us if we could produce a demo of the game which would show off what this hardware could do.</div> <div> It was time to look at our optimisation switches. Surely this hardware wasn&rsquo;t capable of all the post process effects?</div> <div> Enabling them was simple, we hit the switch and although the frame-rate dropped significantly, the game was still running at just over 20fps. This was with all the PS3 post process effects enabled. We spent a considerable amount of time on optimising the shaders and talking with NVIDIA&rsquo;s tech team on how we could achieve the same effects using less GPU power. In the end, the game was running at a respectable 40fps.</div> <div> Our reward was to find out that BZB was going to be shown to the press at the CES when the Tegra4 was announced. The long days and the lost weekends were starting to feel like a price worth paying.</div> <div> &nbsp;</div> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/bzb1.jpg" style="width: 700px; height: 336px;" /></div> <br /> <h1> Lifecycle</h1> <div> Looking back at the project, handling the Android Lifecycle was something we should have dealt with a bit sooner. We left it until the end of the project. We needed to prove it would fit in memory, run fast enough and be playable from a touch interface. We've done other Android games in the past and we believed we knew how to deal with the Android lifecycle very well.</div> <div> However, this was not the best of ideas. Getting BZB working with the Android lifecycle was a real challenge. The assets with the game were compressed, so having these assets in an APK lead to abysmally slow load times (we are talking minutes).</div> <div> We had to then restore the GL context, which meant restoring the VBOs, FBOs and Textures.</div> <div> A nice little trick we learnt when dealing with restoring the GL context was to use PerfHUD ES to save the GL state to a text file before locking the device. Once the device is locked we allowed the game to restore and use PerfHUD to again save the GL state to a new text file. We then simply used a text comparison tool to see what the difference was. This process must have saved us days of work, as we quickly figured out where the issues resided.</div> <div> A nasty issue that we had significant issues fixing was with OpenSLES. Previously, for all things sound related, we&rsquo;d gone down the Java route but FMOD gave us the choice between this and OpenSLES. The Java route gave us a performance hit. However, we found out later OpenSLES has caught a lot of developers off guard with lifecycle issues. In the end, we had to make quite radical changes, shutting down the whole audio system when the game was paused and reloading everything when the game was restored.</div> <br /> <h1> It&rsquo;s Alive!</h1> <div> For those who have never played BZB, the game is huge! During the development of the Android version, we played this game a LOT. Even now when playing we see little things in the animations, features of the vast array of weapons and game elements we&rsquo;d not appreciated. The game is so rich and a true testament to the team who produced the original PS3 game. It really is a work of love.</div> <div> NVIDIA were very supportive during development, providing us with great hardware and amazing tech support. Their tools and team allowed us to spend less time finding the problems and more time to concentrate on solving them. Their engineers were fantastically helpful and stopped us from taking dead ends when exploring ways to bring this product to market.</div> <div> I don&rsquo;t think many people would argue; bringing the PS3 version of Burn Zombie Burn to Android was always going to be a tough project. I&rsquo;m very proud of what our team learnt and achieved during the development of this game. Hopefully, for those who have just started dipping their toes into Android development this article will give you some ideas on how to maximise the platform. Good luck.</div> <div> &nbsp;</div> <div> &nbsp;</div> NVIDIA Developer Blog GeForce Developer Stories: Adding Rigid Body support to HAWKEN for massive destruction http://developer.nvidia.com/node/712257 <p>Winner of 10 E3 awards, HAWKEN is a Free-to-Play online FPS developed by Adhesive. Built using the Unreal Development Kit (UDK), it features giant robots fighting in a ruined city.&nbsp;</p> <p>The video below shows a HAWKEN demo level that we showed at GDC 2013 and other events. We designed it from the ground up to be completely destructible and support multiplayer.</p> <p>We used <a href="https://developer.nvidia.com/apex-destruction">APEX Destruction</a> to create buildings with walls that crumble, leaving thousands of GPU rigid bodies strewn about the level. Here&rsquo;s a look at how we did it.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://developer.nvidia.com//www.youtube.com/embed/HIOVGSGyirc?list=PLovDHjfAviJvlW2OFmhK-OpWugmnBGdxs" width="560"></iframe></p> <br /> <br /> <h1> What is APEX Destruction?</h1> <p><a href="https://developer.nvidia.com/apex">APEX</a> is a suite of products that we built on top of <a href="https://developer.nvidia.com/technologies/physx">PhysX</a> to make it easier for content creators to put physically simulated effects into games. APEX Destruction has two parts: authoring and runtime.&nbsp; The authoring can be done through the PhysXLab standalone tool or with our plugins for Max and Maya. For destruction, the artist imports level geometry, and then specifies how it should break. The APEX runtime then takes these files and uses PhysX to implement destruction in response to collisions.</p> <p>There are two possible methods of doing destruction: pre-fractured and runtime. For this project we used pre-fractured destruction, we designed how the level geometry should fracture in the authoring tool. When destruction happens in the game, APEX swaps the un-destructed asset with the pre-fractured asset and then PhysX calculates the motion of the chunks. The pre-fracturing is done in a hierarchical manner.&nbsp; In each successive level of the hierarchy, the tool (or artist) splits each chunk into multiple smaller chunks. This gives the artist a lot of control with how the initial fracturing occurs at the coarse levels, and allows the player to break big chunks into smaller ones. This also provides an elegant way of dealing with Level of Detail (LOD) within the game, as well as scaling from low end platforms to machines that can run destruction on the GPU.</p> <br /> <br /> <h1> HAWKEN is a networked multiplayer game.&nbsp; What challenges does this bring?</h1> <p>One goal of this project was that destruction should affect game play. For example, we wanted to make it possible for you to blow a hole through a wall and then shoot through that hole at an opposing player.</p> <p>This means that destruction had to be synchronized over the network. We had to make sure that all players would see the same shaped holes in the scenery, however the exact motion of the fractured debris was not critical to game play, so that did not need to be the same for all clients. As a result, we could make the debris more plentiful with higher detail for players with more powerful machines. This is where GPU acceleration becomes important.</p> <br /> <br /> <h1> So how does the destruction scale?</h1> <p>When a wall gets destructed, it breaks into chunks. The smaller and more numerous the chunks, the cooler it looks. As HAWKEN is a multiplayer game, many walls can be destructing at the same time. Without GPU computation, it is only possible to simulate a small number of chunks in each wall. With GPU acceleration, hundreds of chunks can be simulated.</p> <br /> <br /> <h1> Why can the GPU simulate more chunks?</h1> <p>Simulation is naturally parallel. Each chunk can be simulated on a separate thread with communication between threads when objects collide. CPUs can run tens of threads at once, but GPUs can run thousands of threads at once.</p> <br /> <br /> <br /> <h1> Since the GPU can do more chunks, does authoring GPU content cost more art time?</h1> <p>No. The tool chain can automatically produce higher levels of destruction detail, which can be controlled by the content creator. One method of authoring destruction is Voronoi fracture. The authoring tool cuts up objects according to placed points. They can be placed at random, making it easy to add more detail by adding more points. This means that it needn&rsquo;t cost more to support higher resolution destruction on the GPU.</p> <br /> <br /> <h1> What was particularly hard about the HAWKEN demo?</h1> <p>Almost everything in the level is destructible. This is not typical of most games. If two adjacent walls are destructed, then the debris from one wall can add to the pile of debris from the other wall. Due to the parallelism of the GPU, the simulation handles the changing workload size gracefully. Still, care must be taken to ensure that the lighting and rendering in the game can scale similarly.</p> <p>Many game engines are designed to display a few hundred dynamic objects. Debris may add tens of thousands of objects, so we had to make sure that the game renderer could handle this.</p> <p>For this demo, we deliberately went over the top with the detail and quantity of destruction to showcase the technology. With a full game you have to design the destruction to maximize the visual appeal, while minimizing the simulation and rendering cost.</p> <br /> <br /> <h1> What is hard about doing rigid body dynamics on the GPU?</h1> <p>Some types of physics are easier to map to the GPU than others. For example, in a grid-based fluid simulator, the data can be laid out linearly, every thread needs to read about the same amount of data, and every thread does about the same amount of work. Yet the world we live in is very sparse, environments are huge, some areas have lots of solid matter, and others are just air. The distribution varies considerably. Also, destruction looks most impressive when you have a wide range of object sizes. This means that uniform grids don&rsquo;t work, data has to be gathered from many different places in memory, threads process different amounts of data, and that takes various amounts of time. It is a complex problem to solve. Fortunately, PhysX GPU Rigid Bodies (GRB) takes care of all this for you.</p> <br /> <br /> <h1> How do developers get hold of APEX destruction?</h1> <p>To find out more about downloads, licensing and other issues, head over to the <a href="https://developer.nvidia.com/physx-downloads">download page</a> on developer zone.</p> <p>&nbsp;</p> <h1> Where do you see physics and simulation in five years&rsquo; time?</h1> <p>We see physics resolution scaling just like graphics resolution did. Remember when you played DOOM for the first time at 320*200? You probably had an idea of how much better it would have looked if it were higher resolution. Then resolution got better every year, until we got to where we are now, with screenshots that can look indistinguishable from reality.</p> <p>Physics has the same evolution ahead. We&rsquo;re still at the 320*200 stage, in the Hawken level the walls are breaking into chunks about the size of basketballs. Every year the chunks will get smaller, with more varied sizes and more geometric detail in the chunks. In five years, we&rsquo;d like to have complete scalability, crushing big boulders down to specks of dust, but we&rsquo;ll see&hellip;</p> <br /> <br /> <h1> To find out more</h1> <p>Head over to NVIDIA Developer Zone to find more information on APEX, PhysX and other technolgies from the leader in visual computing</p> <ul> <li> To see the PhysXlab tool in action follow this <a href="https://developer.nvidia.com/apex-destruction-physxlab-tutorials">link</a>:</li> <li> <span style="font-size: 12px;">To see more destruction follow this <a href="https://developer.nvidia.com/apex-destruction">link</a>:</span></li> </ul> <p>&nbsp;</p> NVIDIA Developer Blog NVIDIA SHIELD OTA Update adds support for Tegra Developer Tools http://developer.nvidia.com/node/711940 <p>Made available on August 29th, the latest <b>NVIDIA SHIELD Software Update 59</b> adds support for Tegra developer tools, <b>CPU sampling profiler (<a href="https://developer.nvidia.com/tegra-profiler">Tegra Profiler</a>)</b> and <b> GPU analysis (<a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES</a>)</b>, solidifying SHIELD&rsquo;s position as the premiere platform for Android gaming and graphics development. Future OTA updates to SHIELD will continue to improve support for these tools.</p> <p>Download and install the latest NVIDIA SHIELD software update by going to <b>Settings -> About SHIELD -> System updates</b> on your NVIDIA SHIELD.</p> <p>With this OTA update, the NVIDIA SHIELD now fully supports all tools included in the latest <b><a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a>, starting with the 2.0r5 release</b>. <b>Download</b> the latest version at <b><a href="https://developer.nvidia.com/tegra-resources">Tegra Resources</a></b>.</p> <p>To get started on developing on NVIDIA SHIELD, head over to <b><a href="https://developer.nvidia.com/how-getting-started-shield-development">HOW TO: Getting Started on SHIELD development</a></b> for detailed instructions on setting up your development environment and installing the tools neccessary to develop apps for NVIDIA SHIELD.</p> <p>Learn more about the <b>NVIDIA SHIELD Software Update 59</b> <a href="http://shield.nvidia.com/release-notes/">here</a>.</p> <p>-- NVIDIA Developer Tools Team</p> NVIDIA Developer Blog NVIDIA Nsight Visual Studio Edition 3.1 Final Now Available with Visual Studio 2012, Direct3D 11.1 and CUDA 5.5 Support! http://developer.nvidia.com/node/705726 <p>The NVIDIA Developer Tools team is proud to announce the final release of <a href="https://developer.nvidia.com/nvidia-nsight-visual-studio-edition"><b>NVIDIA&reg; Nsight&trade; Visual Studio Edition 3.1</b></a>, an application development platform for heterogeneous systems. This new release officially supports <b>Visual Studio 2012</b>, <b>Direct3D 11.1</b>, (OpenGL) <b>bindless graphics</b> and <b>CUDA&reg; 5.5</b>.</p> <p>Please note that this release of Nsight&trade; Visual Studio Edition requires <b>NVIDIA Display Driver Release 319 or newer</b>.</p> <h3> <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Register</a></u> for free access to <a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-downloads"><u><b>download</b></u></a> (<a href="https://developer.nvidia.com/access-nsight-visual-studio-edition-registered-developer-program"><u>login</u></a> to <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Registered Developer Program</a></u> required).</h3> <ul> <li> Visual Studio 2012 is now supported.</li> <li> <b>Direct3D 11.1</b> is now supported.</li> <li> Official support for <b>Microsoft Windows 8</b> operating system.</li> <li> Support for <b>CUDA 5.5</b> Toolkit.</li> <li> Support for <b>Direct State Access (DSA)</b> feature of OpenGL.</li> <li> Frame Debugging for (OpenGL) <b>bindless graphics</b> is now supported.</li> <li> Improved Frame Debugger's event view and performance overhead improvements when tracing DirectX or OpenGL applications.</li> </ul> <p>&nbsp;</p> <p><i>Beginning with this version, the standalone Nsight&trade; Visual Studio Edition installer will no longer bundle the CUDA Toolkit. Please obtain the latest version of CUDA 5.5 (available at <a href="http://www.nvidia.com/getcuda">http://www.nvidia.com/getcuda</a>) prior to installing Nsight&trade; Visual Studio Edition if you are using the compute feature set.</i></p> <p>We encourage all users to send feedback and report issues at the <a href="https://devtalk.nvidia.com/default/board/84/">Nsight&trade; Visual Studio Edition forums</a> or within the Nsight&trade; Visual Studio Edition Registered Developer Program to help improve the quality of the software for future releases.</p> NVIDIA Developer Blog Tegra Android Development Pack 2.0r5 Released! http://developer.nvidia.com/node/698439 <p>We are proud to announce the release of <b>Tegra Android Development Pack 2.0r5</b><b>, the ultimate </b>companion for developing native Android applications. <b>Tegra Android Development Pack (TADP) </b>is a single package that sets up an Android development environment and installs all software tools required to developing for Android.</p> <p><b>Release Highlights</b></p> <ul> <li> Added support for <b>NVIDIA Tegra&reg; 4</b>, including <b>NVIDIA&reg; SHIELD&trade;</b>.</li> <li> Official support for the Windows 8 platform.</li> <li> Updated to the latest tools (<a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES 2.0</a>, <a href="https://developer.nvidia.com/tegra-profiler">Tegra Profiler 1.3</a>) and SDKs (Android SDK/NDK, Ant, JDK). See <a href="https://developer.nvidia.com/tegra-android-development-pack">this</a> for full listing.</li> <li> An updated <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight&trade; Tegra&reg;, Visual Studio Edition</a> includes support for Microsoft Visual Studio 2012. See <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight&trade; Tegra&reg;, Visual Studio Edition</a> for full list of updates.</li> <li> Latest samples, tips and documentation for Tegra Android development.</li> <li> Numerous performance and stability enhancements.</li> </ul> <p>A complete list of features can be found at the <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a> main page.</p> <p><b>Download TADP</b></p> <p><i>Updated 08/22/2013 - Fixed minor issue with installer. Please download new files if you are having trouble installing. Thanks. </i></p> <p><b>To download TADP</b>, you must be a member of the <a href="https://developer.nvidia.com/tegra-registered-developer-program">Tegra Registered Developer Program</a>. To join simply <a href="https://developer.nvidia.com/programs/tegra/register">create a new account</a> (it's free and easy) and then visit <a href="https://developer.nvidia.com/develop4tegra">Develop for Tegra</a> or the <a href="https://developer.nvidia.com/tegra-resources">Tegra Resources</a> page and download the version of TADP for your platform.</p> <p><b>Please note: SHIELD support requires an over-the-air (OTA) OS update to enable developer support. The update is expected to roll out to all devices near the end of August 2013. An announcement will be made to <a href="https://developer.nvidia.com/tegra-registered-developer-program">Tegra Registered Developer Program</a> members when the OTA becomes available. </b></p> <p>Enjoy!</p> <p>The NVIDIA Developer Tools Team</p> NVIDIA Developer Blog Getting Started with NVIDIA SHIELD http://developer.nvidia.com/node/582374 <p>We hope you're as excited about <a href="http://shield.nvidia.com/" target="_blank"><strong>NVIDIA&reg; SHIELD&trade;</strong></a> as we are! &nbsp;While we will be posting deeper technical information about SHIELD soon, we wanted to give you some immediate guidance on what you can do to prepare your games today for the ultimate mobile experience. &nbsp;Here are some tips to make sure your games work seamlessly with SHIELD:</p> <h1> Android Apps</h1> <h3> Support Landscape Mode Gaming</h3> <p>SHIELD is a landscape format device. &nbsp;It can also be attached to a TV through HDMI. &nbsp;Therefore games for SHIELD should be created for landscape mode.</p> <h3> Support the Controller</h3> <p>Games should take advantage of the console grade controls built into SHIELD. &nbsp;Tilt and touch are also available even when the device is connected to an external display though HDMI. A <a href="http://docs.nvidia.com/tegra/data/How_To_Support_Android_Game_Controllers.html" target="_blank">How To Guide</a> is available for adding support for game controllers to Android apps.</p> <p>&nbsp;</p> <h1> PC Streaming</h1> <p>One of Shield's exciting new features is the ability to stream games from your PC. This means that certain considerations must be given to ensure that your game is designed for the best experience possible. We will be publishing a tuning guide for PC games on NVIDIA&reg; SHIELD&trade; in the near future.</p> <p>More developer information will be made available soon.</p> <h3> Support the Controller</h3> <p>PC games are generally built for mouse and keyboard. &nbsp;SHIELD has neither so build your UI around the controller.</p> <h3> Support the Screen Size</h3> <p>Text that is readable on a computer monitor can become hard to read on a 5" screen. &nbsp;Consider rescaling your UI for the smaller screen.</p> <h1> Next Steps</h1> <p>For all the latest tools, tips and information about developing for SHIELD, be sure to check out the <a href="https://developer.nvidia.com/develop4shield">Develop4SHIELD</a> and the <a href="https://developer.nvidia.com/tegra-resources">Tegra Resources</a> pages.</p> <p>If you have technical questions, feel free to post it in the <a href="https://devtalk.nvidia.com/default/board/105/android-development/" target="_blank">Android Development</a> section on our DevTalk forums. We will do our best to answer them there.&nbsp;</p> <p>&nbsp;</p> NVIDIA Developer Blog CUDA Spotlight: GPU-Accelerated High Energy Physics http://developer.nvidia.com/node/678607 <p>This week&rsquo;s Spotlight is on Valerie Halyo, assistant professor of physics at Princeton University.</p> <p>Researchers in the field of high energy physics, such as Valerie, are exploring the most fundamental questions about the nature of the universe, looking for the elementary particles that constitute matter and its interactions.</p> <p>One of Valerie&rsquo;s goals is to extend the physics accessible at the Large Hadron Collider (LHC) at CERN in Geneva, Switzerland to include a larger phase space of the topologies that include long-lived particles. This research goes hand in hand with new ideas related to enhancing the &ldquo;trigger&rdquo; performance at the LHC.</p> <p>(In particle physics, a trigger is a system that rapidly decides which events in a particle detector to keep when only a small fraction of the total can be recorded.)</p> <div class="caption aligncenter" id="attachment_1752" style="width: 675px"> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/cuda/images/parallel-forall/CUDASpotlights/lhc.big_.jpeg" style="width: 675px; height: 440px;" /><br /> <p class="caption-text">Large Hadron Collider (courtesy CERN)</p> </div> <p style="text-align: center;">Read Valerie&rsquo;s full Spotlight <a href="http://www.nvidia.com/content/cuda/spotlights/valerie-halyo-princeton.html">here</a>. Here is an excerpt:</p> <p><strong><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/cuda/images/parallel-forall/CUDASpotlights/valerie-halyo-princeton-150x150.png" style="width: 150px; height: 150px; float: left; margin-right: 10px; margin-bottom: 10px;" />NVIDIA: How can GPUs accelerate research in this field?</strong></p> <p><strong>Valerie: </strong>The Compact Muon Solenoid (CMS), one of the general-purpose detectors at the LHC, features a two-level trigger system to reduce the 40 MHz beam crossing data rate to approximately 100 Hz.</p> <p>(In particle physics, a trigger is a system that rapidly decides which events in a particle detector to keep when only a small fraction of the total can be recorded.)</p> <p>The Level-1 trigger is based on custom hardware and designed to reduce the rate to about 100 kHz, corresponding to 100 GB/s, assuming an average event size of 1 MB.</p> <p>The High Level Trigger (HLT) is purely software-based and must achieve the remaining rate reduction by executing sophisticated offline-quality algorithms. GPUs can easily be integrated in the HLT server farm and allow, for example, simultaneous processing of all the data recorded by the silicon tracker as particles traverse the tracker system.</p> <p>The GPUs will process the data at an input rate of 100 kHz and output all the necessary information about the speed and direction of the particles for up to 5000 particles in less than 60 msec. This is more than expected even at design luminosity. This will allow for the first time not only the identification of particles emanating from the interaction point but also reconstruction of the trajectories for long-lived particles. It will enhance and extend the physics reach by improving the set of events selected and recorded by the trigger.</p> <p>While both CPUs and GPUs are parallel processors, CPUs are more general purpose and designed to handle a wide range of workloads like running an operating system, web browsers, word processors, etc. GPUs are massively parallel processors that are more specialized, and hence efficient, for compute-intensive workloads.</p> <p><strong>NVIDIA: What approaches did you find the most useful for CUDA development? </strong><br /> <strong>Valerie: </strong>Our work includes a combination of fundamental algorithm development and GPU implementation for high performance. Algorithm prototypes were often tested using sequential implementations since that allowed for quick testing of new ideas before spending the time required to optimize the GPU implementations.</p> <p>In terms of GPU performance it&rsquo;s a continual process of implementing, understanding the performance in terms of the capability of the hardware, and then refactoring to alleviate bottlenecks and maximize performance. Understanding the performance and then refactoring the code depends on knowledge of the hardware and programming model, so documentation about details of the architecture and tools like the Profiler are very useful.</p> <p>As a specific example, the presentation at GTC 2013 by Lars Nyland and Stephen Jones on <a href="http://on-demand.gputechconf.com/gtc/2013/presentations/S3101-Atomic-Memory-Operations.pdf">atomic memory operations</a> was especially useful in understanding the performance of some of our code. It was a particularly good session and I&rsquo;d recommend watching it online if you weren&rsquo;t able to attend.</p> <p><strong>NVIDIA: Beyond triggering, how do you envision GPUs helping to process or analyze LHC data?</strong></p> <p><strong>Valerie</strong>: Reconstruction of the particle trajectories is essential both during online data taking and offline while we attempt to reprocess data that was already archived and stored for further analysis, so faster reconstructions improve the turnaround of new results.</p> <p>In addition, experiments have to deal with massive production of Monte Carlo data each year. Billions of events have to be generated to match the running conditions of the collision and detector while data was taken. Improvements in the speed of reconstruction allow higher production rates and better efficiency of the computing resources, while also saving money.</p> <p><strong>NVIDIA</strong>: <strong>What advice would you offer others in your field looking at CUDA?</strong></p> <p><strong>Valerie</strong>: Even if you aren&rsquo;t directly developing and optimizing code it&rsquo;s clear that the future is massively parallel processors, and having a basic understanding of processor architecture and parallel computing is going to be important.</p> <p>A great algorithm design isn&rsquo;t very useful if it can&rsquo;t be implemented in an efficient way on modern parallel processors.</p> <p>Read <a href="http://www.nvidia.com/content/cuda/spotlights/valerie-halyo-princeton.html">the full interview</a>. Read more <a href="http://www.nvidia.com/object/cuda-in-action.html">CUDA Spotlights</a>.</p> <p>∥&forall;</p> <hr /> <p>Parallel Forall is the NVIDIA Parallel Programming blog. If you enjoyed this post, subscribe to the <a href="http://developer.nvidia.com/blog/feed/2">Parallel Forall RSS feed</a>! You may contact us via the <a href="http://developer.nvidia.com/content/contact-parallel-forall">contact form</a>.</p> <div id="author-info"> <div id="author-avatar"> <img alt="<a data-cke-saved-href="http://www.parallelforall.com/byline/calisa-cole/" href="http://www.parallelforall.com/byline/calisa-cole/" rel="tag">Calisa Cole</a>" class="avatar avatar-60 photo" height="60" src="http://www.parallelforall.com/wp-content/uploads/2013/06/Calisa-Cole-1-60x60.jpg" width="60" /></div> <!-- #author-avatar --> <div id="author-description"> <h2> About Calisa Cole</h2> Calisa joined NVIDIA in 2003 and focuses on marketing for CUDA, NVIDIA's parallel computing platform. Previously she ran Cole Communications, a PR agency for high-tech startups. She majored in Russian Studies at Wellesley and earned an MA in Communication from Stanford. Calisa is married and the mother of three boys. Her favorite non-work activities are fiction writing and playing fast games of online scrabble.</div> <!-- #author-link --></div> <!-- #author-description --><!-- #author-info --> NVIDIA Developer Blog NativeActivity Input Crashes and ANRs: A Simple fix for a Dangerous Bug http://developer.nvidia.com/node/655926 <p>Recently, as we have been testing applications and games for <a href="https://developer.nvidia.com/develop4shield">NVIDIA SHIELD</a>, we have found that a seemingly minor issue in Google&rsquo;s <a href="http://developer.android.com/reference/android/app/NativeActivity.html"><code>native_app_glue</code></a> source code (and thus in NVIDIA&rsquo;s <a href="https://developer.nvidia.com/tegra-android-development-pack">TADP</a> samples based on this code) is actually a serious issue on next-gen Android platforms. Specifically, the bug described in this posting makes it very common for pure-native games to hit an "ANR" (Application Not Responding) and crash in normal use. Fortunately, the fix is extremely simple.</p> <p>The basic problem is that the original <code>native_app_glue.c</code>&rsquo;s input handling does not process input events at a high enough rate, especially when both touch and external game controllers are present. This leads to the input pipeline backing up. This in turn leads Android to declare the application as &ldquo;not responding&rdquo;, and gives the user the option to kill it. The bug was uncommon on older devices but on systems with external USB or Bluetooth controllers or dedicated gaming controllers, such as SHIELD's in-built controller, the bug is easily reproducible.</p> <p>The bug is easy to diagnose. First, find your application&rsquo;s copy of native_app_glue.c. If you are using the NDK&rsquo;s version directly, that is normally:</p> <p><code>$NDKROOT/sources/android/native_app_glue/native_app_glue.c</code></p> <p>If you are using the NVIDIA TADP samples, it is:</p> <p><code>libs/jni/nv_and_util/nv_native_app_glue.c</code></p> <p>In the C file, find the function <code>process_input</code>and look for the line that calls <code>AInputQueue_getEvent</code>. If that call is of the form:</p> <p><code>if (AInputQueue_getEvent(app->inputQueue, &event) >= 0) {</code></p> <p>then you are using the original (buggy) version. The correct implementation of <code>process_input</code>is:</p> <p>&nbsp;</p> <pre class="prettyprint"> // Fix per Google for bug https://code.google.com/p/android/issues/detail?id=41755 static void process_input(struct android_app* app, struct android_poll_source* source) { AInputEvent* event = NULL; int processed = 0; while (AInputQueue_getEvent(app->inputQueue, &event) >= 0) { LOGV("New input event: type=%d\n", AInputEvent_getType(event)); if (AInputQueue_preDispatchEvent(app->inputQueue, event)) { continue; } int32_t handled = 0; if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event); AInputQueue_finishEvent(app->inputQueue, event, handled); processed = 1; } if (processed == 0) { LOGE("Failure reading next input event: %s\n", strerror(errno)); } } </pre> <p>&nbsp;</p> <p>Note the "while" loop to process more than one event in a call and the use of "continue" instead of "return". Swapping in the above version of <code>process_input</code>should avoid the ANR issues.</p> <p>NVIDIA will shortly update the TADP version of <code>native_app_glue</code>. However, this issue is common enough and dangerous enough that we wanted to provide a convenient and quick fix sooner than TADP's next release.</p> <p>Wishing all mobile (and yet-to-be-mobile) game developers the best at E3 next week!</p> NVIDIA Developer Blog NVIDIA Nsight Visual Studio Edition 3.0 Released with OpenGL Debugging and Kepler GK110 Support! http://developer.nvidia.com/node/638224 <p>The NVIDIA Developer Tools team is proud to announce the final release of <b>NVIDIA&reg; Nsight&trade; Development Platform, Visual Studio Edition 3.0</b>, an application development platform for heterogeneous systems. This new release officially supports <b>OpenGL</b> frame debugging and profiling, <b>GLSL</b> GPU shader debugging, local single GPU shader debugging, the new <b>Kepler&trade; GK110 architecture</b> found in Tesla&reg; K20 & <a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan">GeForce GTX TITAN</a>, and <b>CUDA&reg; 5.0</b>.</p> <p>This release requires <b>NVIDIA Display Driver Release 319 or newer</b>.</p> <h3> <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Register</a></u> for free access to <a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-downloads"><u><b>download</b></u></a> (<a href="http://developer.nvidia.com/user/login"><u>login</u></a> to <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Registered Developer Program</a></u> required).</h3> <p>Highlights of the new Nsight&trade; Visual Studio Edition 3.0 features:</p> <ul> <li> Support <b>OpenGL 4.2</b> for frame debugging, pixel history and frame profiling.</li> <li> Support for OpenGL <b>GLSL</b> GPU shader debugging. <ul> <li> <b>GLSL 3.3</b> and higher applications are supported on a remote debugging setup.</li> <li> <b>GLSL 4.2</b> core applications are supported on a local debugging setup.</li> </ul> </li> <li> Local, single GPU shader debugging and pixel history is now supported for HLSL and GLSL.</li> <li> Support for the <b>CUDA&reg; 5.0</b> Toolkit.</li> <li> Support for the <b>Kepler GK110</b> architecture (for example, found in the Tesla&reg; K20 & GeForce GTX TITAN).</li> <li> CUDA Dynamic Parallelism is now supported when building, debugging, and running analysis. For more information, see <a href="http://docs.nvidia.com/cuda/cuda-dynamic-parallelism/index.html">CUDA Dynamic Parallelism</a>.</li> <li> Attaching to a CUDA application during a kernel launch is now supported. Attachable programs will raise an attach dialog if a GPU assert or exception occurs.</li> <li> New CUDA Source-Level Experiments allow you to correlate profiling data to individual kernel source code lines, supporting CUDA-C, PTX, and SASS assembly.</li> <li> Support for hardware debugging of <a href="http://msdn.microsoft.com/en-us/library/hh265137%28v=vs.110%29.aspx">C++ AMP</a> applications directly on NVIDIA hardware.</li> <li> Many more improvements and new features. <a href="http://developer.nvidia.com/nsight-visual-studio-edition-3_0-new-features">Learn more</a></li> </ul> <p>A new version of <a href="http://developer.nvidia.com/nvidia-perfkit">NVIDIA PerfKit</a>, a suite of performance tools to help debug and profile OpenGL, Direct3D and CUDA applications, is also available on the <a href="http://developer.nvidia.com/nvidia-perfkit">NVIDIA PerfKit</a> page.</p> <p>We encourage all users to send feedback and report issues at the <a href="https://devtalk.nvidia.com/default/board/84/">Nsight&trade; Visual Studio Edition forums</a> or within the Nsight&trade; Visual Studio Edition Registered Developer Program to help improve the quality of the software for future releases.</p> NVIDIA Developer Blog $100,000 Toradex Design Challenge for Students and Research Institutions http://developer.nvidia.com/node/633200 <p>We come today to let you know about a wonderful competition that our good friends at Toradex are running. It's called the <a href="http://www.challenge.toradex.com">Toradex Design Challenge</a> and is open for students and other individuals at education and research institutions. It's an ongoing competition with an annual prize pool of $100,000 so if you're still in school or are planning a return to university, fear not!<br />  <br /> Of course, if you're studying or researching today put on your thinking cap! Your mission, should you choose to accept it, is to create a product from an original idea, utilising an NVIDIA® Tegra™ based Computer on Module Kit (worth $250 and provided free to qualifying projects). Examples on the Toradex website might fuel your imagination and twice a year the projects are judged, with prizes of up to $20,000 awarded to the winning teams.<br />  <br /> In addition to the kit, Toradex also offers participants software libraries, an online knowledge base, and technical support from their engineering team.<br />  <br /> To get everything you need and enter the competition head over to <a href="http://www.challenge.toradex.com">http://www.challenge.toradex.com</a>.</p> NVIDIA Developer Blog GDC 2013 Sponsored Sessions http://developer.nvidia.com/node/611468 <p>We know that GDC is a hectic time, and there is a lot of competition for your time when it comes to the many sessions at GDC. I'd like to suggest you hang out with us tomorrow in our sponsored sessions in the West Hall, Room 2002, as we have one of the best lineups we've had in years. Lets look at the lineup and you'll see why.</p> <p>10am-11am: <strong>NVIDIA&reg; Nsight&trade; Visual Studio Edition 3.0 - Catzilla Engine Development in DirectX 11 and OpenGL 4.2</strong></p> <p>Why did Kotaku call Catzilla, "<a data-id="" href="http://kotaku.com/5976313/catzilla-is-the-greatest-thing-you-can-install-on-your-pc-today">The Greatest Thing You Can Install On Your PC Today</a>"? Here's why: Giant Cats, Lasers, City-wide destruction, Tanks, and a healthy dose of benchmarking from the geniuses at Plastic. Want to know how they crushed rendering bugs of Catzilla proportions using NVIDIA Nsight? Spent an hour with us and you'll learn!</p> <p>Psst...haven't seen Catzilla? Now you can watch it here. You're welcome.</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/qrorYxRacTc" width="560"></iframe></p> <p>11:30 am - 12:30 pm: <strong>Post Mortem: GPU Accelerated Effects in Borderlands 2</strong></p> <p>The <a href="http://forums.gearboxsoftware.com/showthread.php?t=214145" target="_blank">award-winning Borderlands 2 game</a> redefined over-the-top visual effects that included some amazing fluid and physics effects. Want to see how it was done? That's right, spend ANOTHER hour with us and prepare for awesome. Seat belts are optional.</p> <p>(Then grab a quick lunch and be back at 1:00pm, because...)</p> <p>1:00 pm - 2:00 pm : <strong>Porting Source to Linux: Valve's Lessons Learned</strong></p> <p>In spite of what some famous non-game-developers think, NVIDIA <em>loves</em> Linux, and we want to see the game development community succeed with it. What better way to start than to listen and learn from what the trailblazers at Valve Software learned when they ported the Source Engine to Linux? Rich and John will specifically focus on the transition developers make when moving from Direct3D to the OpenGL API, including discussions about key differences, OS issues and pitfalls, tools, and licensing.</p> <p>2:30 pm - 3:30 pm: <strong>Enhancing Hawken and Planetside 2 Through Turbulence and Destruction</strong></p> <p>APEX is quickly becoming a content creator's secret weapon to create an amazing array of effects. This presentation will focus on the Turbulence and Destruction modules to help you understand how you can create similar effects in your games.</p> <p>4:00 pm - 5:00 pm: <strong>NVIDIA&reg; Project SHIELD and Tegra&reg; 4: Redefining AFK</strong></p> <p>A high-density talk on the details of Project SHIELD and Tegra 4, you will get the inside word on how to push the limits of mobile gaming and take advantage of everything that Project SHIELD and Tegra 4 have to offer. We will also divulge some hot tips and tricks when targeting Project SHIELD, give a fast overview of the latest NVIDIA development tools, and take an in-depth look at Tegra 4's new GPU features.</p> <p>5:30 pm - 6:30 pm: <strong>Moving Games into the Cloud, Technologies and Architectures</strong></p> <p>We didn't make GRID to be Yet Another Virtual Machine Server, we built this system from the inside-out thinking about the gaming experience! Come see why GRID breaks the mold of virtual gaming technology and brings several unique components, like optimal capture, efficient compression, fast streaming, and low latency &mdash; that make REAL cloud gaming possible.</p> <p>We look forward to seeing you tomorrow (March 28th)!</p> <p>Oh, and thanks for reading all the way to the end. This means you get a clue about a little bonus: We've been known to give out "thank you" gifts to folks that attend our sponsored sessions. Just sayin'.</p> NVIDIA Developer Blog Android Manifests 101: How to Maximize Your User Base http://developer.nvidia.com/node/609290 <p>When we were first putting together Android applications for Project SHIELD, we learned a few important lessons about Android Manifests. Our early attempts at smooth deployments were sometimes slowed down by small errors in manifests, so we&rsquo;d like to share here what we think are essential to giving your users a happy experience on Project SHIELD, as well as other Android platforms.</p> <p>During Android application development, programmers often need to add <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html#perms" target="_blank">permissions</a> to grant access to system resources or <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html" target="_blank">features</a>, or to express hardware requirements. Additionally, Google Play Store scans application manifests and adds implied permissions and <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#implicit" target="_blank">features</a>. The combination of these express and implied permissions and features define on which devices an application can run.</p> <p>When users search for applications on the Play Store, a device's screen parameters, permissions and features are used to filter out applications that are not applicable for the device. Developers must balance the need to avoid filtering where it is not applicable, with their list of must-haves. That is, it can actually be far MORE irritating to a user to download or purchase an application, only to have it not work on their device.</p> <p>Guidance from Google on the subject states:<br /> <em>"To control filtering, always explicitly declare hardware features in </em><code> <uses-feature></code><em>elements, rather than relying on Google Play to "discover" the requirements in </em><code><uses-permission></code><em>elements. Then, if you want to disable filtering for a particular feature, you can add a </em><code>android:required="false"</code><em>attribute to the </em><code><uses-feature></code><em>declaration.</em>"</p> <p>Developers can ensure that their user base is maximized by avoiding the specification of restrictive manifest elements and by relaxing requirements using the android:required attribute. Remember also that if you're stuck between two sets of potential manifests, you can always upload <a href="http://developer.android.com/google/play/filters.html#MultiApks" target="_blank">multiple APKs</a> with different permission sets.</p> <p>Top 5 incorrect permissions & features:</p> <ol> <li> Incorrect specification of supported screen sizes and densities.</li> <li> Assuming that a device is a phone based on screen density and forcing portrait display.</li> <li> Requiring fine location (which implies a GPS requirement) when coarse location will suffice. <ul> <li> Get more details on <a href="http://developer.android.com/guide/topics/location/strategies.html#Permission" target="_blank">location strategies</a></li> <li> Using coarse location is nearly always lower power - your users will thank you!</li> </ul> </li> <li> Failing to explicitly specify & set android:required="false" for non-required features.</li> <li> Failing to consider using input masks for screens that report touch and stylus events at the same time. <ul> <li> Ok, you caught me, this one is anticipated. But do keep in mind that up coming Android devices will have multiple flavors of screen "touches." Be sure to use <a href="http://goo.gl/eRdIC" target="_blank">getToolType()</a>.</li> </ul> </li> </ol> <p><a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features" target="_blank">Google's current list of permissions that imply features</a></p> NVIDIA Developer Blog NVIDIA WaveWorks introduced during GTC Keynote http://developer.nvidia.com/node/608317 <p>&nbsp;</p> <p>Yesterday&rsquo;s keynote from Jen-Hsun Huang, NVIDIA&rsquo;s CEO, showcased a lot of impressive technology and demos.&nbsp; We encourage you to watch the complete video below to see all the great announcements, but we would like to specifically call out the announcement of the NVIDIA WaveWorks, the real-time <a href="http://en.wikipedia.org/wiki/Beaufort_scale">Beaufort Scale</a> ocean simulation which was demonstrated during the keynote (the 7:45 mark if you don&rsquo;t want to wait).&nbsp;</p> <p>&nbsp;</p> <center> <iframe frameborder="0" height="302" scrolling="no" src="http://www.ustream.tv/embed/recorded/30095793?v=3&wmode=direct" style="border: 0px none transparent;" width="480"></iframe><br /> <a href="http://www.ustream.tv/" style="padding: 2px 0px 4px; width: 400px; background: #ffffff; display: block; color: #000000; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" target="_blank">Video streaming by Ustream</a></center> <p>&nbsp;</p> <p>This real-time simulated effect has been built into the NVIDIA WaveWorks library, which NVIDIA will provide to developers later this year.&nbsp; Tomorrow (March 21<sup>st</sup>), we will present a talk about this library in the Game Development Track, titled &ldquo;<a href="http://registration.gputechconf.com/quicklink/8wP0iCC">NVIDIA Graphics Technology Libraries for Real-time Rendering.</a>&rdquo;&nbsp; This presentation will be held in the Marriott Ballroom 4 from 5:00pm to 5:50pm.&nbsp; If you are attending the GPU Technology Conference, we encourage you to attend.&nbsp; If you&rsquo;re local to the Silicon Valley area, it&rsquo;s still not too late to purchase a one-day pass for tomorrow&rsquo;s Game Development sessions (the complete list of presentations for tomorrow is here: <a href="http://registration.gputechconf.com/quicklink/50otkrD">http://registration.gputechconf.com/quicklink/50otkrD</a>).&nbsp; We look forward to seeing you there!</p> <p>&nbsp;</p> <p><strong>UPDATE! </strong>&nbsp;The PDF of the slide presentation can now be found <a href="https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/GTC2013_GFX_libs.pdf">here</a>.</p> NVIDIA Developer Blog Maximizing PhysX-based particle effects in Planetside 2 http://developer.nvidia.com/node/587293 <p>The purpose of this article is to discuss how to incorporate GPU accelerated effects into a project without negatively impacting the overall performance and framerate of a game.<br /> <br /> <br /> The key to making this work is to run all visual effects independently of the main game thread and rendering pipeline. &nbsp;While the concept is simple, as always, the devil is in the details and there are a lot of things to consider to make this work properly.<br /> <br /> This presentation will be from the perspective of a developer planning to use the PhysX 3.x SDK and optionally the APEX SDK as well.<br /> <br /> The following is a short video clip showing GPU particle effects running inside of the game &lsquo;Planetside 2&rsquo; from Sony Online Entertainment. &nbsp;This video clip demonstrates all of the techniques discussed in this article working in a current generation MMO game engine.<br /> <iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/XbsJnixgr08" width="420"></iframe><br /> Most game integrations create a single physics scene (PxScene) where the bulk of the physics and collision detection processing occurs. &nbsp;This scene will typically contain the world representation and step each frame to correspond with the amount of time which has passed since the last one. &nbsp;Typically a game engine will enforce fairly strict requirements on how stepping the simulation is to occur. &nbsp;Consider the example where an application is using a fixed time step of 60hz but the current frame rate is at 30hz. &nbsp;In this example the physics will be simulated twice during each render frame to make sure that the physical simulation is caught up with &lsquo;real time&rsquo;. &nbsp;Many games today feature a multiplayer component, so keeping the simulation time extremely close to actual physical time is especially important to prevent the various clients from diverging appreciably. &nbsp;For games which experience highly varying frame rates, such as an MMO, this becomes even more critical to keep all of the connected players resolved within the same frame of reference. &nbsp;<br /> &nbsp;</p> <h2> The Well of Despair</h2> <p>Care has to be taken to avoid the &lsquo;well of despair&rsquo;; a state where more CPU is consumed to keep up with &lsquo;real-time&rsquo; which then, in turn, causes yet even more delay to be introduced. &nbsp;This can continue up the point where the simulation time cannot &lsquo;keep up&rsquo; with real-time. &nbsp;This creates a kind of death-spiral where more and more time is spent simply running the simulation in sub-steps trying to catch up to the real-world clock. &nbsp;Eventually something has to give, so tuning the amount of CPU consumed by the physics simulation even during low frame-rate situations is a challenge many game designs have to take into account. &nbsp;Using continuous-collision-detection and a variable time step is often a practical way to help deal with this problem. &nbsp;Some game engines use this approach, some do not, and some use a hybrid solution which incorporates a little bit of both within certain heuristic limits.</p> <p><br /> The PhysX SDK itself enforces no specific mechanism for stepping the simulation over time; this decision is left up to the application; with each approach having certain advantages and disadvantages that need to be taken into consideration.<br /> &nbsp;</p> <h2> Simulation Timing Requirements</h2> <p>The first time a game developer wants to add GPU accelerated particle effects to their title their natural instinct will be to create the particle simulation in the same primary scene as everything else. &nbsp;This makes sense, since the particles need to interact with the rest of the game environment and the primary scene already has all of that set up.</p> <p><br /> The problem with this approach is that most games require a specific synchronization point between the primary physics scene and a single logical frame for both game logic and graphics rendering. &nbsp;This synchronization point is used to allow all game objects in the world to get their graphics transforms updated with their current dynamic state.<br /> <br /> The problem with trying to run GPU physics effects in the primary scene is that they will inherit the same timing and synchronization requirements as everything else in that scene. &nbsp;Let&rsquo;s say the primary scene uses a 60hz fixed time-step and the game is running at 30hz; causing the simulation to occur twice in one frame. &nbsp;Since the GPU effects are in the same scene they too would get simulated twice in the same frame; which is a use case we would never want to occur. &nbsp;There should never be more than a single synchronization point per frame with GPU effects and, in fact, the goal is to introduce no explicit synchronization point at all. &nbsp;&nbsp;Since GPU effects are just that, &lsquo;effects&rsquo; which typically only exist in the game environment to enhance a visual element and would never directly affect gameplay, they do not have the same timing requirements as the rest of the dynamic objects in the scene.<br /> <br /> What is particularly problematic with this approach is that if the game begins sub-stepping which, in turn, causes the GPU simulation to sub-step, then rather than getting all of that extra GPU work &lsquo;for free&rsquo;, instead a potentially massive delay can be introduced while the simulation sits around waiting for multiple substeps of GPU work to complete. &nbsp;This could then potentially cause the &lsquo;well of despair&rsquo; to raise it&rsquo;s ugly head and send the whole simulation into a tailspin trying to &lsquo;catch up&rsquo;. &nbsp;These issues are exacerbated by games which have highly varying frame rates. &nbsp;For games which never drop below 60hz, under any condition, then most of these issues are not as big of a concern. &nbsp;However, for large scale MMO&rsquo;s where the frame rate can vary dramatically depending on whether there is one dynamic object in the scene or thousands, this can be a real problem.<br /> <br /> Another point to consider is that using a hard synchronization point to force CUDA compute work to be completed by the end of each graphics frame can create additional delays. Code which runs fine in an environment with limited graphics may exhibit larger and more variable latency under heavy graphics load.<br /> &nbsp;</p> <h2> The Mirror Scene Class</h2> <p>The first step to remove these dependencies is to create an additional physics scene (PxScene) for all of the GPU effects simulation to take place. &nbsp;This scene will not perform any sub-stepping (instead using a variable time step) and should use a minimum and maximum simulate time (for example, no greater than 60hz, no less than 10hz). &nbsp;While it may be extremely important for your primary scene to &lsquo;keep up with real-time&rsquo;, that would never be the case for the effects scene. Let&rsquo;s consider the pathological case where the frame rate has dropped to something horrible like say five frames per second. &nbsp;Rather than passing a simulation time of 1/5th of a second to the effects scene, you might pass 1/15th of a second instead. &nbsp;The only visual artifact that would arise from this is that the GPU particle effects might briefly appear as if they were simulating in slow motion; however if your baseline frame-rate is 5fps, you probably have much greater concerns than just some slowed down particle effects.</p> <p><br /> The first problem you will encounter when you create your effects scene, is that none of the geometry for your environment will exist within it. &nbsp;You may be able to create GPU effects but they will have nothing to collide with until you also have a copy of the world geometry inside it. &nbsp;Depending on your game environment you might accomplish this in one of two ways. &nbsp;First, you might simply insert each physics object you create in the primary scene also into the effects scene as well. &nbsp;Another approach is to mirror just a subset of the primary scene into the effects scene. &nbsp;<br /> <br /> This article provides an example implementation of a helper class called &lsquo;NxMirrorScene&rsquo; which automates the process of mirroring the contents of a primary physics scene into a secondary effects scene. &nbsp;<br /> <br /> To create the &lsquo;NxMirrorScene&rsquo; class you pass the following parameters.<br /> &nbsp;</p> <pre class="prettyprint"> NxMirrorScene *createMirrorScene(physx::PxScene &primaryScene, &nbsp;&nbsp;physx::PxScene &mirrorScene, &nbsp;&nbsp;NxMirrorScene::MirrorFilter &mirrorFilter, physx::PxF32 mirrorStaticDistance, &nbsp;&nbsp;physx::PxF32 mirrorDynamicDistance, &nbsp;&nbsp;physx::PxF32 mirrorRefreshDistance); </pre> <p><br /> The first two parameters specify the primary physics scene and the effects scene which will be used to mirror a portion of the primary scene. &nbsp;Next, the application provides a callback interface class called &lsquo;MirrorFilter&rsquo;. &nbsp;The MirrorFilter class is used to decide which actors and shapes should or should not be mirrored into the effects scene. &nbsp;This callback class also provides an opportunity for the application to make modifications to the actors and shapes which are to be mirrored prior to their being added to the effects scene. &nbsp;Finally, there are three heuristic parameters passed which define the radius to mirror static objects, the radius to mirror dynamic objects and a refresh distance.</p> <p><br /> Each frame, when the primary scene has completed it&rsquo;s simulation step, the application calls the method &lsquo;synchronizePrimaryScene&rsquo; passing in the current camera/origin location relative to the where objects should be mirrored. &nbsp;Each time the camera has moved past the user specified &lsquo;mirrorRefreshDistance&rsquo; the mirror scene class will update two trigger sphere shapes. &nbsp;Whenever new objects enter or leave these spheres (reflecting the radius to mirror both static and dynamic actors) the mirror scene class will be notified using the trigger event callback and create events to mirror those objects into the effects scene. &nbsp;This is all done in a thread safe way without creating any dependencies between the two scenes. &nbsp;In addition to updating the trigger shapes and processing trigger events, the call to &lsquo;synchronizePrimaryScene&rsquo; will also create a thread safe command list containing the current position of each mirrored dynamic object. &nbsp;The next time the effects scene simulation step completes, this command list will be processed so that the kinematically mirrored dynamic actors are revised to their current primary scene locations.<br /> <br /> The effects scene should be simulated from a completely separate thread than the primary scene; to achieve as much parallelism as possible. &nbsp;It also should be stepped in a non-blocking fashion so that there are no artificially introduced synchronization points. &nbsp;When the effects scene has finished a simulation step the application should call the mirror scene method &lsquo;synchronizeMirrorScene&rsquo;. &nbsp;At this point, any objects which need to be inserted or removed from the mirrored scene; which were previously posted during the &lsquo;synchronizePrimaryScene&rsquo; call are unspooled and processed from the separate thread.<br /> <br /> This article includes sample code demonstrating how to implement a mirrored physics scene. &nbsp;This sample is provided more as a learning tool than as source you should just put directly into your engine. &nbsp;The source is provided as the following four files which compile against the PhysX 3.2 SDK. &nbsp;Some minor changes may be required to get it to compile against different versions of the SDK.<br /> <br /> <a href="http://www.duatiu.com/MirrorScene.cpp">MirrorScene.cpp</a> : Contains the implementation of the NxMirrorScene class.<br /> <a href="http://www.duatiu.com/MirrorScene.h">MirrorScene.h</a> : Contains the header file for the implementation class.<br /> <a href="http://www.duatiu.com/NxMirrorScene.h">NxMirrorScene.h</a> : This is the public header file defining the pure virtual NxMirrorScene abstract interface.<br /> <a href="http://www.duatiu.com/PlatformConfig.h">PlatformConfig.h</a> : This header file contains macros which define system specific data types for memory allocation, mutex, and container classes. &nbsp;This should be modified to reflect your own platform requirements. &nbsp;The default header provided is configured for the Windows platform.<br /> <br /> The implementation of the mirror scene class makes heavy use of an STL hash map container to rapidly translate between the base actor and shape pointers in the primary scene to their corresponding versions in the mirror scene.<br /> <br /> An important note for the developer; this helper class assists in the process of mirroring actors between the primary scene and the effects scene only. &nbsp;It does not, however, handle the mechanism for releasing triangle meshes, convex hulls, and heightfields. &nbsp;This logic must be taken into account by your own game engine. &nbsp;Imagine the use case where you release an actor on the primary scene and then immediately release a triangle mesh which this actor had been using. &nbsp;If you are using the mirror scene class, this use case would cause undefined behavior, most likely a crash; because the mirrored scene actor would still have a reference to that triangle mesh. &nbsp;If you want to release triangle meshes, convex hulls, or heightfields, you will need to put them on a queue &lsquo;to be released&rsquo; once the mirror scene has had a chance to be simulated and the mirrored actor has had a chance to be deleted as well.</p> <h2> Removing Dependencies</h2> <p>The following steps should be taken to make sure there are no dependencies between the primary scene and the effects scene:</p> <ul> <li dir="ltr"> The primary scene should not use a CudaContextManager since it won&rsquo;t be doing any GPU accelerated effects.</li> <li dir="ltr"> The CudaContextaManager used by the effects scene should not be shared with any other object.</li> <li dir="ltr"> As previously discussed, the effects scene should use a single &lsquo;simulate&rsquo; call with a variable time step. &nbsp;If should have a minimum and maximum time step duration. &nbsp;Something along the lines of no greater than 60hz and no less than 10hz would work well.</li> <li dir="ltr"> The effects scene should be simulated in a non-blocking manner. &nbsp;The application should call &lsquo;checkResults&rsquo; to see if the simulation is complete and only synchronize the mirrored scene, invoke fetchResults, and fire off the next simulate step at that time. &nbsp;Whether or not the simulate step on the effects scene takes more or less time than the primary scene is irrelevant. &nbsp;In fact, this is the key element that makes this technique work. &nbsp;We consider the effects scene to be done whenever it is done, and if it takes more or less time than the primary logical render frame it doesn&rsquo;t matter.</li> <li dir="ltr"> All access to the effects scene should happen from a different thread than the primary scene or rendering threads.</li> <li dir="ltr"> The application should disable continuous collision detection for the effects scene; as all dynamic objects in the effects scene are simply kinematically moved copies from the primary scene and this feature is unnecessary.</li> </ul> <h2> Rendering Considerations</h2> <p>The previous section focused on the need to run the effects simulation entirely independent from the primary game loop which typically consists of the pattern &lsquo;simulate, get transforms, render world&rsquo;. &nbsp;Obviously the GPU simulated effects still need to be rendered every frame and since the underlying simulation runs independently of the rendering pipeline you might wonder how this is to be done.</p> <p>To implement the effects rendering pipeline your engine must support a double-buffered and thread safe approach. &nbsp;Each time the effects scene simulate step completes, the current state of the simulated data should be copied to a relevant rendering resource (vertex buffer, texture buffer, transform buffer, etc.) &nbsp;Two buffers are created for each relevant render resource and the effects scene thread is always writing the results to one buffer while the rendering thread is always displaying the contents of the previous frames simulated results.<br /> <br /> An important note here is that typically this rendering data will end up getting copied to something like a locked direct3d vertex buffer and, therefore, your graphics pipeline and wrapper classes must provide thread-safe access to these resources.</p> <h2> Rendering Artifacts</h2> <p>One rendering artifact which arises from using these techniques is due to the fact that the kinematic mirrored objects the GPU effects are interacting with are always going to be slightly time delayed from their primary scene versions. &nbsp;In most cases this is not an issue. &nbsp;If particles hit dynamic objects, even if they are slightly time delayed, it is rare that you will be able to notice any discontinuity. &nbsp;However, if particles come to rest on a moving dynamic object, this slight time separation between the transform of the primary scene graphics objects and the version the particles are simulated against can create a visual artifact which can appear as a jittering effect; this occurs when the dynamic object in the primary scene moves and it takes a frame for the particles to react to that motion.</p> <p>Below is an example of APEX GPU turbulence particles interacting with dynamic objects</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/JyLX_t28zYc" width="420"></iframe></p> <br /> <h2> Summary</h2> <p>This article has presented a series of techniques which, combined, allow a developer to simulate a great deal of GPU particle effects while minimizing the frame rate impact on the rest of the game. &nbsp;These techniques require a certain amount of complexity by implementing a mirrored effects scene, double buffering of rendering resources, and a lot of thread safe coding. &nbsp;However, the results can be worth the extra effort when you can run simulations comprising hundreds of thousands of particles interacting with your game environment while experiencing minimal impact on overall frame rate even in situations where a game engine might be under heavy load.</p> <h2> Notes</h2> <p>If you would like to discuss this blog post, please join us on this forum thread on our new DevTalk forums.</p> <p>&nbsp;</p> NVIDIA Developer Blog Building Android Games with NVIDIA NSight : Work Smarter Not Harder! http://developer.nvidia.com/node/603272 <h4> Simon Morris, Guest Blogger from Strawdog Studios</h4> <h3> Welcome to the world of Android NDK. Please leave your debuggers at the door.</h3> <p>Veteran programmers of a certain age will happily recount old-school war stories where they&rsquo;ve had marathon sleepless debugging sessions where bugs were discovered in DVD-only release builds at the 11th hour before shipping and that they managed to debug the problem and save the day using just printf and changing screen border colours when certain systems started up.</p> <p>So it was our experiences with Android development over the last year that reminded me exactly how much we take debuggers for granted these days.&nbsp; I think it&rsquo;s fair to say that Android development requires a certain tenacity, but here at Strawdog HQ we have certainly found that getting a debugger to work with native code on Android requires something approaching supernatural powers! This is why until recently, debugging on Android had sadly remained an unsolved challenge for us, and that meant we were still in the trenches, developing on Android with only a printf to keep us going, and despite all the hard-core glory of printf&rsquo;ing our way to a stable build, we were constantly and painfully reminded of how massively time consuming it is to develop without a debugger. And time means money, right?</p> <p><img alt="Splash Screen" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/Blogs/SplashScreen_small.jpg" style="width: 280px; height: 135px; float: right; margin: 4px;" /></p> <p>Well, you can imagine how excited we were toward the end of last year when we heard that NVIDIA had a new solution for Android dev, that not only promised us a debugger, but also a development environment that integrated into Visual Studio. Sounded like purest win.</p> <p>At the time we were busy working on our forthcoming Android title &ldquo;Space Ark THD&rdquo;, which is a new mobile optimized version of our Xbox360 Live Arcade title (coming real soon to Google Play!!), and we were getting pretty fed up with the speed of printf style dev, so we thought we&rsquo;d check it out.</p> <h3> &nbsp;</h3> <h3> Nsight Tegra &ndash; First Impressions</h3> <p>Now we&rsquo;d already used the Tegra Android Development Pack, which massively simplifies the many tools, drivers and SDKs you need to get started with Android development into one single install&nbsp; (highly recommended, check it out here: <a href="https://developer.nvidia.com/tegra-android-development-pack">https://developer.nvidia.com/tegra-android-development-pack</a>), so we installed the latest version since that included Nsight Tegra as well.</p> <p>Out of the box, you get a toolbar that is integrated into Visual Studio (2010 for us) that has ADB device bridge and logcat output windows. There is also a solution containing a selection of sample projects and libraries, which we noticed are targeting a new integrated &ldquo;Android&rdquo; platform. (Nice!)</p> <p>An initial survey of the sample project properties showed that the Visual Studio integration was impressively deep - the familiar configuration property pages are all present, but with Android-specific settings to control the full compile/link/sign/deploy APK build process. Hitting build in the solution just worked for me and everything compiled and linked first time (Something I always find reassuring), and I had a bunch of APKs to play with.</p> <p>&nbsp;</p> <center> <img alt="Nsight image" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/Blogs/NSight%20Debugger_medium.jpg" style="width: 560px; height: 316px;" /></center> <p>&nbsp;</p> <p>Next step was to try out the debugger, so I hooked up my Nexus 7, hit debug and sure enough, a new dialog appeared, which downloaded the APK to the device and started a debug session. I dropped some breakpoints and this also &ldquo;just worked&rdquo;, complete with call stacks, memory views and single step in/out controls. I confess I almost wept with joy at this point.</p> <h3> Building our own Native Android App</h3> <p>In terms of our background, as a studio we have shipped many titles over the years that have been built using our own internal C++ cross platform game engine SDK, which allows our games to run on most mobile and console platforms (Windows/iOS/PS3/Xbox360 etc.)<br /> Early last year we began our journey with Android integration, but for various reasons we had been unsatisfied with the solutions we had tried, and had been actively looking out for a good way to build native Android apps without middleware SDK&rsquo;s or complicated/unfamiliar build setups.</p> <p>I can say that spending some time with the Nsight Tegra sample code was an epiphany for us. When new to any platform, it&rsquo;s hard to overstate how useful it is to single step and debug break through all the sample code to get a solid feel for how it all works and fits together. NVIDIA provide some incredibly useful and robust framework apps in their samples &ndash; both Java and Native &ndash; as well as documentation for some best practices when using the NDK. There are examples for covering most of the core systems you&rsquo;ll need like handling app lifecycle events, touch, joypad and accelerometer input events, plus multi-threading, display management and OpenGL ES and OpenSL ES sample code.</p> <p>So armed, with the knowledge that &nbsp;based on Nsight Tegra, we could now build and debug native apps on Android within Visual Studio we took the decision to add a complete Native Android implementation of our API&rsquo;s to our tech.</p> <h3> Porting our game tech to Android</h3> <p>The first step was to get our codebase compiling and linking. We use custom jam scripts as a cross-platform means to compile and link the various libraries that comprise our SDK. Getting this working with Nsight Tegra was pretty easy &ndash; we just wired our scripts upto the same GCC toolchain used by Nsight Tegra and copied the build settings from Visual Studio.</p> <p>Next step, was getting the build up and running . Once our tech was all compiling and linking against the NDK, our approach was to slowly introduce the engine systems one by one so we could see each core system was working within the framework we knew was stable. The first few days of the port were all about fixing asserts, adding missing Android implementations, and getting the file system working. Again, it&rsquo;s hard to overstate how productive one can be with a debugger here.</p> <p>I should also mention that we based our new app entirely around the &ldquo;native globe&rdquo; sample application framework provided by NVIDIA and I&rsquo;m certain we saved a whole bunch of time here. Our app is a fully 3D OpenGL ES 2.0 driven game &ndash; and re-using an existing framework saved us all the hassle and intricacies with native_app_glue, lifecycle management and JNI that I&rsquo;d read about being necessary to getting to get a native OpenGL based app off the ground. We&rsquo;ve also run the app through AppThwack (<a href="https://appthwack.com/">https://appthwack.com/</a> - a really awesome online device compatibility testing site) and got an excellent report, so apps built this way will run on more than just Tegra devices.</p> <h3> Goodbye printf&rsquo;s, hello debugger!</h3> <p><img alt="stage completeimage" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/Blogs/complete_small.jpg" style="width: 340px; height: 191px; margin: 4px; float: right;" /></p> <p>So I know that it should go without saying why debuggers are useful, but I&rsquo;d like to share a couple of real world examples of issues we had where not having&nbsp;</p> <p>something like Nsight Tegra would have made life really (and I mean really) miserable:</p> <ul> <li> Getting systems working &ndash; Our audio library was adapted for OpenSL ES which kicked out some unexpected runtime issues like missing/Null callback functions, and API compatibility issues. With Nsight Tegra we were quickly able to identify these, fix them and iterate the solution.</li> <li> We found our build worked great on Nexus 7 hardware but when we tested on another device it crashed in some seemingly benign constructor code. It turned out the problem was unsupported VFPU instructions on that device, and we found that real quick by single stepping through the disassembly in Visual Studio. Our initial assumptions about the cause were completely wrong and actually fairly paranoid such as memory overwrites, member initialization order etc. so I cannot begin to imagine how long that would have taken to fix with the old-skool printf style!</li> <li> We&rsquo;ve since isolated and fixed numerous compatibility and run-time issues in what feels like record time, since we can simply run debug builds on the target devices (no need to use slow emulators anymore!) and pick up any problems that way.</li> </ul> <h3> Space Ark THD&nbsp; now preparing for launch</h3> <p>Since then, we&rsquo;ve gone from strength to strength beefing up our Android tech, and easily adding new Java classes for stuff like Facebook and we now have a fast, smooth and stable Android game that anyone of the guys in the studio can use Visual Studio to build, run and debug on any Android device that they have plugged into their USB, and all this took us about 6 engineer weeks to achieve, and we are back on track for a spring launch of &ldquo;Space Ark&rdquo; on the Google Play Store.</p> <p>To sum up, if you&rsquo;re used to Visual Studio, and thinking about bringing an existing or a new OpenGL/C++ project to Android, NVIDIA Nsight Tegra and the Tegra Android Development Pack could be just the very tool you are looking for.</p> <h3> About The Author</h3> <p>Simon Morris is the Technical Director for Strawdog Studios. &nbsp;With over 20 years of experience and 18 titles under his belt, he knows a thing or two about painful debugging processes.</p> <p><strong>About Strawdog</strong><br /> Strawdog are a leading independent developer focused on building the best social and mobile apps for publishers and brands.<br /> <a href="http://www.strawdogstudios.com">www.strawdogstudios.com</a></p> <p><strong>About Space Ark THD</strong><br /> Bounce your way through 36 challenging missions to terraform and breathe life into 5 new worlds!<br /> Discover how to collect all the valuable crystals and get the best combos for the highest scores!<br /> Beat your friends and unlock powerful upgrades to complete your mission!<br /> Coming Spring 2013 to Android Tegrazone! <a href="http://www.spaceark.com">www.spaceark.com</a></p> NVIDIA Developer Blog Enabling Android Development with Visual Studio for NVIDIA Tegra Devices http://developer.nvidia.com/node/602854 <p> <br /> Mentor Graphics and NVIDIA are proud to offer a one hour webcast that can change the way you build Java or C/C++ applications for Tegra devices.  The NVIDIA Nsight Tegra, Visual Studio Edition product, which includes underlying Visual Studio technology built by Mentor Graphics, offers a unique way to create and debug Android applications. <br />  <br /> Come join Stephen Jones (NVIDIA) and brad Dixon (Mentor Graphics) for an in-depth overview of this important tool.  This is an easy-to-attend online presentation, offered on March 7th, from 0900-1000 Pacific time.  Click the <a href="http://www.mentor.com/embedded-software/events/enabling-android-development-within-microsoft-visual-studio-for-nvidia-tegra-devices">Seminar Link</a> for more information and to sign up now!<br /> -   Jones</p> NVIDIA Developer Blog NVIDIA at GDC 2013 http://developer.nvidia.com/node/597372 <p>Once again, we are just weeks away from another awesome GDC event! We are thrilled to offer several ways to reach out to NVIDIA engineers and learn about new tools and techniques in the game development world. Be sure to bookmark our <a href="http://www.nvidia.com/object/gdc2013-sessions.html" target="_blank">NVIDIA @ GDC 2013</a> events page to get the latest updates. In addition, don't hesitate to monitor our @nvidiadeveloper twitter feed for real-time news from the GDC floor.</p> <p>Of course, we know what you're REALLY interested in is our sponsored sessions, and this year's sessions are a combination of "awesome" and "outstanding." We will have guest speakers from Valve, Gearbox, and Sony Online Entertaiment to talk about their experiences developing the latest games using NVIDIA technologies and tools. On top of that, be sure to attend to get the latest news on our GRID cloud gaming hardware and the new Project Shield handheld portable gaming device.</p> <p>Here's the latest planned sponsored sessions, but be sure to check the <a href="http://www.nvidia.com/object/gdc2013-sessions.html" target="_blank">NVIDIA @ GDC 2013</a> page for the latest updates!</p> <p>The sponsored sessions, held on Thursday, March 28th in the West Hall, Room #2002, include talks and demos on a wide range of topics covering the latest advancements in GPU gaming technology. It&rsquo;s open to all attendees and features developers and industry leaders from game studios and beyond.</p> <br /> <table border="1" cellpadding="1" cellspacing="1"> <tbody> <tr> <td valign="top" width="40%"> <strong>NVIDIA&reg; Nsight&trade; Visual Studio Edition 3.0 - Catzilla Engine Development in DirectX 11 and OpenGL 4.2</strong><br /> &nbsp;</td> <td valign="top" width="732"> <strong>10:00 am -11:00 am</strong><br /> Jeffrey Kiel, Director, Graphics Developer Tools, NVIDIA<br /> Michal Szymczyk, Chief Technology Officer, Plastic<br /> Michal Staniszewski, Creative Director, Plastic</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> The new Catzilla benchmark from Plastic is showcasing the latest rendering technology of their new engine. This rendering engine supports all the latest techniques, like physically correct lighting, depth-of-field, fur, volumetric and raymarching based effects, motion blur, and many other great-looking rendering effects.<br /> <br /> Using a pre-release of Nsight 3.0, the team was able to fix 3D API and rendering bugs, and optimize their engine to squeeze every possible cycle out of the GPU and system as a whole. Along with Jeff Kiel from the NVIDIA graphics developer tools team, they&rsquo;ll share their stories from the trenches to give the audience a good sense of how to take advantage of Nsight 3.0 for DirectX 11 and OpenGL 4.2 multi 3D API development.</td> </tr> <tr valign="top"> <td valign="top"> <strong>Post Mortem: GPU Accelerated Effects in Borderlands 2</strong><br /> &nbsp;</td> <td valign="top"> <strong>11:30 am - 12:30 pm</strong><br /> Dane Johnston, Technical Artist, NVIDIA<br /> James Sanders, Director of Visual FX, Gearbox</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> Borderlands 2 released to critical acclaim on September 18th, 2012 and showcased a wide variety of NVIDIA CUDA&reg;-accelerated GPU effects. This session will dive into the exact effects that were featured and their benefits to the visual fidelity of the gamer experience. Side-by-side examples of how GPU-accelerated effects are changing the gaming landscape will be demonstrated in a gaming session. Further examinations into the production process and effects creation will also be explored.</td> </tr> <tr valign="top"> <td valign="top"> <strong>Porting Source to Linux: Valve's Lessons Learned</strong><br /> &nbsp;</td> <td valign="top"> <strong>1:00 pm - 2:00 pm</strong><br /> John McDonald, Sr. Software Engineer, NVIDIA<br /> Rich Geldreich, Software Engineer, Valve Software<br /> Sam Lantinga, Software Engineer, Valve Software</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> In this session, Rich Geldreich from Valve Software and John McDonald from NVIDIA will give an in-depth guide to porting games to Linux. A primarily technical discussion, Rich and John will discuss tool alternatives on Linux, OS issues and pitfalls, and porting from Direct3D to OpenGL.</td> </tr> <tr valign="top"> <td valign="top"> <strong>Enhancing Hawken and PlanetSide 2 Through Turbulence and Destruction</strong><br /> &nbsp;</td> <td valign="top"> <strong>2:30 pm - 3:30 pm</strong><br /> Dane Johnston, Technical Artist, NVIDIA<br /> Aron Zoellner, Technical Artist, NVIDIA</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> APEX Turbulence and Destruction allow the creation of a more immersive game environment than was possible in previous-generation games. In section 1, we&rsquo;ll illustrate the workflow and design considerations for the various APEX Turbulence examples in games such as Hawken and PlanetSide 2. APEX Turbulence simulates a massive number of particles combined with the fluid motion of velocity fields to create immersive, next-gen effects. In section 2, we'll show how a destructible environment can significantly enhance the gaming experience by creating an ever-changing battlefield. We&rsquo;ll cover how the destruction effects are created and how they can be scaled based on the computing platform. In addition, we&rsquo;ll discuss what to consider when using destruction in a networked game. Finally we'll provide a quick overview of the other APEX modules and tools which can be used to create a richer and more interactive game experience.</td> </tr> <tr valign="top"> <td valign="top"> <strong>NVIDIA&reg; Project SHIELD and Tegra&reg; 4: Redefining AFK</strong><br /> &nbsp;</td> <td valign="top"> <strong>4:00 pm - 5:00 pm</strong><br /> Andrew Edelsten, NVIDIA<br /> Paul Hodgson, NVIDIA</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> NVIDIA's recently announced Project SHIELD has been the talk of gamers worldwide. Powered by the latest NVIDIA Tegra 4 processor, Project SHIELD provides gamers with the ultimate mobile gaming experience and promises to redefine what AFK really means. Come get the inside word on how to push the limits of mobile gaming and take advantage of everything that Project SHIELD and Tegra 4 have to offer. At the session, learn hot tips and tricks when targeting Project SHIELD, get a run down of the latest NVIDIA development tools, and take an in-depth look at Tegra 4's new GPU features.</td> </tr> <tr valign="top"> <td valign="top"> <strong>Moving Games into the Cloud, Technologies and Architectures</strong></td> <td valign="top"> <strong>5:30 pm - 6:30 pm</strong><br /> Franck Diard, NVIDIA<br /> Brent Oster, Senior Software Engineer, NVIDIA</td> </tr> <tr valign="top"> <td colspan="2" valign="top"> This session presents the technologies behind NVIDIA GRID&trade; and the future of game engines running in the cloud. In the first part, we&rsquo;ll present how you can develop cloud products using the GRID SDK. The audience will learn about the key components of NVIDIA GRID&mdash; like optimal capture, efficient compression, fast streaming, and low latency&mdash;that make cloud gaming possible. Franck will demonstrate how these components fit together, how to use the GRID APIs, and how to optimize their usage to deliver an ultimate cloud gaming experience. In the second part, Brent will present the future of game engines running in the cloud.</td> </tr> </tbody> </table> <p>&nbsp;</p> NVIDIA Developer Blog Tegra Android Development Pack 2.0r2 Available http://developer.nvidia.com/node/595528 <p>The&nbsp;<strong>Tegra Android Development Pack</strong><strong>(TADP)</strong> is the perfect companion for developing native Android applications, installing all of the software tools required to optimize for&nbsp;<a href="http://developer.nvidia.com/develop4tegra">NVIDIA&rsquo;s Tegra platform</a>.</p> <p>Tegra Android Development Pack 2.0r2 is updated with support for Android NDK r8b and all the latest Tegra development tools, including <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight Tegra</a>, <a href="https://developer.nvidia.com/tegra-profiler">Tegra Profiler</a> and <a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES</a>.</p> <p>To download TADP, you must be a member of <a href="https://developer.nvidia.com/tegra-registered-developer-program">the Tegra Registered Developer Program</a>. To join simply <a href="https://developer.nvidia.com/user/register">create a new account</a> (it's free and easy) and then visit <a href="https://developer.nvidia.com/develop4tegra">Develop for Tegra</a> or the <a href="https://developer.nvidia.com/tegra-resources">Tegra Resources</a> page and download the version of TADP for your platform.</p> <p><strong>TEGRA ANDROID DEVELOPER PACK 2.0</strong></p> <p>Android Development:</p> <ul> <li> Android SDK r21.0.1</li> <li> Android APIs</li> <li> Android NDK r8d</li> <li> Google USB Driver</li> <li> Android Support Library</li> <li> JDK 6u24</li> <li> Cygwin 1.7</li> <li> Eclipse 4.2.1, CDT 8.1.1, ADT 21.0.1</li> <li> Apache Ant 1.8.2</li> </ul> <p>Tegra Libraries and Tools:</p> <ul> <li> <a href="https://developer.nvidia.com/nvidia-nsight-tegra">Nsight Tegra 1.1, Visual Studio Edition</a> [Windows Only]</li> <li> <a href="https://developer.nvidia.com/nvidia-debug-manager-android-ndk">NVIDIA Debug Manager for Eclipse 12.0.1</a></li> <li> <a href="https://developer.nvidia.com/nvidia-perfhud-es">PerfHUD ES 1.9.8</a></li> <li> <a href="https://developer.nvidia.com/tegra-profiler">Tegra Profiler 1.2</a></li> <li> OpenCV for Tegra 2.4.3</li> <li> PhysX 3.2 for Android</li> <li> Tegra Samples, Docs and OS Images</li> </ul> <p>The pack provides sample applications, support libraries and updated documentation for the following Android game development topics:</p> <ul> <li> Pure native gaming on Android with NativeActivity</li> <li> Getting Android application lifecycle just right</li> <li> Tips for (and benefits of) mixing a little Java into your native Android game for better integration</li> <li> Supporting game controllers, sensors, multi-touch and device rotation</li> </ul> <p>Enjoy!<br /> Jones/<br /> @nvidiajones<br /> &nbsp;</p> NVIDIA Developer Blog Nsight Tegra, Visual Studio Edition 1.1.1 Available http://developer.nvidia.com/node/594626 <p>Are you tired of developing Android applications in Eclipse? Do you miss the comfort and familiarity of Visual Studio? Look no further.</p> <p>Nsight Tegra is a complete Android development environment integrated into Visual Studio 2010. Native Android project management is available using the &lsquo;vs-android&rsquo; (MSBUILD) build integration and makefile/ndk-build projects are supported as well.</p> <p>Nsight Tegra includes a full Android GDB debugging experience integrated into the familiar Visual Studio windows and debugging workflows. In addition, parallel project AND parallel file compilation is available, which significantly reduces compile times.</p> <p>Learn more on <a href="http://blogs.nvidia.com/2013/02/nvidia-introduces-nsight-tegra-to-assist-android-developers/">NVIDIA&rsquo;s corporate blog</a>, view the <a href="http://youtu.be/mFYeH6kUqFE">Nsight Tegra Walk-through Video</a> or simply join the <a href="http://developer.nvidia.com/develop4tegra">Tegra Registered Developer Program</a> and try Nsight Tegra for yourself.</p> <p>A tip of the hat to our friends at Mentor Embedded for delivering the underlying bits enabling this capability within Nsight Tegra. Please join us for a <a href="http://go.mentor.com/2oj9f">joint webinar to learn more about Nsight Tegra</a></p> <p>Enjoy!<br /> Jones//<br /> @nvidiajones</p> NVIDIA Developer Blog Alpha Blending: To Pre or Not To Pre http://developer.nvidia.com/node/589437 <p>Alpha Blending is a small--but important--part of virtually every 3D application. Conceptually, alpha-blending is used to communicate the transparency of a surface. Generally, consumer applications (games) tend to use RGB to communicate the color of the underlying surface, relying on the alpha channel to indicate the "opaquness" of that color. More specifically, when alpha blending is enabled in the pipeline, developers tend to use this form for their blending:</p> <code>DestinationColor.rgb = (SourceColor.rgb * SourceColor.a) + (DestinationColor.rgb * (1 - SourceColor.a));</code><p>In old, fixed functionality, this would be known as "SourceAlpha, InvSourceAlpha"; also known as "post-multipled alpha." However, this form of alpha blending suffers from a critical flaw: it results in the wrong color in many cases! The simplest of these cases can be illustrated with a simple, two pixel image:</p> <figure class="indented"> <img alt="One red pixel with red = 1 and alpha of 1, one green pixel with green = 1 and alpha 0.10" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/2x1-rg-post.png" /> <figcaption>One red pixel with red = 1 and alpha of 1, one green pixel with green = 1 and alpha 0.10</figcaption> </figure> <p>Consider the above image, whose resolution is 2x1 pixels. The artist wanted to communicate that there was a red, opaque pixel adjacent to a green pixel that would just give the slightest tinge of green to objects behind it. However, something interesting happens when we generate the next mipmap level, the 1x1 level. The result is probably surprising; the resulting mipmapped texel is this:</p> <figure class="indented"> <img alt="RGBA = (0.5, 0.5, 0, 0.55)" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/1x1-rg-post.png" /> <figcaption>RGBA = (0.5, 0.5, 0, 0.55)</figcaption> </figure> <p>As we approach this mipmap level, we will get a very different result than when working with the 2x1 level--entirely because we decided to use postmultiplied level. You can see this in the following images:</p> <figure class="indented"> <img alt="The canonical mandrill face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill.png" /> <img alt="Our 2x1-rg image from above post-blended atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-2x1-rg-post-blend.png" /> <img alt="Our 1x1-rg image (the next coarser mipmap) post-blended atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-1x1-rg-post-blend.png" /> <figcaption>Three versions of the canonical image test "mandrill". The first, the original mandrill. The second contains the mandrill when blended with our 2x1 image, and the last is blended with the 1x1 mipmap of the 2x1 texture.</figcaption> </figure> <h2> Enter Pre-multiplied alpha</h2> <p>With pre-multiplied alpha, we multiply the texture components by the alpha component first, before storage. We also modify the blend function, changing SourceColor.a to One:</p> <code>DestinationColor.rgb = (SourceColor.rgb * One) + (DestinationColor.rgb * (1 - SourceColor.a));</code><p>Using pre-multiplied alpha, our original texture would look like this:</p> <figure class="indented"> <img alt="Our 2x1 texture, ready for pre-multiplied alpha. The red pixel is (1, 0, 0, 1) the green pixel (0, 0.1, 0, 0.1)" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/2x1-rg-pre.png" /> <figcaption>Our 2x1 texture, ready for pre-multiplied alpha. R = (1, 0, 0, 1), G = (0, 0.1, 0, 0.1)</figcaption> </figure> <p>And the 1x1 mipmap level of this texture would look like this:</p> <figure class="indented"> <img alt="The 1x1 mipmap of our pre-multiplied alpha texture. RGBA = (0.5, 0.05, 0, 0.55)" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/1x1-rg-pre.png" /> <figcaption>The 1x1 mipmap of our pre-multiplied alpha texture. RGBA = (0.5, 0.05, 0, 0.55)</figcaption> </figure> <p>This is <em>much</em> more reasonable. We've still lost some information (and note that if the green component were small enough, or if our precision is too low the green will drop out entirely), but we've preserved the intent of the higher resolution mipmap. For comparison, here are the images again, with the addition of our pre-multiplied blender:</p> <figure class="indented"> <img alt="The canonical mandrill face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill.png" /> <img alt="Our 2x1-rg image from above pre-multiplied atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-2x1-rg-pre-blend.png" /> <img alt="Our 2x1-rg image from above post-multiplied blend atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-2x1-rg-post-blend.png" /> <img alt="Our 1x1-rg image (the next coarser mipmap) pre-blended atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-1x1-rg-pre-blend.png" /> <img alt="Our 1x1-rg image (the next coarser mipmap) post-blended atop the mandril's face." src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-1x1-rg-post-blend.png" /> <figcaption>All versions of the mandrill. In top-to-bottom order, the original mandrill, the original mandrill covered by our pre-multiplied alpha 2x1, the post-multiplied alpha 2x1, the pre-multiplied 1x1 and finally the post-multiplied 1x1.</figcaption> </figure> <h2> Transitioning from our post-multiplied world</h2> <p>Conveniently, the conversion from a post-multiplied alpha pipeline to one utilizing pre-multiplied alpha is trivial. At texture save time, or asset baking time, or even load time, multiply each non-alpha channel by alpha. That is:</p> <p><code class="indented">OutputTexture.rgb = InputTexture.rgb * InputTexture.a; OutputTexture.a = InputTexture.a; </code></p> <p>And don't forget to modify your "alpha blending enable" to use One for the Source Alpha value. If we plug in pre-multiplied alpha to the original blending equation, it's easy to see that switching to pre-multiplied alpha gives us the exact same result:</p> <p><code class="indented">DestinationColor.rgb = ((SourceColor.rgb * SourceColor.a) * One) + (DestinationColor.rgb * (1 - SourceColor.a));</code></p> <p>So you might be asking: If the result is the same, why bother with pre-multiplied alpha? The reason is texture filtering. When you take samples from a texture, unless you have disabled texture filtering, the hardware is blending neighboring texels together and returning a weighted average as a result. With traditional post-multiplied alpha, this result will be incorrect. If your browser supports WebGL, you can play with pre- and post- multiplicative blending below:</p> <script id="simpletex-vs" type="x-shader"> #ifdef GL_ES precision highp float; #endif // Input attribute vec2 v2PositionIn; attribute vec2 v2TexCoordIn; // Output varying vec2 v2TexCoord; void main() { gl_Position = vec4(v2PositionIn.xy, 0, 1); v2TexCoord = v2TexCoordIn; } </script><script id="simpletex-fs" type="x-shader"> #ifdef GL_ES precision highp float; #endif // Input (uniform for all vertices) uniform sampler2D sTexture; // Input (per-vertex) varying vec2 v2TexCoord; void main() { gl_FragColor = texture2D(sTexture, v2TexCoord); } </script><script type="text/javascript"> function alphaBlendingInit() { if (!initGL()) { return; } initShaders(); initBuffers(); initTextures(); gl.clear(gl.COLOR_BUFFER_BIT); if (program == null) { return; } renderFrame(); } function initGL() { canvas = document.getElementById("webgl-display"); gl = canvas.getContext("experimental-webgl", {alpha:false}); gl.viewport(0, 0, canvas.width, canvas.height); gl.clearColor(0, 0.5, 0, 1); gl.disable(gl.DEPTH_TEST); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); return true; } function initShaders() { program = compileProgramVF(document.getElementById("simpletex-vs").firstChild.nodeValue, document.getElementById("simpletex-fs").firstChild.nodeValue); if (program == 0) { // Using this as an error color. gl.clearColor(0.5, 0, 0, 1); return; } program.v2PositionIn = gl.getAttribLocation(program, "v2PositionIn"); program.v2TexCoordIn = gl.getAttribLocation(program, "v2TexCoordIn"); program.sTexture = gl.getUniformLocation(program, "sTexture"); gl.useProgram(program); gl.uniform1i(program.sTexture, 0); } function initBuffers() { var vertices = new Float32Array([ -1, -1, 0, 0, 3, -1, 2, 0, -1, 3, 0, 2 ]); vbuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vbuffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); } function initTextures() { BlendTextures = new Object(); BlendTextures["pre_2x1"] = createTextureFromURL("https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/2x1-rg-pre-webgl.png"); BlendTextures["pre_1x1"] = createTextureFromURL("https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/1x1-rg-pre-webgl.png"); BlendTextures["post_2x1"] = createTextureFromURL("https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/2x1-rg-post-webgl.png"); BlendTextures["post_1x1"] = createTextureFromURL("https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/1x1-rg-post-webgl.png"); mandrillTexture = createTextureFromURL("https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/mandrill-512x512.png"); } function renderFrame() { updateRenderStates(); gl.clear(gl.COLOR_BUFFER_BIT); if (mandrillTexture.ready) { // Drawing gl.useProgram(program); gl.vertexAttribPointer(program.v2PositionIn, 2, gl.FLOAT, false, 16, 0); gl.vertexAttribPointer(program.v2TexCoordIn, 2, gl.FLOAT, false, 16, 8); gl.enableVertexAttribArray(program.v2PositionIn); gl.enableVertexAttribArray(program.v2TexCoordIn); gl.disable(gl.BLEND); gl.bindTexture(gl.TEXTURE_2D, mandrillTexture); gl.drawArrays(gl.TRIANGLES, 0, 3); if (BlendingEnabled) { gl.enable(gl.BLEND); if (PreMultipliedAlpha == "pre") { gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); } else { gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); } gl.bindTexture(gl.TEXTURE_2D, BlendTexture); if (FilteringEnabled) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); } else { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); } gl.drawArrays(gl.TRIANGLES, 0, 3); } } // After our first frame, clears are to white. We clear to other // colors initially to show debug status. gl.clearColor(1, 1, 1, 1); } function updateRenderStates() { BlendingEnabled = document.getElementById("blending-enable").checked; FilteringEnabled = document.getElementById("filtering-enable").checked; PreMultipliedAlpha = "pre"; TextureSize = "2x1"; var blendModeRadios = document.getElementsByName("blendmode"); for (var i = 0; i < blendModeRadios.length; ++i) { if (blendModeRadios[i].checked) { PreMultipliedAlpha = blendModeRadios[i].value; break; } } var texSizeRadios = document.getElementsByName("texsize"); for (var i = 0; i < texSizeRadios.length; ++i) { if (texSizeRadios[i].checked) { TextureSize = texSizeRadios[i].value; break; } } BlendTexture = BlendTextures[PreMultipliedAlpha + "_" + TextureSize]; } function compileProgramVF(vsText, fsText) { var vs = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vs, vsText); gl.compileShader(vs); var vsCompileText = gl.getShaderInfoLog(vs); if (vsCompileText && vsCompileText.length > 0) { console.log("Vertex Compilation"); console.log(vsCompileText); } if (!gl.getShaderParameter(vs, gl.COMPILE_STATUS)) { return 0; } var fs = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fs, fsText); gl.compileShader(fs); var fsCompileText = gl.getShaderInfoLog(fs); if (fsCompileText && fsCompileText.length > 0) { console.log("Fragment Compilation"); console.log(fsCompileText); } if (!gl.getShaderParameter(fs, gl.COMPILE_STATUS)) { return 0; } var program = gl.createProgram(); gl.attachShader(program, vs); gl.attachShader(program, fs); gl.linkProgram(program); var progLinkText = gl.getProgramInfoLog(program); if (progLinkText && progLinkText.length > 0) { console.log("Linking"); console.log(progLinkText); } if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { return null; } return program; } function createTextureFromURL(url) { var newTexture = gl.createTexture(); newTexture.ready = false; newTexture.image = new Image(); newTexture.image.onload = function() { handleLoadedTexture(newTexture); } newTexture.image.crossOrigin = ''; newTexture.image.src = url; return newTexture; } function handleLoadedTexture(texture) { gl.bindTexture(gl.TEXTURE_2D, texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); texture.ready = true; window.requestAnimFrame(renderFrame, canvas); } window.requestAnimFrame = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) { return window.setTimeout(callback, 1000/60); }; })(); </script><p><img height="0" onerror="alphaBlendingInit()" src="forceInit" width="0" /></p> <div class="indented"> <p><canvas height="544" id="webgl-display" style="float:left;" width="544"></canvas> <input id="blending-enable" onclick="window.requestAnimFrame(renderFrame, canvas);" type="checkbox" value="blending" /> Enable Blending<br /> <input id="filtering-enable" onclick="window.requestAnimFrame(renderFrame, canvas);" type="checkbox" value="filtering" />Enable Filtering<br /> <input checked="checked" name="blendmode" onclick="window.requestAnimFrame(renderFrame, canvas);" type="radio" value="pre" />Pre-multiplied Alpha<br /> <input name="blendmode" onclick="window.requestAnimFrame(renderFrame, canvas);" type="radio" value="post" />Post-multiplied Alpha<br /> <input checked="checked" name="texsize" onclick="window.requestAnimFrame(renderFrame, canvas);" type="radio" value="2x1" />2x1 texture<br /> <input name="texsize" onclick="window.requestAnimFrame(renderFrame, canvas);" type="radio" value="1x1" />1x1 texture</p> </div> <br /> <h2 style="clear: both;">NOTES:</h2> <p>For more information about pre-multiplied alpha, check out <a href="http://blogs.msdn.com/b/shawnhar/archive/2009/11/06/premultiplied-alpha.aspx" target="_blank">Shawn Hargreaves' MSDN blog</a></p> <p>&nbsp;</p> <p>If you have questions or would like to discuss this blog post, be sure to visit <a href="https://devtalk.nvidia.com/default/topic/528685/general-graphics-programming/alpha-blending-to-pre-or-not-to-pre-blog-discussion-/" target="_blank">this thread</a> in our popular <a href="https://devtalk.nvidia.com" target="_blank" title="DevTalk forums link">DevTalk forums</a>.</p> NVIDIA Developer Blog OpenGL SDK: Simple Tessellation Shader http://developer.nvidia.com/node/581420 <p>In the last OpenGL SDK post I introduced the new SDK, now let me introduce our first new sample, &ldquo;Simple Tessellation Shader&rdquo;. As the name implies, it demonstrates the minimum parts necessary to use tessellation shaders in OpenGL. The sample only demonstrates tessellating the quad domain (rather than the triangular domain), and it shows two modes: one with a flat plane and one where the plane is wrapped into a torus.</p> <h2> About Tessellation Shading</h2> <p>OpenGL recently added the concept of tessellation shading to its definition of the graphics pipeline. It expands the pipeline by two additional programmable stages and a single fixed-function stage that handle the specification and evaluation of a tessellated surface. It all fits into the pipeline like the diagram below.</p> <p><img align="left" alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/shader_path.jpg" />These new tessellation stages operate between the vertex and geometry shader stages previously available in the pipeline. The initial stage is the known as the &ldquo;tessellation control shader&rdquo; (TCS). This shader accepts a list of vertices defining a patch from the vertex shader and controls the amount of tessellation applied to the patch. The next tessellation stage is the fixed-function tessellator. The tessellator takes the amount of tessellation provided by the TCS and computes a pattern of triangles in a parametric space. (For our example today, the space is a quadrilateral with u and v directions.) Finally, the &ldquo;tessellation evaluation shader&rdquo; (TES) is executed at least once for each vertex that was created in the parametric space. The TES takes the parametric coordinate and the patch data output by the TCS to generate a final position for the surface.</p> <p>Diving in a bit deeper, the TCS is one of the more complex shader stages in the pipeline due to all of the options it controls. The TCS specifies the number of vertices it creates in a patch via a layout statement. (e.g. layout (vertices=1) out ) In the TCS, each output will have its own thread to generate the output vertices. One thing that makes the TCS special, is that the threads can all see all of the input data, and at the end of the shader, they can share their results to allow group computations for items like patch-wide tessellation levels. (These are more advanced features that we&rsquo;ll skip in this sample)</p> <p>Moving on the tessellator, it is very much a black-box from the point of view of the graphics programmer. All it really does is generate a sequence of u.v coordinates and an associated topology map to control how the patch is converted to triangles. While the amount of tessellation is controlled by data output by the TCS, the TES declares an input which controls the pattern of triangles generated. Once the points are generated, the tessellator launches one thread per point to the TES.</p> <p><br /> Finally, the TES evaluates and transforms points into clip space to define the surface. It has as input the output from the TCS defining the patch as a whole, and a u,v coordinate from the tessellator defining where on the surface this particular point should lie. In many ways, it operates much like a vertex shader with an additional set of data that is uniform per patch rather than uniform for all patches.</p> <h2> Sample Shader Overview</h2> <p>The first shader to consider in our sample today is the vertex shader. It has been descriptively named passthrough_vertex.glsl, as it does no real work.</p> <p><img alt=" layout(location=0) in vec4 vertex; out gl_PerVertex { vec4 gl_Position; }; void main() { gl_Position = vertex; }" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/code_snippet_1.jpg" /><br clear="all" /> <br /> The vertex shader simply declares a single input that defines the location of the patch, and it copies it through to the next shader stage. Had this been a more complex example, work such as animation transforms (skinning for skeletal animation) would be best applied in the vertex shader, because it would create a final object-space position. Additionally, since patches likely share adjacent vertices, just like triangles, performing shared work here can reduce redundant computations.</p> <p>The TCS shader in this example is not much more complex than the vertex shader. Because the sample just tessellates to a user-controlled constant, there are no real computations to be performed at the patch level.<br /> <img alt=" layout( vertices=1) out; out gl_PerVertex { vec4 gl_Position; } gl_out[]; #include '/uniforms.h' void main() { gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; gl_TessLevelOuter[0] = outerTessFactor; gl_TessLevelOuter[1] = outerTessFactor; gl_TessLevelOuter[2] = outerTessFactor; gl_TessLevelOuter[3] = outerTessFactor; gl_TessLevelInner[0] = innerTessFactor; gl_TessLevelInner[1] = innerTessFactor; }" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/code_snippet_2.jpg" /><br clear="all" /> The big thing for users unfamiliar with tessellation shaders to notice is the introduction of a whole bunch of new built-in variables. The gl_TessLevelOuter built-in controls the tessellation level for the four outer edges of the patch. In the diagram below, OL0 corresponds to element 0 of the array of out edge tessellation factors. Similarly, the gl_TessLevelInner[0] corresponds to IL0 marking and represents the interior divisions in the u parameter space.<br /> <code>(0,1)   OL3   (1,1) <br /> +--------------+     <br /> |              |   <br /> |  +--------+  |   <br /> |  |   IL0  |  |   <br /> OL0|  |IL1     |  |OL2  <br /> |  |        |  |                     <br /> |  +--------+  |     <br /> |              |   <br /> +--------------+   <br /> (0,0)   OL1   (1,0)</code></p> <p>Now that the TCS has setup how finely to tessellate the patch, the TES is where all the real interesting work occurs.</p> <p><img alt=" layout(quads,equal_spacing,ccw) in; out vec3 normal; out vec3 vertex; out gl_PerVertex { vec4 gl_Position; }; #include '/uniforms.h' void main(){ vec4 position = gl_in[0].gl_Position; position.xy += gl_TessCoord.xy * 2.0 - 1.0; normal = vec3(0.0,0.0,1.0); gl_Position = ModelViewProjection * position; normal = (ModelView * vec4(normal,0.0)).xyz; vertex = vec3(ModelView * position); }" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/code_snippet_3.jpg" /><br clear="all" /> The first thing to notice in the TES is the input layout statement. It defines that this TES expects to be operating on a quadrilateral grid parameterized by u and v, that the tessellation subdivisions will happen at equal steps, and that the resulting triangles should be ordered in the standard OpenGL winding of counter-clockwise. The input array gl_in holds the array of patch parameters. Since our TCS only had a single parameter defining the center of the patch, this is the only data it contains. The built-in gl_TessCoord contains the u,v parameters of where on the patch this point belongs. This simple plane shader is just expanding in the x and y dimensions from [-1.0, -1.0] to [1.0, 1.0]. As a result, the math required to modify the parametric u,v coordinates into offsets is clearly very simple. Finally, the position and an outward facing normal are transformed to produce both eye-space and projection-space values.</p> <p>A more complex version of the TES is also included in the sample. This version uses sin and cos to wrap he u,v space around to form a torus. It also demonstrates how you may need to perform additional math to compute proper normal for the surface generated. (In the case of the torus, it is just more sin and cos calls)</p> <h2> Beyond Shaders</h2> <p>Outside the tessellation shaders there are a couple other bits of the sample worth noting. First is the call to glPatchParameteri. This is what sets the number of input vertices per invocation of the TCS. Since the sample is using one point to define a patch, the value is set to 1. Next, rather than having all shader stages linked into a single shader program. The shaders are compiled as separate shader objects and bound into a shader pipeline. This allows switching the torus TES in and out with the plane TES without changing any of the others. It offers a moderate amount of convenience, especially for those used to a DirectX-centric pipeline. Finally, some readers might have noticed that my shaders were using user-defined uniforms, with no matching declarations in the shader code above. This is because the uniforms were all centralized into a single uniform buffer object defined in an include file. Using the recent GL_ARB_shading_language_include, the shaders were all able to share the same definitions. Additionally, with a bit of macro and typing work, the same include defines a struct with the necessary alignments to match the uniform buffer. With this, the uniform buffer update is as a single copy with glBufferSubdata from the program struct.</p> <h2> Conclusion</h2> <p>While this is clearly a very simple sample, it should get those interested in learning tessellation shaders with OpenGL a start. Also, this sample gives us a chance to ease into the new SDK. We&rsquo;ll be back soon with more introductory material for new features like this, as well as some material to dive deeper into what you can do with OpenGL today.</p> <h2> Notes</h2> <ul> <li> You can download the sample code<a href="https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/sdk/opengl/simple_tessellation_shader.zip"> here</a></li> <li> If you have questions or comments about the sample, please discuss it on this <a href="https://devtalk.nvidia.com/default/topic/527315/opengl/simple-tessellation-shader-sdk-sample-/" target="_blank">DevTalk thread</a>. Thanks!</li> </ul> NVIDIA Developer Blog Join NVIDIA at the AT&T Developer Summit, Jan 6-7 2013 http://developer.nvidia.com/node/581663 <p>Join NVIDIA at the <a href="https://www.2013devsummit.com/">AT&T Developer Summit</a>, Jan 6-7 2013</p> <p>Calling all Android Developers! Join NVIDIA at the <a href="https://www.2013devsummit.com/">AT&T Developer Summit</a>, Jan 6-7 2013, at <a href="http://www.palms.com/">The Palms Casino & Resort</a> in Las Vegas, Nevada.</p> <p>Use this opportunity to learn about the Developer Tools that NVIDIA provides free of charge to the Android Development Community. Tools like Nsight Tegra, the ultimate Android development environment for Microsoft Visual Studio, PerfHUD ES, our graphics profiling and debugging tool that allows you to perform in-depth analysis of your OpenGL ES scenes and Tegra Profiler, our professional quality CPU sampling profiler for Android.</p> <p>We'll have representatives on hand to answer your questions or find someone who can.</p> <p>See You There!</p> <p>Jones/<br /> @nvidiajones</p> <p>AT&T Developer Summit<br /> January 6 &ndash; 7, 2013<br /> The Palms Casino & Resort<br /> Las Vegas, Nevada</p> <p>&nbsp;</p> <p>&nbsp;</p> NVIDIA Developer Blog Introducing New OpenGL SDK Samples http://developer.nvidia.com/node/577298 <p>&nbsp;</p> <p>For anyone not following it, OpenGL has evolved a lot over the last few years. This isn&rsquo;t to say that old favorites like glBitmap are gone, as full compatibility is still supported, but newer capabilities have come about that can make your code faster and easier to write. With all these changes, our older SDK structure wasn&rsquo;t really keeping pace. We&rsquo;ve heard the criticism on the staleness of the old SDK, so we&rsquo;ve decided to reinvent the SDK as part of our blog posts. This means topical posts with source code all building off a common framework, as opposed to the large monolithic download of old.</p> <p>As part of the effort to update the SDK, we&rsquo;ve revamped the support framework. The goal was to try to simplify the dependencies, so that a single sample will depend on one dll + a collection of headers rather than three or four additional projects. We feel it will make projects easy to build and understand.</p> <p>With the revamp, we intend to focus the SDK on how to best use the new capabilities in OpenGL. As a result, you won&rsquo;t see glBegin, glBitmap, glActiveTexture, and other things that have been there since OpenGL 1.0. Instead, the focus will be on vertex buffers, direct state access, and path rendering.</p> <p>One large change evident to anyone who has looked at our SDK in the past will be in the shaders. First, all shaders are now in GLSL, instead of the mix of languages supported previously. Additionally, we&rsquo;ve moved to extensive use of shader includes, separate shader objects, and uniform buffers. Using separate shader objects simplifies mixing and matching shader stages, which previously required linking all desired combinations when using GLSL. Next, the &ldquo;layout&rdquo; qualifier allows our shaders to directly specify their desired environment. Previously, there was a lot of reflection required to just setup the correct bindings for textures and vertex attributes. Now, all shaders specify this explicitly in the code. Finally, and possibly most importantly, shader include plus the uniform buffer objects, allows the SDK code to share uniform data definitions not just between shaders, but also with the C++ program. By specifying the uniform buffer definition in a header and relaying on a few special type definitions, we can have a struct that directly matches the layout of our constant buffer. From here maintaining and updating state is greatly simplified.</p> <p>Another big change that you&rsquo;ll notice is that our UI has been converted over to path rendering. This means no more bitmap fonts that scale poorly. The new path rendering extension in the driver is really great for a lot of UI work, and you can definitely do some pretty complex text rendering with it. This isn&rsquo;t to say things are fully changed over. The text has already moved, and you will see more things in our UI code move toward path rendering as we make additional updates.</p> <p>Finally, we decided to stop using GLUT as the basis of the SDK. It has served us well for a long time, and we think it can continue to serve others well. We have replaced it with GLFW for windowing, as it offers a couple other things we were looking for. As you will notice, we do not use it directly, but wrap it in our custom SDK framework. The main reason here is to provide some additional portability, for when we decide to support additional platforms GLFW does not handle.</p> <h2> Conclusion</h2> <p>We already have a handful of samples queued up and lots of ideas for others&rsquo; however, we really want to hear from you the reader about what samples you will find most helpful. The bottom line is that the blog gives us a more interactive and dynamic medium to drive the SDK, and we intend to use it to serve our audience better.</p> NVIDIA Developer Blog Dynamic Hardware Tessellation Basics http://developer.nvidia.com/node/572597 <p>&nbsp;</p> <p>Direct3D 11 (and the hardware that supports it) includes a lot of new functionality for programmers, but one of the most interesting and powerful additions is Tessellation. This feature has been used in numerous high profile titles and is a great way to upgrade your visuals without an unreasonable amount of extra content effort.</p> <p>Arguably the easiest way to leverage GPU-based tessellation is computing dynamic LODs for your geometry on the fly. For the most part this is pretty straightforward to implement (once you learn the API).&nbsp; However there are a few tricks that are worth discussing such as the best way to determine tessellation factors</p> <p>[Note: For brevity and simplicity, I'm going to talk specifically about triangle meshes in this post. There are other options for quad meshes, but the majority of current tools and engines today still use triangles. Additionally, all code examples will be given in D3D11 SM 5.0 HLSL, but the concepts should be readily applicable to OpenGL hardware tessellation extensions.]</p> <h2> Review</h2> <p>The graphics pipeline for hardware tessellation has been explained excellently in many locations and at many topics.&nbsp; It is assumed readers are familiar with the pipeline and usage.&nbsp; If not, check out the following link.&nbsp; Don't worry I'll wait for you.</p> <p><a href="http://developer.download.nvidia.com/presentations/2009/GDC/GDC09_D3D11Tessellation.pdf">http://developer.download.nvidia.com/presentations/2009/GDC/GDC09_D3D11Tessellation.pdf</a></p> <h2> Why Use Tessellation?</h2> <p>&nbsp;</p> <p class="rtecenter"><img alt=" A close up shot of a tessellated head. No displacement map here, just smoothing from PN triangles. You’ve likely seen this type of shot many times before. Click to zoom." src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_Figure1.jpg" width="560" /></p> <address class="rtecenter"> Figure 1 : A close up shot of a tessellated head.&nbsp; No displacement map here, just smoothing from PN triangles.&nbsp; You&rsquo;ve likely seen this type of shot many times before.</address> <p>&nbsp;</p> <p>Dynamic tessellation allows you to easily control the visual fidelity of the meshes in your scene on a per primitive basis as well as remove obnoxious mesh popping from LoD mesh swaps.The nature of the tessellation hardware allows you to specify a subdivision factor per edge and interior of each primitive dynamically.&nbsp; This is a powerful tool.&nbsp;</p> <p>Previously, LoDs had to be pre-calculated and swapped out procedurally on the host. This results in increased bandwidth costs to upload new models as well as visual artifacts like popping.&nbsp; With dynamic tessellation we can implement a smooth LoD system <strong><u>per primitive</u></strong> which will allows you to more finely control the geometry rendered.</p> <p>A smooth LoD system is something that is not possible without a dynamic hardware tessellation solution.&nbsp; There are other benefits to using tessellation that provide increased performance over statically tessellated sources meshes, but dynamic tessellation provides an increase in visual dynamic visual fidelity not obtainable any other way.&nbsp;</p> <p>&nbsp;</p> <p class="rtecenter"><img alt=" Same scene, same session, just moved the camera back a bit. Tessellation auto adjusts to reduce triangle density" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_Figure2.jpg" width="560" /></p> <address class="rtecenter"> Figure 2 : Same scene, same session, just moved the camera back a bit.&nbsp; Tessellation auto adjusts to reduce triangle density. Click to zoom.</address> <p>&nbsp;</p> <p class="rtecenter"><img alt=" Again, same scene, same session, just moved camera really far away. The triangle density of tessellation is roughly equivalent to no tessellation at all. " src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_Figure3.jpg" width="560" /></p> <address class="rtecenter"> Figure 3 : Again, same scene, same session, just moved camera really far away.&nbsp; The triangle density of tessellation is roughly equivalent to no tessellation at all. (Image is scaled up to highlight density)</address> <p>&nbsp;</p> <h2> How do I implement it?</h2> <p>As mentioned, this article isn&rsquo;t going to cover the basics of tessellation, but rather talk about how to use dynamic tessellation to implement a smooth LOD system.&nbsp; To that end, the most important piece is determining the tessellation factor for each primitive being tessellated.</p> <p><em>Remember that the Hull shader is responsible for deciding how much to tessellate each control primitive. </em></p> <p>While the Hull Constant Shader actually sets the expansion factors for the patch; for best performance, the recommendation is to calculate the expansion factor in the Hull Shader proper and pass down as a control point constant (&ldquo;opposite edge factor&rdquo;).</p> <p>Picking a proper tessellation factor is a matter of taste, but there are some key points to remember:</p> <p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Most likely distance based heuristic.</p> <p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clip space is convenient as it handles distance implicitly, but if you require a non-linear falloff, may want view space.</p> <p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Don't forget silhouettes.&nbsp; If you use normal or view/clip triangle areas you will probably under tessellate the silhouettes.</p> <p>&nbsp;</p> <h2> &ldquo;Crack!!!&rdquo;</h2> <p>When using hardware tessellation, cracks and holes are the largest area of bugs.&nbsp; The nature of the system gives full control to the graphics programmer to break their mesh.&nbsp; It is probably a full article in and of itself to talk about crack avoidance.</p> <p>For this article we&rsquo;ll just concern ourselves with cracks from bad tessellation factors.</p> <p>Be careful when designing an algorithm to pick tessellation factors along edges.&nbsp; If you are not careful to maintain the same factors for primitives on both sides of an edge you will create T-junctions that will very likely cause cracking.&nbsp; One down side of the control you have over subdivision of each primitive is that you can break the C0 continuity of a mesh quite easily.&nbsp;</p> <p>In general, as long as you use non-divergent data as a source for tessellation factor calculation you should be safe.&nbsp; Example of divergent data that could be dangerous would be normals, UV coords, vertex colors, etc.&nbsp; Anything an artist can split per vertex of a shared primitive.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p class="rtecenter"><img alt=" Two abutting primitives. Each will calculate its own tessellation expansion factor, so be careful to make sure they match!" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_Figure4.png" /></p> <address class="rtecenter"> Figure 4 : Two abutting primitives.&nbsp; Each will calculate its own tessellation expansion factor, so be careful to make sure they match!</address> <p>&nbsp;</p> <h2> Choosing the tessellation factor</h2> <p>Let&rsquo;s talk about a couple of example of picking the expansion factor for your primitives.&nbsp; You&rsquo;ll probably want to think about the nature of your content and the game you are making to decide how you want your expansion factors to change.&nbsp; But I&rsquo;ve got some good starting points.</p> <h3> Important considerations when choosing a factor</h3> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Have an expansion factor based on camera matrix</p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Smoothly adjust the expansion based on inputs</p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extendable to account for complexity in any displacement maps on that primitive</p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parameterized for easy artist control/tweaking</p> <h3> Simple Method: The &ldquo;distance from camera&rdquo; heuristic</h3> <p>A simple way to calculate a tessellation factor might be to convert the distance from the camera into the range [1..64], possibly scaling or modifying the value along the way and use that as the tessellation factor:</p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_EQ2.png" /></p> <p><u>Advantage:</u> Relatively simple to calculate, and you could try out various &ldquo;SomeFunction()&rdquo;s to get a transition that you like.&nbsp; The easiest one would be:</p> <p align="center"><em>SomeFunction(x) = Cx</em>, where <em>C</em> is an artist driven constant that scales up the tessellation</p> <p><u>Disadvantage:</u> Not dependent on the actual size of the triangles, and so for unevenly triangulated meshes, you will either over-tessellate dense sections, or under-tessellate coarse sections.</p> <h3> Recommended method: The &ldquo;sphere diameter in clip space&rdquo; heuristic</h3> <p>One heuristic that meets all the general needs for a robust dynamic LOD system would be to use the diameter of a bounding sphere around the edge in clip space to determine the tessellation factors for each edge:</p> <p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>[CPU]</em>Define an artist/designer controlled parameter of the ideal geometry scale in terms of <strong><em>pixels per edge</em></strong>.&nbsp;</p> <p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>[CPU]</em>Convert this to <strong><em>edges per screen height</em></strong> before sending into shader constant memory</p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_EQ3.png" /></p> <p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>[GPU:Hull Shader ]</em>Obtain the diameter of a bounding sphere on each edge transformed into clip space and multiple by the shader constant to obtain a tessellation factor for the edge.</p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_EQ4.png" /></p> <p>Notes:</p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &ldquo;Screen Height&rdquo; might be more accurately labeled &ldquo;Render Target Height&rdquo;</p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em><u>ProjectionMatrix[1,1]</u></em>is the [1,1] component of the projection matrix</p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/gamedev/devtech-graphics-blog/GGBlog-DynamicTessellation_EQ5.png" /></p> <p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dividing by <em>Pos<sub>clip</sub>.W</em>will perspective correct the diameter</p> <p>Here&rsquo;s some HLSL that does this:</p> <pre> float GetPostProjectionSphereExtent(float3 Origin, float Diameter) { float4 ClipPos = mul( VIEWPROJ, float4( Origin, 1.0 ) ); return abs(Diameter * g_mTessProj11 / ClipPos.w); } float CalculateTessellationFactor(float3 Control0, float3 Control1) { float e0 = distance(Control0,Control1); float3 m0 = (Control0 + Control1)/2; return max(1,g_fDynamicTessFactor * GetPostProjectionSphereExtent(m0,e0)); }</pre> <p>This gets you an orientation independent parameter to use as a tessellation factor.&nbsp; The units of the perspective correct diameter are [0..1] where 1 would be interpreted as &ldquo;screen sized&rdquo;.&nbsp; Multiplying by the <em>EdgesPerScreenHeight</em> will convert the parameter into the unit of "desired # edges".</p> <h2> Wrap-up</h2> <p>Once you have your expansion factor calculation, that&rsquo;s about all you need for the LOD system.&nbsp; You could layer this on with an existing mesh swap LOD system to smoothly transition between distinct LODs or add in displacement maps for more control over mesh details using the domain shader</p> <p>To sum up, dynamic tessellation is a relatively easy way to add standout geometric fidelity to your title without having to maintain separate mesh models or deal with mesh popping and resource swapping headaches.</p> <p>As GPUs get more powerful, there will be more and more GPU resource to make use of and having a simple slider like &ldquo;triangle density&rdquo; allows you to take advantage of power that is not yet available.</p> <p>Hopefully I was able to convince you one of the most crucial and often overlooked pieces of dynamic tessellation LoDs is picking the tessellation expansion factors.&nbsp; Good luck!</p> <h2> Questions or Comments?</h2> <p>We'd love to hear your feedback on our DevTalk forums! &nbsp;Please visit <a href="https://devtalk.nvidia.com/default/topic/525542/directx-and-direct-compute/dynamic-hardware-tessellation-basics/" target="_blank">this forum topic</a> to discuss this blog post. &nbsp;Thanks!</p> NVIDIA Developer Blog Welcome to the Game & Graphics Technology Blog http://developer.nvidia.com/node/570178 <p>Part of NVIDIA&rsquo;s mission as a consumer graphics company is to help developers push the boundaries of what is possible in the world of real-time rendering. This mission does not stop with designing the world&rsquo;s most powerful graphics hardware &ndash; we also spend a great deal of effort researching how to best fit state-of-the-art rendering techniques onto our cutting-edge hardware, pushing the boundaries to find the Next Big Thing.</p> <p>While NVIDIA&rsquo;s architects work their voodoo on the silicon, and our driver engineers tame all of that horsepower so that it can easily be harnessed by the end-user, NVIDIA also has a team of graphics experts who spend their time working directly with game developers and helping them optimize their rendering engines in order to get the most out of whatever hardware their game is running on. Sometimes this simply involves doing analysis of how a frame is rendered and looking for inefficiencies that can be easily removed; other times, it may go so far as having an NVIDIA engineer go on-site with a developer and help them implement the stunning visual effects that make PC gaming continue to amaze end-users, generation after generation.</p> <p>Over the years, NVIDIA has spent at least some time studying the ins and outs of almost every major rendering engine to ship in the last decade. Chances are good that if you&rsquo;ve been a lead graphics programmer at a major studio you&rsquo;ve probably talked to one of us via e-mail at some point or another &ndash; and maybe even had one of us camp out in your spare office! That experience has provided us with a very broad and unique perspective on the different problems a developer might face, what the best solutions might be, and what issues might bite them down the road.</p> <p>In the future this blog will be filled with a variety of posts that share that expertise &ndash; in-depth discussions of clever rendering techniques, current hot-button problems, or lists of commonly made mistakes that programmers might not even be aware they&rsquo;re making. Over time we hope that this blog will become a hub of conversation for the real-time graphics community, and a trusted reference for those looking to validate what approaches might or might not best fit the current generation of hardware.</p> <p>So thank you for reading, and please check back soon &ndash; we&rsquo;ve got a lot of interesting topics planned, and we hope that all of you will follow this blog, and (most importantly) take part in the conversation!</p> NVIDIA Developer Blog 20x Faster OpenCV? Yes please! http://developer.nvidia.com/node/567806 <p>We know how excited a lot of you are to write your own computer vision applications with OpenCV (you haven&rsquo;t heard of the Open Source Computer Vision library? Read more here -&nbsp;<a href="http://opencv.org">http://opencv.org</a>). We&rsquo;re pretty excited too, because OpenCV gives us a&nbsp;<strong>great</strong>&nbsp;opportunity to show off how awesome Tegra is. Our new&nbsp;<em>OpenCV for Tegra</em>&nbsp;is a fully-compatible, backend implementation of&nbsp;<em>OpenCV for Android</em>, but yields 2-20x faster processing on Tegra 3-based devices.</p> <p>How hard is it to use? Well, there&rsquo;s no need to create different apks for different devices. You can use the&nbsp;<a href="https://play.google.com/store/apps/details?id=org.opencv.engine&hl=en">OpenCV Manager Android service</a> to make sure your app uses the latest OpenCV libraries for the customer&rsquo;s device. The manager will make sure the most-recent, device-appropriate OpenCV libraries are present and linked.</p> <p>Don&rsquo;t just take our word for it. Just check out the speedups on your own Tegra 3 device with this <a href="https://play.google.com/store/apps/details?id=org.opencv.imgdemo&feature=search_result#?t=W251bGwsMSwyLDEsIm9yZy5vcGVuY3YuaW1nZGVtbyJd">OpenCV for Tegra Demo App</a>.</p> <p>Can&rsquo;t wait to do all the programming stuff? Just download the <a href="https://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a>, and build your first OpenCV app with the just one click! We support both SDK (Java) and NDK&nbsp;(C/C++) development models for your programming convenience. Check out the "<strong>How to Use OpenCV for Tegra</strong><strong>" </strong>section of the TADP&nbsp;docs for more detailed&nbsp;info.</p> <p>If you have questions, feel free to hit us up on our DevTalk Forums in the <a href="https://devtalk.nvidia.com/default/board/105/android-development/">Android Development area</a>. See you there!</p> NVIDIA Developer Blog Hello, Nexus 7! http://developer.nvidia.com/node/552421 <p>By now, you've probably heard about the amazing specs (and price!) on the new Google Nexus 7 (if you haven't, go <a href="http://www.nvidia.com/object/nexus-7.html">here </a>and don't come back until you're done reading about it! :-).  Yes, it's amazing, but what's even MORE amazing is that you can use your Nexus 7 to deploy and debug your very own native Android applications.  <br />  <br /> While we would love to blog about the details and HOWTOs, we've set up a special page specifically for your shiny new Tegra 3-based Google Nexus 7.  Just bookmark <a href="http://developer.nvidia.com/google-nexus-7">http://developer.nvidia.com/google-nexus-7</a>.<br />  <br /> We look forward to seeing the amazing apps you can build!<br />  </p> NVIDIA Developer Blog NVIDIA Nsight Tegra has arrived! http://developer.nvidia.com/node/554136 <p>With Google IO kicking off, we have a lot of announcements coming, but nothing makes us codeslingers more excited than smart tools that let you get your work done faster.  To that end, I'm proud to present the latest powertool from NVIDIA: Nsight Tegra, Visual Studio Edition.<br />  <br /> We're excited because this tool brings one of the most powerful tools ever built, Microsoft Visual Studio, together with the flexible and popular Android platform.<br />  <br /> You can now import and manage your Android projects natively in Visual Studio 2010, seamlessly debug Java and native C/C++ code using familiar Visual Studio features (like watches and breakpoints), and see as much as a 20-30% performance increase in native (C/C++) Android code.  <br />  <br /> There are many other features as well, but we encourage you to check out (and bookmark) our <a href="http://developer.nvidia.com/nvidia-nsight-tegra">NVIDIA Nsight Tegra</a> page and join the <a href="http://developer.nvidia.com/tegra-registered-developer-program">Tegra Registered Developer Program</a> to get the latest updates.<br />  <br /> The official release of Nsight Tegra, Visual Studio Edition 1.0 will be available to all <a href="http://developer.nvidia.com/tegra-registered-developer-program">Tegra Registered Developers</a> in Q3 2012. To be notified of early access to the preview release, scheduled for late July, <a href="http://developer.nvidia.com/tegra-registered-developer-program">sign-up today</a>!<br />  <br /> Nsight Tegra will be available at no charge ($0), but requires a valid <a href="http://www.microsoft.com/visualstudio/">Visual Studio license</a>.<br />  <br /> Happy coding (and debugging)!<br />  <br /> - Jones</p> NVIDIA Developer Blog PerfHUD ES: An Introduction http://developer.nvidia.com/node/540091 <p>In the mobile game development world, developer studios are discovering that the Tegra chipset offers a huge array of visual features that cannot be found on other mobile platforms.&nbsp;</p> <p>When developers create games designed to take advantage of Tegra features, they want to use every tool at their disposal to tune the performance of their game. PerfHUD ES is one type of tool that lets developers get the most out of their Tegra-based hardware.</p> <p>The newest game from Madfinger,<a href="http://madfingergames.com/g_deadtrigger.html" target="_blank"> Dead Trigger</a>, highlights this eloquently (and by &ldquo;eloquently&rdquo;, we mean &ldquo;lots of violent visual effects&rdquo;).&nbsp; If you aren&rsquo;t too squeamish, we encourage you to check out the video at the bottom of this article that dramatically highlights those differences.</p> <h2> What does PerfHUD ES do?</h2> <div class="boxout-right"> <p align="left"><strong><em>"Yet again, NVIDIA shows they really know what developers are looking for. This is essential stuff!&rdquo;</em></strong></p> <p align="right"><em>Simon Morris, CTO</em><br /> <em>Strawdog Studios</em></p> </div> <p>PerfHUD ES uses data provided by the OpenGL ES driver and the NVIDIA Tegra GPU to show your GPU performance and highlight bottlenecks. This lets you target optimizations where they are most needed, instead of wasting time with unnecessary optimizations.</p> <p>Simon Morris, CTO of Strawdog Studios, captured the heart of the tool,<em> "PerfHUD ES is one of those special tools that developers tend to fall in love with. You have to work really smart to get the best out of GPUs on mobile devices and this tool has been a revelation - it shows us exactly where we can improve the quality and performance of our rendering pipeline. The ability to edit and recompile shaders on-the-fly is particularly awesome."</em></p> <p>During your debugging, PerfHUD ES provides full access to the state of the OpenGL ES pipeline, related textures and shaders, as well as all rendering states. This helps you quickly spot causes for improper setup and rendering anomalies.</p> <p>PerfHUD ES uses a client-server model, and the target device must run a special instrumented driver that communicates back to the host via TCP/IP. The PerfHUD ES host runs on any PC (Windows, Mac or linux) that supports OpenGL 1.5 (or higher), but keep in mind that PerfHUD ES for Tegra only supports OpenGL ES 2.0.</p> <p>PerfHUD ES is available to all Tegra Android Developers. Simply join the Tegra Registered Developer Program and download the <a href="http://developer.nvidia.com/tegra-android-development-pack" target="_blank">Tegra Android Development Pack</a>.</p> <h2> Ok, I downloaded it. Now what?</h2> <p>The Tegra Android Development Pack contains all the basic software you need to setup a full Android development environment on Windows, OSX or Linux, including the Android SDK/NDK, the Eclipse development environment, PerfHUD ES, and several samples.</p> <p>PerfHUD ES works on a number of "consumer" devices, as well as Tegra &ldquo;DevKits&rdquo; provided to key partners. Here are just a few of the devices that support PerfHUD ES:</p> <ul> <li> ASUS Transformer Prime (TF201)</li> <li> ASUS Transformer Pad 300 (TF300)</li> <li> HTC One X (International)</li> <li> Acer Iconia Tab 500</li> </ul> <h2> Getting started with PerfHUD ES</h2> <p>The PerfHUD ES interposer is enabled on the target device with the following command:</p> <p><code>adb shell setprop debug.perfhudes&nbsp;1</code></p> <p>This sets the debug.perfhudes property to 1, unleashing the phenomenal cosmic power of PerfHUD ES. Note that this property isn&rsquo;t persistent - you must re-enable it after every boot.</p> <p>PerfHUD ES requires TCP/IP to communicate to the host system. For this reason, you must make sure Internet permissions are enabled in your application (by adding <code><uses-permission android:name="android.permission.INTERNET"></uses-permission></code>in the AndroidManifest.xml).</p> <h2> Hello (Visual) World</h2> <p>We want to start off with a very simple demonstration of PerfHUD ES to help get you started. To do this, we are going to use the Globe application as our first application to debug (and let's face it, you have to appreciate the literal interpretation of "Hello World").</p> <p>Let&rsquo;s start by building the NativeGlobe application in Eclipse. We only cover using Eclipse here but the Tegra Android Development Pack installs this sample by default so you can also check it out there.</p> <p>For this example, we&rsquo;re going to assume that you&rsquo;ve installed the proper USB drivers for your Tegra device (Windows only) and that adb is working properly (&lsquo;adb devices&rsquo; from a command shell should list your device). If not, see <a href="http://developer.android.com/sdk/win-usb.html" target="_blank">this Android Developer page</a> for more information.</p> <h3> Open the Tegra Android Samples in Eclipse:</h3> <ol> <li> Launch the version of Eclipse installed by Tegra Android Development Pack (found in <code>C:\NVPACK\eclipse </code>by default).</li> <li> You will need to select a Workspace for Eclipse. For the Tegra samples, select <code>C:\NVPACK\nvsample_workspace</code>.</li> <li> In Eclipse, the first time it is launched, a &ldquo;Welcome&rdquo; screen is presented.&nbsp; Before continuing on, make sure you select &ldquo;Workbench&rdquo; (the curled arrow icon).</li> </ol> <h3> Compile the Tegra Android Samples:</h3> <ol> <li> In Eclipse, compile by going to <em>Project -> Build All</em>.</li> <li> If you only get warnings in the &ldquo;Problems&rdquo; tab on the bottom panel, move on to the next step.</li> <li> If you get the error, &ldquo;<em>The project cannot be built until build path errors are resolved</em>&rdquo;: <ol type="a"> <li> Close Eclipse.</li> <li> Reopen Eclipse, which should automatically reopen your project.</li> <li> Restart at step 1.</li> </ol> </li> <li> If you got a different error, don&rsquo;t proceed until it is solved.&nbsp; Check here for help:&nbsp;<a href="http://developer.android.com/sdk/ndk/index.html">http://developer.android.com/sdk/ndk/index.html</a></li> </ol> <h3> Configure PerfHUD ES:</h3> <ol> <li> To begin with, open a command shell and enable PerfHUD ES with the following command:</li> </ol> <p style="margin-left:1em;"><font color="#000000" family="Courier">adb shell setprop debug.perfhudes&nbsp;1</font></p> <p style="margin-left:1em;">Note that this property is not persistent and must be set each time the device is rebooted. In addition the property must be set <em>before</em> the application is launched.</p> <h3> Run the Sample Application:</h3> <ol> <li> In the Eclipse &ldquo;Project Explorer&rdquo; panel, right-click on the &ldquo;NativeGlobe&rdquo; project.</li> <li> Select <em>Run As -> Android Application</em>.&nbsp; This should automatically install and launch the app on your Tegra developer kit.&nbsp;</li> </ol> <h3> Launch PerfHUD ES on the Host:</h3> <ol> <li> Launch the PerfHUD ES Host program on your host PC (typically found in NVIDIA Corporation -> NVIDIA PerfHUD ES Tegra).</li> <li> The PerfHUD ES Host will automatically attempt to connect to running applications on the target device using ADB. Note that if you have problems with adb port forwarding, you may need to check that a local firewall is not blocking the port.</li> </ol> <p>Your working application should look like this:</p> <p class="rtecenter" style=""><img alt="PerfHUD ES Image" src="http://developer.nvidia.com/sites/default/files/akamai/mobile/images/PerfHUDES_Debugger_NativeGlobe.png" width="400px" /></p> <p>Now that you have PerfHUD ES running, feel free to experiment with the application. Next time we&rsquo;ll dive into the details.</p> <p><strong>CAVEATS</strong></p> <p>Instrumented debugging always comes with tradeoffs, and while we wish we could offer a truly transparent GPU debugger, there are a couple of small guidelines to remember:</p> <ul> <li> In the dashboard settings, enabling the &ldquo;GPU Idle trace&rdquo; may affect performance. If you don&rsquo;t directly require this particular trace, it&rsquo;s advisable to go ahead and disable it.</li> <li> To keep the function call count (and its subsequent timing overhead) to a minimum, you should disable error-checking in your profile build and try to reduce gl calls to a minimum.</li> </ul> <div> &nbsp;</div> <p><iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/HpzkCTe76Bc" width="560"></iframe></p> NVIDIA Developer Blog Join the fun at the Nsight Lab at the GPU Technology Conference http://developer.nvidia.com/node/511211 <p>We've just completed a succesful day training developers to debug and profile CUDA using NVIDIA Nsight for Visual Studio.</p> <p>If you missed the training today, join us Wednesday at GTC to learn about the powerful CUDA debugging features of Nsight that enable developers to quickly spot bugs or the&nbsp;comprehensive set of performance analysis tools provided by Nsight that allow developers to identify system level optimization opportunities as well as expensive and inefficient CUDA kernels.</p> <p>If these sessions aren't your cup of tea, swing by the Nsight Lounge to meet the Nsight development team, discuss specific product features or test out your application with the latest version of Nsight. The lounge is a great place to learn everything you ever wanted to know about the tool.&nbsp;</p> <p><strong>Schedule for Wednesday May, 15th, 2012:</strong></p> <p><strong>09:00-09:50am: CUDA ProfilerTraining on Windows</strong></p> <p><strong>10:00-10:50am:&nbsp;</strong><strong>NVIDIA Nsight Lounge</strong></p> <p><strong>02:00-02:50pm: CUDA Debugger on Windows</strong></p> <p><strong>03:00-03:50am:&nbsp;</strong><strong>NVIDIA Nsight Lounge</strong></p> <p><strong>04:00-04:50am: CUDA ProfilerTraining on Windows</strong></p> <p><strong>05:00-05:50am:&nbsp;</strong><strong>NVIDIA Nsight Lounge</strong></p> <p>As space is limited, reserve your spot in a specific lab here -&nbsp;<a href="http://www.gputechconf.com/page/home.html">http://www.gputechconf.com/page/home.html</a>.</p> <p>Here are some photos from today's sessions:</p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/tools/images/GTC12/DSC00234.JPG" style="width: 400px; height: 300px; " /></p> <p><img alt="" src="http://developer.nvidia.com/sites/default/files/akamai/tools/images/GTC12/DSC00235.JPG" style="width: 400px; height: 300px; " /></p> <p>Come join the fun!</p> <p>Stephen Jones&nbsp;(#nvidiajones)</p> NVIDIA Developer Blog DirectX9 support and local single GPU CUDA Debugging announced in latest NVIDIA Nsight Visual Studio Edition 2.2! http://developer.nvidia.com/node/508331 <p>The NVIDIA Developer Tools team is proud to announce the release of <b>NVIDIA &reg; Nsight&trade; Development Platform, Visual Studio Edition 2.2</b>, an application development platform for heterogeneous systems (formerly known as NVIDIA Parallel Nsight&trade;). This new release brings support for <b>single GPU Debugging</b> for CUDA developers on systems equipped with any GPU that supports hardware GPU debugging. For graphics developers, Nsight now supports <b>DirectX 9</b> in the Frame Debugger, Frame Profiler, Analysis and Nsight HUD.</p> <p>Nsight&trade; Visual Studio Edition 2.2 adds a number of new features to enhance debugging and profiling capabilities and is available under the <a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-registered-developer-program">NVIDIA Nsight&trade; Visual Studio Edition Developer Program</a> <i>(signup and login required)</i>.</p> <h3> <u><a href="http://developer.nvidia.com/nvidia-nsight-visual-studio-edition-registered-developer-program">Sign up</a></u> for free access to <u><a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-downloads"><b>download</b> and <b>learn more</b></a></u>.</h3> <p>This release requires <b>NVIDIA Display Driver Release 301.27 or newer</b>, available at <a href="http://developer.nvidia.com/rdp/nsight-visual-studio-edition-downloads">Nsight&trade; Visual Studio Edition Registered Developer Downloads</a> <i>(signup and login required)</i>.</p> <p>Here are a few highlights of the new Nsight 2.2 features:</p> <ul> <li> Local <b>CUDA debugging on a single GPU system</b>.</li> <li> Support <b>DirectX 9</b> for Frame Debugging, Frame Profiling and Analysis.</li> <li> Support for new <b>Kepler Architecture</b>.</li> <li> Support for <b>CUDA Toolkit 4.2</b>.</li> <li> SASS and PTX CUDA Debugging for <b>optimized kernel</b> and kernels without symbols.</li> <li> Improved Frame Profiler with <b>performance improvements</b> and <b>additional experiments</b>.</li> <li> Improved Frame Debugger <b>Visual Studio frame scrubbing performance</b>.</li> </ul> <p>&nbsp;</p> <p>We encourage all users to send feedback and report bugs within the Nsight&trade; Visual Studio Edition Registered Developer Program to help improve the quality of the software for future releases.</p> NVIDIA Developer Blog New Tegra Android Native Samples Pack Available: real solutions for common Android game development problems! http://developer.nvidia.com/node/503101 <p>The new Tegra Android Native Samples Pack includes code samples and support libraries that are designed to help developers with the most common Android Native 3D game coding issues.<br />  <br /> Lars M. Bishop, Senior Engineer, NVIDIA Tegra Developer Technologies<br />  <br /> We have just released our latest, upgraded <a href="http://developer.nvidia.com/tegra-android-sample-code">Tegra Android Native Samples Pack</a>, which helps developers looking to create high-end 3D games and apps using native (C/C++) code on Android. We’ve specifically targeted common issues for Android developers in practice, rather than the more common “assortment of cool 3D mini-demos”. We love 3D mini-demos, too; I’ve written many over the years and will hopefully write many more, but for this version of our samples pack, we wanted to do things differently.<br />  <br /> Back in February, in the lead-up to GDC 2012, while preparing for my GDC presentation on Android native game development tips and pitfalls (those slides and my complete notes are available at <a href="http://developer.nvidia.com/gdc-2012">NVIDIA's GDC 2012 content archive page</a>, BTW) I decided to focus the arc of the presentation to be more practical. Rather than “yet another deck of Android lifecycle and GPU performance” slides, I tackled the top issues we’d seen in a wide range of Android games.<br />  <br /> At the same time, we began to move our existing samples pack to Android’s <code>NativeActivity</code>. I wanted to build out our existing samples pack to focus on those same common issues from my talk, focusing on <code>NativeActivity</code>apps. A few of us in NVIDIA’s Tegra Developer Technologies team sat down and reviewed the main support questions and bugs we’d seen on 3D games in the Android Market. NVIDIA’s own QA reports for upcoming and past Tegra Zone games reinforced these same, common issues. Much of the samples pack came straight from these items:<br />  </p> <ul><li> Android lifecycle behavior of all kinds, especially in pure native apps (As detailed in our whitepaper on <a href="https://developer.nvidia.com/sites/default/files/akamai/mobile/docs/android_lifecycle_app_note.pdf">Android Lifecycle Behavior</a>)</li> <li> Use of Java-only Android features in native apps, such as launching an external app or displaying Android UI elements</li> <li> Accelerometer orientation-handling across tablets and phones (as discussed in our whitepaper on <a href="http://developer.download.nvidia.com/tegra/docs/tegra_android_accelerometer_v5f.pdf">Accelerometer Handling in Android</a>)</li> <li> Correct multi-finger gesture tracking</li> <li> Game controller support in native apps</li> </ul> <p> <br /> The new samples and my GDC talk focused on these areas. We extended the existing Google-supplied <code>NativeActivity</code>“wrapper”, <code>native_app_glue</code>to add a few features we found useful and surrounded <code>NativeActivity</code>with small helper libs for important game features. We tried to make all of the samples handle at least basic Android lifecycle, and provided two that are designed to be pretty complete examples of how to handle it. Since GDC, we added several more samples to the pack. One was dynamically changing the rendering resolution of a 3D native app on Android while still filling the screen. This has become a key feature for effects-heavy games needing to run on the increasingly wide range of screen resolutions seen on Android tablets.<br />  <br /> Finally, one area of samples came from a completely different direction: multimedia and Augmented Reality. Tegra not only fully supports and accelerates in hardware the OpenMAX AL multimedia APIs released in the Android NDK platform level 14, it extends them to include OpenMAX AL – OpenGL ES interop and protected/encrypted content. With these extensions, powerful multimedia tools like video editors, augmented reality apps, games and premium video content players can all be supported and accelerated on Tegra. I’d like to welcome you to try out the <a href="http://developer.nvidia.com/tegra-android-sample-code">new samples pack</a> – it’s a part of the latest <a href="http://developer.nvidia.com/tegra-android-development-pack">Tegra Android Development Pack</a> and Tegra Android Tools Pack, and can be downloaded from the <a href="http://developer.nvidia.com/develop-tegra">Develop for Tegra</a> page.<br />  <br /> Please give it a try - we'll be updating it over the coming weeks and months to add lots more topics, samples and libraries!</p> NVIDIA Developer Blog The GeForce GTX 680: A Developer's Perspective http://developer.nvidia.com/node/456946 <p>We encourage you to visit our <a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-680" target="_blank">GeForce GTX 680 page</a> on NVIDIA.com, but we wanted to take the time to highlight why this new GPU should be the heart and soul of your game development platform. Let's look at some raw data first, comparing to the GTX 580 (short version: We've tripled the number of cores, dramatically increased fill rates, AND decreased power consumption):</p> <table cellpadding="7" cellspacing="0" width="500"> <tbody> <tr> <td align="left" valign="top"> <div align="left"> <strong>GPU</strong></div> </td> <td align="left" valign="top"> <div align="left"> <p><strong>Fermi Family</strong></p> <p>GTX 580</p> </div> </td> <td align="left" valign="top"> <div align="left"> <p><strong>Kepler Family</strong></p> <p>GTX 680</p> </div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Transistors</strong></div> </td> <td align="left" valign="top"> <div align="left"> 3.0 billion</div> </td> <td align="left" valign="top"> <div align="left"> 3.54 billion</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>CUDA Cores</strong></div> </td> <td align="left" valign="top"> <div align="left"> 512</div> </td> <td align="left" valign="top"> <div align="left"> 1536</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Graphics Core Clock</strong></div> </td> <td align="left" valign="top"> <div align="left"> 772MHz</div> </td> <td align="left" valign="top"> <div align="left"> 1006MHz</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Shader Core Clock</strong></div> </td> <td align="left" valign="top"> <div align="left"> 1544MHz</div> </td> <td align="left" valign="top"> <div align="left"> n/a</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>GFLOPs</strong></div> </td> <td align="left" valign="top"> <div align="left"> 1581</div> </td> <td align="left" valign="top"> <div align="left"> 3090</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Texture Units</strong></div> </td> <td align="left" valign="top"> <div align="left"> 64</div> </td> <td align="left" valign="top"> <div align="left"> 128</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Texel fill-rate</strong></div> </td> <td align="left" valign="top"> <div align="left"> 49.4 Gigatexels/sec</div> </td> <td align="left" valign="top"> <div align="left"> 128.8 Gigatexels/sec</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Memory Clock</strong></div> </td> <td align="left" valign="top"> <div align="left"> 4008 MHz</div> </td> <td align="left" valign="top"> <div align="left"> 6008MHz</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>Memory Bandwidth</strong></div> </td> <td align="left" valign="top"> <div align="left"> 192.4 GB/sec</div> </td> <td align="left" valign="top"> <div align="left"> 192.26 GB/sec</div> </td> </tr> <tr> <td align="left" height="30" valign="top"> <div align="left"> <strong>Max # of Active Displays</strong></div> </td> <td align="left" height="30" valign="top"> <div align="left"> 2</div> </td> <td align="left" height="30" valign="top"> <div align="left"> 4</div> </td> </tr> <tr> <td align="left" valign="top"> <div align="left"> <strong>TDP</strong></div> </td> <td align="left" valign="top"> <div align="left"> 244W</div> </td> <td align="left" valign="top"> <div align="left"> 195W</div> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p>The GTX 680 offers several new architectural features that can be leveraged in the years to come. Here are a few:</p> <ul> <li> The GTX 680 continues the Graphics Processing Cluster (GPC) architecture of the Fermi series GPUs, using four GPCs and delivering 32 pixels per clock. However, the Kepler series has a next-generation Streaming Multiprocessor (SM) called SMX. Where the GTX 580 contained 16 SMs, the GTX 680 uses 8 SMXs, with substantial improvements in throughput both in terms of clock speed and bandwidth (in some cases as much as 6x higher).</li> <li> The SMX units also feature the new PolyMorph Engine 2.0, the workhorse of DX11 tessellation, can yield as much as 30% more performance, at higher expansion factors, than our GTX 580. We expect more and more adoption of tessellation as consumer demand for visual content increases, and the GTX 680 is designed to meet, and exceed, those demands.</li> <li> The faster 512Kb L2 Cache has had significant increases in throughput as well, up to 9x more with atomic operations to a single common address.</li> <li> Bindless Textures allow the GTX 680 to use millions of textures in a single scene, and eliminates the need for binding tables. The added benefit of this feature is that CPU utilization is dramatically reduced. At this time, bindless textures is only exposed in OpenGL. But in the future it's possible this could be exposed in DirectX via NVAPI, or future versions of DirectX.</li> </ul> <p>For a detailed description of all our new features, please read the <a href="http://www.geforce.com/Active/en_US/en_US/pdf/GeForce-GTX-680-Whitepaper-FINAL.pdf" target="_blank">NVIDIA GeForce GTX 680 Whitepaper</a>.</p> <p>&nbsp;</p> <p>&nbsp;</p> NVIDIA Developer Blog New Parallel Nsight Now Available! http://developer.nvidia.com/node/391741 <p>We are proud to announce the final release of <b>NVIDIA Parallel Nsight&trade; 2.1</b>. This release adds a number of new features to enhance debugging and profiling capabilities, including support for the new <b>CUDA Toolkit 4.1</b> available <a href="http://www.nvidia.com/getcuda">here</a>.</p> <h3> <a href="http://developer.nvidia.com/rdp/parallel-nsight-downloads">DOWNLOAD PARALLEL NSIGHT 2.1</a><br /> (login required)</h3> <p><i>To <b>download Parallel Nsight 2.1</b>, you must be signed up for the Parallel Nsight Registered Developer Program. Signing up and access is free of charge. Please follow the instructions <a href="http://developer.nvidia.com/nvidia-parallel-nsight-rdp">here</a> for more information.</i></p> <p>Parallel Nsight 2.1 requires <b>NVIDIA Display Driver Release 286.16 or newer</b>, available on the same download site.</p> <ul> <li> New&nbsp;<b>Frame Timings&nbsp;page</b> allows DirectX developers to get to the exact measured draw call timings in isolation or in concurrent execution of the GPU.</li> <li> Traced workloads can now&nbsp;<b>navigate the dependencies and call stack</b>&nbsp;to allow the developer to follow through GPU workloads, corresponding API calls and host code that was the cause of the activity.</li> <li> The new&nbsp;<b>CUDA information tool window</b>&nbsp;gives detailed information about the state of CUDA launches in the user&rsquo;s application. Users can filter and find detailed information about exceptions, asserts, breakpoints, MMU faults, and easily switch to a specific warp of interest to debug problems.</li> <li> <b>CUDA warp watch</b> visualizes variables and expressions across an entire CUDA warp.</li> <li> <b>CUDA profiler</b> now analyzes kernel memory activities, execution stalls and instruction throughput.</li> <li> Multiple bug fixes and stability improvements</li> </ul> <p>For a complete list of the new exciting 2.1 features, go <a href="http://developer.nvidia.com/parallel-nsight-21-new-features">here</a>.</p> <p>All current and future releases of Parallel Nsight will be distributed from the new <a href="http://developer.nvidia.com/rdp/parallel-nsight-rdp">Parallel Nsight Registered Developer Program</a> (login required).</p> <p>&nbsp;</p> NVIDIA Developer Blog Christmas comes early for Tegra Android developers at NVIDIA http://developer.nvidia.com/node/355966 <p>Santa came early to NVIDIA bringing a whole host of updates for Tegra Android Developers.</p> <p>First and foremost, PerfHUD ES for Android has been updated with a number of new features for all the "good" game and graphics developers on Santa's list.</p> <p>New features include:</p> <div> <ul> <li> Root access no longer required for Android.</li> <li> New counters added that quantify the time spent waiting each from by the OpenGL ES driver (2D HW, 3D HW and CPU).</li> <li> Added the &ldquo;Disable Texture Upload&rdquo; experiment, which indicates if an application is texture-data bound.</li> <li> Added the &ldquo;Disable Buffer Data&rdquo; experiment, which indicates if an application has issues with data loads.</li> <li> Added the &ldquo;Disable Uniform Upload&rdquo; experiment, which helps determine if data uploads are a bottleneck.</li> <li> <span style="background-color: transparent">Added the &ldquo;Disable Filtering&rdquo; experiment, which indicates if an application is limited by filtering.</span></li> <li> <span style="background-color: transparent">New counter added that measures vertex cache hits.</span></li> <li> New GPU Idle counter added to the Performance Dashboard.</li> </ul> </div> <p>The latest version of PerfHUD ES for Android is available for download as part of the Tegra Android Tooklit. Download a copy <a href="http://developer.nvidia.com/tegra-resources">here</a>.&nbsp;</p> <p>In addition, the Tegra Android Developer Pack, which configures an entire Android development environment at the click of a button, has been updated to Android NDK r7. The Tegra Android Toolkit has been updated with the latest versions of all the tools, docs and samples and the Tegra Android OS Images have been updated to support PerfHUD ES 1.9.</p> <p>Grab all of these updates&nbsp;<a href="http://developer.nvidia.com/tegra-resources">here</a>&nbsp;and have a Happy Holiday!</p> <p>Cheers!<br /> Jones//</p> <p>&nbsp;</p> NVIDIA Developer Blog Talking Power & Kal-El's Companion Core http://developer.nvidia.com/node/206906 <p>We are constantly asked by developers, "what's next and where is it?" While Tegra 2 devices continue to release, we are eagerly preparing for what's fast coming down the pipe. At the recent All Things D conference in Asia, NVIDIA's CEO, Jen-Hsun Huang, <a href="http://blogs.nvidia.com/2011/10/nvidia-ceo-wraps-up-all-things-d-asia-event/" target="_blank">discussed a range of topics</a> including the next generation quad-core Tegra processor codenamed "Project Kal-El."</p> <p>For the follow-up to the Tegra 2 chip, NVIDIA wanted many things. Of particular interest to our DevZone developers, we wanted more power to usher in the next generation of mobile games and apps, but also wanted to extend battery life in mobile devices. Low power <strong>and</strong>&nbsp;high performance. A complex balancing act but just the type of challenge NVIDIA is known to tackle. At All Things D, Jen-Hsun briefly explained the Kal-El chip's super low-power fifth CPU core and Variable SMP architecture which were recently revealed.</p> <p>For details on how NVIDIA continues to innovate in the mobile space, check out the Tegra whitepapers: <a href="http://www.nvidia.com/object/IO_90715.html" target="_blank">Variable SMP</a> & <a href="http://www.nvidia.com/object/IO_90715.html" target="_blank">Benefits of Quad-Core CPUs in Mobile Devices</a>.</p> NVIDIA Developer Blog Join NVIDIA @ Unite'11, Sept 28-30 2011 http://developer.nvidia.com/node/183556 <p>Calling all Unity Game Developers! Come meet with your favorite NVIDIA Tegra developers at <a href="http://unity3d.com/unite/">Unity's Unite Conference</a> this week at Nob Hill Masonic Center in San Francisco. We're sponsoring the Tuesday night early registration / reception event, so come by and say Hi!<br /> Use this opportunity to learn more about <a href="http://www.tegrazone.com/">TegraZone</a>, NVIDIA's game portal that exposes your game titles to millions of viewers each month. Talk to us in person or register with the <a href="http://developer.nvidia.com/zone-in">NVIDIA Zone In</a> program.</p> <p> We'll have our developer tools experts on hand to demonstrate <a href="http://developer.nvidia.com/phes">PerfHUD ES</a>, our graphics profiling and debugging tool that allows you to perform in-depth analysis of your Unity OpenGL ES scenes.<br /> Join us for a session of “Developing Games for Android” on Wednesday, September 28th, from 1:15 pm – 1:45 pm where we'll highlight everything you need to know about developing game titles for Tegra Android.<br /> Finally, we’ll be giving away a few Tegra Supertablets, so stop by!<br /><strong>See you there!</strong><br /> Jones/<br /> @nvidiajones<br />  <br /> Unity’s Unite 11 Conference<br /> September 28 – 30, 2011<br /> Nob Hill Masonic Center<br /> 1111 California Street<br /> San Francisco, CA  94108<br />  </p> NVIDIA Developer Blog Accelerated Path Rendering Videos http://developer.nvidia.com/node/163512 <p>We've been amazed at the community response to our new <a href="https://developer.nvidia.com/nv-path-rendering">NV Path Rendering SDK</a>, but Mark Kilgard has taken things a step further by creating <a href="http://developer.nvidia.com/nv-path-rendering-videos">several videos </a>that demonstrate the power of the NVIDIA's new Path Rendering SDK.</p> <p> You'll find <a href="http://developer.nvidia.com/nv-path-rendering-videos">short video demos</a> that cover the following topics:</p> <ul><li> Getting Started Programming NV_path_rendering</li> <li> Mixing Path Rendering and 3D</li> <li> Scalable Vector Graphics (SVG) demo Part 1</li> <li> Scalable Vector Graphics (SVG) demo Part 2</li> <li> Scalable Vector Graphics (SVG) demo Part 3</li> <li> Projective Warping of Path Rendering</li> <li> Holes and Texture Gradient Demo, and</li> <li> Projected Animated Text</li> </ul> <p> If you're new to Path Rendering, or an experienced vector artist, you're going to enjoy what Mark has to offer!</p> NVIDIA Developer Blog Tegra Zone comes to the web and developers can now Zone In http://developer.nvidia.com/node/158402 <p>A big day today for NVIDIA and the Tegra developer community. NVIDIA has just launched the online version of Tegra Zone plus a new program called Zone In!<br /> The Tegra Zone app for Android phones and tablets has been showcasing great games for many months and today we're launching the Tegra Zone website at <a href="http://www.tegrazone.com">www.tegrazone.com</a>. Now using your laptop or desktop you can access the latest game news, reviews and release information for Tegra-optimized games and Tegra-powered devices.<br /> The other, perhaps even bigger news for developers, is the launch of <a href="http://developer.nvidia.com/zone-in">Zone In</a>. With over 250,000 games and apps in the Android Market, it can be a challenge to get your game noticed. Tegra Zone provides wonderful exposure to mobile gamers but getting a game featured on Tegra Zone has been a manual process. Until now. Zone In provides a simple online submission form for developers to submit their game for consideration by the Tegra Zone team. Let us know about your game over at the Zone In page (<a href="http://developer.nvidia.com/zone-in">developer.nvidia.com/zone-in</a>) and you just might see your game listed on Tegra Zone!<br /> To commemorate the launch of <a href="http://www.tegrazone.com">TegraZone.com</a>, NVIDIA is giving away five <a href="http://us.acer.com/ac/en/US/content/series/iconia-tab-a">Acer Iconia Tab A500</a> Android tablets, powered by the dual-core Tegra 2 processor, during the launch month. For details, see <a href="http://www.tegrazone.com">TegraZone.com</a>.<br />  </p> NVIDIA Developer Blog Join NVIDIA @ SIGGRAPH, August 9th-11th 2011 http://developer.nvidia.com/node/144626 <p>Meet with other NVIDIA developers at the Vancouver Convention Centre, booth #453, to learn about new, breakthrough technologies for advanced visualization, game, graphics and GPGPU development.</p> <p><strong>NVIDIA Tech Talk Presented by Dell</strong></p> <p>On Monday, August 8<sup>th</sup> from 9:00am-5:30pm, we have a number of great talks at the <strong>NVIDIA Tech Talk Presented by Dell</strong>. Join us in the <em>West Building, Room 220</em> for seven engaging talks including panel discussions and technical deep dives covering everything from advanced ray tracing and rendering to tessellation.</p> <p>Visit here for the latest schedule: <a href="http://www.nvidia.com/object/siggraph-2011.html">http://www.nvidia.com/object/siggraph-2011.html</a></p> <p><strong>NVIDIA Technology Theater, sponsored by HP</strong></p> <p>Each day of the exhibition, the NVIDIA Technology Theater presents technology and product demonstrations from 3<sup>rd</sup> party developers as well as our internal technology experts.</p> <p>Visit here for an up to date schedule of theater events: <a href="http://www.nvidia.com/object/siggraph-2011.html">http://www.nvidia.com/object/siggraph-2011.html</a></p> <p>If you can&rsquo;t make it to a session, most of the theater presentations will be streamed live on the NVIDIA Facebook page at <a href="http://www.facebook.com/NVIDIA">http://www.facebook.com/NVIDIA</a>.</p> <p>See you there!</p> <p><strong>Jones/</strong></p> NVIDIA Developer Blog Accelerated Path Rendering in OpenGL with NVIDIA Path Rendering SDK http://developer.nvidia.com/node/134206 <p>Conventional OpenGL supports rendering images (pixel rectangles and bitmaps) and simple geometric primitives (points, lines, polygons). NVIDIA's NV_path_rendering OpenGL extension adds a new rendering paradigm, known as path rendering, for rendering filled and stroked paths. Path rendering approach is not novel-but rather a standard part of most resolution-independent 2D rendering systems such as Adobe’s PostScript, PDF, and Flash; Microsoft’s TrueType fonts, Direct2D, Office drawings, Silverlight, and XML Paper Specification (XPS); W3C’s Scalable Vector Graphics (SVG); Sun’s Java 2D; Apple’s Quartz 2D; Khronos’s OpenVG; Google’s Skia; and the Cairo open source project.  What is novel is NV_path_rendering ability's to mix path rendering with arbitrary OpenGL 3D rendering and imaging, all with full GPU acceleration.<br /> With the NV_path_rendering extension, path rendering becomes a first-class rendering mode within the OpenGL graphics system that can be arbitrarily mixed with existing OpenGL rendering and can take advantage of OpenGL's existing mechanisms for texturing, programmable shading, and per-fragment operations.<br /> Unlike geometric primitive rendering, paths are specified on a 2D (non-projective) plane rather than in 3D (projective) space. Even though the path is defined in a 2D plane, every path can be transformed into 3D clip space allowing for 3D view frustum & user-defined clipping, depth offset, and depth testing in the same manner as geometric primitive rendering.<br /> We invite you to visit our <a href="http://developer.nvidia.com/nv-path-rendering">NV Path Rendering</a> page for our SDK, demos, and papers.<br />  </p> NVIDIA Developer Blog A Walk Through Direct3D SDK 11 http://developer.nvidia.com/node/126641 <p>Back in March, we released a new version of our Graphics SDK, with a host of new samples focusing on exploiting new DirectX 11 features and some exciting technologies that can be exploited in either DirectX 11 or older APIs. In order to help get the word out and direct people to the samples that are of the greatest interest, we've written up quick walk-through of the SDK 11. For more information on any of these, please visit the <a href="http://developer.nvidia.com/nvidia-graphics-sdk-11-direct3d">Direct3D Graphics SDK 11 page</a> on the Nvidia Developer Zone to download source and whitepapers.</p> <h1> &nbsp;</h1> <h1> Tessellation</h1> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/ShowTessellationPatterns_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/Island11_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/TerrainTessellation_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/PNPatches_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/GregoryACC11_sm.jpg" style="width: 128px; height: 128px; " /></div> <p>&nbsp;</p> <p>The first major DirectX 11 feature that the SDK covers is hardware-accellerated tessellation. For those not familiar, DirectX 11 adds several stages to the geometry pipeline, which allow new classes of shaders to determine if and how each polygon produced by the Vertex Shader should be subdivided; the GPU generates the desired mesh accordingly, and then then, a second shader runs on the resulting geometry so that it can be manipulated as the programmer sees fit.</p> <p>The first sample pictured above,<em> Tessellation Pattern Viewer</em>, provides a simple visual explanation of how the subdivision is controlled, as well as examples of the various modes that DirectX 11 tessellation can run in.</p> <p>Tessellation is a natural solution for geometry that is largely data-derived and where the players view may vary widely within a scene. The <em>Island</em> sample demonstrates how tessllation can be used for objects like terrain and water, deriving the desired tessellation level from the camera position and using texture data to generate geometry at the desired detail level on the fly. Meanwhile, the <em>Terrain Tessellation</em> sample takes this a step further, demonstrating how this can be applied to a massive streaming dataset, dynamically loading new terrain sections and showing how to adjust tessellation factors so that T-junctions aren't visible at the seams.</p> <p>The last two samples demonstrate everything you need to know to extend tessellation technology to artist-generated content. <em>The PN-Triangles</em> and <em>Gregory ACC</em> samples each show how to determine scaling factors, offset tessellated vertices using interpolated positions and normals, and avoid gaps at seams.</p> <h1> &nbsp;</h1> <h1> DirectCompute and Simulation</h1> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/nBodyCS_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/ConstantTimeGaussian_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/SSAO11_128.png" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/Hair_sm.png" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/OceanCS_sm.jpg" style="width: 128px; height: 128px; " /></div> <p>&nbsp;</p> <p>The second major addition to DirectX 11 is DirectCompute -- an extension of the API that allows DirectX programs direct access to the tremendous parallel processing performance Nvidia's GPUs can provide. Applications can use this power for a variety of purposes, from Physical Simulation to AI to advanced rendering techniques that might not fit perfectly into the traditional graphics pipeline. SDK 11 includes a few samples that show the basics of how such systems could be written, as well as some techniques which are useful on their own.</p> <p><em>N-Body Interaction</em> demonstrates how to efficiently access memory and run calculations on a large number of independant objects, like you might find in a physical simulation. <em>Constant Time Gaussian Blur</em> takes some of those same techniques and applies them to 2D image processing, showing how to quickly blur an image efficiently and independant of kernel width. <em>Horizon-Based Ambient Occlusion</em> using Compute shaders provides an example of a Screen-Space Ambient Occlusion effect done using Direct Compute. Finally, <em>Hair</em> takes advantage of both DirectCompute and tessellation to render convincing, physically interactive hair, while <em>FFT Ocean</em> shows how you can perform complex data transforms efficiently on the GPU to generate realistic ocean waves.</p> <h1> &nbsp;</h1> <h1> Shadows and Lighting</h1> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/OpacityMapping_sm.jpg" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/MultiViewSoftShadows_128.png" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/DiffuseGlobalIllumination_sm.jpg" style="width: 128px; height: 128px; " /></div> <p>&nbsp;</p> <p>The new SDK is not restricted to just new features like Tessellation and Compute -- we've included several samples that focus on more conventional rendering problems like particles, shadows, and lighting as well.&nbsp;</p> <p><em>Opacity Mapping</em> is a technique for rendering dense particle volumes with plausible self-shadowing from multiple light source. The sample provides a set of techniques to make this otherwise expensive process efficient, including rendering to off-screen targets at varying resolutions and a creative use of DirectX 11 tessellation. <em>Multi-View Soft Shadows</em> demonstrates an efficient method for rendering contact-hardening soft shadows, providing important scale and depth cues to 3D scenes. Last, <em>Diffuse Global Illumination</em> is an implementation of the "Cascaded Light Propogation Volumes for Real-Time Indirect Illumination" first described by Crytek in 2010, and shows one way of approximating indirect illumination effects in a dynamic scene.</p> <h1> &nbsp;</h1> <h1> Other</h1> <div> <img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/Fxaa_sm.png" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/StochasticTransparency_128.png" style="width: 128px; height: 128px; float: left; " /><img alt="" src="https://developer.nvidia.com/sites/default/files/akamai/gamedev/images/sdk/StereoIssues_sm.jpg" style="width: 128px; height: 128px; " /></div> <p>&nbsp;</p> <p>Last but not least, the SDK includes a few samples that demonstrate technology that is not dependant on DirectX 11 features, but &nbsp;which may nonetheless very interesting to developers. The first such sample is&nbsp;<em>Image-Based Anti-Aliasing</em>, which provides a reference implementation of the FXAA anti-aliasing algorithm. FXAA &nbsp;provides much better performance than traditional MSAA, and better quality than many other image-based anti-aliasing methods, and has versions for both DirectX 11 and DirectX 9 pipelines. Next, <em>Stochastic Transparency</em> implements an innovative approach to solving the order-independant transparency problem in an efficient manner. Finally, <em>3D Vision Sample</em> provides a reference for applications aiming for compatibility with Nvidia's 3D Vision automated support. The &nbsp;sample demonstrates several of the most common issues developers run into, and the best ways to resolve them.</p> NVIDIA Developer Blog Fluid Simulation in Alice: Madness Returns http://developer.nvidia.com/node/96151 <p>by Simon Green, Richard Tonge, Miguel Sainz, Dane Johnston, and David Schoemehl</p> <p>Note: This is a technical article that complements our consumer-oriented article on GeForce.com, "<a href="http://www.geforce.com/News/articles/physx-in-alice-madness-returns" target="_blank">Alice: Madness Returns PhysX Comparison</a>."</p> <p>A PDF version of the article can be found <a href="http://developer.nvidia.com/sites/default/files/akamai/tools/docs/Fluid_Rendering_Alice.pdf">here</a>.</p> <h3> <strong>Overview</strong></h3> <p>If you&rsquo;ve had a chance to play &ldquo;Alice: Madness Returns&rdquo; with the high NVIDIA&reg; PhysX&reg; setting you&rsquo;ve undoubtedly noticed the black goop oozing from the various Doom enemies.&nbsp; Developer Spicy Horse Games was originally working on such an effect for their game but struggling with a solution that provided both the look and performance needed on consoles and PC.&nbsp; By working with NVIDIA's Developer Technology (DevTech) team they were able to create a convincing fluid effect using a simulation technique called Smoothed Particle Hydrodynamics and an image based rendering technique both accelerated on the GPU.&nbsp; Simulating fluid as a set of particles that interact with each other, rather than moving independently as in other games, Smoothed Particle Hydrodynamics allows fluid to collide with and flow over the static environment and move realistically when a solid object or character interacts with it. The density of the fluid is constantly measured at each particle based on the number of neighboring particles within a certain radius. The particles move in such a way to keep the density constant. When an object or the ground interrupts the motion of the fluid, the shifted particles become temporarily denser than the main body of the liquid, resulting in a puddle or splash depending on the calculated forces. In Alice, a complex scene can have over 10,000 simultaneous particles being simulated and rendered in total. These kind of effects can only be achieved at interactive framerates by leveraging the massively parallel power of the GPU.</p> <p>Explaining the difference between the fluid in Alice: Madness Returns and fluids in other games (such as Portal 2's gels, which impressed many a player and were achieved even on consoles), NVIDIA's David Schoemehl explains that, "the most noticeable difference with the fluid in Alice is that it does not become a decal when it hits the ground; it is constantly interacting with the ground, objects and player in order to provide the user with a truly immersive effect." Since these kind of PhysX effects can be taxing on a machine without proper GPU acceleration this effect was offered as a feature on the high PhysX setting.&nbsp;</p> <h3> <strong>Creating Content for the Fluid Effect</strong></h3> <p>Creating the oil effect for Alice: Madness Returns was a multiple step process.&nbsp;The DevTech team started by getting the visual effect correct based on the artwork and assets that Spicy Horse had already created.&nbsp;The emphasis here is on getting the colors, the reflections, and the thickness all setup so that the oil will fit with the existing oil effects in the game.&nbsp;Once the visuals look correct, the physical fluid parameters are adjusted so that the fluid behaves correctly.&nbsp;This involves adjusting a small set of parameters on the fluid simulation so that you get proper viscosity, friction and density of the fluid.&nbsp;Changing these parameters can make the fluid feel thicker or change how quickly it flows over a surface.&nbsp;This will also have an impact on how it reacts when a player runs through it or when other objects come into contact with the fluid. Once everything is tuned, it is simply a matter of connecting it into the game so that the black oil will spawn at the appropriate times. This pattern can be easily replicated for fluids of other viscosity and stickiness.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/liquidcollage.jpg" width="650" /></p> <h3> <strong>Making Fluid Behave Like Fluid</strong></h3> <p>Smoothed Particle Hydrodynamics(SPH) is a method for simulating a fluid as a set of moving particles. A <a href="http://www.youtube.com/watch?v=ok8ThRR-59Q" target="_blank">YouTube video can be seen here</a> that shows simulated water flow effects using SPH. Representing fluids as particles is quite convenient, as games have a long history of using particles for other types of effects. The kinds of fluids we like to simulate in games (such as water and goop) are almost incompressible in real life, but with a particle system it is natural to model them as compressible fluids that happen to be very stiff. The &ldquo;nature&rdquo; of an SPH fluid is determined by a so called equation of state and the equation of state used by PhysX is one that drives the particles towards a desired rest spacing, or rest density. Maintaining the target rest density gives the illusion that the fluid is incompressible.</p> <p>In PhysX, fluids are simulated using the following 3 Stage process:</p> <p>First, we check particles for collision against the static environment and if necessary move them out of solid objects.&nbsp;Responding to such collisions allows the fluid to interact with the terrain, objects and characters in the scene providing a more immersive experience for the user. In Alice: Madness Returns you can see this as the black goop hits the ground or characters walk through it.</p> <p align="center"><img src="http://developer.download.nvidia.com/assets/tools/images/SPH_Collision.png" /></p> <p>Second, while the previous step is common to other types of particle systems, this step is where the real SPH work happens. The goal is to drive the particles towards a desired rest density, so we must first define what we mean by density, and then calculate that at each particle position in the fluid. We want the density at each particle to be influenced by the number of neighboring particles within a certain radius. That is the closer a particle is to its neighbors, the higher we want the measured density to be.&nbsp;Also, we'd like this density to vary smoothly as the particles move around.&nbsp;In SPH, the density at each point (the density field) is calculated by placing a Gaussian shaped splat at each particle position and summing them together. The following graph shows how this works in 1D. The X axis is distance from the origin, and the Y axis is the density. Notice that the density is highest for the two particles in the center that are closest together.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/SPH_Density_Curve.png" /></p> <p>Third, once we know the density at each particle, we apply the equation of state to calculate the pressure at each particle. In PhysX, the equation of state is simply the distance the density is from the rest density scaled by a constant. We then apply forces to move the particles from areas of high pressure to areas of low pressure.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/SPH_Density_Curve_Move.png" /></p> <p>When particles hit a static object (stage 1), their densities become temporarily larger than the rest density (stage 2), so the only way to maintain the rest density (stage 3) is for this stage to move them sideways. This results in a puddle or splash, which shows the incompressible nature of the fluid and adds to the realism of the scene.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/SPH_Density_Rest.png" /></p> <p>The PhysX SPH simulation is implemented on the GPU using the CUDA programming language, using a GPU thread for each individual particle. This enables tens of thousands of particles to be computed in parallel.</p> <p>The amount of particles used to simulate the goop in Alice: Madness Returns can reach over 10,000.&nbsp;When running with NVIDIA GPUs this simulation is hardware accelerated, which provides a considerable performance boost.&nbsp;The hardware acceleration is what allows Alice: Madness Returns to maintain a smooth frame rate while running this complex simulation with this high number of particles.</p> <p>The video below highlights the fluid effects we will discuss in detail below.</p> <p align="center"><iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/3Y23IfCCmlM" width="560"></iframe></p> <h3> Rendering of Fluid Particles</h3> <p>Rendering particle based fluids is quite difficult, since the simulation does not naturally generate a surface. The focus of the simulation is on particle positions and density.</p> <p>The traditional approach is to use marching cubes by generating a density field from the particles, and the extract a polygon mesh &ldquo;iso surface&rdquo;. This is a very expensive process that although can be done in the GPU, it will not produce the desired detail while keeping the frame rate at playable levels.</p> <p>The approached followed in Alice is to use a screen space fluid rendering technique that will generate the surface closest to the point of view of the player.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/flowchart_01.png" width="666" /></p> <p>As illustrated in the figure, the first step of the algorithm is to generate a depth buffer that will contain the pixels of the surface of the fluid. This is achieved by rendering the particles as point sprites (quads) with a variable size in screen space (but constant in world space). In the pixel shader we compute the real depth of each pixel of the spheres and output it to a floating point render target.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/point_sprite_spheres_02.png" width="650" /></p> <p>Once we have the depth buffer of the pixel on the surface of the fluid, we blur it to generate a smooth surface and remove the appearance of the individual spheres. We do this by applying a two pass bilateral filter that preserves sharp discontinuities in depth, while blurring the smoothly varying depth areas.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/sphere_depth_03.png" width="650" /></p> <p>As we can see above, the result of a na&iuml;ve blurring does produce a overall smoother image, but does blur the edges between overlapping layers of fluid, which is not desirable.&nbsp;The bilateral filter, does not smooth as strong but does preserve edges, hence this is the chosen solution. The effect&nbsp;can be seen in the diffuse shaded images below.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/diffuse_shaded_08.png" width="325" /><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/diffuse_shaded_filtered_09.png" width="325" /></p> <p>In order to shade fluid surface, we need a smooth surface normal, so in a second full screen pass, the normal of each pixel is computed from the depth and written to a separate render target. This normal is computed using partial differences of the depth, by looking at the depth values of neighboring pixels. Edges can be tricky and need to be treated separately.&nbsp;</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/sphere_normals_from_depth_04.png" width="650" /></p> <p>At this point we have a smooth surface position (calculated from the depth) and normal, and can proceed to shading the surface by rendering a full screen quad and computing fluid color per pixel. We can easily add effects like Fresnel and reflections on top of the diffuse pass</p> <h4> Original particle simulation rendered as spheres</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/point_sprite_spheres_02.png" width="666" /></p> <h4> Depth buffer of the particles</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/sphere_depth_03.png" width="666" /></p> <h4> Normal buffer of the particles</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/normal_buffer_10.png" width="650" /></p> <h4> Diffuse shading N dot L</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/diffuse_shading_ndotl_11.png" width="650" /></p> <h4> Wrapped diffuse shading&nbsp;(N dot L ) * 0.5 + 0.5</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/wrapped_diffuse_shading__12.png" width="650" /></p> <h4> Specular</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/specular_shading_13.png" width="650" /></p> <h4> Fresnel</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/fresnel_shading_14.png" width="650" /></p> <h4> Cubemap reflection</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/cubemap_reflection_15.png" width="650" /></p> <h4> Cubemap reflection * Fresnel</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/cubemap_reflection_and_Fresnel_16.png" width="650" /></p> <h4> All together</h4> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/combined_17.png" width="650" /></p> <p>Fluids are often transparent, but this rendering approach only generates the surface of the fluid closest to the camera, which can produce an unnatural look if transparency is enabled. The solution is to add an additional pass parallel to the generation of the depth surface to compute a thickness parameter for the fluid. Then we can render it as a semi-opaque surface using this thickness to attenuate the color.</p> <p>To generate the thickness, we render all the particles using additive blending (no depth test). Particles are rendered as discs and the result is then blurred. We only need an approximation; so to make this very expensive pass we can even compute it at lower resolution.</p> <p align="center"><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/transparency_01.png" width="325" /><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/transparency_02.png" width="325" /><br /> <img alt="" src="http://developer.download.nvidia.com/assets/tools/images/transparency_03.png" width="325" /><img alt="" src="http://developer.download.nvidia.com/assets/tools/images/transparency_04.png" width="325" /></p> <h3> Conclusion</h3> <p>Simulating and rendering fluids is a challenging problem which up until recently required minutes or hours per frame to compute. It is only thanks to the massive parallelism and performance of modern GPUs that it has become possible in real-time. NVIDIA has shown several real-time fluid demos over the years. However, it is one thing to produce a technical demo, but is much harder to integrate fluid simulation into a commercial game. NVIDIA was happy to work with &nbsp;Spicy Horse in order to enhance Alice: Madness Returns with this advanced effect and bring the final product closer to their original artistic vision.&nbsp;</p> <h3> Additional Reading</h3> <ul> <li> <a href="http://www.matthiasmueller.info/publications/sca03.pdf">Particle-Based Fluid Simulation for Interactive Applications</a>, Matthias M&uuml;ller, David Charypar and Markus Gross, Eurographics/SIGGRAPH Symposium on Computer Animation (2003)</li> <li> <a href="http://developer.download.nvidia.com/presentations/2010/gdc/Direct3D_Effects.pdf">Screen Space Fluid Rendering for Games</a>, Simon Green, Game Developers Conference (2010)</li> </ul> NVIDIA Developer Blog Tegra Developer Day & Google IO http://developer.nvidia.com/node/52026 <p>San Francisco has been a-buzz with everything mobile over the last few days. On Monday, NVIDIA held the inaugural <a href="https://developer.nvidia.com/content/tegra-game-developer-day">Tegra Developer Day</a> and for Tuesday and Wednesday the ever amazing <a href="http://www.google.com/events/io/2010/" target="_blank">Google IO</a> conference wowed developers at the Moscone Center.</p> <p>All of us at NVIDIA are extremely happy with the Tegra event and hope that next year we'll see even more developers as word spreads. We had some excellent technical presentations (they'll be available soon on the Developer Zone) and thanks to our partner LG, we were even able to let some lucky developers go home with the latest Tegra superphone, the <a href="http://g2.t-mobile.com/G2x" target="_blank">T-Mobile G2x</a>. In addition to LG, we'd like to thank our software partners <a href="http://www.accelereyes.com" target="_blank">Accelereyes</a>, <a href="http://www.metaio.com" target="_blank">Metaio</a> and <a href="http://unity3d.com" target="_blank">Unity</a> for showing the audience how they're using Tegra to push the envelope of mobile game and software development.</p> <p><a href="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/AndroidSandbox_720.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; line-height: inherit; color: rgb(51, 153, 204); text-decoration: none; background-position: initial initial; background-repeat: initial initial; "> <img alt="Tegra partners at the Android Sandbox at Google IO" src="https://developer.nvidia.com/sites/default/files/akamai/mobile/images/AndroidSandbox_sm.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; line-height: inherit; float: right; background-position: initial initial; background-repeat: initial initial; " /></a></p> <p>A few NVIDIA engineers were lucky enough to stay on in San Francisco and attend Google IO. It's always great to see what Google has been working on and this year they had announcements (and <a href="http://www.samsung.com/global/microsite/galaxytab/" target="_blank">giveaways</a>!) that really raise the bar for mobile and online devices. We were also pleased to see so many of our TegraZone and partner game studios featured in the Android Developer Sandbox. Well done!</p> <p>Tegra is an amazing chip and it's so great to see its momentum building. To keep up with what's going on, be sure to check the blogs or come and see us at our up-coming shows such as Computex and E3.</p> NVIDIA Developer Blog Tegra revs and roars http://developer.nvidia.com/node/19431 <p>The Tegra processor is quite an amazing piece of silicon. It's smaller than your thumbnail and yet can drive a Lamborghini! Well, not quite but Tegra will be driving all the in-cabin entertainment in next year's just announced Lamborghini LP 700-4 Aventador.<br /> </p> <p>The Aventador looks awesome from both the outside and when sitting in the fighter-jet-inspired cabin. Tegra's power shines when looking at the amazing entertainment system and especially the 3D GPS maps. In a supercar like this, milliseconds count and Lamborghini (like their parent <a href="http://blogs.nvidia.com/2011/01/nvidia-and-audi-talk-tegra-2-connected-cars-and-the-2011-a8l/" target="_blank">Audi</a>) has adopted Tegra to provide a smooth and fast interface. Just what you need when trying to find your favorite song at a top speed of 217mph (350kmh)!</p> <p style="margin-bottom: 0em;">Take a look at some of the great videos and reviews and keep an eye out as there will no doubt be more coming.&nbsp;</p> <ul style="margin-bottom: 1em;"> <li> <a href="http://www.topspeed.com/cars/lamborghini/2012-lamborghini-aventador-lp700-4-ar100112.html" target="_blank">Top Speed review</a></li> <li> <a href="http://www.youtube.com/embed/hGxNw3Lpv9Q" target="_blank">Overview video</a></li> <li> <a href="http://www.youtube.com/embed/GZ8OGFHgtV8" target="_blank">In-cabin video</a></li> </ul> <p>Oh, and for those wanting to preconfigure theirs (or dream), check out the official <a href="http://www.aventador.com" target="_blank">Aventador homepage</a>.</p> NVIDIA Developer Blog Android tablets are here! http://developer.nvidia.com/node/19226 <p>Up until now, the majority of Android devices have been mobile phones. That is changing. A large number of tablet devices are coming to market powered by the NVIDIA Tegra 2 processor. These devices offer new user experiences and a chance for developers to engage with users in new and exciting ways. We are encouraging developers to prepare their applications and games for these new devices.</p> <h3> Larger Screens</h3> <p>Many tablets use screens that have physical sizes larger than mobile phones. They range from diagonal widths of 5" to 11" and over.</p> <p>While the physical size of a device is not a huge concern for developers, you should keep it in mind. Be sure to include some logic in your application so that a user is not presented with a stretched or crammed experience. For instance, adjust the font size such that fonts are not stretched over a larger screen or too tiny to read on a small screen.</p> <p>For a more in-depth discussion of screen size, please check the NVIDIA <a href="http://developer.download.nvidia.com/tegra/docs/GameSauce2010/Gamesauce_Mobile_Session_2_NVIDIA_Bishop.pdf">GameSauce 2010 presentation</a>.</p> <h3 style="margin-bottom:0.5em"> Screen Density</h3> <p>Screens are not only getting physically larger, many of the smaller screens are packing more pixels into the same space. This is of particular concern for UI elements that can be incorrectly aligned and scaled if screen densities are not considered. We suggest studying Google's <a href="http://developer.android.com/guide/practices/screens_support.html">guide to screen densities</a> and note the new extra large screen size used by tablets.</p> <h3 style="margin-bottom:0.5em"> Fill Rate</h3> <p>Along with larger screen sizes come larger screen resolutions. For 3D applications resolution impacts fill-rate, the amount of shader processing, and ultimately the performance of the application.</p> <h5> Screen Resolutions and Pixel Counts</h5> <table border="1" cellpadding="1" cellspacing="1" style="width: 80%;"> <tbody> <tr> <td valign="top" width="92"> <strong>Name</strong></td> <td valign="top" width="104"> <strong>Width</strong></td> <td valign="top" width="104"> <strong>Height</strong></td> <td valign="top" width="123"> <strong>Total Pixels</strong></td> <td valign="top" width="162"> <strong>Increase from 480p</strong></td> </tr> <tr> <td valign="top" width="92"> 480p</td> <td valign="top" width="104"> 800</td> <td valign="top" width="104"> 480</td> <td valign="top" width="123"> 384,000</td> <td valign="top" width="162"> -</td> </tr> <tr> <td valign="top" width="92"> &nbsp;</td> <td valign="top" width="104"> 960</td> <td valign="top" width="104"> 540</td> <td valign="top" width="123"> 518,400</td> <td valign="top" width="162"> 1.35 x</td> </tr> <tr> <td valign="top" width="92"> &nbsp;</td> <td valign="top" width="104"> 1024</td> <td valign="top" width="104"> 600</td> <td valign="top" width="123"> 614,400</td> <td valign="top" width="162"> 1.6 x</td> </tr> <tr> <td valign="top" width="92"> 720p</td> <td valign="top" width="104"> 1280</td> <td valign="top" width="104"> 720</td> <td valign="top" width="123"> 921,600</td> <td valign="top" width="162"> 2.4 x</td> </tr> <tr> <td valign="top" width="92"> &nbsp;</td> <td valign="top" width="104"> 1280</td> <td valign="top" width="104"> 800</td> <td valign="top" width="123"> 1,024,000</td> <td valign="top" width="162"> 2.67 x</td> </tr> <tr> <td valign="top" width="92"> &nbsp;</td> <td valign="top" width="104"> 1366</td> <td valign="top" width="104"> 768</td> <td valign="top" width="123"> 1,049,088</td> <td valign="top" width="162"> 2.73 x</td> </tr> <tr> <td valign="top" width="92"> 1080p</td> <td valign="top" width="104"> 1920</td> <td valign="top" width="104"> 1080</td> <td valign="top" width="123"> 2,073,600</td> <td valign="top" width="162"> 5.4 x</td> </tr> </tbody> </table> <p>So for example, if there are two devices with the first using 480p and the second having a screen resolution of 1280x800, there are almost three times as many pixels to render on the second device. If your 3D application only averages 40fps on the first device, the framerate will likely fall under 20fps and deliver a poor user experience on the second device.</p> <p>Developers should profile their applications using tools such as PerfHUD ES and perf (or oprofile). Look for hot spots in your code that you can optimize. Further, provide fallbacks in your code; should framerate get too low, fallback to a less complex processing option. Finally, look at your artwork; is there a way to optimize the number of objects or polygons being rendered by splitting or combining assets? Can you batch render calls together?</p> <p>If you have a Tegra 250 Developer Kit, you can start running Android at different resolutions now. Check this <a href="http://developer.nvidia.com/tegra/forum/setting-default-android-resolution">guide</a> for details.</p> <h2 style="margin-bottom:0.5em"> Textures & Texture Compression</h2> <p>Tegra 2 supports uncompressed and compressed textures (DXT1, 3 & 5 and ETC1). Which texture compression to use is a fairly subjective question but we suggest:</p> <ul> <li> If trying to minimize the size of your application (and thereby decrease your users' bandwidth usage), use DXT for all textures.</li> <li> If size is less of a concern and your application has less than 25MB of assets, use ETC1 for opaque textures and uncompressed textures for those with alpha.</li> <li> If your application has 25MB or greater of assets, use DXT for opaque and alpha textures.</li> </ul> <p>Many developers will be familiar with DXT textures but should you need tools and further details, please check:</p> <ul> <li> <a href="https://developer.nvidia.com/gpu-accelerated-texture-compression">NVIDIA GPU Accelerated Texture Tools</a></li> <li> <a href="https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop">NVIDIA texture tools for Adobe Photoshop</a></li> <li> <a href="https://developer.nvidia.com/legacy-texture-tools">NVIDIA legacy DXT tools</a></li> </ul> <h3 style="margin-bottom:0.5em"> Texture Compression by Vendor</h3> <p>Unlike the desktop and console space, mobile GPUs do not share a common texture compression format that supports textures with an alpha channel. NVIDIA's Tegra GPU uses much technology from its PC cousin and so supports DXT texture compression. DXT was developed by S3 Graphics about 10 years ago and became the de facto industry standard when Microsoft used it in DirectX. All vendors in the PC graphics and game console arenas use DXT. Unfortunately the mobile space is different as shown below.</p> <table border="1" cellpadding="0" cellspacing="0" style="width: 80%;"> <tbody> <tr> <td valign="top" width="213"> <strong>Mobile GPU</strong></td> <td valign="top" width="213"> <strong>TC Support Without Alpha</strong></td> <td valign="top" width="213"> <strong>TC Support with Alpha</strong></td> </tr> <tr> <td valign="top" width="213"> NVIDIA Tegra</td> <td valign="top" width="213"> ETC1*</td> <td valign="top" width="213"> DXT1, DXT3 and DXT5</td> </tr> <tr> <td valign="top" width="213"> Qualcomm Adreno</td> <td valign="top" width="213"> ETC1*</td> <td valign="top" width="213"> ATITC</td> </tr> <tr> <td valign="top" width="213"> Imagination PowerVR</td> <td valign="top" width="213"> ETC1*</td> <td valign="top" width="213"> PVRTC</td> </tr> </tbody> </table> <p>When building your application, you should take this into consideration and build appropriate resources for the different mobile GPUs.</p> <p>* ETC1 is part of OpenGL ES 2.0 so is supported by all OpenGL ES 2.0 GPUs but unfortunately does not support an alpha channel so can only be used for opaque textures.</p> <h2 style="margin-bottom:0.5em"> Multithreading</h2> <p>Threads are key to responsiveness in Android (see for <a href="http://developer.android.com/guide/practices/design/responsiveness.html">Google's discussion</a> for example). For both Java and NDK (native C/C++) based applications, Android provides mechanisms for spawning multiple threads. In Java, generate threads through the use of classes such as <a href="http://developer.android.com/resources/articles/glsurfaceview.html">GLSurfaceView</a> and <a href="http://developer.android.com/reference/java/lang/Thread.html">Thread</a>. When using native code, the NDK supports PThreads.</p> <p>For more information, please see:</p> <ul> <li> NVIDIA's <a href="http://developer.download.nvidia.com/tegra/docs/GameSauce2010/Gamesauce_Mobile_Session_2_NVIDIA_Bishop.pdf">GameSauce 2010 presentation</a> discussing some of the caveats and "best practices" for using threads in NDK applications.</li> <li> Google's "<a href="http://code.google.com/events/io/2010/sessions/writing-zippy-android-apps.html">Writing Zippy Android Apps</a>" from Google IO 2010&nbsp;</li> </ul> <h2 style="margin-bottom:0.5em"> Accelerometer Usage</h2> <p>Android mobile phones and are held in a natively portrait manner. The accelerometer in the phone is aligned with the Y axis along the long side such that when you hold the phone for normal use, Y is about +9.8. Similarly, if the phone is held in a landscape fashion, X is about +9.8.</p> <p style="text-align: center;"><img alt="" height="224" src="http://developer.download.nvidia.com/tegra/imgs/Accelerometer_phone.png" style="border: 0;" width="150" /></p> <p>Many of the Android tablets are natively landscape and so have a different accelerometer alignment.</p> <p style="text-align: center;"><img alt="" height="224" src="http://developer.download.nvidia.com/tegra/imgs/Accelerometer_tablet.png" style="border: 0;" width="317" /></p> <p>Due to "Y being up" but "up" being different for different devices, developers need to take the device's default orientation into account when using the accelerometer; you cannot assume that if the device is in a portrait orientation Y will be +9.8.</p> <p>For more information and example code, please see the <a href="http://developer.download.nvidia.com/tegra/docs/tegra_android_accelerometer_v5f.pdf">Android Accelerometer Whitepaper</a>.</p> NVIDIA Developer Blog