Changeset View
Changeset View
Standalone View
Standalone View
effects/blur/blurshader.h
Show All 39 Lines | 36 | public: | |||
---|---|---|---|---|---|
40 | static BlurShader *create(); | 40 | static BlurShader *create(); | ||
41 | 41 | | |||
42 | bool isValid() const { | 42 | bool isValid() const { | ||
43 | return mValid; | 43 | return mValid; | ||
44 | } | 44 | } | ||
45 | 45 | | |||
46 | virtual void setModelViewProjectionMatrix(const QMatrix4x4 &matrix) = 0; | 46 | virtual void setModelViewProjectionMatrix(const QMatrix4x4 &matrix) = 0; | ||
47 | virtual void setOffset(float offset) = 0; | 47 | virtual void setOffset(float offset) = 0; | ||
48 | virtual void setTargetSize(QSize renderTextureSize) = 0; | 48 | virtual void setTargetTextureSize(QSize renderTextureSize) = 0; | ||
49 | virtual void setNoiseTextureSize(QSize noiseTextureSize) = 0; | ||||
50 | virtual void setTexturePosition(QPoint texPos) = 0; | ||||
49 | virtual void setBlurRect(QRect blurRect, QSize screenSize) = 0; | 51 | virtual void setBlurRect(QRect blurRect, QSize screenSize) = 0; | ||
50 | 52 | | |||
51 | enum SampleType { | 53 | enum SampleType { | ||
52 | DownSampleType, | 54 | DownSampleType, | ||
53 | UpSampleType, | 55 | UpSampleType, | ||
54 | CopySampleType | 56 | CopySampleType, | ||
57 | NoiseSampleType | ||||
55 | }; | 58 | }; | ||
56 | 59 | | |||
57 | virtual void bind(SampleType sampleType) = 0; | 60 | virtual void bind(SampleType sampleType) = 0; | ||
58 | virtual void unbind() = 0; | 61 | virtual void unbind() = 0; | ||
59 | 62 | | |||
60 | protected: | 63 | protected: | ||
61 | void setIsValid(bool value) { | 64 | void setIsValid(bool value) { | ||
62 | mValid = value; | 65 | mValid = value; | ||
Show All 15 Lines | |||||
78 | public: | 81 | public: | ||
79 | GLSLBlurShader(); | 82 | GLSLBlurShader(); | ||
80 | ~GLSLBlurShader(); | 83 | ~GLSLBlurShader(); | ||
81 | 84 | | |||
82 | void bind(SampleType sampleType) override final; | 85 | void bind(SampleType sampleType) override final; | ||
83 | void unbind() override final; | 86 | void unbind() override final; | ||
84 | void setModelViewProjectionMatrix(const QMatrix4x4 &matrix) override final; | 87 | void setModelViewProjectionMatrix(const QMatrix4x4 &matrix) override final; | ||
85 | void setOffset(float offset) override final; | 88 | void setOffset(float offset) override final; | ||
86 | void setTargetSize(QSize renderTextureSize) override final; | 89 | void setTargetTextureSize(QSize renderTextureSize) override final; | ||
90 | void setNoiseTextureSize(QSize noiseTextureSize) override final; | ||||
91 | void setTexturePosition(QPoint texPos) override final; | ||||
87 | void setBlurRect(QRect blurRect, QSize screenSize) override final; | 92 | void setBlurRect(QRect blurRect, QSize screenSize) override final; | ||
88 | 93 | | |||
89 | protected: | 94 | protected: | ||
90 | void init() override final; | 95 | void init() override final; | ||
91 | void reset() override final; | 96 | void reset() override final; | ||
92 | 97 | | |||
93 | private: | 98 | private: | ||
94 | GLShader *m_shaderDownsample = nullptr; | 99 | GLShader *m_shaderDownsample = nullptr; | ||
95 | GLShader *m_shaderUpsample = nullptr; | 100 | GLShader *m_shaderUpsample = nullptr; | ||
96 | GLShader *m_shaderCopysample = nullptr; | 101 | GLShader *m_shaderCopysample = nullptr; | ||
102 | GLShader *m_shaderNoisesample = nullptr; | ||||
97 | 103 | | |||
98 | int m_mvpMatrixLocationDownsample; | 104 | int m_mvpMatrixLocationDownsample; | ||
99 | int m_offsetLocationDownsample; | 105 | int m_offsetLocationDownsample; | ||
100 | int m_renderTextureSizeLocationDownsample; | 106 | int m_renderTextureSizeLocationDownsample; | ||
101 | int m_halfpixelLocationDownsample; | 107 | int m_halfpixelLocationDownsample; | ||
102 | 108 | | |||
103 | int m_mvpMatrixLocationUpsample; | 109 | int m_mvpMatrixLocationUpsample; | ||
104 | int m_offsetLocationUpsample; | 110 | int m_offsetLocationUpsample; | ||
105 | int m_renderTextureSizeLocationUpsample; | 111 | int m_renderTextureSizeLocationUpsample; | ||
106 | int m_halfpixelLocationUpsample; | 112 | int m_halfpixelLocationUpsample; | ||
107 | 113 | | |||
108 | int m_mvpMatrixLocationCopysample; | 114 | int m_mvpMatrixLocationCopysample; | ||
109 | int m_renderTextureSizeLocationCopysample; | 115 | int m_renderTextureSizeLocationCopysample; | ||
110 | int m_blurRectLocationCopysample; | 116 | int m_blurRectLocationCopysample; | ||
111 | 117 | | |||
118 | int m_mvpMatrixLocationNoisesample; | ||||
119 | int m_offsetLocationNoisesample; | ||||
120 | int m_renderTextureSizeLocationNoisesample; | ||||
121 | int m_noiseTextureSizeLocationNoisesample; | ||||
122 | int m_texStartPosLocationNoisesample; | ||||
123 | int m_halfpixelLocationNoisesample; | ||||
124 | | ||||
112 | 125 | | |||
113 | //Caching uniform values to aviod unnecessary setUniform calls | 126 | //Caching uniform values to aviod unnecessary setUniform calls | ||
114 | int m_activeSampleType; | 127 | int m_activeSampleType; | ||
115 | 128 | | |||
116 | float m_offsetDownsample; | 129 | float m_offsetDownsample; | ||
117 | QMatrix4x4 m_matrixDownsample; | 130 | QMatrix4x4 m_matrixDownsample; | ||
118 | QSize m_renderTextureSizeDownsample; | | |||
119 | 131 | | |||
120 | float m_offsetUpsample; | 132 | float m_offsetUpsample; | ||
121 | QMatrix4x4 m_matrixUpsample; | 133 | QMatrix4x4 m_matrixUpsample; | ||
122 | QSize m_renderTextureSizeUpsample; | | |||
123 | 134 | | |||
124 | QMatrix4x4 m_matrixCopysample; | 135 | QMatrix4x4 m_matrixCopysample; | ||
125 | QSize m_renderTextureSizeCopysample; | | |||
126 | QRect m_blurRectCopysample; | 136 | QRect m_blurRectCopysample; | ||
127 | 137 | | |||
138 | float m_offsetNoisesample; | ||||
139 | QVector2D m_noiseTextureSizeNoisesample; | ||||
140 | QMatrix4x4 m_matrixNoisesample; | ||||
141 | | ||||
128 | }; | 142 | }; | ||
129 | 143 | | |||
130 | } // namespace KWin | 144 | } // namespace KWin | ||
131 | 145 | | |||
132 | #endif | 146 | #endif |