2
0
Эх сурвалжийг харах

GL3 renderer: Avoid sampling outside target region

Michael Ragazzon 2 жил өмнө
parent
commit
2dba53e499

+ 7 - 3
Backends/RmlUi_Renderer_GL3.cpp

@@ -175,10 +175,13 @@ uniform vec2 _texCoordMax;
 in vec2 fragTexCoord[BLUR_SIZE];
 in vec2 fragTexCoord[BLUR_SIZE];
 out vec4 finalColor;
 out vec4 finalColor;
 
 
-void main() {    
+void main() {
 	vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
 	vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
 	for(int i = 0; i < BLUR_SIZE; i++)
 	for(int i = 0; i < BLUR_SIZE; i++)
-		color += texture(_tex, clamp(fragTexCoord[i], _texCoordMin, _texCoordMax)) * _weights[abs(i - BLUR_NUM_WEIGHTS + 1)];
+	{
+		vec2 in_region = step(_texCoordMin, fragTexCoord[i]) * step(fragTexCoord[i], _texCoordMax);
+		color += texture(_tex, fragTexCoord[i]) * in_region.x * in_region.y * _weights[abs(i - BLUR_NUM_WEIGHTS + 1)];
+	}
 	finalColor = color;
 	finalColor = color;
 }
 }
 )";
 )";
@@ -192,7 +195,8 @@ in vec2 fragTexCoord;
 out vec4 finalColor;
 out vec4 finalColor;
 
 
 void main() {
 void main() {
-	finalColor = texture(_tex, clamp(fragTexCoord, _texCoordMin, _texCoordMax)).a * _color;
+	vec2 in_region = step(_texCoordMin, fragTexCoord) * step(fragTexCoord, _texCoordMax);
+	finalColor = texture(_tex, fragTexCoord).a * in_region.x * in_region.y * _color;
 }
 }
 )";
 )";