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
$9.99 $36.99
Paperback
$60.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
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 : 9781849697101
Vendor :
Microsoft
Languages :
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

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

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 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
$199.99 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 $5 each
Feature tick icon Exclusive print discounts
$279.99 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 $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 176.97
OpenGL 4 Shading Language Cookbook, Second Edition
$60.99
Direct3D Rendering Cookbook
$60.99
HLSL Development Cookbook
$54.99
Total $ 176.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

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.