mirror of
https://github.com/DarthAffe/StableDiffusion.NET.git
synced 2025-12-12 13:28:35 +00:00
updated sd.cpp
This commit is contained in:
parent
b147a7a63e
commit
1fbe0de7c6
@ -31,37 +31,39 @@ extern "C" {
|
|||||||
enum rng_type_t {
|
enum rng_type_t {
|
||||||
STD_DEFAULT_RNG,
|
STD_DEFAULT_RNG,
|
||||||
CUDA_RNG,
|
CUDA_RNG,
|
||||||
|
CPU_RNG,
|
||||||
RNG_TYPE_COUNT
|
RNG_TYPE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sample_method_t {
|
enum sample_method_t {
|
||||||
SAMPLE_METHOD_DEFAULT,
|
EULER_SAMPLE_METHOD,
|
||||||
EULER,
|
EULER_A_SAMPLE_METHOD,
|
||||||
HEUN,
|
HEUN_SAMPLE_METHOD,
|
||||||
DPM2,
|
DPM2_SAMPLE_METHOD,
|
||||||
DPMPP2S_A,
|
DPMPP2S_A_SAMPLE_METHOD,
|
||||||
DPMPP2M,
|
DPMPP2M_SAMPLE_METHOD,
|
||||||
DPMPP2Mv2,
|
DPMPP2Mv2_SAMPLE_METHOD,
|
||||||
IPNDM,
|
IPNDM_SAMPLE_METHOD,
|
||||||
IPNDM_V,
|
IPNDM_V_SAMPLE_METHOD,
|
||||||
LCM,
|
LCM_SAMPLE_METHOD,
|
||||||
DDIM_TRAILING,
|
DDIM_TRAILING_SAMPLE_METHOD,
|
||||||
TCD,
|
TCD_SAMPLE_METHOD,
|
||||||
EULER_A,
|
|
||||||
SAMPLE_METHOD_COUNT
|
SAMPLE_METHOD_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum scheduler_t {
|
enum scheduler_t {
|
||||||
DEFAULT,
|
|
||||||
DISCRETE,
|
DISCRETE_SCHEDULER,
|
||||||
KARRAS,
|
KARRAS_SCHEDULER,
|
||||||
EXPONENTIAL,
|
EXPONENTIAL_SCHEDULER,
|
||||||
AYS,
|
AYS_SCHEDULER,
|
||||||
GITS,
|
GITS_SCHEDULER,
|
||||||
SGM_UNIFORM,
|
SGM_UNIFORM_SCHEDULER,
|
||||||
SIMPLE,
|
SIMPLE_SCHEDULER,
|
||||||
SMOOTHSTEP,
|
SMOOTHSTEP_SCHEDULER,
|
||||||
SCHEDULE_COUNT
|
LCM_SCHEDULER,
|
||||||
|
SCHEDULER_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum prediction_t {
|
enum prediction_t {
|
||||||
@ -166,11 +168,13 @@ typedef struct {
|
|||||||
const char* lora_model_dir;
|
const char* lora_model_dir;
|
||||||
const char* embedding_dir;
|
const char* embedding_dir;
|
||||||
const char* photo_maker_path;
|
const char* photo_maker_path;
|
||||||
|
const char* tensor_type_rules;
|
||||||
bool vae_decode_only;
|
bool vae_decode_only;
|
||||||
bool free_params_immediately;
|
bool free_params_immediately;
|
||||||
int n_threads;
|
int n_threads;
|
||||||
enum sd_type_t wtype;
|
enum sd_type_t wtype;
|
||||||
enum rng_type_t rng_type;
|
enum rng_type_t rng_type;
|
||||||
|
enum rng_type_t sampler_rng_type;
|
||||||
enum prediction_t prediction;
|
enum prediction_t prediction;
|
||||||
enum lora_apply_mode_t lora_apply_mode;
|
enum lora_apply_mode_t lora_apply_mode;
|
||||||
bool offload_params_to_cpu;
|
bool offload_params_to_cpu;
|
||||||
@ -226,6 +230,13 @@ typedef struct {
|
|||||||
float style_strength;
|
float style_strength;
|
||||||
} sd_pm_params_t; // photo maker
|
} sd_pm_params_t; // photo maker
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
bool enabled;
|
||||||
|
float reuse_threshold;
|
||||||
|
float start_percent;
|
||||||
|
float end_percent;
|
||||||
|
} sd_easycache_params_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char* prompt;
|
const char* prompt;
|
||||||
const char* negative_prompt;
|
const char* negative_prompt;
|
||||||
@ -246,6 +257,7 @@ typedef struct {
|
|||||||
float control_strength;
|
float control_strength;
|
||||||
sd_pm_params_t pm_params;
|
sd_pm_params_t pm_params;
|
||||||
sd_tiling_params_t vae_tiling_params;
|
sd_tiling_params_t vae_tiling_params;
|
||||||
|
sd_easycache_params_t easycache;
|
||||||
} sd_img_gen_params_t;
|
} sd_img_gen_params_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -265,6 +277,7 @@ typedef struct {
|
|||||||
int64_t seed;
|
int64_t seed;
|
||||||
int video_frames;
|
int video_frames;
|
||||||
float vace_strength;
|
float vace_strength;
|
||||||
|
sd_easycache_params_t easycache;
|
||||||
} sd_vid_gen_params_t;
|
} sd_vid_gen_params_t;
|
||||||
|
|
||||||
typedef struct sd_ctx_t sd_ctx_t;
|
typedef struct sd_ctx_t sd_ctx_t;
|
||||||
@ -285,8 +298,8 @@ SD_API const char* sd_rng_type_name(enum rng_type_t rng_type);
|
|||||||
SD_API enum rng_type_t str_to_rng_type(const char* str);
|
SD_API enum rng_type_t str_to_rng_type(const char* str);
|
||||||
SD_API const char* sd_sample_method_name(enum sample_method_t sample_method);
|
SD_API const char* sd_sample_method_name(enum sample_method_t sample_method);
|
||||||
SD_API enum sample_method_t str_to_sample_method(const char* str);
|
SD_API enum sample_method_t str_to_sample_method(const char* str);
|
||||||
SD_API const char* sd_schedule_name(enum scheduler_t scheduler);
|
SD_API const char* sd_scheduler_name(enum scheduler_t scheduler);
|
||||||
SD_API enum scheduler_t str_to_schedule(const char* str);
|
SD_API enum scheduler_t str_to_scheduler(const char* str);
|
||||||
SD_API const char* sd_prediction_name(enum prediction_t prediction);
|
SD_API const char* sd_prediction_name(enum prediction_t prediction);
|
||||||
SD_API enum prediction_t str_to_prediction(const char* str);
|
SD_API enum prediction_t str_to_prediction(const char* str);
|
||||||
SD_API const char* sd_preview_name(enum preview_t preview);
|
SD_API const char* sd_preview_name(enum preview_t preview);
|
||||||
@ -294,16 +307,21 @@ SD_API enum preview_t str_to_preview(const char* str);
|
|||||||
SD_API const char* sd_lora_apply_mode_name(enum lora_apply_mode_t mode);
|
SD_API const char* sd_lora_apply_mode_name(enum lora_apply_mode_t mode);
|
||||||
SD_API enum lora_apply_mode_t str_to_lora_apply_mode(const char* str);
|
SD_API enum lora_apply_mode_t str_to_lora_apply_mode(const char* str);
|
||||||
|
|
||||||
|
SD_API void sd_easycache_params_init(sd_easycache_params_t* easycache_params);
|
||||||
|
|
||||||
SD_API void sd_ctx_params_init(sd_ctx_params_t* sd_ctx_params);
|
SD_API void sd_ctx_params_init(sd_ctx_params_t* sd_ctx_params);
|
||||||
SD_API char* sd_ctx_params_to_str(const sd_ctx_params_t* sd_ctx_params);
|
SD_API char* sd_ctx_params_to_str(const sd_ctx_params_t* sd_ctx_params);
|
||||||
|
|
||||||
SD_API sd_ctx_t* new_sd_ctx(const sd_ctx_params_t* sd_ctx_params);
|
SD_API sd_ctx_t* new_sd_ctx(const sd_ctx_params_t* sd_ctx_params);
|
||||||
SD_API void free_sd_ctx(sd_ctx_t* sd_ctx);
|
SD_API void free_sd_ctx(sd_ctx_t* sd_ctx);
|
||||||
SD_API enum sample_method_t sd_get_default_sample_method(const sd_ctx_t* sd_ctx);
|
|
||||||
|
|
||||||
SD_API void sd_sample_params_init(sd_sample_params_t* sample_params);
|
SD_API void sd_sample_params_init(sd_sample_params_t* sample_params);
|
||||||
SD_API char* sd_sample_params_to_str(const sd_sample_params_t* sample_params);
|
SD_API char* sd_sample_params_to_str(const sd_sample_params_t* sample_params);
|
||||||
|
|
||||||
|
SD_API enum sample_method_t sd_get_default_sample_method(const sd_ctx_t* sd_ctx);
|
||||||
|
SD_API enum scheduler_t sd_get_default_scheduler(const sd_ctx_t* sd_ctx);
|
||||||
|
|
||||||
SD_API void sd_img_gen_params_init(sd_img_gen_params_t* sd_img_gen_params);
|
SD_API void sd_img_gen_params_init(sd_img_gen_params_t* sd_img_gen_params);
|
||||||
SD_API char* sd_img_gen_params_to_str(const sd_img_gen_params_t* sd_img_gen_params);
|
SD_API char* sd_img_gen_params_to_str(const sd_img_gen_params_t* sd_img_gen_params);
|
||||||
SD_API sd_image_t* generate_image(sd_ctx_t* sd_ctx, const sd_img_gen_params_t* sd_img_gen_params);
|
SD_API sd_image_t* generate_image(sd_ctx_t* sd_ctx, const sd_img_gen_params_t* sd_img_gen_params);
|
||||||
@ -342,4 +360,4 @@ SD_API bool preprocess_canny(sd_image_t image,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // __STABLE_DIFFUSION_H__
|
#endif // __STABLE_DIFFUSION_H__
|
||||||
|
|||||||
@ -3,5 +3,6 @@
|
|||||||
public enum RngType
|
public enum RngType
|
||||||
{
|
{
|
||||||
Standard,
|
Standard,
|
||||||
Cuda
|
Cuda,
|
||||||
|
Cpu
|
||||||
}
|
}
|
||||||
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
public enum Sampler
|
public enum Sampler
|
||||||
{
|
{
|
||||||
Default,
|
|
||||||
Euler,
|
Euler,
|
||||||
|
Euler_A,
|
||||||
Heun,
|
Heun,
|
||||||
DPM2,
|
DPM2,
|
||||||
DPMPP2SA,
|
DPMPP2SA,
|
||||||
@ -14,5 +14,5 @@ public enum Sampler
|
|||||||
LCM,
|
LCM,
|
||||||
DDIM_Trailing,
|
DDIM_Trailing,
|
||||||
TCD,
|
TCD,
|
||||||
Euler_A,
|
Default
|
||||||
}
|
}
|
||||||
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
public enum Scheduler
|
public enum Scheduler
|
||||||
{
|
{
|
||||||
Default,
|
|
||||||
Discrete,
|
Discrete,
|
||||||
Karras,
|
Karras,
|
||||||
Exponential,
|
Exponential,
|
||||||
@ -10,5 +9,7 @@ public enum Scheduler
|
|||||||
GITS,
|
GITS,
|
||||||
SGM_Uniform,
|
SGM_Uniform,
|
||||||
Simple,
|
Simple,
|
||||||
Smoothstep
|
Smoothstep,
|
||||||
|
LCM,
|
||||||
|
Default
|
||||||
}
|
}
|
||||||
@ -91,6 +91,8 @@ public sealed class DiffusionModelParameter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public RngType RngType { get; set; } = RngType.Standard;
|
public RngType RngType { get; set; } = RngType.Standard;
|
||||||
|
|
||||||
|
public RngType SamplerRngType { get; set; } = RngType.Standard;
|
||||||
|
|
||||||
public Prediction Prediction { get; set; } = Prediction.Default;
|
public Prediction Prediction { get; set; } = Prediction.Default;
|
||||||
|
|
||||||
public LoraApplyMode LoraApplyMode { get; set; } = LoraApplyMode.Auto;
|
public LoraApplyMode LoraApplyMode { get; set; } = LoraApplyMode.Auto;
|
||||||
@ -110,6 +112,8 @@ public sealed class DiffusionModelParameter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string StackedIdEmbeddingsDirectory { get; set; } = string.Empty;
|
public string StackedIdEmbeddingsDirectory { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string TensorTypeRules { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// path to full model
|
/// path to full model
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
11
StableDiffusion.NET/Models/Parameter/EasyCache.cs
Normal file
11
StableDiffusion.NET/Models/Parameter/EasyCache.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace StableDiffusion.NET;
|
||||||
|
|
||||||
|
public sealed class EasyCache
|
||||||
|
{
|
||||||
|
public bool IsEnabled { get; set; }
|
||||||
|
public float ReuseThreshold { get; set; }
|
||||||
|
public float StartPercent { get; set; }
|
||||||
|
public float EndPercent { get; set; }
|
||||||
|
|
||||||
|
internal EasyCache() { }
|
||||||
|
}
|
||||||
@ -59,6 +59,8 @@ public sealed class ImageGenerationParameter
|
|||||||
|
|
||||||
public TilingParameter VaeTiling { get; } = new();
|
public TilingParameter VaeTiling { get; } = new();
|
||||||
|
|
||||||
|
public EasyCache EasyCache { get; } = new();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static ImageGenerationParameter Create() => new();
|
public static ImageGenerationParameter Create() => new();
|
||||||
|
|||||||
@ -38,6 +38,8 @@ public sealed class VideoGenerationParameter
|
|||||||
|
|
||||||
public float VaceStrength { get; set; }
|
public float VaceStrength { get; set; }
|
||||||
|
|
||||||
|
public EasyCache EasyCache { get; } = new();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static VideoGenerationParameter Create() => new();
|
public static VideoGenerationParameter Create() => new();
|
||||||
|
|||||||
@ -24,11 +24,13 @@ internal static unsafe class DiffusionModelParameterMarshaller
|
|||||||
lora_model_dir = AnsiStringMarshaller.ConvertToUnmanaged(managed.LoraModelDirectory),
|
lora_model_dir = AnsiStringMarshaller.ConvertToUnmanaged(managed.LoraModelDirectory),
|
||||||
embedding_dir = AnsiStringMarshaller.ConvertToUnmanaged(managed.EmbeddingsDirectory),
|
embedding_dir = AnsiStringMarshaller.ConvertToUnmanaged(managed.EmbeddingsDirectory),
|
||||||
photo_maker_path = AnsiStringMarshaller.ConvertToUnmanaged(managed.StackedIdEmbeddingsDirectory),
|
photo_maker_path = AnsiStringMarshaller.ConvertToUnmanaged(managed.StackedIdEmbeddingsDirectory),
|
||||||
|
tensor_type_rules = AnsiStringMarshaller.ConvertToUnmanaged(managed.TensorTypeRules),
|
||||||
vae_decode_only = (sbyte)(managed.VaeDecodeOnly ? 1 : 0),
|
vae_decode_only = (sbyte)(managed.VaeDecodeOnly ? 1 : 0),
|
||||||
free_params_immediately = (sbyte)(managed.FreeParamsImmediately ? 1 : 0),
|
free_params_immediately = (sbyte)(managed.FreeParamsImmediately ? 1 : 0),
|
||||||
n_threads = managed.ThreadCount,
|
n_threads = managed.ThreadCount,
|
||||||
wtype = managed.Quantization,
|
wtype = managed.Quantization,
|
||||||
rng_type = managed.RngType,
|
rng_type = managed.RngType,
|
||||||
|
sampler_rng_type = managed.SamplerRngType,
|
||||||
prediction = managed.Prediction,
|
prediction = managed.Prediction,
|
||||||
lora_apply_mode = managed.LoraApplyMode,
|
lora_apply_mode = managed.LoraApplyMode,
|
||||||
offload_params_to_cpu = (sbyte)(managed.OffloadParamsToCPU ? 1 : 0),
|
offload_params_to_cpu = (sbyte)(managed.OffloadParamsToCPU ? 1 : 0),
|
||||||
@ -64,11 +66,13 @@ internal static unsafe class DiffusionModelParameterMarshaller
|
|||||||
LoraModelDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.lora_model_dir) ?? string.Empty,
|
LoraModelDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.lora_model_dir) ?? string.Empty,
|
||||||
EmbeddingsDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.embedding_dir) ?? string.Empty,
|
EmbeddingsDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.embedding_dir) ?? string.Empty,
|
||||||
StackedIdEmbeddingsDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.photo_maker_path) ?? string.Empty,
|
StackedIdEmbeddingsDirectory = AnsiStringMarshaller.ConvertToManaged(unmanaged.photo_maker_path) ?? string.Empty,
|
||||||
|
TensorTypeRules = AnsiStringMarshaller.ConvertToManaged(unmanaged.tensor_type_rules) ?? string.Empty,
|
||||||
VaeDecodeOnly = unmanaged.vae_decode_only == 1,
|
VaeDecodeOnly = unmanaged.vae_decode_only == 1,
|
||||||
FreeParamsImmediately = unmanaged.free_params_immediately == 1,
|
FreeParamsImmediately = unmanaged.free_params_immediately == 1,
|
||||||
ThreadCount = unmanaged.n_threads,
|
ThreadCount = unmanaged.n_threads,
|
||||||
Quantization = unmanaged.wtype,
|
Quantization = unmanaged.wtype,
|
||||||
RngType = unmanaged.rng_type,
|
RngType = unmanaged.rng_type,
|
||||||
|
SamplerRngType = unmanaged.sampler_rng_type,
|
||||||
Prediction = unmanaged.prediction,
|
Prediction = unmanaged.prediction,
|
||||||
LoraApplyMode = unmanaged.lora_apply_mode,
|
LoraApplyMode = unmanaged.lora_apply_mode,
|
||||||
OffloadParamsToCPU = unmanaged.offload_params_to_cpu == 1,
|
OffloadParamsToCPU = unmanaged.offload_params_to_cpu == 1,
|
||||||
@ -101,5 +105,6 @@ internal static unsafe class DiffusionModelParameterMarshaller
|
|||||||
AnsiStringMarshaller.Free(unmanaged.lora_model_dir);
|
AnsiStringMarshaller.Free(unmanaged.lora_model_dir);
|
||||||
AnsiStringMarshaller.Free(unmanaged.embedding_dir);
|
AnsiStringMarshaller.Free(unmanaged.embedding_dir);
|
||||||
AnsiStringMarshaller.Free(unmanaged.photo_maker_path);
|
AnsiStringMarshaller.Free(unmanaged.photo_maker_path);
|
||||||
|
AnsiStringMarshaller.Free(unmanaged.tensor_type_rules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -46,6 +46,13 @@ internal static class ImageGenerationParameterMarshaller
|
|||||||
TargetOverlap = unmanaged.vae_tiling_params.target_overlap,
|
TargetOverlap = unmanaged.vae_tiling_params.target_overlap,
|
||||||
RelSizeX = unmanaged.vae_tiling_params.rel_size_x,
|
RelSizeX = unmanaged.vae_tiling_params.rel_size_x,
|
||||||
RelSizeY = unmanaged.vae_tiling_params.rel_size_y
|
RelSizeY = unmanaged.vae_tiling_params.rel_size_y
|
||||||
|
},
|
||||||
|
EasyCache =
|
||||||
|
{
|
||||||
|
IsEnabled = unmanaged.easycache.enabled == 1,
|
||||||
|
ReuseThreshold = unmanaged.easycache.reuse_threshold,
|
||||||
|
StartPercent = unmanaged.easycache.start_percent,
|
||||||
|
EndPercent = unmanaged.easycache.end_percent
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -126,6 +133,14 @@ internal static class ImageGenerationParameterMarshaller
|
|||||||
rel_size_y = managed.VaeTiling.RelSizeY
|
rel_size_y = managed.VaeTiling.RelSizeY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Native.Types.sd_easycache_params_t easyCache = new()
|
||||||
|
{
|
||||||
|
enabled = (sbyte)(managed.EasyCache.IsEnabled ? 1 : 0),
|
||||||
|
reuse_threshold = managed.EasyCache.ReuseThreshold,
|
||||||
|
start_percent = managed.EasyCache.StartPercent,
|
||||||
|
end_percent = managed.EasyCache.EndPercent,
|
||||||
|
};
|
||||||
|
|
||||||
_imgGenParams = new Native.Types.sd_img_gen_params_t
|
_imgGenParams = new Native.Types.sd_img_gen_params_t
|
||||||
{
|
{
|
||||||
prompt = AnsiStringMarshaller.ConvertToUnmanaged(managed.Prompt),
|
prompt = AnsiStringMarshaller.ConvertToUnmanaged(managed.Prompt),
|
||||||
@ -145,7 +160,8 @@ internal static class ImageGenerationParameterMarshaller
|
|||||||
control_image = _controlNetImage,
|
control_image = _controlNetImage,
|
||||||
control_strength = managed.ControlNet.Strength,
|
control_strength = managed.ControlNet.Strength,
|
||||||
pm_params = photoMakerParams,
|
pm_params = photoMakerParams,
|
||||||
vae_tiling_params = tilingParams
|
vae_tiling_params = tilingParams,
|
||||||
|
easycache = easyCache
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,14 @@ internal static class VideoGenerationParameterMarshaller
|
|||||||
Strength = unmanaged.strength,
|
Strength = unmanaged.strength,
|
||||||
Seed = unmanaged.seed,
|
Seed = unmanaged.seed,
|
||||||
FrameCount = unmanaged.video_frames,
|
FrameCount = unmanaged.video_frames,
|
||||||
VaceStrength = unmanaged.vace_strength
|
VaceStrength = unmanaged.vace_strength,
|
||||||
|
EasyCache =
|
||||||
|
{
|
||||||
|
IsEnabled = unmanaged.easycache.enabled == 1,
|
||||||
|
ReuseThreshold = unmanaged.easycache.reuse_threshold,
|
||||||
|
StartPercent = unmanaged.easycache.start_percent,
|
||||||
|
EndPercent = unmanaged.easycache.end_percent
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return parameter;
|
return parameter;
|
||||||
@ -68,6 +75,14 @@ internal static class VideoGenerationParameterMarshaller
|
|||||||
_initImage = managed.InitImage?.ToSdImage() ?? new Native.Types.sd_image_t();
|
_initImage = managed.InitImage?.ToSdImage() ?? new Native.Types.sd_image_t();
|
||||||
_endImage = managed.EndImage?.ToSdImage() ?? new Native.Types.sd_image_t();
|
_endImage = managed.EndImage?.ToSdImage() ?? new Native.Types.sd_image_t();
|
||||||
_controlFrames = managed.ControlFrames == null ? null : managed.ControlFrames.ToSdImage();
|
_controlFrames = managed.ControlFrames == null ? null : managed.ControlFrames.ToSdImage();
|
||||||
|
|
||||||
|
Native.Types.sd_easycache_params_t easyCache = new()
|
||||||
|
{
|
||||||
|
enabled = (sbyte)(managed.EasyCache.IsEnabled ? 1 : 0),
|
||||||
|
reuse_threshold = managed.EasyCache.ReuseThreshold,
|
||||||
|
start_percent = managed.EasyCache.StartPercent,
|
||||||
|
end_percent = managed.EasyCache.EndPercent,
|
||||||
|
};
|
||||||
|
|
||||||
_vidGenParams = new Native.Types.sd_vid_gen_params_t
|
_vidGenParams = new Native.Types.sd_vid_gen_params_t
|
||||||
{
|
{
|
||||||
@ -87,6 +102,7 @@ internal static class VideoGenerationParameterMarshaller
|
|||||||
seed = managed.Seed,
|
seed = managed.Seed,
|
||||||
video_frames = managed.FrameCount,
|
video_frames = managed.FrameCount,
|
||||||
vace_strength = managed.VaceStrength,
|
vace_strength = managed.VaceStrength,
|
||||||
|
easycache = easyCache,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,7 @@ using sd_type_t = Quantization;
|
|||||||
using sd_vid_gen_params_t = VideoGenerationParameter;
|
using sd_vid_gen_params_t = VideoGenerationParameter;
|
||||||
using lora_apply_mode_t = LoraApplyMode;
|
using lora_apply_mode_t = LoraApplyMode;
|
||||||
using preview_t = Preview;
|
using preview_t = Preview;
|
||||||
|
using sd_easycache_params_t = Native.Types.sd_easycache_params_t;
|
||||||
using size_t = nuint;
|
using size_t = nuint;
|
||||||
using uint32_t = uint;
|
using uint32_t = uint;
|
||||||
using uint8_t = byte;
|
using uint8_t = byte;
|
||||||
@ -69,11 +70,13 @@ internal unsafe partial class Native
|
|||||||
public byte* lora_model_dir;
|
public byte* lora_model_dir;
|
||||||
public byte* embedding_dir;
|
public byte* embedding_dir;
|
||||||
public byte* photo_maker_path;
|
public byte* photo_maker_path;
|
||||||
|
public byte* tensor_type_rules;
|
||||||
public sbyte vae_decode_only;
|
public sbyte vae_decode_only;
|
||||||
public sbyte free_params_immediately;
|
public sbyte free_params_immediately;
|
||||||
public int n_threads;
|
public int n_threads;
|
||||||
public sd_type_t wtype;
|
public sd_type_t wtype;
|
||||||
public rng_type_t rng_type;
|
public rng_type_t rng_type;
|
||||||
|
public rng_type_t sampler_rng_type;
|
||||||
public prediction_t prediction;
|
public prediction_t prediction;
|
||||||
public lora_apply_mode_t lora_apply_mode;
|
public lora_apply_mode_t lora_apply_mode;
|
||||||
public sbyte offload_params_to_cpu;
|
public sbyte offload_params_to_cpu;
|
||||||
@ -131,6 +134,7 @@ internal unsafe partial class Native
|
|||||||
public int shifted_timestep;
|
public int shifted_timestep;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
internal struct sd_pm_params_t
|
internal struct sd_pm_params_t
|
||||||
{
|
{
|
||||||
public sd_image_t* id_images;
|
public sd_image_t* id_images;
|
||||||
@ -139,6 +143,15 @@ internal unsafe partial class Native
|
|||||||
public float style_strength;
|
public float style_strength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
internal struct sd_easycache_params_t
|
||||||
|
{
|
||||||
|
public sbyte enabled;
|
||||||
|
public float reuse_threshold;
|
||||||
|
public float start_percent;
|
||||||
|
public float end_percent;
|
||||||
|
}
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
internal struct sd_img_gen_params_t
|
internal struct sd_img_gen_params_t
|
||||||
{
|
{
|
||||||
@ -161,6 +174,7 @@ internal unsafe partial class Native
|
|||||||
public float control_strength;
|
public float control_strength;
|
||||||
public sd_pm_params_t pm_params;
|
public sd_pm_params_t pm_params;
|
||||||
public sd_tiling_params_t vae_tiling_params;
|
public sd_tiling_params_t vae_tiling_params;
|
||||||
|
public sd_easycache_params_t easycache;
|
||||||
}
|
}
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
@ -182,6 +196,7 @@ internal unsafe partial class Native
|
|||||||
public int64_t seed;
|
public int64_t seed;
|
||||||
public int video_frames;
|
public int video_frames;
|
||||||
public float vace_strength;
|
public float vace_strength;
|
||||||
|
public sd_easycache_params_t easycache;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal struct sd_ctx_t;
|
internal struct sd_ctx_t;
|
||||||
@ -237,12 +252,12 @@ internal unsafe partial class Native
|
|||||||
[LibraryImport(LIB_NAME, EntryPoint = "str_to_sample_method")]
|
[LibraryImport(LIB_NAME, EntryPoint = "str_to_sample_method")]
|
||||||
internal static partial sample_method_t str_to_sample_method([MarshalAs(UnmanagedType.LPStr)] string str);
|
internal static partial sample_method_t str_to_sample_method([MarshalAs(UnmanagedType.LPStr)] string str);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "sd_schedule_name")]
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_scheduler_name")]
|
||||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
[return: MarshalAs(UnmanagedType.LPStr)]
|
||||||
internal static partial string sd_schedule_name(scheduler_t schedule);
|
internal static partial string sd_scheduler_name(scheduler_t schedule);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "str_to_schedule")]
|
[LibraryImport(LIB_NAME, EntryPoint = "str_to_scheduler")]
|
||||||
internal static partial scheduler_t str_to_schedule([MarshalAs(UnmanagedType.LPStr)] string str);
|
internal static partial scheduler_t str_to_scheduler([MarshalAs(UnmanagedType.LPStr)] string str);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "sd_prediction_name")]
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_prediction_name")]
|
||||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
[return: MarshalAs(UnmanagedType.LPStr)]
|
||||||
@ -265,6 +280,9 @@ internal unsafe partial class Native
|
|||||||
[LibraryImport(LIB_NAME, EntryPoint = "str_to_lora_apply_mode")]
|
[LibraryImport(LIB_NAME, EntryPoint = "str_to_lora_apply_mode")]
|
||||||
internal static partial lora_apply_mode_t str_to_lora_apply_mode([MarshalAs(UnmanagedType.LPStr)] string str);
|
internal static partial lora_apply_mode_t str_to_lora_apply_mode([MarshalAs(UnmanagedType.LPStr)] string str);
|
||||||
|
|
||||||
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_easycache_params_init")]
|
||||||
|
internal static partial void sd_easycache_params_init(ref sd_easycache_params_t easycache_params);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "sd_ctx_params_init")]
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_ctx_params_init")]
|
||||||
@ -282,9 +300,6 @@ internal unsafe partial class Native
|
|||||||
[LibraryImport(LIB_NAME, EntryPoint = "free_sd_ctx")]
|
[LibraryImport(LIB_NAME, EntryPoint = "free_sd_ctx")]
|
||||||
internal static partial void free_sd_ctx(sd_ctx_t* sd_ctx);
|
internal static partial void free_sd_ctx(sd_ctx_t* sd_ctx);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "sd_get_default_sample_method")]
|
|
||||||
internal static partial sample_method_t sd_get_default_sample_method(sd_ctx_t* sd_ctx);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "sd_sample_params_init")]
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_sample_params_init")]
|
||||||
@ -301,6 +316,12 @@ internal unsafe partial class Native
|
|||||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
[return: MarshalAs(UnmanagedType.LPStr)]
|
||||||
internal static partial string sd_img_gen_params_to_str([MarshalUsing(typeof(ImageGenerationParameterMarshaller))] in sd_img_gen_params_t sd_img_gen_params);
|
internal static partial string sd_img_gen_params_to_str([MarshalUsing(typeof(ImageGenerationParameterMarshaller))] in sd_img_gen_params_t sd_img_gen_params);
|
||||||
|
|
||||||
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_get_default_sample_method")]
|
||||||
|
internal static partial sample_method_t sd_get_default_sample_method(sd_ctx_t* sd_ctx);
|
||||||
|
|
||||||
|
[LibraryImport(LIB_NAME, EntryPoint = "sd_get_default_scheduler")]
|
||||||
|
internal static partial scheduler_t sd_get_default_scheduler(sd_ctx_t* sd_ctx);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "generate_image")]
|
[LibraryImport(LIB_NAME, EntryPoint = "generate_image")]
|
||||||
internal static partial sd_image_t* generate_image(sd_ctx_t* sd_ctx, [MarshalUsing(typeof(ImageGenerationParameterMarshaller))] in sd_img_gen_params_t sd_img_gen_params);
|
internal static partial sd_image_t* generate_image(sd_ctx_t* sd_ctx, [MarshalUsing(typeof(ImageGenerationParameterMarshaller))] in sd_img_gen_params_t sd_img_gen_params);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user