Skip to content

Commit 48e0a28

Browse files
authored
feat: add shift factor support (#903)
1 parent d05e46c commit 48e0a28

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

stable-diffusion.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class StableDiffusionGGML {
9494
std::shared_ptr<RNG> rng = std::make_shared<STDDefaultRNG>();
9595
int n_threads = -1;
9696
float scale_factor = 0.18215f;
97+
float shift_factor = 0.f;
9798

9899
std::shared_ptr<Conditioner> cond_stage_model;
99100
std::shared_ptr<FrozenCLIPVisionEmbedder> clip_vision; // for svd or wan2.1 i2v
@@ -324,9 +325,10 @@ class StableDiffusionGGML {
324325
scale_factor = 0.13025f;
325326
} else if (sd_version_is_sd3(version)) {
326327
scale_factor = 1.5305f;
328+
shift_factor = 0.0609f;
327329
} else if (sd_version_is_flux(version)) {
328330
scale_factor = 0.3611f;
329-
// TODO: shift_factor
331+
shift_factor = 0.1159f;
330332
} else if (sd_version_is_wan(version) || sd_version_is_qwen_image(version)) {
331333
scale_factor = 1.0f;
332334
}
@@ -1404,7 +1406,11 @@ class StableDiffusionGGML {
14041406
}
14051407
}
14061408
} else {
1407-
ggml_tensor_scale(latent, scale_factor);
1409+
ggml_tensor_iter(latent, [&](ggml_tensor* latent, int64_t i0, int64_t i1, int64_t i2, int64_t i3) {
1410+
float value = ggml_tensor_get_f32(latent, i0, i1, i2, i3);
1411+
value = (value - shift_factor) * scale_factor;
1412+
ggml_tensor_set_f32(latent, value, i0, i1, i2, i3);
1413+
});
14081414
}
14091415
}
14101416

@@ -1444,7 +1450,11 @@ class StableDiffusionGGML {
14441450
}
14451451
}
14461452
} else {
1447-
ggml_tensor_scale(latent, 1.0f / scale_factor);
1453+
ggml_tensor_iter(latent, [&](ggml_tensor* latent, int64_t i0, int64_t i1, int64_t i2, int64_t i3) {
1454+
float value = ggml_tensor_get_f32(latent, i0, i1, i2, i3);
1455+
value = (value / scale_factor) + shift_factor;
1456+
ggml_tensor_set_f32(latent, value, i0, i1, i2, i3);
1457+
});
14481458
}
14491459
}
14501460

0 commit comments

Comments
 (0)