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
Unreal Engine 5 Shaders and Effects Cookbook
Unreal Engine 5 Shaders and Effects Cookbook

Unreal Engine 5 Shaders and Effects Cookbook: Over 50 recipes to help you create materials and utilize advanced shading techniques , Second Edition

Arrow left icon
Profile Icon Brais Brenlla Ramos
Arrow right icon
NZ$53.99 NZ$60.99
Full star icon Full star icon Full star icon Full star icon Half star icon 4.7 (16 Ratings)
eBook May 2023 402 pages 2nd Edition
eBook
NZ$53.99 NZ$60.99
Paperback
NZ$75.99
Subscription
Free Trial
Arrow left icon
Profile Icon Brais Brenlla Ramos
Arrow right icon
NZ$53.99 NZ$60.99
Full star icon Full star icon Full star icon Full star icon Half star icon 4.7 (16 Ratings)
eBook May 2023 402 pages 2nd Edition
eBook
NZ$53.99 NZ$60.99
Paperback
NZ$75.99
Subscription
Free Trial
eBook
NZ$53.99 NZ$60.99
Paperback
NZ$75.99
Subscription
Free Trial

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
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

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

Unreal Engine 5 Shaders and Effects Cookbook

Customizing Opaque Materials and Using Textures

Starting gently—as we always do—we’ll begin working on a simple scene where we’ll be able to learn how to set up a proper material graph for a small prop. On top of that, we are also going to discover how to create materials that can be applied to large-scale models, implement clever techniques that allow us to balance graphics and performance, study material effects driven by the position of the camera or semi-procedural creation techniques—all of that while using standard Unreal Engine assets and techniques. I’m sure that studying these effects will give us the confidence we need to work within Unreal.

All in all, here is a full list of topics that we are about to cover:

  • Using masks within a material
  • Instancing a material
  • Texturing a small prop
  • Adding Fresnel and Detail Texturing nodes
  • Creating semi-procedural materials
  • Blending textures based on our distance from them

And here’s a little teaser of what we’ll be doing:

Figure 2.1 – A look at some of the materials we’ll create in this chapter

Figure 2.1 – A look at some of the materials we’ll create in this chapter

Technical requirements

Just as in the previous chapter (and all of the following ones!), here is a link you can use to download the Unreal Engine project that accompanies this book: https://packt.link/20u7B

In there, you’ll find all of the scenes and assets used to make the content you are about to see become a reality. As always, you can also opt to work with your own creations instead—and if that’s the case, know that there’s not a lot you are going to need. As a reference, we’ve used a few assets to recreate all the effects described in the next recipes: the 3D models of a toy tank, a cloth laid out on top of a table, and a plane, as well as some custom-made textures that work alongside those meshes. Feel free to create your own unique models if you want to test yourself even further!

Using masks within a material

Our first goal in this chapter is going to be the replication of a complex material graph. Shaders in Unreal usually depict more than one real-life substance, so it’s key for us to have a way to control which areas of a model are rendered using the different effects programmed in a given material. This is where masks come in: textures that we can use to separate (or mask!) the effects that we want to apply to a specific area of the models with which we are working. We’ll do that using a small wooden toy tank, a prop that could very well be one of the assets that a 3D artist would have to adjust as part of their day-to-day responsibilities.

Getting ready

We’ve included a small scene that you can use as a starting point for this recipe—it’s called 02_01_ Start, and it includes all of the basic assets that you will need to follow along. As you’ll be able to see for yourself, there’s a small toy tank that has two UV channels located at the center of the level. UVs are the link between the 2D textures that we want to apply to a model and the 3D geometry itself, as they are a map that correlates the vertex positions in 2D and 3D space. The first of those UVs indicates how textures should be applied to 3D models, whereas the second one is used to store the lightmap data the engine calculates when using static lighting.

If you decide to use your own 3D models, please ensure that they have well-laid-out UVs, as we are going to be working with them to mask certain areas of the objects.

Tip

We are going to be working with small objects in this recipe, and that could prove tricky when we zoom close to them—the camera might cut through the geometry, something known as clipping. You can change the behavior of the camera by opening the Project Settings panel and looking inside the Engine | General Settings | Settings section, where you’ll find a setting called Near Clip Plane, which can be adjusted to sort out this issue. Using a value of 1 will alleviate this issue, but remember to restart the editor in order for the changes to be implemented.

How to do it…

