Spaces:
Paused
Paused
| 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 | |
| } | |