Panagiotis Christopoulos Charitos 4 yıl önce
ebeveyn
işleme
1ed2711e21

+ 1 - 1
AnKi/Resource/ShaderProgramResource.cpp

@@ -387,7 +387,7 @@ void ShaderProgramResource::initVariant(const ShaderProgramResourceVariantInitIn
 			inf.m_constValues.setArray((constValueCount) ? constValues.getBegin() : nullptr, constValueCount);
 			inf.m_constValues.setArray((constValueCount) ? constValues.getBegin() : nullptr, constValueCount);
 			ShaderPtr shader = getManager().getGrManager().newShader(inf);
 			ShaderPtr shader = getManager().getGrManager().newShader(inf);
 
 
-			if(true && (ANKI_OS_LINUX || ANKI_OS_WINDOWS))
+			if(false && (ANKI_OS_LINUX || ANKI_OS_WINDOWS))
 			{
 			{
 				MaliOfflineCompilerOut maliocOut;
 				MaliOfflineCompilerOut maliocOut;
 				const Error err =
 				const Error err =

+ 6 - 7
AnKi/Shaders/Bloom.ankiprog

@@ -40,13 +40,12 @@ void main()
 
 
 	const Vec2 uv = (Vec2(gl_GlobalInvocationID.xy) + 0.5) / Vec2(FB_SIZE);
 	const Vec2 uv = (Vec2(gl_GlobalInvocationID.xy) + 0.5) / Vec2(FB_SIZE);
 
 
-	ANKI_RP Vec3 color = textureLod(u_tex, u_linearAnyClampSampler, uv, 0.0).rgb;
-	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(+1, +1)).rgb;
-	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(-1, -1)).rgb;
-	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(-1, +1)).rgb;
-	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(+1, -1)).rgb;
-
-	color *= (1.0 / 5.0);
+	ANKI_RP F32 weight = 1.0 / 5.0;
+	ANKI_RP Vec3 color = textureLod(u_tex, u_linearAnyClampSampler, uv, 0.0).rgb * weight;
+	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(+1, +1)).rgb * weight;
+	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(-1, -1)).rgb * weight;
+	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(-1, +1)).rgb * weight;
+	color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, IVec2(+1, -1)).rgb * weight;
 
 
 	color = tonemap(color, u_averageLuminancePad3.x, u_thresholdScalePad2.x) * u_thresholdScalePad2.y;
 	color = tonemap(color, u_averageLuminancePad3.x, u_thresholdScalePad2.x) * u_thresholdScalePad2.y;
 
 

+ 6 - 6
AnKi/Shaders/BloomUpscale.ankiprog

@@ -81,13 +81,13 @@ ANKI_RP Vec3 ssLensFlare(Vec2 uv)
 
 
 ANKI_RP Vec3 upscale(Vec2 uv)
 ANKI_RP Vec3 upscale(Vec2 uv)
 {
 {
-	ANKI_RP Vec3 result = textureLod(u_tex, u_linearAnyClampSampler, uv, 0.0).rgb;
-	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(+1, +1)).rgb;
-	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(+1, -1)).rgb;
-	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(-1, -1)).rgb;
-	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(-1, +1)).rgb;
+	const ANKI_RP F32 weight = 1.0 / 5.0;
+	ANKI_RP Vec3 result = textureLod(u_tex, u_linearAnyClampSampler, uv, 0.0).rgb * weight;
+	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(+1, +1)).rgb * weight;
+	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(+1, -1)).rgb * weight;
+	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(-1, -1)).rgb * weight;
+	result += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), uv, 0.0, ivec2(-1, +1)).rgb * weight;
 
 
-	result *= (1.0 / 5.0);
 	return result;
 	return result;
 }
 }
 
 

+ 7 - 8
AnKi/Shaders/DownscaleBlur.glsl

@@ -22,7 +22,7 @@ layout(push_constant, row_major, std430) uniform pc_
 };
 };
 
 
 Vec2 in_uv = (Vec2(gl_GlobalInvocationID.xy) + 0.5) / Vec2(u_fbSize);
 Vec2 in_uv = (Vec2(gl_GlobalInvocationID.xy) + 0.5) / Vec2(u_fbSize);
-layout(set = 0, binding = 2) writeonly uniform image2D out_img;
+layout(set = 0, binding = 2) writeonly uniform ANKI_RP image2D out_img;
 ANKI_RP Vec3 out_color;
 ANKI_RP Vec3 out_color;
 #else
 #else
 layout(location = 0) in Vec2 in_uv;
 layout(location = 0) in Vec2 in_uv;
@@ -39,13 +39,12 @@ void main()
 	}
 	}
 #endif
 #endif
 
 
-	out_color = textureLod(u_tex, u_linearAnyClampSampler, in_uv, 0.0).rgb;
-	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(+1, +1)).rgb;
-	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(-1, -1)).rgb;
-	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(+1, -1)).rgb;
-	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(-1, +1)).rgb;
-
-	out_color *= (1.0 / 5.0);
+	const ANKI_RP F32 weight = 1.0 / 5.0;
+	out_color = textureLod(u_tex, u_linearAnyClampSampler, in_uv, 0.0).rgb * weight;
+	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(+1, +1)).rgb * weight;
+	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(-1, -1)).rgb * weight;
+	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(+1, -1)).rgb * weight;
+	out_color += textureLodOffset(sampler2D(u_tex, u_linearAnyClampSampler), in_uv, 0.0, IVec2(-1, +1)).rgb * weight;
 
 
 #if defined(ANKI_COMPUTE_SHADER)
 #if defined(ANKI_COMPUTE_SHADER)
 	imageStore(out_img, IVec2(gl_GlobalInvocationID.xy), Vec4(out_color, 0.0));
 	imageStore(out_img, IVec2(gl_GlobalInvocationID.xy), Vec4(out_color, 0.0));

+ 3 - 4
AnKi/Shaders/MotionBlur.glsl

@@ -44,16 +44,15 @@ Vec3 motionBlur(texture2D motionVectorsRt, sampler motionVectorsRtSampler, ANKI_
 	sampleCountf = round(sampleCountf);
 	sampleCountf = round(sampleCountf);
 
 
 	// Sample
 	// Sample
-	ANKI_RP Vec3 outColor = textureLod(toBlurRt, toBlurRtSampler, uv, 0.0).rgb;
+	const ANKI_RP F32 weight = 1.0 / sampleCountf;
+	ANKI_RP Vec3 outColor = textureLod(toBlurRt, toBlurRtSampler, uv, 0.0).rgb * weight;
 	ANKI_LOOP for(F32 s = 1.0; s < sampleCountf; s += 1.0)
 	ANKI_LOOP for(F32 s = 1.0; s < sampleCountf; s += 1.0)
 	{
 	{
 		const F32 f = s / sampleCountf;
 		const F32 f = s / sampleCountf;
 		const Vec2 sampleUv = uv + velocity * f;
 		const Vec2 sampleUv = uv + velocity * f;
 
 
-		outColor += textureLod(toBlurRt, toBlurRtSampler, sampleUv, 0.0).rgb;
+		outColor += textureLod(toBlurRt, toBlurRtSampler, sampleUv, 0.0).rgb * weight;
 	}
 	}
 
 
-	outColor /= sampleCountf;
-
 	return outColor;
 	return outColor;
 }
 }