11use core:: f32;
2- use std :: f32:: consts:: PI ;
2+ use core :: f32:: consts:: PI ;
33
4- use framework:: { Demo , DrawModel , MaterialBinder , ModelVertex , Vertex } ;
4+ use framework:: { Demo , MaterialBinder , ModelVertex , Vertex } ;
55use glam:: { Vec3 , Vec4 } ;
66use rand:: Rng ;
77use winit:: keyboard:: KeyCode ;
@@ -23,18 +23,12 @@ impl InstanceVertex {
2323 } ;
2424}
2525
26- fn random_color ( ) -> Vec4 {
27- let mut rng = rand:: thread_rng ( ) ;
28- Vec4 :: new ( rng. r#gen ( ) , rng. r#gen ( ) , rng. r#gen ( ) , 1.0 )
29- }
30-
3126fn random_position_scale ( min : Vec3 , max : Vec3 ) -> Vec4 {
3227 let mut rng = rand:: thread_rng ( ) ;
3328 Vec4 :: new (
3429 rng. gen_range ( min. x ..=max. x ) ,
3530 rng. gen_range ( min. y ..=max. y ) ,
3631 rng. gen_range ( min. z ..=max. z ) ,
37- // rng.gen_range(0.25..=0.75),
3832 0.5 ,
3933 )
4034}
@@ -56,7 +50,7 @@ pub struct Stencil {
5650 mask_bind_group : wgpu:: BindGroup ,
5751 model : framework:: Model ,
5852 visible_pipeline : wgpu:: RenderPipeline ,
59- invisible_pipeline : wgpu:: RenderPipeline ,
53+ hidden_pipeline : wgpu:: RenderPipeline ,
6054 lmb_presssed : bool ,
6155}
6256
@@ -218,11 +212,6 @@ impl Demo for Stencil {
218212 . vertex_shader ( mask_shader. clone ( ) )
219213 . fragment_shader ( mask_shader. clone ( ) )
220214 . fragment_entry_point ( "fs_mask" )
221- . color_state ( wgpu:: ColorTargetState {
222- format : display. config . format ,
223- blend : None ,
224- write_mask : wgpu:: ColorWrites :: empty ( ) ,
225- } )
226215 . cull_mode ( Some ( wgpu:: Face :: Back ) )
227216 . depth_stencil ( wgpu:: DepthStencilState {
228217 format : depth_stencil_format,
@@ -283,7 +272,7 @@ impl Demo for Stencil {
283272 . vertex_buffer_desc ( InstanceVertex :: DESC )
284273 . build ( & display. device ) ?;
285274
286- let invisible_pipeline = framework:: RenderPipelineBuilder :: new ( )
275+ let hidden_pipeline = framework:: RenderPipelineBuilder :: new ( )
287276 . layout ( & model_pipeline_layout)
288277 . vertex_shader ( model_shader. clone ( ) )
289278 . fragment_shader ( model_shader. clone ( ) )
@@ -329,7 +318,7 @@ impl Demo for Stencil {
329318 mask_bind_group,
330319 model,
331320 visible_pipeline,
332- invisible_pipeline ,
321+ hidden_pipeline ,
333322 lmb_presssed,
334323 } )
335324 }
@@ -393,28 +382,20 @@ impl Demo for Stencil {
393382 {
394383 let mut draw_mask_stencil = encoder. begin_render_pass ( & wgpu:: RenderPassDescriptor {
395384 label : Some ( "draw_mask" ) ,
396- color_attachments : & [ Some ( wgpu:: RenderPassColorAttachment {
397- view : & view,
398- resolve_target : None ,
399- ops : wgpu:: Operations {
400- load : wgpu:: LoadOp :: Load ,
401- store : wgpu:: StoreOp :: Store ,
402- } ,
403- depth_slice : None ,
404- } ) ] ,
385+ color_attachments : & [ ] ,
405386 depth_stencil_attachment : Some ( wgpu:: RenderPassDepthStencilAttachment {
406387 view : & self . depth_stencil_view ,
407388 depth_ops : None ,
408389 stencil_ops : Some ( wgpu:: Operations {
409- load : wgpu:: LoadOp :: Clear ( 0xFF ) ,
390+ load : wgpu:: LoadOp :: Clear ( 0 ) ,
410391 store : wgpu:: StoreOp :: Store ,
411392 } ) ,
412393 } ) ,
413394 timestamp_writes : None ,
414395 occlusion_query_set : None ,
415396 } ) ;
416397
417- draw_mask_stencil. set_stencil_reference ( 0 ) ;
398+ draw_mask_stencil. set_stencil_reference ( 0xFF ) ;
418399 draw_mask_stencil. set_pipeline ( & self . mask_pipeline ) ;
419400 draw_mask_stencil. set_bind_group ( 0 , & self . mask_bind_group , & [ ] ) ;
420401 draw_mask_stencil. draw ( 0 ..3 , 0 ..1 ) ;
@@ -462,7 +443,7 @@ impl Demo for Stencil {
462443 }
463444
464445 {
465- let mut draw_invisible = encoder. begin_render_pass ( & wgpu:: RenderPassDescriptor {
446+ let mut draw_hidden = encoder. begin_render_pass ( & wgpu:: RenderPassDescriptor {
466447 label : Some ( "draw_invisible" ) ,
467448 color_attachments : & [ Some ( wgpu:: RenderPassColorAttachment {
468449 view : & view,
@@ -488,17 +469,17 @@ impl Demo for Stencil {
488469 timestamp_writes : None ,
489470 } ) ;
490471
491- draw_invisible . set_stencil_reference ( 0xFF ) ;
492- draw_invisible . set_pipeline ( & self . invisible_pipeline ) ;
493- draw_invisible . set_bind_group ( 0 , & self . camera_bind_group , & [ ] ) ;
494- draw_invisible . set_vertex_buffer ( 1 , self . instance_buffer . buffer . slice ( ..) ) ;
472+ draw_hidden . set_stencil_reference ( 0xFF ) ;
473+ draw_hidden . set_pipeline ( & self . hidden_pipeline ) ;
474+ draw_hidden . set_bind_group ( 0 , & self . camera_bind_group , & [ ] ) ;
475+ draw_hidden . set_vertex_buffer ( 1 , self . instance_buffer . buffer . slice ( ..) ) ;
495476 for mesh in & self . model . meshes {
496477 if let Some ( material) = self . model . materials . get ( mesh. material ) {
497- draw_invisible . set_bind_group ( 1 , & material. bind_group , & [ ] ) ;
498- draw_invisible
478+ draw_hidden . set_bind_group ( 1 , & material. bind_group , & [ ] ) ;
479+ draw_hidden
499480 . set_index_buffer ( mesh. index_buffer . slice ( ..) , wgpu:: IndexFormat :: Uint32 ) ;
500- draw_invisible . set_vertex_buffer ( 0 , mesh. vertex_buffer . slice ( ..) ) ;
501- draw_invisible . draw_indexed (
481+ draw_hidden . set_vertex_buffer ( 0 , mesh. vertex_buffer . slice ( ..) ) ;
482+ draw_hidden . draw_indexed (
502483 0 ..mesh. num_elements ,
503484 0 ,
504485 instance_split..num_instances,
0 commit comments