Skip to content

Commit 030c01b

Browse files
committed
Fallback mesh shader
1 parent 8dfab7c commit 030c01b

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

demosys/scene/shaders.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ def create_normal_matrix(self, modelview):
4040

4141

4242
class ColorShader(MeshShader):
43-
43+
"""
44+
Simple color shader
45+
"""
4446
def __init__(self, shader=None, **kwargs):
4547
super().__init__(shader=shaders.get("scene_default/color.glsl", create=True))
4648

@@ -61,13 +63,18 @@ def draw(self, mesh, proj_mat, view_mat):
6163
mesh.vao.draw()
6264

6365
def apply(self, mesh):
66+
if not mesh.material:
67+
return None
68+
6469
if mesh.material.mat_texture is None:
6570
return self
6671
return None
6772

6873

6974
class TextureShader(MeshShader):
70-
75+
"""
76+
Simple texture shader
77+
"""
7178
def __init__(self, shader=None, **kwargs):
7279
super().__init__(shader=shaders.get("scene_default/texture.glsl", create=True))
7380

@@ -84,6 +91,27 @@ def draw(self, mesh, proj_mat, view_mat):
8491
mesh.vao.draw()
8592

8693
def apply(self, mesh):
94+
if not mesh.material:
95+
return None
96+
8797
if mesh.material.mat_texture is not None:
8898
return self
99+
89100
return None
101+
102+
103+
class FallbackShader(MeshShader):
104+
"""
105+
Fallback shader only rendering positions in white
106+
"""
107+
def __init__(self, shader=None, **kwargs):
108+
super().__init__(shader=shaders.get("scene_default/fallback.glsl", create=True))
109+
110+
def draw(self, mesh, proj_mat, view_mat):
111+
mesh.vao.bind(self.shader)
112+
self.shader.uniform_mat4("m_proj", proj_mat)
113+
self.shader.uniform_mat4("m_mv", view_mat)
114+
mesh.vao.draw()
115+
116+
def apply(self, mesh):
117+
return self

0 commit comments

Comments
 (0)