VideoChain-API / src /production /renderImage.mts
jbilcke-hf's picture
jbilcke-hf HF staff
let's upse more image upscaling servers for the load
b785e1d
raw
history blame
1.77 kB
import { RenderedScene, RenderRequest } from "../types.mts"
import { generateImageSDXLAsBase64 } from "../utils/generateImageSDXL.mts"
import { generateImageSDXL360AsBase64 } from "../utils/generateImageSDXL360.mts"
export async function renderImage(
request: RenderRequest,
response: RenderedScene,
): Promise<RenderedScene> {
const isSpherical = request.projection === 'spherical'
const generateImageAsBase64 = isSpherical
? generateImageSDXL360AsBase64
: generateImageSDXLAsBase64
console.log(`going to generate an image using ${request.projection || "default (cartesian)"} projection`)
const params = {
positivePrompt: request.prompt,
negativePrompt: request.negativePrompt,
seed: request.seed,
nbSteps: request.nbSteps,
width: request.width,
height: request.height
}
console.log(`calling generateImageAsBase64 with: `, JSON.stringify(params, null, 2))
// first we generate a quick low quality version
try {
response.assetUrl = await generateImageAsBase64(params)
console.log("successful generation!", response.assetUrl.slice(0, 30))
if (!response.assetUrl?.length) {
throw new Error(`the generated image is empty`)
}
} catch (err) {
console.error(`failed to render.. but let's try again!`)
try {
response.assetUrl = await generateImageAsBase64(params)
console.log("successful generation!", response.assetUrl.slice(0, 30))
if (!response.assetUrl?.length) {
throw new Error(`the generated image is empty`)
}
} catch (err) {
console.error(`failed to generate the image, although ${err}`)
response.error = `failed to render scene: ${err}`
response.status = "error"
response.assetUrl = ""
}
}
return response
}