72
72
// #![allow()]
73
73
74
74
use clap:: Parser ;
75
+ use clap:: builder:: PossibleValue ;
76
+ use clap:: ValueEnum ;
75
77
use std:: borrow:: Cow ;
76
78
use strum:: { Display , EnumString } ;
77
79
@@ -81,14 +83,24 @@ mod compute;
81
83
82
84
mod graphics;
83
85
84
- #[ derive( EnumString , Display , PartialEq , Eq , Copy , Clone ) ]
86
+ #[ derive( Debug , EnumString , Display , PartialEq , Eq , Copy , Clone , ValueEnum ) ]
85
87
pub enum RustGPUShader {
86
88
Simplest ,
87
89
Sky ,
88
90
Compute ,
89
91
Mouse ,
90
92
}
91
93
94
+ impl RustGPUShader {
95
+ pub fn help_string ( ) -> String {
96
+ let variants: Vec < String > = Self :: value_variants ( )
97
+ . iter ( )
98
+ . map ( |v| v. to_possible_value ( ) . unwrap ( ) . get_name ( ) . to_owned ( ) )
99
+ . collect ( ) ;
100
+ format ! ( "Shader to run [{}]" , variants. join( ", " ) )
101
+ }
102
+ }
103
+
92
104
struct CompiledShaderModules {
93
105
named_spv_modules : Vec < ( Option < String > , wgpu:: ShaderModuleDescriptorSpirV < ' static > ) > ,
94
106
}
@@ -148,7 +160,7 @@ fn maybe_watch(
148
160
. iter ( )
149
161
. copied ( )
150
162
. collect :: < PathBuf > ( ) ;
151
-
163
+
152
164
let has_debug_printf = options. force_spirv_passthru ;
153
165
154
166
let builder = SpirvBuilder :: new ( crate_path, "spirv-unknown-vulkan1.1" )
@@ -224,7 +236,7 @@ fn maybe_watch(
224
236
#[ derive( Parser , Clone ) ]
225
237
#[ command( ) ]
226
238
pub struct Options {
227
- #[ arg( short, long, default_value = "Sky" ) ]
239
+ #[ arg( short, long, default_value = "Sky" , help = RustGPUShader :: help_string ( ) ) ]
228
240
shader : RustGPUShader ,
229
241
230
242
#[ arg( long) ]
0 commit comments