Cogs.Core
FourierTransform.h
1#pragma once
2
3#include "Rendering/Common.h"
4
5namespace Cogs
6{
7 class GPGPUQuadRenderer;
8 class IGraphicsDevice;
9 struct RenderContext;
10
12 {
13 public:
14 FourierTransform2D() :device(nullptr), log2N(0) {}
15
16 void initialize(IGraphicsDevice* device, GPGPUQuadRenderer& gpgpuQuadRenderer);
17
18 void setSize(int log2N);
19
20 void inverseFourierTransform(RenderContext& context,
21 GPGPUQuadRenderer& gpgpuQuadRenderer,
22 RenderTargetHandle& target,
23 TextureHandle& source,
24 bool doubleData = false);
25
26
27 protected:
28 IGraphicsDevice* device;
29 int log2N;
30
31 EffectHandle passRadix2x2;
32 InputLayoutHandle passRadix2x2InputLayout;
33
34 EffectHandle passRadix2x2Double;
35 InputLayoutHandle passRadix2x2DoubleInputLayout;
36
37 BufferHandle constantBuffer;
38
39 TextureHandle tableTex;
40
41 TextureHandle scratchTex[2];
42 RenderTargetHandle scratchTarget[2];
43
44 TextureHandle scratchDoubleTex[2];
45 RenderTargetHandle scratchDoubleTarget[2];
46
47 static TextureHandle createBakedTable(IGraphicsDevice* device, const int log2N);
48 };
49
50}
Represents a graphics device used to manage graphics resources and issue drawing commands.
Contains all Cogs related functionality.
Definition: FieldSetter.h:23