Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
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 | |
} | |