Update BuildVolume and ConvexHullNode to use new API

This commit is contained in:
Arjen Hiemstra 2015-12-01 17:51:46 +01:00
parent 090f912a55
commit 7395f37efe
3 changed files with 56 additions and 20 deletions

View file

@ -12,6 +12,9 @@ from UM.Math.Color import Color
from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Math.AxisAlignedBox import AxisAlignedBox
from UM.Math.Polygon import Polygon from UM.Math.Polygon import Polygon
from UM.View.RenderBatch import RenderBatch
from UM.View.GL.OpenGL import OpenGL
import numpy import numpy
class BuildVolume(SceneNode): class BuildVolume(SceneNode):
@ -24,10 +27,10 @@ class BuildVolume(SceneNode):
self._height = 0 self._height = 0
self._depth = 0 self._depth = 0
self._material = None self._shader = None
self._grid_mesh = None self._grid_mesh = None
self._grid_material = None self._grid_shader = None
self._disallowed_areas = [] self._disallowed_areas = []
self._disallowed_area_mesh = None self._disallowed_area_mesh = None
@ -61,22 +64,14 @@ class BuildVolume(SceneNode):
if not self.getMeshData(): if not self.getMeshData():
return True return True
if not self._material: if not self._shader:
self._material = renderer.createMaterial( self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
Resources.getPath(Resources.Shaders, "basic.vert"), self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
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))
renderer.queueNode(self, material = self._material, mode = Renderer.RenderLines) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines)
renderer.queueNode(self, mesh = self._grid_mesh, material = self._grid_material, force_single_sided = True) renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader)
if self._disallowed_area_mesh: 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 return True
def rebuild(self): def rebuild(self):

View file

@ -7,6 +7,8 @@ from UM.Math.Color import Color
from UM.Math.Vector import Vector from UM.Math.Vector import Vector
from UM.Mesh.MeshData import MeshData from UM.Mesh.MeshData import MeshData
from UM.View.GL.OpenGL import OpenGL
import numpy import numpy
class ConvexHullNode(SceneNode): class ConvexHullNode(SceneNode):
@ -62,14 +64,14 @@ class ConvexHullNode(SceneNode):
return self._node return self._node
def render(self, renderer): def render(self, renderer):
if not self._material: if not self._shader:
self._material = renderer.createMaterial(Resources.getPath(Resources.Shaders, "basic.vert"), Resources.getPath(Resources.Shaders, "color.frag")) self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
if self.getParent(): if self.getParent():
self._material.setUniformValue("u_color", self._color) 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: 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 return True

View file

@ -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