Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Direct3D Rendering Cookbook
Direct3D Rendering Cookbook

Direct3D Rendering Cookbook: For C# .NET developers this is the ultimate cookbook for Direct3D rendering in PC games. Covering all the latest innovations, it teaches everything from debugging to character animation, supported throughout by illustrations and sample code.

eBook
R$49.99 R$271.99
Paperback
R$339.99
Subscription
Free Trial
Renews at R$50p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Direct3D Rendering Cookbook

Chapter 2. Rendering with Direct3D

In this chapter, we will cover the following topics:

  • Using the sample rendering framework

  • Creating device-dependent resources

  • Creating size-dependent resources

  • Creating a Direct3D renderer class

  • Rendering primitives

  • Applying multisample anti-aliasing

  • Implementing texture sampling

Introduction


Code for rendering complex scenes can soon become quite difficult to organize. To improve this, we will build a simple rendering framework. This framework will take care of the low-level device and swap chain management, assist with device resource lifecycle management, and allow the application to focus on the elements of the scene instead.

All 3D objects ultimately consist of one or more vertices that together form one of these core primitive shapes: points, lines, or triangles. As we discussed in the previous chapter, vertices can include information such as position, color or texture coordinate, and a normal vector. In this chapter we will learn how to define these structures in shaders and the Input Assembler (IA) fixed pipeline stage.

A vital component to any 3D scene is setting up the camera and projection. We will learn how to initialize each of these and where vertices are transformed from the local object or model space into the World/View/Projection (WVP) space ...

Using the sample rendering framework


To work with complex scenes more easily, we are going to explore a set of classes that will serve as our simple rendering framework throughout the book. This framework will take care of initializing our Direct3D device, swap chain and render targets, and provide appropriate methods and events for implementing the Direct3D resource lifecycle management in our example applications.

The three key elements of this framework include the following:

  • Device manager: This is a class that manages the lifecycle of our Direct3D device and device context.

  • Direct3D application: This is a set of classes that manage our swap chain and render targets, along with other common-size dependent resources, such as the depth/stencil buffer and viewport setup. We descend from one of these to create our Direct3D application/render loop.

  • Renderer: This is a small class that we use to implement a renderer for a single element/area of a scene. We create instances of these within our...

Creating device-dependent resources


In this recipe, we will see how the included sample framework deals with the initialization of device-dependent Direct3D resources and how our custom classes can make use of this throughout this book.

Getting ready

We continue from where we left off in the Using the sample rendering framework recipe.

How to do it…

We will review the base class's implementation of the CreateDeviceDependentResources function, and then look at how to implement overrides within the descending classes.

  1. The following protected virtual D3DApplicationBase.CreateDeviceDependentResources implementation is assigned as an event-handler to the DeviceManager.OnInitialize event.

    protected virtual void CreateDeviceDependentResources(DeviceManager deviceManager)
    {
        if (_swapChain != null)
        {
            // Release the swap chain
            RemoveAndDispose(ref _swapChain);
            // Force reinitialize size dependent resources
            SizeChanged(true);
        }
    }
  2. Within your class descending from...

Creating size-dependent resources


In this recipe, we will look at how the included sample framework deals with the initialization of size-dependent Direct3D resources within the base Direct3D application class. We review the base class's implementation, and then implement an override for a descending class.

We also review two important graphics pipeline preparation steps that are dependent upon the render target size: creating the viewport for the Rasterizer Stage (RS) and creating a depth/stencil buffer and view for the Output Merger (OM) stage.

Getting ready

We continue on from where we left off in the Using the sample rendering framework recipe.

How to do it…

The application base class D3DApplicationBase initializes the swap chain buffers and render targets within the CreateSizeDependentResources method, which is an event-handler attached to the D3DApplicationBase.OnSizeChanged event. This method has been implemented as follows:

  1. The base implementation is a protected virtual method that allows...

Creating a Direct3D renderer class


In this recipe, we will look at the final component of our sample rendering framework, the renderer. These are classes that implement specific rendering logic, such as drawing a mesh or utility classes that wish to participate within the Direct3D resource lifecycle management of the rendering framework.

Getting ready

We continue on from where we left off in the Using the sample rendering framework recipe.

