diff --git a/src/art/genAI/agePromptPart.js b/src/art/genAI/agePromptPart.js index 376ef513ac9ec3d2abde634e188d64237b0e6513..a955d11d4955d0858c49282d70a3afc117c5314e 100644 --- a/src/art/genAI/agePromptPart.js +++ b/src/art/genAI/agePromptPart.js @@ -4,7 +4,9 @@ App.Art.GenAI.AgePromptPart = class AgePromptPart extends App.Art.GenAI.PromptPa */ positive() { let ageTags = ``; - if (this.slave.visualAge < 18) { + if (this.slave.visualAge < 13) { + ageTags = `child, `; + } else if (this.slave.visualAge < 18) { ageTags = `teen, young, `; } else if (this.slave.visualAge < 20) { ageTags = `teen, `; diff --git a/src/art/genAI/buildPrompt.js b/src/art/genAI/buildPrompt.js index 77e5d7d3187bc3902d40c50aa7668406d9246e35..a1015ba089f28fc41db0ec24658195f1bcbc5957 100644 --- a/src/art/genAI/buildPrompt.js +++ b/src/art/genAI/buildPrompt.js @@ -6,10 +6,12 @@ function buildPrompt(slave) { let prompts = [ new App.Art.GenAI.StylePromptPart(slave), - new App.Art.GenAI.BeautyPromptPart(slave), new App.Art.GenAI.SkinPromptPart(slave), new App.Art.GenAI.RacePromptPart(slave), + new App.Art.GenAI.GenderPromptPart(slave), new App.Art.GenAI.AgePromptPart(slave), + new App.Art.GenAI.PregPromptPart(slave), + new App.Art.GenAI.BeautyPromptPart(slave), new App.Art.GenAI.PosturePromptPart(slave), new App.Art.GenAI.ArousalPromptPart(slave), new App.Art.GenAI.WeightPromptPart(slave), diff --git a/src/art/genAI/genderPromptPart.js b/src/art/genAI/genderPromptPart.js new file mode 100644 index 0000000000000000000000000000000000000000..747fd028ea6d9c3792959d1f4e4a85bd72e91329 --- /dev/null +++ b/src/art/genAI/genderPromptPart.js @@ -0,0 +1,31 @@ +App.Art.GenAI.GenderPromptPart = class GenderPromptPart extends App.Art.GenAI.PromptPart { + /** + * @returns {string} + */ + positive() { + if (this.slave.genes === "XX") { + if (this.slave.visualAge > 20) { + return "woman"; + } else { + return "girl"; + } + } else { + if (this.slave.visualAge > 20) { + return "man"; + } else { + return "boy"; + } + } + } + + /** + * @returns {string} + */ + negative() { + if (this.slave.genes === "XX") { + return "boy, man"; + } else { + return "woman, girl"; + } + } +}; diff --git a/src/art/genAI/pregPromptPart.js b/src/art/genAI/pregPromptPart.js new file mode 100644 index 0000000000000000000000000000000000000000..add8979ef1a0182418a5751b960b6db9e5b891f4 --- /dev/null +++ b/src/art/genAI/pregPromptPart.js @@ -0,0 +1,21 @@ +App.Art.GenAI.PregPromptPart = class PregPromptPart extends App.Art.GenAI.PromptPart { + /** + * @returns {string} + */ + positive() { + if (this.slave.preg > 30) { + return "pregnant, full term"; + } else if (this.slave.preg > 20) { + return "pregnant"; + } else if (this.slave.preg > 10) { + return "baby bump"; + } + } + + /** + * @returns {string} + */ + negative() { + return undefined; + } +}; diff --git a/src/art/genAI/racePromptPart.js b/src/art/genAI/racePromptPart.js index dda8562160fdfa7260a1492aa6fb83cd77f2b696..5ff07196b4e3f62c3a752fda19db10285bfc53a5 100644 --- a/src/art/genAI/racePromptPart.js +++ b/src/art/genAI/racePromptPart.js @@ -3,6 +3,11 @@ App.Art.GenAI.RacePromptPart = class RacePromptPart extends App.Art.GenAI.Prompt * @returns {string} */ positive() { + if (this.slave.race === "white") { + return "caucasian"; + } else if (this.slave.race === "black") { + return "african"; + } return this.slave.race; } diff --git a/src/art/genAI/skinPromptPart.js b/src/art/genAI/skinPromptPart.js index 8bedb7ed7399b3471e7cbcfbcb318efdf314511e..15ef9bd58c7c2d35dca382869d4eea973a63cd7e 100644 --- a/src/art/genAI/skinPromptPart.js +++ b/src/art/genAI/skinPromptPart.js @@ -3,6 +3,9 @@ App.Art.GenAI.SkinPromptPart = class SkinPromptPart extends App.Art.GenAI.Prompt * @returns {string} */ positive() { + if (this.slave.geneticQuirks.albinism === 2) { + return "albino"; + } switch (this.slave.skin) { case "pure white": case "ivory": diff --git a/src/art/genAI/stableDiffusion.js b/src/art/genAI/stableDiffusion.js index 4d4bfcde4a19acf4138782dc85fc6335a45a80e5..20b23f2363301e059193fc0a42cbc10e4fa3c0f6 100644 --- a/src/art/genAI/stableDiffusion.js +++ b/src/art/genAI/stableDiffusion.js @@ -39,12 +39,12 @@ App.Art.GenAI.StableDiffusionSettings = class { */ constructor({ enable_hr = true, - denoising_strength = 0.6, + denoising_strength = 0.3, firstphase_width = 400, firstphase_height = 768, hr_scale = 1.7, - hr_upscaler = "Latent", - hr_second_pass_steps = 12, + hr_upscaler = "SwinIR_4x", + hr_second_pass_steps = 10, hr_resize_x = 0, hr_resize_y = 0, hr_sampler_name = "DPM++ 2M SDE Karras", @@ -141,7 +141,7 @@ App.Art.GenAI.StableDiffusionClient = class { body: JSON.stringify(settings), }; - const response = await fetchWithTimeout(`${this.apiUrl}/sdapi/v1/txt2img`, 30000, options); + const response = await fetchWithTimeout(`${this.apiUrl}/sdapi/v1/txt2img`, 60000, options); if (!response.ok) { console.error("Error fetching Stable Diffusion image", response); throw new Error(`Error fetching Stable Diffusion image - status: ${response.status}`);