diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 9f956edbea..0478ed9ebb 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -12,6 +12,9 @@ from UM.Math.Color import Color from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Math.Polygon import Polygon +from UM.View.RenderBatch import RenderBatch +from UM.View.GL.OpenGL import OpenGL + import numpy class BuildVolume(SceneNode): @@ -24,10 +27,10 @@ class BuildVolume(SceneNode): self._height = 0 self._depth = 0 - self._material = None + self._shader = None self._grid_mesh = None - self._grid_material = None + self._grid_shader = None self._disallowed_areas = [] self._disallowed_area_mesh = None @@ -61,22 +64,14 @@ class BuildVolume(SceneNode): if not self.getMeshData(): return True - if not self._material: - self._material = renderer.createMaterial( - Resources.getPath(Resources.Shaders, "basic.vert"), - Resources.getPath(Resources.Shaders, "vertexcolor.frag") - ) - self._grid_material = renderer.createMaterial( - Resources.getPath(Resources.Shaders, "basic.vert"), - Resources.getPath(Resources.Shaders, "grid.frag") - ) - self._grid_material.setUniformValue("u_gridColor0", Color(245, 245, 245, 255)) - self._grid_material.setUniformValue("u_gridColor1", Color(205, 202, 201, 255)) + if not self._shader: + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) + self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) - renderer.queueNode(self, material = self._material, mode = Renderer.RenderLines) - renderer.queueNode(self, mesh = self._grid_mesh, material = self._grid_material, force_single_sided = True) + renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) + renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader) if self._disallowed_area_mesh: - renderer.queueNode(self, mesh = self._disallowed_area_mesh, material = self._material, transparent = True) + renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True) return True def rebuild(self): diff --git a/cura/ConvexHullNode.py b/cura/ConvexHullNode.py index e7a585d412..c7a8257ef0 100644 --- a/cura/ConvexHullNode.py +++ b/cura/ConvexHullNode.py @@ -7,6 +7,8 @@ from UM.Math.Color import Color from UM.Math.Vector import Vector from UM.Mesh.MeshData import MeshData +from UM.View.GL.OpenGL import OpenGL + import numpy class ConvexHullNode(SceneNode): @@ -62,14 +64,14 @@ class ConvexHullNode(SceneNode): return self._node def render(self, renderer): - if not self._material: - self._material = renderer.createMaterial(Resources.getPath(Resources.Shaders, "basic.vert"), Resources.getPath(Resources.Shaders, "color.frag")) + if not self._shader: + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) if self.getParent(): self._material.setUniformValue("u_color", self._color) - renderer.queueNode(self, material = self._material, transparent = True) + renderer.queueNode(self, transparent = True, shader = self._shader) if self._convex_hull_head_mesh: - renderer.queueNode(self, material = self._material,transparent = True, mesh = self._convex_hull_head_mesh) + renderer.queueNode(self, shader = self._shader, transparent = True, mesh = self._convex_hull_head_mesh) return True diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader new file mode 100644 index 0000000000..c05b9ba15c --- /dev/null +++ b/resources/shaders/grid.shader @@ -0,0 +1,39 @@ +[shaders] +vertex = + uniform highp mat4 u_modelViewProjectionMatrix; + + attribute highp vec4 a_vertex; + attribute lowp vec2 a_uvs; + + varying lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment = + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + varying lowp vec2 v_uvs; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + gl_FragColor = u_gridColor0; + else + gl_FragColor = u_gridColor1; + } + +[defaults] +u_gridColor0 = [0.96, 0.96, 0.96, 1.0] +u_gridColor1 = [0.8, 0.8, 0.8, 1.0] + +[bindings] +u_modelViewProjectionMatrix = model_view_projection_matrix + +[attributes] +a_vertex = vertex +a_uvs = uv0