commit
bca743dd17
4
index.js
4
index.js
|
|
@ -713,12 +713,14 @@ let g_old_slider_height = 512
|
||||||
let g_sd_config_obj
|
let g_sd_config_obj
|
||||||
let g_hi_res_upscaler_models
|
let g_hi_res_upscaler_models
|
||||||
let g_controlnet_max_models
|
let g_controlnet_max_models
|
||||||
|
// let g_controlnet_preprocessors
|
||||||
;(async function () {
|
;(async function () {
|
||||||
let temp_config = new sd_config.SdConfig()
|
let temp_config = new sd_config.SdConfig()
|
||||||
await temp_config.getConfig()
|
await temp_config.getConfig()
|
||||||
g_hi_res_upscaler_models = temp_config.getUpscalerModels()
|
g_hi_res_upscaler_models = temp_config.getUpscalerModels()
|
||||||
g_sd_config_obj = temp_config
|
|
||||||
g_controlnet_max_models = temp_config.getControlNetMaxModelsNum()
|
g_controlnet_max_models = temp_config.getControlNetMaxModelsNum()
|
||||||
|
// g_controlnet_preprocessors = temp_config.getControlNetPreprocessors()
|
||||||
|
g_sd_config_obj = temp_config
|
||||||
|
|
||||||
for (let model of g_hi_res_upscaler_models) {
|
for (let model of g_hi_res_upscaler_models) {
|
||||||
//update the hi res upscaler models menu
|
//update the hi res upscaler models menu
|
||||||
|
|
|
||||||
|
|
@ -404,12 +404,16 @@ function selectModelUi(model_hash) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function autoFillInModel(model_hash) {
|
function autoFillInModel(model_hash) {
|
||||||
// unCheckAllSamplers()
|
try {
|
||||||
model_element = getModelElementByHash(model_hash)
|
// unCheckAllSamplers()
|
||||||
selectModelUi(model_hash)
|
model_element = getModelElementByHash(model_hash)
|
||||||
// model_element.
|
selectModelUi(model_hash)
|
||||||
const model_title = model_element.dataset.model_title
|
// model_element.
|
||||||
return model_title
|
const model_title = model_element.dataset.model_title
|
||||||
|
return model_title
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
////// End Models//////////
|
////// End Models//////////
|
||||||
|
|
||||||
|
|
@ -424,13 +428,15 @@ function setInitImageSrc(image_src) {
|
||||||
ini_image_element.src = image_src
|
ini_image_element.src = image_src
|
||||||
}
|
}
|
||||||
function setControlImageSrc(image_src, element_index = 0) {
|
function setControlImageSrc(image_src, element_index = 0) {
|
||||||
const control_net_image_element =
|
const control_net_image_element = document.getElementById(
|
||||||
document.getElementById('control_net_image'+'_'+element_index)
|
'control_net_image' + '_' + element_index
|
||||||
|
)
|
||||||
control_net_image_element.src = image_src
|
control_net_image_element.src = image_src
|
||||||
}
|
}
|
||||||
function setControlMaskSrc(image_src, element_index = 0) {
|
function setControlMaskSrc(image_src, element_index = 0) {
|
||||||
const control_net_image_element =
|
const control_net_image_element = document.getElementById(
|
||||||
document.getElementById('control_net_mask'+'_'+element_index)
|
'control_net_mask' + '_' + element_index
|
||||||
|
)
|
||||||
control_net_image_element.src = image_src
|
control_net_image_element.src = image_src
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,10 @@ class SdConfig {
|
||||||
if (comp?.props?.elem_id) {
|
if (comp?.props?.elem_id) {
|
||||||
const elem_id = comp?.props?.elem_id
|
const elem_id = comp?.props?.elem_id
|
||||||
if (elem_id === 'setting_control_net_max_models_num') {
|
if (elem_id === 'setting_control_net_max_models_num') {
|
||||||
console.log('setting_control_net_max_models_num: ', comp?.props?.value)
|
console.log(
|
||||||
|
'setting_control_net_max_models_num: ',
|
||||||
|
comp?.props?.value
|
||||||
|
)
|
||||||
max_models_num = comp?.props?.value
|
max_models_num = comp?.props?.value
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
@ -50,7 +53,25 @@ class SdConfig {
|
||||||
}
|
}
|
||||||
console.log('max_models_num: ', max_models_num)
|
console.log('max_models_num: ', max_models_num)
|
||||||
return max_models_num
|
return max_models_num
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(e)
|
||||||
|
return 1 // default max number is one
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getControlNetPreprocessors() {
|
||||||
|
try {
|
||||||
|
let max_models_num
|
||||||
|
let choices
|
||||||
|
for (let comp of this.config.components) {
|
||||||
|
const label = comp?.props?.label
|
||||||
|
if (label === 'Preprocessor') {
|
||||||
|
choices = comp?.props?.choices
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('Preprocessor list: ', choices)
|
||||||
|
return choices
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(e)
|
console.warn(e)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,28 +25,33 @@ async function requestControlNetModuleList() {
|
||||||
// const control_net_json = await api.requestGet(
|
// const control_net_json = await api.requestGet(
|
||||||
// `${g_sd_url}/controlnet/model_list`
|
// `${g_sd_url}/controlnet/model_list`
|
||||||
// )
|
// )
|
||||||
const module_list = [
|
// const module_list = [
|
||||||
// 'none',
|
// // 'none',
|
||||||
'canny',
|
// 'canny',
|
||||||
'depth',
|
// 'depth',
|
||||||
'depth_leres',
|
// 'depth_leres',
|
||||||
'hed',
|
// 'hed',
|
||||||
'mlsd',
|
// 'mlsd',
|
||||||
'normal_map',
|
// 'normal_map',
|
||||||
'openpose',
|
// 'openpose',
|
||||||
// "openpose_hand",
|
// // "openpose_hand",
|
||||||
'pidinet',
|
// 'pidinet',
|
||||||
'scribble',
|
// 'scribble',
|
||||||
'fake_scribble',
|
// 'fake_scribble',
|
||||||
'segmentation',
|
// 'segmentation',
|
||||||
]
|
// ]
|
||||||
|
const module_list = g_sd_config_obj.getControlNetPreprocessors()
|
||||||
|
// const module_list = g_controlnet_preprocessors
|
||||||
return module_list
|
return module_list
|
||||||
}
|
}
|
||||||
async function populateModelMenu() {
|
async function populateModelMenu() {
|
||||||
try {
|
try {
|
||||||
const models = await requestControlNetModelList()
|
const models = await requestControlNetModelList()
|
||||||
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
for (
|
||||||
|
let index = 0;
|
||||||
|
index < g_controlnet_max_supported_models;
|
||||||
|
index++
|
||||||
|
) {
|
||||||
html_manip.populateMenu(
|
html_manip.populateMenu(
|
||||||
'mModelsMenuControlNet_' + index,
|
'mModelsMenuControlNet_' + index,
|
||||||
'mModelsMenuItemControlNet_' + index,
|
'mModelsMenuItemControlNet_' + index,
|
||||||
|
|
@ -64,8 +69,11 @@ async function populateModelMenu() {
|
||||||
async function populatePreprocessorMenu() {
|
async function populatePreprocessorMenu() {
|
||||||
try {
|
try {
|
||||||
const modules = await requestControlNetModuleList()
|
const modules = await requestControlNetModuleList()
|
||||||
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
for (
|
||||||
|
let index = 0;
|
||||||
|
index < g_controlnet_max_supported_models;
|
||||||
|
index++
|
||||||
|
) {
|
||||||
html_manip.populateMenu(
|
html_manip.populateMenu(
|
||||||
'mModuleMenuControlNet_' + index,
|
'mModuleMenuControlNet_' + index,
|
||||||
'mModuleMenuItemControlNet_' + index,
|
'mModuleMenuItemControlNet_' + index,
|
||||||
|
|
@ -80,17 +88,20 @@ async function populatePreprocessorMenu() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function initializeControlNetTab(controlnet_max_models) {
|
async function initializeControlNetTab(controlnet_max_models) {
|
||||||
if(controlnet_max_models > g_controlnet_max_supported_models)
|
try {
|
||||||
controlnet_max_models = g_controlnet_max_supported_models
|
if (controlnet_max_models > g_controlnet_max_supported_models)
|
||||||
|
controlnet_max_models = g_controlnet_max_supported_models
|
||||||
for (let index = 0; index < controlnet_max_models; index++) {
|
|
||||||
await populateModelMenu(index)
|
for (let index = 0; index < controlnet_max_models; index++) {
|
||||||
await populatePreprocessorMenu(index)
|
await populateModelMenu(index)
|
||||||
document.getElementById('controlnet_settings_' + index).style.display = "block";
|
await populatePreprocessorMenu(index)
|
||||||
|
document.getElementById(
|
||||||
|
'controlnet_settings_' + index
|
||||||
|
).style.display = 'block'
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// controlnet settings getters
|
// controlnet settings getters
|
||||||
function getControlNetWeightGuidanceStrength(controlnet_index = 0) {
|
function getControlNetWeightGuidanceStrength(controlnet_index = 0) {
|
||||||
|
|
@ -102,17 +113,23 @@ function getControlNetWeightGuidanceStrength(controlnet_index = 0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getControlNetWeight(controlnet_index = 0) {
|
function getControlNetWeight(controlnet_index = 0) {
|
||||||
const slider_value = document.getElementById('slControlNetWeight_' + controlnet_index).value
|
const slider_value = document.getElementById(
|
||||||
|
'slControlNetWeight_' + controlnet_index
|
||||||
|
).value
|
||||||
|
|
||||||
const sd_value = general.mapRange(slider_value, 0, 100, 0, 2) // convert slider value to SD ready value
|
const sd_value = general.mapRange(slider_value, 0, 100, 0, 2) // convert slider value to SD ready value
|
||||||
return sd_value
|
return sd_value
|
||||||
}
|
}
|
||||||
function getUseLowVram(controlnet_index = 0) {
|
function getUseLowVram(controlnet_index = 0) {
|
||||||
const b_result = document.getElementById('chlowVram_' + controlnet_index).checked
|
const b_result = document.getElementById(
|
||||||
|
'chlowVram_' + controlnet_index
|
||||||
|
).checked
|
||||||
return b_result
|
return b_result
|
||||||
}
|
}
|
||||||
function getEnableControlNet(controlnet_index = 0) {
|
function getEnableControlNet(controlnet_index = 0) {
|
||||||
const is_enable = document.getElementById('chEnableControlNet_' + controlnet_index).checked
|
const is_enable = document.getElementById(
|
||||||
|
'chEnableControlNet_' + controlnet_index
|
||||||
|
).checked
|
||||||
return is_enable
|
return is_enable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +147,9 @@ function getSelectedModel(controlnet_index = 0) {
|
||||||
return model_name
|
return model_name
|
||||||
}
|
}
|
||||||
function getUseGuessMode(controlnet_index = 0) {
|
function getUseGuessMode(controlnet_index = 0) {
|
||||||
const is_guess_mode = document.getElementById('chGuessMode_' + controlnet_index).checked
|
const is_guess_mode = document.getElementById(
|
||||||
|
'chGuessMode_' + controlnet_index
|
||||||
|
).checked
|
||||||
return is_guess_mode
|
return is_guess_mode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -139,20 +158,18 @@ function getControlNetMaxModelsNumber() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapPluginSettingsToControlNet(plugin_settings) {
|
function mapPluginSettingsToControlNet(plugin_settings) {
|
||||||
const ps = plugin_settings; // for shortness
|
const ps = plugin_settings // for shortness
|
||||||
let controlnet_units = [];
|
let controlnet_units = []
|
||||||
|
|
||||||
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
||||||
if(!getEnableControlNet(index))
|
if (!getEnableControlNet(index)) break
|
||||||
break;
|
controlnet_units[index] = {
|
||||||
controlnet_units[index] =
|
|
||||||
{
|
|
||||||
input_image: g_generation_session.controlNetImage[index],
|
input_image: g_generation_session.controlNetImage[index],
|
||||||
mask: "",
|
mask: '',
|
||||||
module: getSelectedModule(index),
|
module: getSelectedModule(index),
|
||||||
model: getSelectedModel(index),
|
model: getSelectedModel(index),
|
||||||
weight: getControlNetWeight(index),
|
weight: getControlNetWeight(index),
|
||||||
resize_mode: "Scale to Fit (Inner Fit)",
|
resize_mode: 'Scale to Fit (Inner Fit)',
|
||||||
lowvram: getUseLowVram(index),
|
lowvram: getUseLowVram(index),
|
||||||
processor_res: 512,
|
processor_res: 512,
|
||||||
threshold_a: 64,
|
threshold_a: 64,
|
||||||
|
|
@ -164,30 +181,26 @@ function mapPluginSettingsToControlNet(plugin_settings) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
plugin_settings["mode"] ===
|
plugin_settings['mode'] === Enum.generationModeEnum['Img2Img'] ||
|
||||||
Enum.generationModeEnum["Img2Img"] ||
|
plugin_settings['mode'] === Enum.generationModeEnum['Inpaint'] ||
|
||||||
plugin_settings["mode"] ===
|
plugin_settings['mode'] === Enum.generationModeEnum['Outpaint']
|
||||||
Enum.generationModeEnum["Inpaint"] ||
|
|
||||||
plugin_settings["mode"] ===
|
|
||||||
Enum.generationModeEnum["Outpaint"]
|
|
||||||
) {
|
) {
|
||||||
const b_use_guess_mode = getUseGuessMode();
|
const b_use_guess_mode = getUseGuessMode()
|
||||||
controlnet_units[0]["guessmode"] = b_use_guess_mode;
|
controlnet_units[0]['guessmode'] = b_use_guess_mode
|
||||||
}
|
}
|
||||||
|
|
||||||
const controlnet_payload = {
|
|
||||||
...ps,
|
|
||||||
controlnet_units,
|
|
||||||
subseed: -1,
|
|
||||||
override_settings: {},
|
|
||||||
override_settings_restore_afterwards: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
return controlnet_payload;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
const controlnet_payload = {
|
||||||
|
...ps,
|
||||||
|
controlnet_units,
|
||||||
|
subseed: -1,
|
||||||
|
override_settings: {},
|
||||||
|
override_settings_restore_afterwards: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
return controlnet_payload
|
||||||
|
}
|
||||||
|
function refreshControlNetTab() {}
|
||||||
|
|
||||||
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
||||||
//event listeners
|
//event listeners
|
||||||
|
|
@ -196,8 +209,9 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
||||||
.addEventListener('input', (evt) => {
|
.addEventListener('input', (evt) => {
|
||||||
// debugger
|
// debugger
|
||||||
const sd_value = general.mapRange(evt.target.value, 0, 100, 0, 1) // convert slider value to SD ready value
|
const sd_value = general.mapRange(evt.target.value, 0, 100, 0, 1) // convert slider value to SD ready value
|
||||||
document.getElementById('lControlNetGuidanceStrength_' + index).textContent =
|
document.getElementById(
|
||||||
Number(sd_value).toFixed(2)
|
'lControlNetGuidanceStrength_' + index
|
||||||
|
).textContent = Number(sd_value).toFixed(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
document
|
document
|
||||||
|
|
@ -211,7 +225,8 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
||||||
document
|
document
|
||||||
.getElementById('bSetControlImage_' + index)
|
.getElementById('bSetControlImage_' + index)
|
||||||
.addEventListener('click', async () => {
|
.addEventListener('click', async () => {
|
||||||
const selectionInfo = await selection.Selection.getSelectionInfoExe()
|
const selectionInfo =
|
||||||
|
await selection.Selection.getSelectionInfoExe()
|
||||||
if (selectionInfo) {
|
if (selectionInfo) {
|
||||||
await g_generation_session.setControlNetImage(index)
|
await g_generation_session.setControlNetImage(index)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -219,30 +234,32 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
document.getElementById('bControlMask_' + index).addEventListener('click', async () => {
|
document
|
||||||
// const selectionInfo = await selection.Selection.getSelectionInfoExe()
|
.getElementById('bControlMask_' + index)
|
||||||
|
.addEventListener('click', async () => {
|
||||||
|
// const selectionInfo = await selection.Selection.getSelectionInfoExe()
|
||||||
|
|
||||||
if (
|
if (
|
||||||
g_generation_session.control_net_selection_info &&
|
g_generation_session.control_net_selection_info &&
|
||||||
g_generation_session.controlNetMask[index]
|
g_generation_session.controlNetMask[index]
|
||||||
) {
|
) {
|
||||||
const selection_info = g_generation_session.control_net_selection_info
|
const selection_info =
|
||||||
const layer = await io.IO.base64ToLayer(
|
g_generation_session.control_net_selection_info
|
||||||
g_generation_session.controlNetMask[index],
|
const layer = await io.IO.base64ToLayer(
|
||||||
'ControlNet Mask.png',
|
g_generation_session.controlNetMask[index],
|
||||||
selection_info.left,
|
'ControlNet Mask.png',
|
||||||
selection_info.top,
|
selection_info.left,
|
||||||
selection_info.width,
|
selection_info.top,
|
||||||
selection_info.height
|
selection_info.width,
|
||||||
)
|
selection_info.height
|
||||||
} else {
|
)
|
||||||
// await note.Notification.inactiveSelectionArea()
|
} else {
|
||||||
app.showAlert('Mask Image is not available')
|
// await note.Notification.inactiveSelectionArea()
|
||||||
}
|
app.showAlert('Mask Image is not available')
|
||||||
})
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
requestControlNetModelList,
|
requestControlNetModelList,
|
||||||
populateModelMenu,
|
populateModelMenu,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue