Book Image

Direct3D Rendering Cookbook

Book Image

Direct3D Rendering Cookbook

Overview of this book

Table of Contents (19 chapters)
Direct3D Rendering Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Further Reading
Index

Detecting edges with the Sobel edge-detection filter


In this recipe we will implement a single pass 3x3 Sobel convolution filter. This is the first convolution filter we will look at that does not implement a simple "sum of products" calculation as well as not being separable.

To keep things simple, this implementation has not undergone the same level of optimization as the separable convolution filter compute shaders; however, it would be a fairly simple task to modify it to work with the group-shared memory approach.

Getting ready

This recipe makes use of the constant buffer and the lerpKeepAlpha function that we implemented in the Adjusting the contrast and brightness recipe.

You will also use the LUMINANCE #define macro we created in the Running a compute shader – desaturation (grayscale) recipe.

How to do it…

We will implement two variations of the Sobel edge-detection compute shader, one will overlay the result onto the original image (producing an outlining effect), and the other will return...