diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py index af42b59b78..b5b46f447c 100644 --- a/cura/PreviewPass.py +++ b/cura/PreviewPass.py @@ -17,6 +17,17 @@ MYPY = False if MYPY: from UM.Scene.Camera import Camera + +# Make color brighter by normalizing it (maximum factor 2.5 brighter) +def prettier_color(l): + maximum = max(l[:3]) + if maximum > 0: + factor = min(1 / maximum, 2.5) + else: + factor = 1.0 + return [min(i * factor, 1.0) for i in l] + + ## A render pass subclass that renders slicable objects with default parameters. # It uses the active camera by default, but it can be overridden to use a different camera. # @@ -41,6 +52,9 @@ class PreviewPass(RenderPass): if not self._shader: self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader")) self._shader.setUniformValue("u_overhangAngle", 1.0) + self._shader.setUniformValue("u_ambientColor", [0.1, 0.1, 0.1, 1.0]) + self._shader.setUniformValue("u_specularColor", [0.6, 0.6, 0.6, 1.0]) + self._shader.setUniformValue("u_shininess", 20.0) self._gl.glClearColor(0.0, 0.0, 0.0, 0.0) self._gl.glClear(self._gl.GL_COLOR_BUFFER_BIT | self._gl.GL_DEPTH_BUFFER_BIT) @@ -52,7 +66,7 @@ class PreviewPass(RenderPass): for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): uniforms = {} - uniforms["diffuse_color"] = node.getDiffuseColor() + uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) self.bind()