1#pragma once
2
3#include <basis/seadTypes.h>
4#include <container/seadPtrArray.h>
5
6namespace sead {
7class Camera;
8} // namespace sead
9
10namespace agl {
11class DrawContext;
12class TextureData;
13class RenderBuffer;
14} // namespace agl
15
16namespace al {
17class CartoonDrawer;
18class ColorClampDrawer;
19class DepthOfFieldDrawer;
20class EdgeDrawer;
21class GraphicsParamRequesterImpl;
22class NoiseTextureKeeper;
23class PencilSketchDrawer;
24class PostProcessingFilterPreset;
25class Projection;
26class RetroColorDrawer;
27class ScreenBlurDrawer;
28class SimpleModelEnv;
29class ShaderHolder;
30class VignettingDrawer;
31class ViewDepthDrawer;
32
33class PostProcessingFilter {
34public:
35 PostProcessingFilter(ShaderHolder*, NoiseTextureKeeper*);
36 ~PostProcessingFilter();
37
38 void incrementPreset();
39 void decrementPreset();
40 void initProjectResource();
41 void endInit();
42 void clearRequest();
43 void update();
44 PostProcessingFilterPreset* findPreset(s32) const;
45 void updateViewGpu(s32, const sead::Camera*, const Projection*);
46 void drawFilter(agl::DrawContext*, s32, SimpleModelEnv*, agl::RenderBuffer&,
47 const agl::TextureData&, const agl::TextureData&, const agl::TextureData&,
48 const sead::Camera&, const Projection&, f32, f32, f32);
49
50 void validate() { mIsValid = true; }
51
52 void invalidate() { mIsValid = false; }
53
54 s32 getPresetId() const { return mPresetId; }
55
56private:
57 bool mIsValid;
58 ShaderHolder* mShaderHolder;
59 DepthOfFieldDrawer* mDepthOfFieldDrawer;
60 GraphicsParamRequesterImpl* mGraphicsParamRequesterImpl;
61 ViewDepthDrawer* mViewDepthDrawer;
62 VignettingDrawer* mVignettingDrawer;
63 EdgeDrawer* mEdgeDrawer;
64 CartoonDrawer* mCartoonDrawer;
65 RetroColorDrawer* mRetroColorDrawer;
66 ScreenBlurDrawer* mScreenBlurDrawer;
67 PencilSketchDrawer* mPencilSketchDrawer;
68 ColorClampDrawer* mColorClampDrawer;
69 sead::PtrArray<PostProcessingFilterPreset> mPresets;
70 s32 mPresetId;
71};
72
73} // namespace al
74