Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

Josh Bancroft (Intel)

Josh Bancroft (Intel)

Portland, Oregon

Two techniques for FFT in DX11: UAV (Unordered Access Views) and SLM (Shared Local Memory)

Game Development

Description

The Fast Fourier Transform (FFT) is an implementation of the Discrete Fourier Transform (DFT) using a divide-and-conquer approach. A DFT can transform any discrete signal, such as an image, to and from the frequency domain. Once in the frequency domain, many effects that are generally expensive in the image domain become trivial and inexpensive. The transformations between the image domain and frequency domain can incur significant overhead. This sample demonstrates an optimized FFT that uses compute shaders and Shared Local Memory (SLM) to improve performance by reducing memory bandwidth.

Two techniques for performing the FFT will be discussed in this sample. The first technique is called the UAV technique and operates by ping-ponging data repeatedly between Unordered Access Views (UAVs). The second technique, the SLM (Shared Local Memory) technique, is a more memory-bandwidth-efficient method, showing significant performance gains when bottlenecked by memory bandwidth.

Links

Learn More and Get the Sample

Josh wide eyed

Josh B. (Intel) added photos to project Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

Medium 66bb9dfd ff9f 4547 9ee8 716395ba15c9

Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

The Fast Fourier Transform (FFT) is an implementation of the Discrete Fourier Transform (DFT) using a divide-and-conquer approach. A DFT can transform any discrete signal, such as an image, to and from the frequency domain. Once in the frequency domain, many effects that are generally expensive in the image domain become trivial and inexpensive. The transformations between the image domain and frequency domain can incur significant overhead. This sample demonstrates an optimized FFT that uses compute shaders and Shared Local Memory (SLM) to improve performance by reducing memory bandwidth.

Two techniques for performing the FFT will be discussed in this sample. The first technique is called the UAV technique and operates by ping-ponging data repeatedly between Unordered Access Views (UAVs). The second technique, the SLM (Shared Local Memory) technique, is a more memory-bandwidth-efficient method, showing significant performance gains when bottlenecked by memory bandwidth.

Medium josh wide eyed

Josh B. (Intel) created project Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

Medium 66bb9dfd ff9f 4547 9ee8 716395ba15c9

Code Sample: Fast Fourier Transform for Image Processing in DirectX* 11

The Fast Fourier Transform (FFT) is an implementation of the Discrete Fourier Transform (DFT) using a divide-and-conquer approach. A DFT can transform any discrete signal, such as an image, to and from the frequency domain. Once in the frequency domain, many effects that are generally expensive in the image domain become trivial and inexpensive. The transformations between the image domain and frequency domain can incur significant overhead. This sample demonstrates an optimized FFT that uses compute shaders and Shared Local Memory (SLM) to improve performance by reducing memory bandwidth.

Two techniques for performing the FFT will be discussed in this sample. The first technique is called the UAV technique and operates by ping-ponging data repeatedly between Unordered Access Views (UAVs). The second technique, the SLM (Shared Local Memory) technique, is a more memory-bandwidth-efficient method, showing significant performance gains when bottlenecked by memory bandwidth.

Bigger sirloin 1200 1200
  • Projects 1
  • Followers 10

Brent Rieck (Intel)

All about Brent - he likes Astoria. <b>yay?</b>

Beverly Hills, CA 90210, USA

Bigger 0 0gzkp9cdxgbkh6txsch syqwnaisgq1kicdnse6w9lcmgexketd9dfqdncuig6x3a0h iffubirixbooe9k0idbfrirwxbmfe9kty9u75aecxh0metnpnzsqxm
  • Projects 0
  • Followers 0

brad lindsey

first computer experience in the 1970's with Apple Desktops Apple II

534 Cypress St, Abilene, TX 79601, USA

Bigger 0 xcvffkbtejqdj2kkjccddaciwoctpxhkjhiedlwstynczysoxtqiwboiuzs
Student Ambassador
  • Projects 2
  • Followers 53

Ngesa N Marvin

IoT Champion for GDGs, SSA | Intel Student Partner, DeKUT | Co-Lead @GDGKimathiUni | Telecom Engineer | #IoT — #5G Freak, Maker @NodeBots

Kenya

Bigger 6c6bea31aa6f6df3b292c729e98d024c orig
Black Belt
  • Projects 1
  • Followers 17

Tom Murphy

I am not an Intel employee, but I play one on television. I started playing with computers when I was 16 writing a blackjack game using Hollerith cards on an IBM 1130. I've made my career choices based on potential fun to be had, which led to a 30+ year career working for SuperComputer manufacturers, and then to "teaching career"++. I know the cake is a lie, but the Fantoccini approach to technology is not a lie. The ++ in my work as a computer science professor at Contra Costa College, is my work with SC Education (http://sc-education.org/), educating faculty about parallel and distributed computing, and the burgeoning metaverse exploring how to meld HPC and the verse (http://sciencesim.com/). All this inexorably led me to volunteer my time on this blog. BTW my name is Tom Murphy, an ever popular name previously Intel claimed by another, hence my lupine pseudonym.

San Pablo, CA, USA

Bigger win 20150820 155725
  • Projects 0
  • Followers 2

Michael Preedom

I am a high-tech researcher/inventor with various companies and I am going thru to be certified as a high-tech engineer and scientist once I get my doctorate in engineering and material sciences and research technologies.

California, USA

Bigger my pic  2
  • Projects 1
  • Followers 0

Ramith Hettiarachchi

I'm interested in Programming(c,c++,node.js), IoT, Intel Edison & Music :) Have a startup http://ruhsoft.com (Microsoft Bizspark) Google my name to get more info

Sri Lanka

Bigger sirloin 1200 1200
  • Projects 1
  • Followers 10

Brent Rieck (Intel)

All about Brent - he likes Astoria. <b>yay?</b>

Beverly Hills, CA 90210, USA

See More