@@ -20,6 +20,12 @@ class Binding:
2020
2121
2222class BaseGeometryRenderer (Renderer ):
23+ clipping : Clipping | None = None
24+
25+ def __init__ (self , clipping , * args , ** kwargs ):
26+ self .clipping = clipping
27+ super ().__init__ (* args , ** kwargs )
28+
2329 def create_render_pipeline (self , options ):
2430 super ().create_render_pipeline (options )
2531 self .create_pick_pipeline (options )
@@ -71,10 +77,9 @@ def pick_index_render(self, encoder, texture, depth_texture, load_op):
7177
7278class GeometryFaceRenderer (BaseGeometryRenderer ):
7379 n_vertices : int = 3
74- clipping : Clipping | None = None
7580
76- def __init__ (self , geo ):
77- super ().__init__ (label = "GeometryFaces" )
81+ def __init__ (self , geo , clipping ):
82+ super ().__init__ (clipping , label = "GeometryFaces" )
7883 self .geo = geo
7984 self .colors = None
8085 self .active = True
@@ -119,15 +124,14 @@ def get_shader_code(self):
119124class GeometryEdgeRenderer (BaseGeometryRenderer ):
120125 n_vertices : int = 4
121126 topology : PrimitiveTopology = PrimitiveTopology .triangle_strip
122- clipping : Clipping | None = None
123127
124128 # make sure that edges are rendered on top of faces
125129 depthBias : int = - 5
126130 depthBiasSlopeScale : int = - 5
127131
128- def __init__ (self , geo ):
132+ def __init__ (self , geo , clipping ):
129133 self .geo = geo
130- super ().__init__ (label = "GeometryEdges" )
134+ super ().__init__ (clipping , label = "GeometryEdges" )
131135 self .active = True
132136 self .thickness = 0.005
133137 self ._buffers = {}
@@ -163,11 +167,10 @@ def get_bindings(self):
163167class GeometryVertexRenderer (BaseGeometryRenderer ):
164168 n_vertices : int = 4
165169 topology : PrimitiveTopology = PrimitiveTopology .triangle_strip
166- clipping : Clipping | None = None
167170
168- def __init__ (self , geo ):
171+ def __init__ (self , geo , clipping ):
169172 self .geo = geo
170- super ().__init__ (label = "GeometryVertices" )
173+ super ().__init__ (clipping , label = "GeometryVertices" )
171174 self .active = True
172175 self .thickness = 0.05
173176 self ._buffers = {}
@@ -203,12 +206,12 @@ def get_bindings(self):
203206
204207
205208class GeometryRenderer (MultipleRenderer ):
206- def __init__ (self , geo , label = "Geometry" ):
209+ def __init__ (self , geo , label = "Geometry" , clipping = None ):
207210 self .geo = geo
208- self .faces = GeometryFaceRenderer ( geo )
209- self .edges = GeometryEdgeRenderer (geo )
210- self .vertices = GeometryVertexRenderer (geo )
211- self .clipping = Clipping ( )
211+ self .clipping = clipping or Clipping ( )
212+ self .faces = GeometryFaceRenderer (geo , self . clipping )
213+ self .edges = GeometryEdgeRenderer (geo , self . clipping )
214+ self .vertices = GeometryVertexRenderer ( geo , self . clipping )
212215 self .faces .clipping = self .clipping
213216 self .edges .clipping = self .clipping
214217 self .vertices .clipping = self .clipping
0 commit comments