The goal of this recipe is going to be quite a straightforward one: to apply different real-world materials to certain parts of the model with which we are going to be working using only a single shader. We’ll start that journey by creating a new material that we can apply to the main toy tank model that you can see at the center of the screen. This is all provided you are working with the scene I mentioned in the Getting ready section; if not, think of the next steps as the ones you’ll also need to implement to texture one of your own assets. So:

  1. Create a new material, which you can name M_ToyTank, and apply it to the toy model.
  2. Open the Static Mesh Editor for the toy tank model, by selecting the asset from the level and double-clicking on the Static Mesh thumbnail present in the Details panel.
  3. Visualize the UVs of the material by clicking on the UV | UV Channel 0 option within the Static Mesh Editor, as seen in the next screenshot:
Figure 2.2 – Location of the UV visualizer options within the Static Mesh Editor

Figure 2.2 – Location of the UV visualizer options within the Static Mesh Editor

As seen in Figure 2.2, the UV map of the toy tank model is comprised of several islands. These are areas that contain connected vertices that correspond to different parts of the 3D mesh—the body, the tracks, the barrel, the antenna, and all of the polygons that make up the tank. We want to treat some of those areas differently, applying unique textures depending on what we would like to see on those parts, such as on the main body or the barrel. To do so, we will need to create masks that cover the selected parts we want to treat differently. The project includes one such texture designed specifically for this toy tank asset, which we’ll use in the following steps. If you want to use your own 3D models, make sure that their UVs are properly unwrapped and that you create a similar mask that covers the areas you want to separate.

Tip

You can always adjust the models provided with this project by exporting them out of Unreal and importing them into your favorite Digital Content Creation (DCC) software package. To do that, right-click on the asset within the Content Browser and select Asset Actions | Export.

  1. Open our newly created material and create a Texture Sample node within it (right-click and then select Texture Sample, or hold down the T key and click anywhere inside the graph).
  2. Assign the T_TankMasks texture (located within Content | Assets | Chapter 02 | 02_01) to the previous Texture Sample node (or your own masking image if working with your own assets).
  3. Create two Constant3Vector nodes and select whichever color you want under their color selection wheel. Make sure they are different from one another, though!
  4. Next, create a Lerp node—that strange word is short for linear interpolation, and it lets us blend between different assets according to the masks that we connect to the Alpha pin.
  5. Connect the R (red) channel of the T_TankMasks asset to the Alpha pin of the new Lerp node.
  6. Connect each of the Constant3Vectors to the A and B pins of the Lerp node.
  7. Create another Lerp node and a third Constant3Vector.
  8. Connect the B (blue) channel of the T_TankMasks texture to the Alpha pin of the new Lerp node, and the new Constant3Vector to the B pin.
  9. Connect the output of the Lerp node we created in step 7 (the first of the two we should have by now) to the A slot of the new Lerp node.
  10. Assign the material to the tank in the main scene. The material graph should look something like this at the moment:
Figure 2.3 – The current state of the material graph

Figure 2.3 – The current state of the material graph

We’ve managed to isolate certain areas of the toy tank model thanks to the use of the previous mask, which is one of our main goals for this recipe. We now need to apply this technique to the Metallic and Roughness parameters of the material, just so we can control those independently.

  1. Copy all the previous nodes and paste them twice—we’ll need one copy to connect to the Roughness slot and a different one that will drive the Metallic attribute.
  2. In the new copies, replace the Constant3Vector nodes with simple Constant ones. We don’t need an RGB value to specify the Metallic and Roughness properties, so that’s why we only need standard Constant nodes this time around.
  3. Assign custom values to the new Constant nodes you defined in the previous step. Remember what we already know about these parameters: a value of 0 in the Roughness slot means that the material has very clear reflections, while a value of 1 means the exact opposite. Similarly, a value of 1 connected to the Metallic node means that the material is indeed metal, while 0 determines that it is not. I’ve chosen a value of 0 for the first two Constant nodes and a value of 1 for the third one. Let’s now review these new sections of the graph:
Figure 2.4 – A look at the new Metallic section of the material, which is a duplicate of the Roughness one

Figure 2.4 – A look at the new Metallic section of the material, which is a duplicate of the Roughness one

Finally, think about tidying things up by creating comments, which is a way to group the different sections of the material graph together. This is done by selecting all of the nodes that you want to group and pressing the C key on your keyboard. This keeps things organized, which is very important no matter whether you work with others or whether you revisit your own work. You saw this in action in the previous screenshot with the colored outlines around the nodes. Having said that, let’s take a final look at the model, calling it a day!

Figure 2.5 – The toy tank with the new material applied to it

Figure 2.5 – The toy tank with the new material applied to it

How it works…

In essence, the textures that we’ve used as masks are images that contain a black-and-white picture stored in each of the files’ RGB channels. This is something that might not be that well known, but the files that store the images that we can see on our computers are actually made out of three or four different channels—one containing the information for the red pixels, another for the green ones, and yet one more for the blue tones, with an extra optional one called Alpha where certain file types store the transparency values. Those channels mimic the composition of modern flat panel displays, which operate by adjusting the intensity received by the three lights (red, green, and blue) used to represent a pixel.

