Panagiotis Christopoulos Charitos 10 éve
szülő
commit
d03175ca0c

+ 0 - 2
include/anki/renderer/Ms.h

@@ -58,8 +58,6 @@ anki_internal:
 		return m_fb;
 		return m_fb;
 	}
 	}
 
 
-	void downScaleGBuffer(CommandBufferPtr& cmdb);
-
 private:
 private:
 	FramebufferPtr m_fb;
 	FramebufferPtr m_fb;
 
 

+ 1 - 0
include/anki/renderer/Refl.h

@@ -44,6 +44,7 @@ private:
 
 
 	// 1st pass: Do the indirect lighting computation
 	// 1st pass: Do the indirect lighting computation
 	ShaderResourcePtr m_frag;
 	ShaderResourcePtr m_frag;
+	ShaderResourcePtr m_vert;
 	PipelinePtr m_ppline;
 	PipelinePtr m_ppline;
 	TexturePtr m_rt;
 	TexturePtr m_rt;
 	FramebufferPtr m_fb;
 	FramebufferPtr m_fb;

+ 6 - 0
include/anki/util/String.h

@@ -574,6 +574,12 @@ public:
 		Base::create(m_alloc, b.toCString());
 		Base::create(m_alloc, b.toCString());
 	}
 	}
 
 
