Browse Source

Some refactoring

Panagiotis Christopoulos Charitos 9 years ago
parent
commit
3f9c2e5ea7
3 changed files with 74 additions and 35 deletions
  1. 71 0
      shaders/GaussianBlurCommon.glsl
  2. 1 33
      shaders/GaussianBlurGeneric.frag.glsl
  3. 2 2
      src/anki/renderer/Ssao.cpp

+ 71 - 0
shaders/GaussianBlurCommon.glsl

@@ -0,0 +1,71 @@
+// Copyright (C) 2009-2016, Panagiotis Christopoulos Charitos and contributors.
+// All rights reserved.
+// Code licensed under the BSD License.
+// http://www.anki3d.org/LICENSE
+
+#ifndef ANKI_SHADERS_GAUSSIAN_BLUR_COMMON_GLSL
+#define ANKI_SHADERS_GAUSSIAN_BLUR_COMMON_GLSL
+
+#include "shaders/Common.glsl"
+
+const uint STEP_COUNT_K3 = 1u;
+const float WEIGHTS_K3[STEP_COUNT_K3] = {0.50000};
+const float OFFSETS_K3[STEP_COUNT_K3] = {0.01742};
+
+const uint STEP_COUNT_K5 = 2u;
+const float WEIGHTS_K5[STEP_COUNT_K5] = {0.44908, 0.05092};
+const float OFFSETS_K5[STEP_COUNT_K5] = {0.53805, 2.06278};
+
+const uint STEP_COUNT_K7 = 3u;
+const float WEIGHTS_K7[STEP_COUNT_K7] = {0.33023, 0.15701, 0.01276};
+const float OFFSETS_K7[STEP_COUNT_K7] = {0.62184, 2.27310, 4.14653};
+
+const uint STEP_COUNT_K9 = 4u;
+const float WEIGHTS_K9[STEP_COUNT_K9] = {0.24961, 0.19246, 0.05148, 0.00645};
+const float OFFSETS_K9[STEP_COUNT_K9] = {0.64434, 2.37885, 4.29111, 6.21661};
+
+const uint STEP_COUNT_K11 = 5u;
+const float WEIGHTS_K11[STEP_COUNT_K11] = {0.19955, 0.18945, 0.08376, 0.02321, 0.00403};
+const float OFFSETS_K11[STEP_COUNT_K11] = {0.65319, 2.42547, 4.36803, 6.31412, 8.26479};
+
+const uint STEP_COUNT_K13 = 6u;
+const float WEIGHTS_K13[STEP_COUNT_K13] = {0.16501, 0.17507, 0.10112, 0.04268, 0.01316, 0.00296};
+const float OFFSETS_K13[STEP_COUNT_K13] = {0.65772, 2.45017, 4.41096, 6.37285, 8.33626, 10.30153};
+
+const int STEP_COUNT_K15 = 7;
+const float WEIGHTS_K15[STEP_COUNT_K15] = {0.14090, 0.15927, 0.10715, 0.05747, 0.02457, 0.00837, 0.00228};
+const float OFFSETS_K15[STEP_COUNT_K15] = {0.66025, 2.46415, 4.43572, 6.40771, 8.38028, 10.35359, 12.32779};
+
+#if KERNEL_SIZE == 3
+#define STEP_COUNT STEP_COUNT_K3
+#define WEIGHTS WEIGHTS_K3
+#define OFFSETS OFFSETS_K3
+#elif KERNEL_SIZE == 5
+#define STEP_COUNT STEP_COUNT_K5
+#define WEIGHTS WEIGHTS_K5
+#define OFFSETS OFFSETS_K5
+#elif KERNEL_SIZE == 7
+#define STEP_COUNT STEP_COUNT_K7
+#define WEIGHTS WEIGHTS_K7
+#define OFFSETS OFFSETS_K7
+#elif KERNEL_SIZE == 9
+#define STEP_COUNT STEP_COUNT_K9
+#define WEIGHTS WEIGHTS_K9
+#define OFFSETS OFFSETS_K9
+#elif KERNEL_SIZE == 11
+#define STEP_COUNT STEP_COUNT_K11
+#define WEIGHTS WEIGHTS_K11
+#define OFFSETS OFFSETS_K11
+#elif KERNEL_SIZE == 13
+#define STEP_COUNT STEP_COUNT_K13
+#define WEIGHTS WEIGHTS_K13
+#define OFFSETS OFFSETS_K13
+#elif KERNEL_SIZE == 15
+#define STEP_COUNT STEP_COUNT_K15
+#define WEIGHTS WEIGHTS_K15
+#define OFFSETS OFFSETS_K15
+#else
+#error See file
+#endif
+
+#endif

