@@ -103,7 +103,6 @@ struct SDParams {
103103    bool  verbose               = false ;
104104    bool  offload_params_to_cpu = false ;
105105    bool  control_net_cpu       = false ;
106-     bool  normalize_input       = false ;
107106    bool  clip_on_cpu           = false ;
108107    bool  vae_on_cpu            = false ;
109108    bool  diffusion_flash_attn  = false ;
@@ -156,7 +155,6 @@ void print_params(SDParams params) {
156155    printf ("     pm_id_images_dir:                  %s\n "  , params.pm_id_images_dir .c_str ());
157156    printf ("     pm_id_embed_path:                  %s\n "  , params.pm_id_embed_path .c_str ());
158157    printf ("     pm_style_strength:                 %.2f\n "  , params.pm_style_strength );
159-     printf ("     normalize input image:             %s\n "  , params.normalize_input  ? " true"   : " false"  );
160158    printf ("     output_path:                       %s\n "  , params.output_path .c_str ());
161159    printf ("     init_image_path:                   %s\n "  , params.init_image_path .c_str ());
162160    printf ("     end_image_path:                    %s\n "  , params.end_image_path .c_str ());
@@ -248,9 +246,10 @@ void print_usage(int argc, const char* argv[]) {
248246    printf ("   --skip-layers LAYERS               Layers to skip for SLG steps: (default: [7,8,9])\n "  );
249247    printf ("   --skip-layer-start START           SLG enabling point: (default: 0.01)\n "  );
250248    printf ("   --skip-layer-end END               SLG disabling point: (default: 0.2)\n "  );
251-     printf ("   --scheduler {discrete, karras, exponential, ays, gits, smoothstep} Denoiser sigma scheduler (default: discrete)\n "  );
249+     printf ("   --scheduler {discrete, karras, exponential, ays, gits, smoothstep, sgm_uniform, simple } Denoiser sigma scheduler (default: discrete)\n "  );
252250    printf ("   --sampling-method {euler, euler_a, heun, dpm2, dpm++2s_a, dpm++2m, dpm++2mv2, ipndm, ipndm_v, lcm, ddim_trailing, tcd}\n "  );
253251    printf ("                                      sampling method (default: \" euler\"  for Flux/SD3/Wan, \" euler_a\"  otherwise)\n "  );
252+     printf ("   --timestep-shift N                 shift timestep for NitroFusion models, default: 0, recommended N for NitroSD-Realism around 250 and 500 for NitroSD-Vibrant\n "  );
254253    printf ("   --steps  STEPS                     number of sample steps (default: 20)\n "  );
255254    printf ("   --high-noise-cfg-scale SCALE       (high noise) unconditional guidance scale: (default: 7.0)\n "  );
256255    printf ("   --high-noise-img-cfg-scale SCALE   (high noise) image guidance scale for inpaint or instruct-pix2pix models: (default: same as --cfg-scale)\n "  );
@@ -261,7 +260,7 @@ void print_usage(int argc, const char* argv[]) {
261260    printf ("   --high-noise-skip-layers LAYERS    (high noise) Layers to skip for SLG steps: (default: [7,8,9])\n "  );
262261    printf ("   --high-noise-skip-layer-start      (high noise) SLG enabling point: (default: 0.01)\n "  );
263262    printf ("   --high-noise-skip-layer-end END    (high noise) SLG disabling point: (default: 0.2)\n "  );
264-     printf ("   --high-noise-scheduler {discrete, karras, exponential, ays, gits, smoothstep} Denoiser sigma scheduler (default: discrete)\n "  );
263+     printf ("   --high-noise-scheduler {discrete, karras, exponential, ays, gits, smoothstep, sgm_uniform, simple } Denoiser sigma scheduler (default: discrete)\n "  );
265264    printf ("   --high-noise-sampling-method {euler, euler_a, heun, dpm2, dpm++2s_a, dpm++2m, dpm++2mv2, ipndm, ipndm_v, lcm, ddim_trailing, tcd}\n "  );
266265    printf ("                                      (high noise) sampling method (default: \" euler_a\" )\n "  );
267266    printf ("   --high-noise-steps  STEPS          (high noise) number of sample steps (default: -1 = auto)\n "  );
@@ -274,7 +273,7 @@ void print_usage(int argc, const char* argv[]) {
274273    printf ("   --rng {std_default, cuda}          RNG (default: cuda)\n "  );
275274    printf ("   -s SEED, --seed SEED               RNG seed (default: 42, use random seed for < 0)\n "  );
276275    printf ("   -b, --batch-count COUNT            number of images to generate\n "  );
277-     printf ("   --clip-skip N                      ignore last_dot_pos  layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1)\n "  );
276+     printf ("   --clip-skip N                      ignore last  layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1)\n "  );
278277    printf ("                                      <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x\n "  );
279278    printf ("   --vae-tiling                       process vae in tiles to reduce memory usage\n "  );
280279    printf ("   --vae-tile-size [X]x[Y]            tile size for vae tiling (default: 32x32)\n "  );
@@ -305,7 +304,6 @@ void print_usage(int argc, const char* argv[]) {
305304    printf ("   --pm-id-images-dir [DIR]           path to PHOTOMAKER input id images dir\n "  );
306305    printf ("   --pm-id-embed-path [PATH]          path to PHOTOMAKER v2 id embed\n "  );
307306    printf ("   --pm-style-strength                strength for keeping PHOTOMAKER input identity (default: 20)\n "  );
308-     printf ("   --normalize-input                  normalize PHOTOMAKER input id images\n "  );
309307    printf ("   -v, --verbose                      print extra info\n "  );
310308}
311309
@@ -520,6 +518,7 @@ void parse_args(int argc, const char** argv, SDParams& params) {
520518        {" "  , " --chroma-t5-mask-pad"  , " "  , ¶ms.chroma_t5_mask_pad },
521519        {" "  , " --video-frames"  , " "  , ¶ms.video_frames },
522520        {" "  , " --fps"  , " "  , ¶ms.fps },
521+         {" "  , " --timestep-shift"  , " "  , ¶ms.sample_params .shifted_timestep },
523522    };
524523
525524    options.float_options  = {
@@ -550,7 +549,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
550549        {" "  , " --vae-tiling"  , " "  , true , ¶ms.vae_tiling_params .enabled },
551550        {" "  , " --offload-to-cpu"  , " "  , true , ¶ms.offload_params_to_cpu },
552551        {" "  , " --control-net-cpu"  , " "  , true , ¶ms.control_net_cpu },
553-         {" "  , " --normalize-input"  , " "  , true , ¶ms.normalize_input },
554552        {" "  , " --clip-on-cpu"  , " "  , true , ¶ms.clip_on_cpu },
555553        {" "  , " --vae-on-cpu"  , " "  , true , ¶ms.vae_on_cpu },
556554        {" "  , " --diffusion-fa"  , " "  , true , ¶ms.diffusion_flash_attn },
@@ -875,6 +873,11 @@ void parse_args(int argc, const char** argv, SDParams& params) {
875873        exit (1 );
876874    }
877875
876+     if  (params.sample_params .shifted_timestep  < 0  || params.sample_params .shifted_timestep  > 1000 ) {
877+         fprintf (stderr, " error: timestep-shift must be between 0 and 1000\n "  );
878+         exit (1 );
879+     }
880+ 
878881    if  (params.upscale_repeats  < 1 ) {
879882        fprintf (stderr, " error: upscale multiplier must be at least 1\n "  );
880883        exit (1 );
@@ -1372,7 +1375,6 @@ int main(int argc, const char* argv[]) {
13721375            params.batch_count ,
13731376            control_image,
13741377            params.control_strength ,
1375-             params.normalize_input ,
13761378            {
13771379                pmid_images.data (),
13781380                (int )pmid_images.size (),
0 commit comments