+	/// Destroy the string.
+	void destroy()
+	{
+		Base::destroy(m_alloc);
+	}
+
 	/// Move one string to this one.
 	/// Move one string to this one.
 	StringAuto& operator=(StringAuto&& b)
 	StringAuto& operator=(StringAuto&& b)
 	{
 	{

+ 1 - 1
shaders/IsLp.frag.glsl

@@ -84,7 +84,7 @@ void main()
 	float metallic;
 	float metallic;
 
 
 	GbufferInfo gbuffer;
 	GbufferInfo gbuffer;
-	readGBuffer(u_msRt0, u_msRt1, u_msRt2, in_texCoord, gbuffer);
+	readGBuffer(u_msRt0, u_msRt1, u_msRt2, in_texCoord, 0.0, gbuffer);
 	diffCol = gbuffer.diffuse;
 	diffCol = gbuffer.diffuse;
 	specCol = gbuffer.specular;
 	specCol = gbuffer.specular;
 	normal = gbuffer.normal;
 	normal = gbuffer.normal;

+ 7 - 6
shaders/NearDepthUpscale.frag.glsl

@@ -11,9 +11,10 @@ layout(location = 1) in vec2 in_uvHigh;
 
 
 layout(location = 0) out vec3 out_color;
 layout(location = 0) out vec3 out_color;
 
 
-layout(TEX_BINDING(0, 0)) uniform sampler2D u_depthTex;
-layout(TEX_BINDING(0, 1)) uniform sampler2D u_colorTexNearest;
-layout(TEX_BINDING(0, 2)) uniform sampler2D u_colorTexLinear;
+layout(TEX_BINDING(0, 0)) uniform sampler2D u_depthFullTex;
+layout(TEX_BINDING(0, 1)) uniform sampler2D u_depthHalfTex;
+layout(TEX_BINDING(0, 2)) uniform sampler2D u_colorTexNearest;
+layout(TEX_BINDING(0, 3)) uniform sampler2D u_colorTexLinear;
 
 
 layout(UBO_BINDING(0, 0)) uniform _u0
 layout(UBO_BINDING(0, 0)) uniform _u0
 {
 {
@@ -37,12 +38,12 @@ const vec2 OFFSETS[8] =
 void main()
 void main()
 {
 {
 	// Get the depth of the current fragment
 	// Get the depth of the current fragment
-	float depth = textureLod(u_depthTex, in_uvHigh, 0.0).r;
+	float depth = texture(u_depthFullTex, in_uvHigh).r;
 
 
 	// Gather the depths around the current fragment and:
 	// Gather the depths around the current fragment and:
 	// - Get the min difference compared to crnt depth
 	// - Get the min difference compared to crnt depth
 	// - Get the new UV that is closer to the crnt depth
 	// - Get the new UV that is closer to the crnt depth
-	float lowDepth = textureLod(u_depthTex, in_uvLow, 1.0).r;
+	float lowDepth = texture(u_depthHalfTex, in_uvLow).r;
 	float minDiff = abs(depth - lowDepth);
 	float minDiff = abs(depth - lowDepth);
 	float maxDiff = minDiff;
 	float maxDiff = minDiff;
 	vec2 newUv = in_uvLow;
 	vec2 newUv = in_uvLow;
@@ -50,7 +51,7 @@ void main()
 	{
 	{
 		// Read the low depth
 		// Read the low depth
 		vec2 uv = in_uvLow + OFFSETS[i];
 		vec2 uv = in_uvLow + OFFSETS[i];
-		float lowDepth = textureLod(u_depthTex, uv, 1.0).r;
+		float lowDepth = texture(u_depthHalfTex, uv).r;
 
 
 		// Update the max difference compared to the current fragment
 		// Update the max difference compared to the current fragment
 		float diff = abs(depth - lowDepth);
 		float diff = abs(depth - lowDepth);

+ 8 - 7
shaders/Pack.glsl

@@ -121,17 +121,17 @@ void writeGBuffer(in GbufferInfo g, out vec4 rt0, out vec4 rt1, out vec4 rt2)
 }
 }
 
 
 // Read from G-buffer
 // Read from G-buffer
-#define readSpecularRoughnessFromGBuffer(rt1_, uv_, g_)                        \
+#define readSpecularRoughnessFromGBuffer(rt1_, uv_, lod_, g_)                  \
 	{                                                                          \
 	{                                                                          \
-		vec4 comp = texture(rt1_, uv_);                                        \
+		vec4 comp = textureLod(rt1_, uv_, lod_);                               \
 		g_.specular = comp.xyz;                                                \
 		g_.specular = comp.xyz;                                                \
 		g_.roughness = max(EPSILON, comp.w);                                   \
 		g_.roughness = max(EPSILON, comp.w);                                   \
 	}
 	}
 
 
 // Read from G-buffer
 // Read from G-buffer
-#define readNormalMetallicFromGBuffer(rt2_, uv_, g_)                           \
+#define readNormalMetallicFromGBuffer(rt2_, uv_, lod_, g_)                     \
 	{                                                                          \
 	{                                                                          \
-		vec4 comp = texture(rt2_, uv_);                                        \
+		vec4 comp = textureLod(rt2_, uv_, lod_);                               \
 		g_.normal = comp.xyz * 2.0 - 1.0;                                      \
 		g_.normal = comp.xyz * 2.0 - 1.0;                                      \
 		g_.metallic = comp.w;                                                  \
 		g_.metallic = comp.w;                                                  \
 	}
 	}
@@ -147,16 +147,17 @@ void readGBuffer(in sampler2D rt0,
 	in sampler2D rt1,
 	in sampler2D rt1,
 	in sampler2D rt2,
 	in sampler2D rt2,
 	in vec2 uv,
 	in vec2 uv,
+	in float lod,
 	out GbufferInfo g)
 	out GbufferInfo g)
 {
 {
-	vec4 comp = texture(rt0, uv);
+	vec4 comp = textureLod(rt0, uv, lod);
 	g.diffuse = comp.xyz;
 	g.diffuse = comp.xyz;
 	vec2 comp2 = unpackUnorm1ToUnorm2(comp.w);
 	vec2 comp2 = unpackUnorm1ToUnorm2(comp.w);
 	g.subsurface = comp2.x;
 	g.subsurface = comp2.x;
 	g.emission = comp2.y * MAX_EMISSION;
 	g.emission = comp2.y * MAX_EMISSION;
 
 
-	readSpecularRoughnessFromGBuffer(rt1, uv, g);
-	readNormalMetallicFromGBuffer(rt2, uv, g);
+	readSpecularRoughnessFromGBuffer(rt1, uv, lod, g);
+	readNormalMetallicFromGBuffer(rt2, uv, lod, g);
 }
 }
 
 
 #endif
 #endif

+ 3 - 2
shaders/Refl.frag.glsl

@@ -42,14 +42,14 @@ void main()
 	//
 	//
 	// Decode the G-buffer
 	// Decode the G-buffer
 	//
 	//
-	float depth = texture(u_depthRt, in_texCoord).r;
+	float depth = textureLod(u_depthRt, in_texCoord, 0.0).r;
 	vec3 posVSpace;
 	vec3 posVSpace;
 	posVSpace.z = u_projectionParams.z / (u_projectionParams.w + depth);
 	posVSpace.z = u_projectionParams.z / (u_projectionParams.w + depth);
 	posVSpace.xy =
 	posVSpace.xy =
 		(2.0 * in_texCoord - 1.0) * u_projectionParams.xy * posVSpace.z;
 		(2.0 * in_texCoord - 1.0) * u_projectionParams.xy * posVSpace.z;
 
 
 	GbufferInfo gbuffer;
 	GbufferInfo gbuffer;
-	readGBuffer(u_msRt0, u_msRt1, u_msRt2, in_texCoord, gbuffer);
+	readGBuffer(u_msRt0, u_msRt1, u_msRt2, in_texCoord, 0.0, gbuffer);
 
 
 	// Compute relflection vector
 	// Compute relflection vector
 	vec3 eye = normalize(posVSpace);
 	vec3 eye = normalize(posVSpace);
@@ -95,4 +95,5 @@ void main()
 
 
 	// Finalize
 	// Finalize
 	out_indirectColor = diffIndirect + specIndirect;
 	out_indirectColor = diffIndirect + specIndirect;
+	gl_FragDepth = depth;
 }
 }

+ 2 - 1
src/gr/gl/PipelineImpl.cpp

@@ -552,7 +552,8 @@ void PipelineImpl::setDepthStencilState(GlState& state) const
 	glDepthMask(m_in.m_depthStencil.m_depthWriteEnabled);
 	glDepthMask(m_in.m_depthStencil.m_depthWriteEnabled);
 	state.m_depthWriteMask = m_in.m_depthStencil.m_depthWriteEnabled;
 	state.m_depthWriteMask = m_in.m_depthStencil.m_depthWriteEnabled;
 
 
-	if(m_cache.m_depthCompareFunction == GL_ALWAYS)
+	if(m_cache.m_depthCompareFunction == GL_ALWAYS
+		&& !m_in.m_depthStencil.m_depthWriteEnabled)
 	{
 	{
 		glDisable(GL_DEPTH_TEST);
 		glDisable(GL_DEPTH_TEST);
 	}
 	}

+ 2 - 2
src/renderer/Bloom.cpp

@@ -95,7 +95,7 @@ Error Bloom::initInternal(const ConfigSet& config)
 	const char* SHADER_FILENAME =
 	const char* SHADER_FILENAME =
 		"shaders/VariableSamplingBlurGeneric.frag.glsl";
 		"shaders/VariableSamplingBlurGeneric.frag.glsl";
 
 
-	pps.destroy(getAllocator());
+	pps.destroy();
 	pps.sprintf("#define HPASS\n"
 	pps.sprintf("#define HPASS\n"
 				"#define COL_RGB\n"
 				"#define COL_RGB\n"
 				"#define BLURRING_DIST float(1.1)\n"
 				"#define BLURRING_DIST float(1.1)\n"
@@ -109,7 +109,7 @@ Error Bloom::initInternal(const ConfigSet& config)
 	m_r->createDrawQuadPipeline(
 	m_r->createDrawQuadPipeline(
 		m_hblurFrag->getGrShader(), colorState, m_hblurPpline);
 		m_hblurFrag->getGrShader(), colorState, m_hblurPpline);
 
 
-	pps.destroy(getAllocator());
+	pps.destroy();
 	pps.sprintf("#define VPASS\n"
 	pps.sprintf("#define VPASS\n"
 				"#define COL_RGB\n"
 				"#define COL_RGB\n"
 				"#define BLURRING_DIST float(1.0)\n"
 				"#define BLURRING_DIST float(1.0)\n"

+ 0 - 1
src/renderer/Downsample.cpp

@@ -4,4 +4,3 @@
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
 #include <anki/renderer/Downsample.h>
 #include <anki/renderer/Downsample.h>
-

+ 3 - 12
src/renderer/Ms.cpp

@@ -37,7 +37,7 @@ Error Ms::createRt(U32 samples)
 		DEPTH_RT_PIXEL_FORMAT,
 		DEPTH_RT_PIXEL_FORMAT,
 		samples,
 		samples,
 		SamplingFilter::NEAREST,
 		SamplingFilter::NEAREST,
-		4,
+		2,
 		m_depthRt);
 		m_depthRt);
 
 
 	m_r->createRenderTarget(m_r->getWidth(),
 	m_r->createRenderTarget(m_r->getWidth(),
@@ -45,7 +45,7 @@ Error Ms::createRt(U32 samples)
 		RT_PIXEL_FORMATS[0],
 		RT_PIXEL_FORMATS[0],
 		samples,
 		samples,
 		SamplingFilter::NEAREST,
 		SamplingFilter::NEAREST,
-		2,
+		1,
 		m_rt0);
 		m_rt0);
 
 
 	m_r->createRenderTarget(m_r->getWidth(),
 	m_r->createRenderTarget(m_r->getWidth(),
@@ -53,7 +53,7 @@ Error Ms::createRt(U32 samples)
 		RT_PIXEL_FORMATS[1],
 		RT_PIXEL_FORMATS[1],
 		samples,
 		samples,
 		SamplingFilter::NEAREST,
 		SamplingFilter::NEAREST,
-		2,
+		1,
 		m_rt1);
 		m_rt1);
 
 
 	m_r->createRenderTarget(m_r->getWidth(),
 	m_r->createRenderTarget(m_r->getWidth(),
@@ -150,13 +150,4 @@ Error Ms::run(CommandBufferPtr& cmdb)
 	return ErrorCode::NONE;
 	return ErrorCode::NONE;
 }
 }
 
 
-//==============================================================================
-void Ms::downScaleGBuffer(CommandBufferPtr& cmdb)
-{
-	cmdb->generateMipmaps(m_depthRt);
-	cmdb->generateMipmaps(m_rt0);
-	cmdb->generateMipmaps(m_rt1);
-	cmdb->generateMipmaps(m_rt2);
-}
-
 } // end namespace anki
 } // end namespace anki

+ 45 - 12
src/renderer/Refl.cpp

@@ -115,12 +115,30 @@ Error Refl::init1stPass(const ConfigSet& config)
 	ANKI_CHECK(getResourceManager().loadResourceToCache(
 	ANKI_CHECK(getResourceManager().loadResourceToCache(
 		m_frag, "shaders/Refl.frag.glsl", pps.toCString(), "r_refl_"));
 		m_frag, "shaders/Refl.frag.glsl", pps.toCString(), "r_refl_"));
 
 
+	// Create vert shader
+	pps.destroy();
+	pps.sprintf("#define UV_OFFSET vec2(%f, %f)",
+		(1.0 / m_width) / 2.0,
+		(1.0 / m_height) / 2.0);
+
+	ANKI_CHECK(getResourceManager().loadResourceToCache(
+		m_vert, "shaders/Quad.vert.glsl", pps.toCString(), "r_refl_"));
+
 	// Create ppline
 	// Create ppline
 	ColorStateInfo colorState;
 	ColorStateInfo colorState;
 	colorState.m_attachmentCount = 1;
 	colorState.m_attachmentCount = 1;
 	colorState.m_attachments[0].m_format = pixFormat;
 	colorState.m_attachments[0].m_format = pixFormat;
 
 
-	m_r->createDrawQuadPipeline(m_frag->getGrShader(), colorState, m_ppline);
+	PipelineInitializer ppinit;
+	ppinit.m_color.m_attachmentCount = 1;
+	ppinit.m_color.m_attachments[0].m_format = pixFormat;
+	ppinit.m_depthStencil.m_depthWriteEnabled = true;
+	ppinit.m_depthStencil.m_depthCompareFunction = CompareOperation::ALWAYS;
+	ppinit.m_depthStencil.m_format = Ms::DEPTH_RT_PIXEL_FORMAT;
+	ppinit.m_shaders[ShaderType::VERTEX] = m_vert->getGrShader();
+	ppinit.m_shaders[ShaderType::FRAGMENT] = m_frag->getGrShader();
+
+	m_ppline = gr.newInstance<Pipeline>(ppinit);
 
 
 	// Create uniform buffer
 	// Create uniform buffer
 	m_uniforms = getGrManager().newInstance<Buffer>(sizeof(ReflUniforms),
 	m_uniforms = getGrManager().newInstance<Buffer>(sizeof(ReflUniforms),
@@ -131,9 +149,7 @@ Error Refl::init1stPass(const ConfigSet& config)
 	ResourceGroupInitializer rcInit;
 	ResourceGroupInitializer rcInit;
 
 
 	SamplerInitializer sinit;
 	SamplerInitializer sinit;
-	sinit.m_minLod = 1.0;
-	sinit.m_minMagFilter = SamplingFilter::NEAREST;
-	sinit.m_mipmapFilter = SamplingFilter::NEAREST;
+	sinit.m_minMagFilter = SamplingFilter::LINEAR;
 	rcInit.m_textures[0].m_texture = m_r->getMs().getDepthRt();
 	rcInit.m_textures[0].m_texture = m_r->getMs().getDepthRt();
 	rcInit.m_textures[0].m_sampler = gr.newInstance<Sampler>(sinit);
 	rcInit.m_textures[0].m_sampler = gr.newInstance<Sampler>(sinit);
 
 
@@ -172,16 +188,28 @@ Error Refl::init1stPass(const ConfigSet& config)
 
 
 	m_rcGroup = getGrManager().newInstance<ResourceGroup>(rcInit);
 	m_rcGroup = getGrManager().newInstance<ResourceGroup>(rcInit);
 
 
-	// Create RT
+	// Create RTs
 	m_r->createRenderTarget(
 	m_r->createRenderTarget(
 		m_width, m_height, pixFormat, 1, SamplingFilter::NEAREST, 1, m_rt);
 		m_width, m_height, pixFormat, 1, SamplingFilter::NEAREST, 1, m_rt);
 
 
 	// Create FB
 	// Create FB
 	FramebufferInitializer fbInit;
 	FramebufferInitializer fbInit;
-	fbInit.m_colorAttachmentsCount = 1;
+	fbInit.m_colorAttachmentsCount = 2;
 	fbInit.m_colorAttachments[0].m_texture = m_rt;
 	fbInit.m_colorAttachments[0].m_texture = m_rt;
 	fbInit.m_colorAttachments[0].m_loadOperation =
 	fbInit.m_colorAttachments[0].m_loadOperation =
 		AttachmentLoadOperation::DONT_CARE;
 		AttachmentLoadOperation::DONT_CARE;
+
+	fbInit.m_colorAttachments[1].m_texture = m_r->getMs().getRt2();
+	fbInit.m_colorAttachments[1].m_loadOperation =
+		AttachmentLoadOperation::DONT_CARE;
+	fbInit.m_colorAttachments[1].m_mipmap = 1;
+
+	fbInit.m_depthStencilAttachment.m_texture = m_r->getMs().getDepthRt();
+	fbInit.m_depthStencilAttachment.m_format = Ms::DEPTH_RT_PIXEL_FORMAT;
+	fbInit.m_depthStencilAttachment.m_loadOperation =
+		AttachmentLoadOperation::DONT_CARE;
+	fbInit.m_depthStencilAttachment.m_mipmap = 1;
+
 	m_fb = getGrManager().newInstance<Framebuffer>(fbInit);
 	m_fb = getGrManager().newInstance<Framebuffer>(fbInit);
 
 
 	return ErrorCode::NONE;
 	return ErrorCode::NONE;
@@ -194,19 +222,24 @@ Error Refl::init2ndPass()
 
 
 	// Create RC group
 	// Create RC group
 	ResourceGroupInitializer rcInit;
 	ResourceGroupInitializer rcInit;
+	SamplerInitializer sinit;
+	sinit.m_repeat = false;
 
 
 	rcInit.m_textures[0].m_texture = m_r->getMs().getDepthRt();
 	rcInit.m_textures[0].m_texture = m_r->getMs().getDepthRt();
 
 
-	SamplerInitializer sinit;
-	sinit.m_repeat = false;
+	sinit.m_minLod = 1.0;
 	sinit.m_mipmapFilter = SamplingFilter::NEAREST;
 	sinit.m_mipmapFilter = SamplingFilter::NEAREST;
-	rcInit.m_textures[1].m_texture = m_rt;
+	rcInit.m_textures[1].m_texture = m_r->getMs().getDepthRt();
 	rcInit.m_textures[1].m_sampler = gr.newInstance<Sampler>(sinit);
 	rcInit.m_textures[1].m_sampler = gr.newInstance<Sampler>(sinit);
 
 
-	sinit.m_minMagFilter = SamplingFilter::LINEAR;
+	sinit.m_minLod = 0.0;
 	rcInit.m_textures[2].m_texture = m_rt;
 	rcInit.m_textures[2].m_texture = m_rt;
 	rcInit.m_textures[2].m_sampler = gr.newInstance<Sampler>(sinit);
 	rcInit.m_textures[2].m_sampler = gr.newInstance<Sampler>(sinit);
 
 
+	sinit.m_minMagFilter = SamplingFilter::LINEAR;
+	rcInit.m_textures[3].m_texture = m_rt;
+	rcInit.m_textures[3].m_sampler = gr.newInstance<Sampler>(sinit);
+
 	rcInit.m_uniformBuffers[0].m_dynamic = true;
 	rcInit.m_uniformBuffers[0].m_dynamic = true;
 
 
 	m_blitRcGroup = getGrManager().newInstance<ResourceGroup>(rcInit);
 	m_blitRcGroup = getGrManager().newInstance<ResourceGroup>(rcInit);
@@ -238,8 +271,8 @@ Error Refl::init2ndPass()
 
 
 	ppinit.m_color.m_attachmentCount = 1;
 	ppinit.m_color.m_attachmentCount = 1;
 	ppinit.m_color.m_attachments[0].m_format = Is::RT_PIXEL_FORMAT;
 	ppinit.m_color.m_attachments[0].m_format = Is::RT_PIXEL_FORMAT;
-	ppinit.m_color.m_attachments[0].m_srcBlendMethod = BlendMethod::ONE;
-	ppinit.m_color.m_attachments[0].m_dstBlendMethod = BlendMethod::ONE;
+	// ppinit.m_color.m_attachments[0].m_srcBlendMethod = BlendMethod::ONE;
+	// ppinit.m_color.m_attachments[0].m_dstBlendMethod = BlendMethod::ONE;
 
 
 	ppinit.m_shaders[U(ShaderType::VERTEX)] = m_blitVert->getGrShader();
 	ppinit.m_shaders[U(ShaderType::VERTEX)] = m_blitVert->getGrShader();
 	ppinit.m_shaders[U(ShaderType::FRAGMENT)] = m_blitFrag->getGrShader();
 	ppinit.m_shaders[U(ShaderType::FRAGMENT)] = m_blitFrag->getGrShader();

+ 0 - 2
src/renderer/Renderer.cpp

@@ -181,8 +181,6 @@ Error Renderer::render(SceneNode& frustumableNode,
 
 
 	m_lf->runOcclusionTests(cmdb[0]);
 	m_lf->runOcclusionTests(cmdb[0]);
 
 
-	m_ms->downScaleGBuffer(cmdb[0]);
-
 	m_tiler->run(cmdb[0]);
 	m_tiler->run(cmdb[0]);
 
 
 	ANKI_CHECK(m_is->run(cmdb[1]));
 	ANKI_CHECK(m_is->run(cmdb[1]));

+ 2 - 2
src/renderer/Ssao.cpp

@@ -203,7 +203,7 @@ Error Ssao::initInternal(const ConfigSet& config)
 	const char* SHADER_FILENAME =
 	const char* SHADER_FILENAME =
 		"shaders/VariableSamplingBlurGeneric.frag.glsl";
 		"shaders/VariableSamplingBlurGeneric.frag.glsl";
 
 
-	pps.destroy(getAllocator());
+	pps.destroy();
 	pps.sprintf("#define HPASS\n"
 	pps.sprintf("#define HPASS\n"
 				"#define COL_R\n"
 				"#define COL_R\n"
 				"#define IMG_DIMENSION %u\n"
 				"#define IMG_DIMENSION %u\n"
@@ -216,7 +216,7 @@ Error Ssao::initInternal(const ConfigSet& config)
 	m_r->createDrawQuadPipeline(
 	m_r->createDrawQuadPipeline(
 		m_hblurFrag->getGrShader(), colorState, m_hblurPpline);
 		m_hblurFrag->getGrShader(), colorState, m_hblurPpline);
 
 
-	pps.destroy(getAllocator());
+	pps.destroy();
 	pps.sprintf("#define VPASS\n"
 	pps.sprintf("#define VPASS\n"
 				"#define COL_R\n"
 				"#define COL_R\n"
 				"#define IMG_DIMENSION %u\n"
 				"#define IMG_DIMENSION %u\n"

+ 1 - 1
testapp/Main.cpp

@@ -502,7 +502,7 @@ Error initSubsystems(int argc, char* argv[])
 	config.set("is.sm.poissonEnabled", true);
 	config.set("is.sm.poissonEnabled", true);
 	config.set("is.sm.resolution", 1024);
 	config.set("is.sm.resolution", 1024);
 	config.set("lf.maxFlares", 32);
 	config.set("lf.maxFlares", 32);
-	config.set("pps.enabled", true);
+	config.set("pps.enabled", false);
 	config.set("pps.bloom.enabled", true);
 	config.set("pps.bloom.enabled", true);
 	config.set("pps.bloom.renderingQuality", 0.5);
 	config.set("pps.bloom.renderingQuality", 0.5);
 	config.set("pps.bloom.blurringDist", 1.0);
 	config.set("pps.bloom.blurringDist", 1.0);