Seeing as masks only contain black-and-white information, one technique that many artists use is to encode that data in each of the channels present in a given texture. This is what we saw in this recipe when we used the T_TankMasks texture, an image that contains different black-and-white values in each of its RGB channels. We can store up to three or four masks in each picture using this technique—one per available channel, depending on the file type. You can see an example of this in the following screenshot:

Figure 2.6 – The texture used for masking purposes and the information stored in each of the RGB channels

Figure 2.6 – The texture used for masking purposes and the information stored in each of the RGB channels

The Lerp node, which we’ve also seen in this recipe, manages to blend two inputs (called A and B) according to the values that we provide in its Alpha input pin. This last pin accepts any value situated in the 0 to 1 range and is used to determine how much of the two A and B input pins are shown: a value of 0 means that only the information provided to the A pin is used, while a value of 1 has the opposite effect—only the B pin is shown. A more interesting effect happens when we provide a value in between, such as 0.25, which would mean that both the information in the A and in the B pin is used—75% of A and 25% of B in particular. This is also the reason why we used the previous mask with this node: as it contained only black-and-white values in each of its RGB channels, we could use that information to selectively apply different effects to certain parts of the models.

Using masks to drive the appearance of a material is often preferable to using multiple materials on a model. This is because of the way that the rendering pipeline works behind the scenes—without getting too technical, we could say that each new material that a model has makes it more expensive to render. It’s best to be aware of this whenever we work on larger projects!

See also

We’ve seen how to use masks to drive the appearance of a material in this recipe, but what if we want to achieve the same results using colors instead? This is a technique that has seen widespread use in other 3D programs, and even though it’s not as simple or computationally cheap as the masking solution we’ve just seen in Unreal, it is a handy feature that you might want to explore in the future. The only requirement is to have a color texture where each individual shade is used to mask the area we want to operate on, as you can see in the following screenshot:

Figure 2.7 – Another texture used for masking, where each color is meant to separate different materials

Figure 2.7 – Another texture used for masking, where each color is meant to separate different materials

The idea is to isolate a color from the mask in order to drive the appearance of a material. If this technique interests you, you can read more about it here: https://answers.unrealengine.com/questions/191185/how-to-mask-a-singlecolor.html.

Finally, there are more examples of masks being used in other assets that you might want to check. We can find some within the Sample Content node, inside the following folder: Starter Content | Props | Materials. Shaders such as M_Door or M_Lamp have been created according to the masking methodology explained in this chapter. On top of that, why not try to come up with your own masks for the 3D models that you use? That is a great way to look at UVs, 3D models, image-editing software, and Unreal. Be sure to try it out!

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Create spectacular visual effects for use in both games and virtual productions
  • Design efficient shaders for any real-time platform without sacrificing realism
  • Leverage Unreal Engine’s rendering pipeline and the innards of the material graph

Description

Unreal Engine is here to stay! Since the launch of the first edition of this book, based on the Unreal Engine 5 technology, real-time rendering has only grown in popularity. The demand for expertise in this area has grown exponentially across various fields over the last few years, and Unreal Engine 5 builds upon that foundation and continues to push the boundaries of what is achievable in an interactive format. Against this backdrop, the second edition of this book takes a leap forward and explores the new opportunities offered by the latest version of the engine, including Lumen, ray tracing, and Nanite. The book also revisits previously covered techniques and updates them to current standards, shining new light on topics such as the PBR workflow and the different lighting solutions that were present in the first edition. Throughout the chapters, you’ll be able to focus on two key principles that you need to consider when dealing with real-time graphics: optimization and efficiency. By the end of this book, you’ll have explored the many rendering possibilities that Unreal Engine 5 has to offer to become the master of your own creations!

Who is this book for?

This comprehensive guide is designed for anyone who is passionate about rendering, real-time graphics, and creating visually stunning experiences with Unreal Engine. Whether you're a beginner or a seasoned professional, this book offers a gentle learning curve that takes you from the fundamentals of the rendering pipeline to the most advanced techniques in the field. With a wealth of information and expert guidance, you'll quickly become proficient in the art of material creation, regardless of your background knowledge.