+ 1 - 33
shaders/GaussianBlurGeneric.frag.glsl

@@ -8,7 +8,7 @@
 // Switches: VPASS or HPASS, COL_RGBA or COL_RGB or COL_R
 // Also must define TEXTURE_SIZE and KERNEL_SIZE
 
-#include "shaders/Common.glsl"
+#include "shaders/GaussianBlurCommon.glsl"
 
 // Preprocessor switches sanity checks
 #if !defined(VPASS) && !defined(HPASS)
@@ -48,38 +48,6 @@ layout(location = 0) in vec2 in_uv;
 // Output
 layout(location = 0) out COL_TYPE out_color;
 
-#if KERNEL_SIZE == 3
-const uint STEP_COUNT = 1u;
-const float WEIGHTS[STEP_COUNT] = {0.50000};
-const float OFFSETS[STEP_COUNT] = {0.01742};
-#elif KERNEL_SIZE == 7
-const uint STEP_COUNT = 2u;
-const float WEIGHTS[STEP_COUNT] = {0.44908, 0.05092};
-const float OFFSETS[STEP_COUNT] = {0.53805, 2.06278};
-#elif KERNEL_SIZE == 11
-const uint STEP_COUNT = 3u;
-const float WEIGHTS[STEP_COUNT] = {0.33023, 0.15701, 0.01276};
-const float OFFSETS[STEP_COUNT] = {0.62184, 2.27310, 4.14653};
-#elif KERNEL_SIZE == 15
-const uint STEP_COUNT = 4u;
-const float WEIGHTS[STEP_COUNT] = {0.24961, 0.19246, 0.05148, 0.00645};
-const float OFFSETS[STEP_COUNT] = {0.64434, 2.37885, 4.29111, 6.21661};
-#elif KERNEL_SIZE == 19
-const uint STEP_COUNT = 5u;
-const float WEIGHTS[STEP_COUNT] = {0.19955, 0.18945, 0.08376, 0.02321, 0.00403};
-const float OFFSETS[STEP_COUNT] = {0.65319, 2.42547, 4.36803, 6.31412, 8.26479};
-#elif KERNEL_SIZE == 23
-const uint STEP_COUNT = 6u;
-const float WEIGHTS[STEP_COUNT] = {0.16501, 0.17507, 0.10112, 0.04268, 0.01316, 0.00296};
-const float OFFSETS[STEP_COUNT] = {0.65772, 2.45017, 4.41096, 6.37285, 8.33626, 10.30153};
-#elif KERNEL_SIZE == 27
-const int STEP_COUNT = 7;
-const float WEIGHTS[STEP_COUNT] = {0.14090, 0.15927, 0.10715, 0.05747, 0.02457, 0.00837, 0.00228};
-const float OFFSETS[STEP_COUNT] = {0.66025, 2.46415, 4.43572, 6.40771, 8.38028, 10.35359, 12.32779};
-#else
-#error See file
-#endif
-
 void main()
 {
 #if defined(VPASS)

+ 2 - 2
src/anki/renderer/Ssao.cpp

@@ -195,7 +195,7 @@ Error Ssao::initInternal(const ConfigSet& config)
 	pps.sprintf("#define HPASS\n"
 				"#define COL_R\n"
 				"#define TEXTURE_SIZE vec2(%f, %f)\n"
-				"#define KERNEL_SIZE 19\n",
+				"#define KERNEL_SIZE 13\n",
 		F32(m_width),
 		F32(m_height));
 
@@ -210,7 +210,7 @@ Error Ssao::initInternal(const ConfigSet& config)
 	pps.sprintf("#define VPASS\n"
 				"#define COL_R\n"
 				"#define TEXTURE_SIZE vec2(%f, %f)\n"
-				"#define KERNEL_SIZE 15\n",
+				"#define KERNEL_SIZE 11\n",
 		F32(m_width),
 		F32(m_height));