fix xray error image scaling

This commit is contained in:
Tim Kuipers 2020-01-02 19:31:25 +01:00
parent 0f184219e6
commit 28abf6ff8c
2 changed files with 4 additions and 9 deletions

View file

@ -44,7 +44,6 @@ class SolidView(View):
self._xray_composite_shader = None self._xray_composite_shader = None
self._composite_pass = None self._composite_pass = None
self._xray_error_image = None self._xray_error_image = None
self._xray_error_image_size = None
self._extruders_model = None self._extruders_model = None
self._theme = None self._theme = None
@ -127,7 +126,6 @@ class SolidView(View):
self._xray_error_image.load(Resources.getPath(Resources.Images, texture_file)) self._xray_error_image.load(Resources.getPath(Resources.Images, texture_file))
except FileNotFoundError: except FileNotFoundError:
Logger.log("w", "Unable to find xray error texture image [%s]", texture_file) Logger.log("w", "Unable to find xray error texture image [%s]", texture_file)
self._xray_error_image_size = QImage(Resources.getPath(Resources.Images, texture_file)).size()
if not self._xray_shader: if not self._xray_shader:
self._xray_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "xray.shader")) self._xray_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "xray.shader"))
@ -138,8 +136,6 @@ class SolidView(View):
self._xray_composite_shader.setUniformValue("u_background_color", Color(*theme.getColor("viewport_background").getRgb())) self._xray_composite_shader.setUniformValue("u_background_color", Color(*theme.getColor("viewport_background").getRgb()))
self._xray_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb())) self._xray_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb()))
self._xray_composite_shader.setTexture(3, self._xray_error_image) self._xray_composite_shader.setTexture(3, self._xray_error_image)
[ww,wh] = [1920,1080]
self._xray_composite_shader.setUniformValue("u_xray_error_img_scaling", [ww / self._xray_error_image_size.width(), wh / self._xray_error_image_size.height()])
if not self.getRenderer().getRenderPass("xray"): if not self.getRenderer().getRenderPass("xray"):
# Currently the RenderPass constructor requires a size > 0 # Currently the RenderPass constructor requires a size > 0

View file

@ -31,7 +31,6 @@ fragment =
uniform vec4 u_outline_color; uniform vec4 u_outline_color;
uniform vec4 u_background_color; uniform vec4 u_background_color;
uniform float u_xray_error_strength; uniform float u_xray_error_strength;
uniform vec2 u_xray_error_img_scaling;
const vec3 x_axis = vec3(1.0, 0.0, 0.0); const vec3 x_axis = vec3(1.0, 0.0, 0.0);
const vec3 y_axis = vec3(0.0, 1.0, 0.0); const vec3 y_axis = vec3(0.0, 1.0, 0.0);
@ -62,7 +61,8 @@ fragment =
float intersection_count = texture2D(u_layer2, v_uvs).r * 255.0; float intersection_count = texture2D(u_layer2, v_uvs).r * 255.0;
if(mod(intersection_count, 2.0) >= 1.0) if(mod(intersection_count, 2.0) >= 1.0)
{ {
result = result * (1.0 - u_xray_error_strength) + u_xray_error_strength * texture(u_xray_error, v_uvs * u_xray_error_img_scaling); vec2 scaling = textureSize(u_layer0, 0) / textureSize(u_xray_error, 0);
result = result * (1.0 - u_xray_error_strength) + u_xray_error_strength * texture(u_xray_error, v_uvs * scaling);
} }
vec4 sum = vec4(0.0); vec4 sum = vec4(0.0);
@ -112,7 +112,6 @@ fragment41core =
uniform vec4 u_outline_color; uniform vec4 u_outline_color;
uniform vec4 u_background_color; uniform vec4 u_background_color;
uniform float u_xray_error_strength; uniform float u_xray_error_strength;
uniform vec2 u_xray_error_img_scaling;
const vec3 x_axis = vec3(1.0, 0.0, 0.0); const vec3 x_axis = vec3(1.0, 0.0, 0.0);
const vec3 y_axis = vec3(0.0, 1.0, 0.0); const vec3 y_axis = vec3(0.0, 1.0, 0.0);
@ -144,7 +143,8 @@ fragment41core =
float intersection_count = texture(u_layer2, v_uvs).r * 255.0; float intersection_count = texture(u_layer2, v_uvs).r * 255.0;
if(mod(intersection_count, 2.0) >= 1.0) if(mod(intersection_count, 2.0) >= 1.0)
{ {
result = result * (1.0 - u_xray_error_strength) + u_xray_error_strength * texture(u_xray_error, v_uvs * u_xray_error_img_scaling); vec2 scaling = textureSize(u_layer0, 0) / textureSize(u_xray_error, 0);
result = result * (1.0 - u_xray_error_strength) + u_xray_error_strength * texture(u_xray_error, v_uvs * scaling);
} }
vec4 sum = vec4(0.0); vec4 sum = vec4(0.0);
@ -176,7 +176,6 @@ u_background_color = [0.965, 0.965, 0.965, 1.0]
u_outline_strength = 1.0 u_outline_strength = 1.0
u_outline_color = [0.05, 0.66, 0.89, 1.0] u_outline_color = [0.05, 0.66, 0.89, 1.0]
u_xray_error_strength = 0.4 u_xray_error_strength = 0.4
u_xray_error_img_scaling = [1.0,1.0]
[bindings] [bindings]