What you will learn

  • Leverage the capabilities of Lumen and Nanite to create breathtaking experiences
  • Attain proficiency in the rendering pipeline of Unreal Engine to develop real-time graphics
  • Utilize the physically based rendering pipeline to achieve photorealistic rendering across multiple scenes
  • Explore the Material Editor to build complex materials and textures and achieve a high level of detail
  • Optimize your materials to run seamlessly on multiple platforms
  • Understand the various nodes and functions required to create impressive visual effects

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : May 31, 2023
Length: 402 pages
Edition : 2nd
Language : English
ISBN-13 : 9781837635566
Vendor :
Epic Games
Concepts :
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
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : May 31, 2023
Length: 402 pages
Edition : 2nd
Language : English
ISBN-13 : 9781837635566
Vendor :
Epic Games
Concepts :
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 NZ$7 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 NZ$7 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total NZ$ 218.97
Unreal Engine 5 Shaders and Effects Cookbook
NZ$75.99
Build Stunning Real-time VFX with Unreal Engine 5
NZ$73.99
Multiplayer Game Development with Unreal Engine 5
NZ$68.99
Total NZ$ 218.97 Stars icon

Table of Contents

11 Chapters
Chapter 1: Understanding Physically Based Rendering Chevron down icon Chevron up icon
Chapter 2: Customizing Opaque Materials and Using Textures Chevron down icon Chevron up icon
Chapter 3: Making Translucent Objects Chevron down icon Chevron up icon
Chapter 4: Playing with Nanite, Lumen, and Other UE5 Goodies Chevron down icon Chevron up icon
Chapter 5: Working with Advanced Material Techniques Chevron down icon Chevron up icon
Chapter 6: Optimizing Materials for Mobile Platforms Chevron down icon Chevron up icon
Chapter 7: Exploring Some More Useful Nodes Chevron down icon Chevron up icon
Chapter 8: Going Beyond Traditional Materials Chevron down icon Chevron up icon
Chapter 9: Adding Post-Processing Effects Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon
Other Books You May Enjoy 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.7
(16 Ratings)
5 star 68.8%
4 star 31.3%
3 star 0%
2 star 0%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Nelson Jun 30, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This comprehensive book offers a meticulous exploration of shader fundamentals within the context of Unreal Engine. Serving as an invaluable resource for aspiring tech artists at all proficiency levels, it provides an excellent foundation for beginners and intermediate practitioners alike. The book offers informative guidance, meticulously leading readers through a wealth of instructions, ranging from introductory techniques to advanced applications. As such, it is an essential read for individuals with a vested interest in the realm of tech art within the Unreal Engine.
Amazon Verified review Amazon
David Wong Cascante Jul 04, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This book streamlines the learning process for using Unreal Engine’s graphical features. The chapters are split up into categories of recipes that readers can read through to understand the features the engine has to offer.The book starts out by assuming readers have no experience working in the engine but, by the end, it covers interesting applications of Unreal Engine’s material editor and its other tools.I would highly recommend downloading the sample assets provided by the book to speed up the learning process. In addition, the assets also give readers an idea of what’s needed to create quality assets for the engine.In conclusion, I would recommend this book for anyone studying how to create visual content in Unreal Engine 5. The book contains a diverse set of recipes users can jump around based on their interests and the samples are helpful as reference for all the content presented.
Amazon Verified review Amazon
J Pearse Jun 01, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This "cookbook" guides you from creating a studio scene, all the way to harnessing the latest innovations in real time shader usage.Shader setups gently increase in complexity and versality, while addressing factors such as how dynamic and static lighting, and processing budgets should effect your decision making. Importantly this also includes the new technologies bundled with UE5 such as Lumen and Nanite. If you've read the previous edition you'll find examples where familiar shader recipes covered in that volume have been updated so they can utilise these new lighting and polygon management techniques.Along the way there are blueprint diagrams, including explanations of the various nodes in use, as well as before and after comparison images showing the result of modifications. All this is presented in an approachable, clear and detailed way.
Amazon Verified review Amazon
Patrick Han Aug 11, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Great book for beginners who want to learn more abut the material and lighting systems Unreal offers. The explanations are easily digestible and the author offers further reading should one choose to do so. The target audience for this is honestly anyone, but if you're looking for highly technical literature this wouldn't really be the book for you. Overall I enjoyed reading it and I think it's everything a cookbook should strive to be.
Amazon Verified review Amazon
R E. Jun 22, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This book is an exceptional resource for both beginner and intermediate tech artists jumping into Unreal Engine. It covers the fundamentals of Physically Based Rendering (PBR) and provides insightful guidance on shader creation in UE5. If you're aiming to create breathtaking scenes with a realistic aesthetic, this book offers all the knowledge you need to achieve stunning results.It excels in providing a solid foundation, giving readers the recipes to bring their scenes to life. It would be great to see stylized and NPR aesthetics included in the next edition!Overall, this book is a must-have for tech artists seeking to enhance their understanding of shaders. Its comprehensive coverage of PBR and optimization techniques ensures that you'll be well-equipped to create visually captivating assets.
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.