Merge branch 'master' into chroma_radiance

This commit is contained in:
leejet 2025-10-23 01:21:05 +08:00
commit 2c8b907974

View File

@ -95,6 +95,7 @@ public:
std::shared_ptr<RNG> rng = std::make_shared<STDDefaultRNG>(); std::shared_ptr<RNG> rng = std::make_shared<STDDefaultRNG>();
int n_threads = -1; int n_threads = -1;
float scale_factor = 0.18215f; float scale_factor = 0.18215f;
float shift_factor = 0.f;
std::shared_ptr<Conditioner> cond_stage_model; std::shared_ptr<Conditioner> cond_stage_model;
std::shared_ptr<FrozenCLIPVisionEmbedder> clip_vision; // for svd or wan2.1 i2v std::shared_ptr<FrozenCLIPVisionEmbedder> clip_vision; // for svd or wan2.1 i2v
@ -325,9 +326,10 @@ public:
scale_factor = 0.13025f; scale_factor = 0.13025f;
} else if (sd_version_is_sd3(version)) { } else if (sd_version_is_sd3(version)) {
scale_factor = 1.5305f; scale_factor = 1.5305f;
shift_factor = 0.0609f;
} else if (sd_version_is_flux(version)) { } else if (sd_version_is_flux(version)) {
scale_factor = 0.3611f; scale_factor = 0.3611f;
// TODO: shift_factor shift_factor = 0.1159f;
} else if (sd_version_is_wan(version) || sd_version_is_qwen_image(version)) { } else if (sd_version_is_wan(version) || sd_version_is_qwen_image(version)) {
scale_factor = 1.0f; scale_factor = 1.0f;
} }
@ -1463,7 +1465,11 @@ public:
} else if (version == VERSION_CHROMA_RADIANCE) { } else if (version == VERSION_CHROMA_RADIANCE) {
// pass // pass
} else { } else {
ggml_tensor_scale(latent, scale_factor); ggml_tensor_iter(latent, [&](ggml_tensor* latent, int64_t i0, int64_t i1, int64_t i2, int64_t i3) {
float value = ggml_tensor_get_f32(latent, i0, i1, i2, i3);
value = (value - shift_factor) * scale_factor;
ggml_tensor_set_f32(latent, value, i0, i1, i2, i3);
});
} }
} }
@ -1505,7 +1511,11 @@ public:
} else if (version == VERSION_CHROMA_RADIANCE) { } else if (version == VERSION_CHROMA_RADIANCE) {
// pass // pass
} else { } else {
ggml_tensor_scale(latent, 1.0f / scale_factor); ggml_tensor_iter(latent, [&](ggml_tensor* latent, int64_t i0, int64_t i1, int64_t i2, int64_t i3) {
float value = ggml_tensor_get_f32(latent, i0, i1, i2, i3);
value = (value / scale_factor) + shift_factor;
ggml_tensor_set_f32(latent, value, i0, i1, i2, i3);
});
} }
} }