use transparency in xray view and merge shader duplication

This commit is contained in:
Tim Kuipers 2020-02-27 20:29:58 +01:00
parent 890b6dc0b4
commit 42a1b02d4c
4 changed files with 13 additions and 169 deletions

View file

@ -2,7 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher.
import os.path
from PyQt5.QtGui import QOpenGLContext
from PyQt5.QtGui import QOpenGLContext, QImage
from UM.Application import Application
from UM.Logger import Logger
@ -34,6 +34,7 @@ class XRayView(CuraView):
self._composite_pass = None
self._old_composite_shader = None
self._old_layer_bindings = None
self._xray_error_image = None
def beginRendering(self):
scene = self.getController().getScene()
@ -88,12 +89,19 @@ class XRayView(CuraView):
self.getRenderer().addRenderPass(self._xray_pass)
if not self._xray_composite_shader:
self._xray_composite_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("XRayView"), "xray_composite.shader"))
if not self._xray_error_image:
self._xray_error_image = OpenGL.getInstance().createTexture()
img = QImage(1, 1, QImage.Format_RGB888)
theme = Application.getInstance().getTheme()
img.setPixelColor(0, 0, theme.getColor("xray_error"))
self._xray_error_image.setImage(img)
if not self._xray_composite_shader:
self._xray_composite_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "xray_composite.shader"))
self._xray_composite_shader.setUniformValue("u_background_color", Color(*theme.getColor("viewport_background").getRgb()))
self._xray_composite_shader.setUniformValue("u_error_color", Color(*theme.getColor("xray_error").getRgb()))
self._xray_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb()))
self._xray_composite_shader.setUniformValue("u_xray_error_strength", 0.8)
self._xray_composite_shader.setTexture(3, self._xray_error_image)
if not self._composite_pass:
self._composite_pass = self.getRenderer().getRenderPass("composite")