How to do it…

We will first look at the steps necessary to create a Common.RendererBase descendent and then how this class would be created, initialized, and finally execute its Direct3D draw commands.

  1. Creating a renderer class within the sample framework requires the following minimal code:

    public class MyRenderer : Common.RendererBase
    {
       // Create device dependent resources
       protected override void CreateDeviceDependentResources()
       { ... }
    
       // Create size dependent resources
       protected override void CreateSizeDependentResources()
       { ... }
    
      ...

Rendering primitives


Now that we have our rendering framework ready, we can finally work on the more interesting stuff—actually rendering something!

All rendered objects, at their simplest form, are made up of one or more primitives: points, lines, or triangles which are made up of one or more vertices. In this recipe, we will render the following primitives:

  • A set of colored arrows representing the x, y, and z axes (red, green, and blue) using lines

  • A triangle using a triangle

  • A quad (made up of two triangles)

We will also implement our WVP matrix and see how multisampling affects the rendered image. The final result is shown in the following figure:

Rendering primitives final output

Getting ready

We'll start by creating a new Windows Form Application project named Ch02_01RenderingPrimitives in the D3DRendering.sln solution:

  1. Add the SharpDX.dll, SharpDX.DXGI.dll and SharpDX.Direct3D11.dll references like we did in the previous recipes.

  2. Next, we will add a reference to .\External\bin\SharpDX.D3DCompiler...

Applying multisample anti-aliasing


In this recipe, we will enable multisample antialiasing (MSAA) to smoothen lines and edges.

Getting ready

We can apply this recipe to any of our recipes that are implemented with a class that descends from D3DApplicationBase. Otherwise, this can be easily adapted to work with the creation of any swap chain.

How to do it…

We can smooth the lines in our example by enabling multisampling:

  1. To do this, simply override the D3DApplicationBase.CreateSwapChainDescription() method in our class as follows:

    protected override SwapChainDescription1 CreateSwapChainDescription()
    {
        var description = base.CreateSwapChainDescription();
        description.SampleDescription.Count = 4;
        description.SampleDescription.Quality = 0;
        return description;
    }
  2. Compile and run the project (F5), and you will now have antialiased edges.

How it works…

The following screenshot compares the difference between having antialiasing off and on—notice the jaggies along the bottom of the triangle...

Implementing texture sampling


In this recipe we are going to take the quad and triangle renderers from the previous example and apply some texture using a shader resource view (SRV), a sampler state object, and changes to the shader program.

The final output from the example will look something like the following figure:

Textured triangle and quad

Getting ready

For this recipe, we will continue from where we left of in the Rendering primitives recipe.

There are two texture files included with the sample code that you will also need. Alternatively, you may use any BMP, JPG, PNG, or even DDS formats. For reference, the two textures used in this project are shown in the following figure:

The two 256x256 textures used in this recipe

How to do it…

For this recipe, we will first change the HLSL shader code to accept the SRV and sampler state. Then, we will update our renderers to use texture coordinates, load the textures, and bind the SRVs to the appropriate stages of the pipeline. To do so, follow...

Left arrow icon Right arrow icon

What you will learn

  • Set up a Direct3D application and perform realtime 3D rendering with C# and SharpDX
  • Learn techniques for debugging your Direct3D application
  • Render a 3D environment with lights, shapes, and materials
  • Explore character animation using bones and vertex skinning
  • Create additional surface detail using tessellation with displacement mapping and displacement decals
  • Implement image postprocessing tasks within compute shaders
  • Use realtime deferred rendering techniques to implement improved shading for lighting and shadows
  • Learn to Program the graphics pipeline with shaders using HLSL implemented by Shader Model 5

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jan 20, 2014
Length: 430 pages
Edition :
Language : English
ISBN-13 : 9781849697118
Vendor :
Microsoft
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Jan 20, 2014
Length: 430 pages
Edition :
Language : English
ISBN-13 : 9781849697118
Vendor :
Microsoft
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
R$50 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
R$500 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$25 each
Feature tick icon Exclusive print discounts
R$800 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$25 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total R$ 986.97
OpenGL 4 Shading Language Cookbook, Second Edition
R$339.99
Direct3D Rendering Cookbook
R$339.99
HLSL Development Cookbook
R$306.99
Total R$ 986.97 Stars icon
Banner background image

Table of Contents

11 Chapters
Getting Started with Direct3D Chevron down icon Chevron up icon
Rendering with Direct3D Chevron down icon Chevron up icon
Rendering Meshes Chevron down icon Chevron up icon
Animating Meshes with Vertex Skinning Chevron down icon Chevron up icon
Applying Hardware Tessellation Chevron down icon Chevron up icon
Adding Surface Detail with Normal and Displacement Mapping Chevron down icon Chevron up icon
Performing Image Processing Techniques Chevron down icon Chevron up icon
Incorporating Physics and Simulations Chevron down icon Chevron up icon
Rendering on Multiple Threads and Deferred Contexts Chevron down icon Chevron up icon
Implementing Deferred Rendering Chevron down icon Chevron up icon
Integrating Direct3D with XAML and Windows 8.1 Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.1
(10 Ratings)
5 star 30%
4 star 50%
3 star 20%
2 star 0%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Stephan Sep 04, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Habe das Buch noch nicht komplett durch, aber was ich bislang gesehen habe ist klasse!Das Inhaltsverzeichnis verspricht alles von der Einführung, Architektur der GPU, Shaderprogrammierung bis hin zur Verwendung von Kollisionsberechnung um nur einige zu nennen. Alles wird so erklärt, dass man zur SharpDX auch die entsprechende native / unmanaged Referenz kennenlernt und die Beispiele sind gut erläutert und detailliert schrittweise beschrieben.Einziges Manko: Wer sich auch mit einer E-Book Variante des Buches anfreunden kann, kann hier jede Menge Geld sparen (Stand August 2014)
Amazon Verified review Amazon
Richard Marinaccio Feb 13, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Having fallen in love with C# some years ago, and more willing to lose my favorite toe than go back to C++ ever again, this book is exactly what I needed. SharpDX makes it possible to continue with XNA type graphics development in C# and DirectX 11, but it's not easy to get help or anything besides reference docs at the time of this review. This book serves as a comprehensive manual for SharpDX development that is timely and sorely needed. It's the only book of it's kind and fills an important and useful purpose, what else needs to be said? If you've been messing with SharpDX, buy this book and read it cover to cover.
Amazon Verified review Amazon
Brian Jan 14, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This book, along with its sample code, has been very useful. I needed a helpful source for implementing a custom 3D rendering window which could be embedded in a C# application and this book filled the role.
Amazon Verified review Amazon
Michael Quandt Feb 14, 2014
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
If you saw "cookbook" in the title and are looking for a collection of techniques that you can use for rendering, this book may not be your best fit as it spends a fair amount of time covering Direct3D setup, basic techniques and supporting concepts such as physics and multi-threaded rendering. That said, the book is a great starting point for those looking to jump into 3D rendering, and even remains relevant once the basics have been covered by providing reference information about advanced shaders and techniques that you may want to make use of later.This is also one of the few books I have seen that covers multi-threaded rendering (increasingly relevant in modern engines), deferred shading and GPGPU techniques (physics even) outside of expert reference books such as what you would find in the GPU Pro series.The majority of the book uses sets of instructions to implement each technique, with explanations left to the end, once you're done implementing the technique. This may force you to jump around a bit if you do not understand certain parts of the technique and can't wait until you've finished every step. This book is most effective if you read ahead, gain an understanding of the technique and then follow the steps to implement. You won't be flipping pages back and forth, and all of the instructions are in one place, making it much easier to find each step.As you work through each technique and concept the author also provides some extra reading on the topic, which enables you to learn further or find answers to any questions you may have.I would recommend this book to anyone who is interested in having a solid resource for 3D development that will last them past the basics. You will need to understand C# if you do not already to get the most out of this book, and if you want to use this for game development then you will need to look elsewhere for every other aspect, however supplemented by other learning, this book can be very useful.I received a copy of this book from Packt Publishing for review purposes.
Amazon Verified review Amazon
sk8ermeb Jun 16, 2016
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
I was able to render images in hardware in 1 week from knowing nothing about direct x/SharpDX
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.