@@ -40,7 +40,9 @@ def create_normal_matrix(self, modelview):
4040
4141
4242class 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
6974class 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