From 2e0f0421794c4abc5eb3c48999b32e2da1f2f78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20du=20Hamel?= Date: Wed, 23 Sep 2026 02:18:03 +0200 Subject: [PATCH 1/5] latent2rgb: bake linear rescaling in the weights --- src/runtime/latent-preview.h | 604 +++++++++++++++++------------------ 1 file changed, 300 insertions(+), 304 deletions(-) diff --git a/src/runtime/latent-preview.h b/src/runtime/latent-preview.h index c19a0eebcf..7eb06398b5 100644 --- a/src/runtime/latent-preview.h +++ b/src/runtime/latent-preview.h @@ -5,324 +5,324 @@ #include "ggml.h" const float minimax_latent_rgb_proj[24][3] = { - {0.19819857f, 0.11584999f, 0.07929777f}, - {-0.16047224f, -0.10601170f, -0.15996324f}, - {0.47391951f, 0.37602475f, 0.20267826f}, - {-0.09857441f, -0.27435449f, -0.51681751f}, - {-0.18930605f, -0.10512278f, -0.28571478f}, - {-0.15639569f, -0.18000929f, -0.25432852f}, - {-0.07176921f, -0.10901598f, -0.06654253f}, - {-0.05014077f, -0.05839826f, -0.05516087f}, - {-0.05201424f, -0.04351913f, -0.01507579f}, - {0.24750438f, 0.13307422f, 0.17684120f}, - {0.07377446f, 0.10235858f, 0.11707827f}, - {0.02908304f, 0.06587022f, 0.10643690f}, - {-0.00670531f, -0.03857879f, 0.01750151f}, - {-0.07119107f, -0.03083323f, -0.01995450f}, - {-0.08612627f, -0.07253841f, -0.01442890f}, - {0.08793202f, 0.08681750f, 0.02994647f}, - {0.00876893f, 0.02721868f, 0.00091178f}, - {-0.03484412f, -0.02711262f, -0.00110101f}, - {-0.00679772f, -0.01844275f, -0.01683359f}, - {0.04287028f, 0.01601068f, 0.04037397f}, - {-0.00493432f, -0.00230528f, 0.00353911f}, - {0.01495088f, 0.00292306f, 0.00416671f}, - {0.00495307f, 0.05066542f, 0.05210543f}, - {-0.02154842f, -0.01518524f, 0.00442402f}}; -float minimax_latent_rgb_bias[3] = {0.07776964f, -0.01580954f, -0.06561434f}; + {0.09909928f, 0.05792499f, 0.03964889f}, + {-0.08023612f, -0.05300585f, -0.07998162f}, + {0.23695975f, 0.18801238f, 0.10133913f}, + {-0.04928721f, -0.13717725f, -0.25840875f}, + {-0.09465303f, -0.05256139f, -0.14285739f}, + {-0.07819785f, -0.09000464f, -0.12716426f}, + {-0.0358846f, -0.05450799f, -0.03327127f}, + {-0.02507039f, -0.02919913f, -0.02758044f}, + {-0.02600712f, -0.02175957f, -0.0075379f}, + {0.12375219f, 0.06653711f, 0.0884206f}, + {0.03688723f, 0.05117929f, 0.05853913f}, + {0.01454152f, 0.03293511f, 0.05321845f}, + {-0.00335265f, -0.0192894f, 0.00875076f}, + {-0.03559553f, -0.01541661f, -0.00997725f}, + {-0.04306314f, -0.0362692f, -0.00721445f}, + {0.04396601f, 0.04340875f, 0.01497323f}, + {0.00438446f, 0.01360934f, 0.00045589f}, + {-0.01742206f, -0.01355631f, -0.0005505f}, + {-0.00339886f, -0.00922138f, -0.00841679f}, + {0.02143514f, 0.00800534f, 0.02018699f}, + {-0.00246716f, -0.00115264f, 0.00176955f}, + {0.00747544f, 0.00146153f, 0.00208335f}, + {0.00247654f, 0.02533271f, 0.02605272f}, + {-0.01077421f, -0.00759262f, 0.00221201f}}; +float minimax_latent_rgb_bias[3] = {0.53888482f, 0.49209523f, 0.46719283f}; const float ltxav_latent_rgb_proj[128][3] = { - {-0.0293802f, -0.0362516f, -0.0291386f}, - {0.0117735f, 0.0223435f, 0.018856f}, - {0.00922335f, 0.0145666f, 0.0038772f}, - {0.0227299f, 0.0109122f, 0.0131384f}, - {0.00192413f, 0.0024648f, 0.00689245f}, - {-0.0105576f, -0.0135933f, -0.00873841f}, - {-0.0310222f, -0.0396358f, -0.0408445f}, - {0.0149737f, 0.0316323f, 0.03415f}, - {0.0027752f, 0.00814889f, 0.0108575f}, - {-0.000678017f, -0.00180589f, -0.0161684f}, - {0.0153964f, 0.0159774f, 0.0186479f}, - {-0.0222799f, -0.0202068f, -0.0181082f}, - {0.0128696f, 0.00754416f, -0.00673279f}, - {0.0142729f, 0.00448099f, -0.00193934f}, - {-0.014066f, -0.0193755f, -0.0160104f}, - {-0.0176785f, -0.015903f, -0.0152621f}, - {0.0307381f, 0.0292082f, 0.0328668f}, - {0.0332928f, 0.0368629f, 0.0440893f}, - {0.0186304f, 0.0124069f, 0.0160734f}, - {0.00477787f, -0.00315658f, -0.000145702f}, - {0.0183099f, 0.0122593f, 0.00599732f}, - {-0.0194551f, -0.0183924f, -0.0147465f}, - {0.0025732f, 0.00442582f, 0.0173176f}, - {-0.0169423f, -0.0293863f, -0.0225908f}, - {-0.021228f, -0.0265094f, -0.0253049f}, - {0.0327111f, 0.0187133f, 0.0266184f}, - {-0.0226425f, -0.0313781f, -0.0414356f}, - {-0.0163142f, -0.0146144f, -0.0171793f}, - {0.0192183f, 0.0108411f, 0.00829186f}, - {-0.032246f, -0.0274846f, -0.0287434f}, - {0.00345399f, 0.0115567f, 0.015288f}, - {0.000972292f, 0.00331303f, 0.0110501f}, - {0.000939494f, -0.00705084f, -0.00979449f}, - {0.0405155f, 0.0339534f, 0.0419513f}, - {0.0198596f, 0.0186626f, 0.0213766f}, - {-0.00982375f, -0.00880439f, -0.00470429f}, - {-0.0313707f, -0.0258098f, -0.0211663f}, - {0.0144159f, 0.0117896f, 0.0141573f}, - {0.0164571f, 0.0149178f, 0.00921599f}, - {0.0436184f, 0.0346583f, 0.0360647f}, - {-0.00289744f, -0.000752502f, 0.000675415f}, - {-0.00621715f, -0.000558851f, 0.0135814f}, - {-0.00817579f, -0.0113584f, -0.00556793f}, - {0.00965067f, 0.0178221f, 0.015821f}, - {0.0211832f, 0.0180827f, 0.0154707f}, - {-0.00412858f, -0.00374182f, 0.0029568f}, - {-0.0175603f, -0.0226242f, -0.0279012f}, - {-0.00437471f, -0.00668329f, 0.000164887f}, - {-0.0355983f, -0.0419093f, -0.0383065f}, - {0.0144314f, 0.0192514f, 0.0175639f}, - {-0.0130693f, -0.00569884f, -0.00341647f}, - {-0.00184689f, 0.00189034f, -0.00190561f}, - {0.019457f, 0.00842282f, 0.0123738f}, - {-0.00477146f, -0.00206932f, 0.00283336f}, - {-0.0364544f, -0.0256141f, -0.0322336f}, - {-0.0295634f, -0.0295048f, -0.021057f}, - {0.0144484f, 0.0191862f, 0.0112445f}, - {0.0536406f, 0.0582376f, 0.0570966f}, - {0.0085178f, 0.00748455f, 0.00995162f}, - {-0.0136637f, -0.0172914f, -0.0195978f}, - {-0.0339128f, -0.0392692f, -0.0355216f}, - {0.00612855f, 0.00568303f, -0.00212333f}, - {-0.0029225f, 0.00668819f, 0.0122131f}, - {0.00841843f, 0.000181587f, -0.00650644f}, - {-0.00514432f, 0.0127043f, 0.0168049f}, - {-0.00997384f, -0.00602262f, -0.0164031f}, - {0.0233226f, 0.033254f, 0.0307266f}, - {-0.0110201f, -0.0164169f, -0.0161829f}, - {-0.0195952f, -0.0177943f, -0.0115377f}, - {-0.00523918f, -0.00452043f, 0.00267397f}, - {0.0313464f, 0.0288241f, 0.0262496f}, - {0.0324018f, 0.0339792f, 0.0312209f}, - {-0.0163247f, -0.0230503f, -0.0263239f}, - {0.000420577f, -0.00535659f, -0.00663426f}, - {-0.012897f, -0.00203767f, -0.000622678f}, - {-0.0632956f, -0.0651325f, -0.0584479f}, - {-0.00426634f, -0.0150098f, -0.00719348f}, - {0.00476109f, 0.00674315f, 0.00895472f}, - {0.0129384f, 0.0158352f, 0.00963773f}, - {-0.0333379f, -0.0410522f, -0.0317462f}, - {0.00344054f, 0.00275915f, 0.00355732f}, - {0.0209062f, 0.0273453f, 0.0222967f}, - {0.00827287f, 0.00223045f, 0.00325844f}, - {-0.0149132f, -0.0183973f, -0.0199781f}, - {-0.0100786f, -0.0103681f, -0.00218224f}, - {-0.00791409f, -0.00405153f, -0.00599893f}, - {0.0176126f, 0.00618342f, -6.6569e-05f}, - {0.00942486f, -0.00206494f, -0.00580324f}, - {0.00678093f, -0.00291742f, -0.000921195f}, - {-0.0221992f, -0.00483162f, -0.000848514f}, - {-0.0151587f, -0.0157166f, -0.0107302f}, - {0.00909646f, 0.0171985f, 0.0169785f}, - {0.0127224f, 0.0170612f, 0.0303428f}, - {0.0196562f, 0.00212451f, 0.0127744f}, - {0.0233013f, 0.0228994f, 0.0108387f}, - {0.00520761f, 0.00992992f, 0.0066267f}, - {-3.77736e-05f, 0.00460229f, -0.00475132f}, - {-0.0311763f, -0.0453566f, -0.0486901f}, - {0.0195798f, 0.0281246f, 0.0180102f}, - {-0.0174149f, -0.0240867f, -0.0188785f}, - {0.000104658f, 0.00659008f, 0.0144594f}, - {-0.00311086f, -0.0241426f, -0.0244164f}, - {0.0336462f, 0.0305173f, 0.0331101f}, - {0.0613625f, 0.066561f, 0.0610198f}, - {-0.0286757f, -0.0325401f, -0.0338036f}, - {0.0141534f, 0.0188266f, 0.0253059f}, - {-0.00548197f, -0.00170198f, 0.00561745f}, - {-0.0117872f, -0.00763218f, -0.0145037f}, - {-0.0253304f, -0.0245217f, -0.0144905f}, - {-0.00393624f, 0.00350048f, 0.00765561f}, - {0.0113625f, 0.00561576f, -0.0113672f}, - {-0.0301278f, -0.0261472f, -0.0301903f}, - {0.016863f, 0.0173781f, 0.0170916f}, - {-0.00495108f, 0.00686749f, 0.00282767f}, - {0.00125409f, -0.00378072f, -0.00264117f}, - {-0.00264001f, -0.00529772f, -0.0113109f}, - {-0.054888f, -0.0575461f, -0.0509146f}, - {-0.019442f, -0.0232916f, -0.0258637f}, - {0.0133362f, 0.0161808f, 0.00917951f}, - {-0.0349002f, -0.0372642f, -0.0466206f}, - {-0.00216926f, 0.00208738f, 0.00766492f}, - {0.0268528f, 0.0301179f, 0.0228579f}, - {0.0226176f, 0.021536f, 0.023152f}, - {-0.0110646f, -0.00511349f, -0.0137346f}, - {-0.0098424f, -0.00218176f, 0.00414545f}, - {0.00200216f, 0.00441732f, -0.0136515f}, - {0.00695946f, 0.00313109f, -0.00379435f}, - {0.0188377f, 0.0144059f, 0.0229724f}, + {-0.0146901f, -0.0181258f, -0.0145693f}, + {0.00588675f, 0.01117175f, 0.009428f}, + {0.00461167f, 0.0072833f, 0.0019386f}, + {0.01136495f, 0.0054561f, 0.0065692f}, + {0.00096207f, 0.0012324f, 0.00344622f}, + {-0.0052788f, -0.00679665f, -0.00436921f}, + {-0.0155111f, -0.0198179f, -0.02042225f}, + {0.00748685f, 0.01581615f, 0.017075f}, + {0.0013876f, 0.00407445f, 0.00542875f}, + {-0.00033901f, -0.00090295f, -0.0080842f}, + {0.0076982f, 0.0079887f, 0.00932395f}, + {-0.01113995f, -0.0101034f, -0.0090541f}, + {0.0064348f, 0.00377208f, -0.00336639f}, + {0.00713645f, 0.00224049f, -0.00096967f}, + {-0.007033f, -0.00968775f, -0.0080052f}, + {-0.00883925f, -0.0079515f, -0.00763105f}, + {0.01536905f, 0.0146041f, 0.0164334f}, + {0.0166464f, 0.01843145f, 0.02204465f}, + {0.0093152f, 0.00620345f, 0.0080367f}, + {0.00238894f, -0.00157829f, -0.00007285f}, + {0.00915495f, 0.00612965f, 0.00299866f}, + {-0.00972755f, -0.0091962f, -0.00737325f}, + {0.0012866f, 0.00221291f, 0.0086588f}, + {-0.00847115f, -0.01469315f, -0.0112954f}, + {-0.010614f, -0.0132547f, -0.01265245f}, + {0.01635555f, 0.00935665f, 0.0133092f}, + {-0.01132125f, -0.01568905f, -0.0207178f}, + {-0.0081571f, -0.0073072f, -0.00858965f}, + {0.00960915f, 0.00542055f, 0.00414593f}, + {-0.016123f, -0.0137423f, -0.0143717f}, + {0.001727f, 0.00577835f, 0.007644f}, + {0.00048615f, 0.00165651f, 0.00552505f}, + {0.00046975f, -0.00352542f, -0.00489724f}, + {0.02025775f, 0.0169767f, 0.02097565f}, + {0.0099298f, 0.0093313f, 0.0106883f}, + {-0.00491187f, -0.0044022f, -0.00235214f}, + {-0.01568535f, -0.0129049f, -0.01058315f}, + {0.00720795f, 0.0058948f, 0.00707865f}, + {0.00822855f, 0.0074589f, 0.004608f}, + {0.0218092f, 0.01732915f, 0.01803235f}, + {-0.00144872f, -0.00037625f, 0.00033771f}, + {-0.00310858f, -0.00027943f, 0.0067907f}, + {-0.0040879f, -0.0056792f, -0.00278396f}, + {0.00482534f, 0.00891105f, 0.0079105f}, + {0.0105916f, 0.00904135f, 0.00773535f}, + {-0.00206429f, -0.00187091f, 0.0014784f}, + {-0.00878015f, -0.0113121f, -0.0139506f}, + {-0.00218736f, -0.00334164f, 0.00008244f}, + {-0.01779915f, -0.02095465f, -0.01915325f}, + {0.0072157f, 0.0096257f, 0.00878195f}, + {-0.00653465f, -0.00284942f, -0.00170824f}, + {-0.00092344f, 0.00094517f, -0.00095281f}, + {0.0097285f, 0.00421141f, 0.0061869f}, + {-0.00238573f, -0.00103466f, 0.00141668f}, + {-0.0182272f, -0.01280705f, -0.0161168f}, + {-0.0147817f, -0.0147524f, -0.0105285f}, + {0.0072242f, 0.0095931f, 0.00562225f}, + {0.0268203f, 0.0291188f, 0.0285483f}, + {0.0042589f, 0.00374228f, 0.00497581f}, + {-0.00683185f, -0.0086457f, -0.0097989f}, + {-0.0169564f, -0.0196346f, -0.0177608f}, + {0.00306427f, 0.00284152f, -0.00106167f}, + {-0.00146125f, 0.0033441f, 0.00610655f}, + {0.00420921f, 0.00009079f, -0.00325322f}, + {-0.00257216f, 0.00635215f, 0.00840245f}, + {-0.00498692f, -0.00301131f, -0.00820155f}, + {0.0116613f, 0.016627f, 0.0153633f}, + {-0.00551005f, -0.00820845f, -0.00809145f}, + {-0.0097976f, -0.00889715f, -0.00576885f}, + {-0.00261959f, -0.00226021f, 0.00133698f}, + {0.0156732f, 0.01441205f, 0.0131248f}, + {0.0162009f, 0.0169896f, 0.01561045f}, + {-0.00816235f, -0.01152515f, -0.01316195f}, + {0.00021029f, -0.00267829f, -0.00331713f}, + {-0.0064485f, -0.00101884f, -0.00031134f}, + {-0.0316478f, -0.03256625f, -0.02922395f}, + {-0.00213317f, -0.0075049f, -0.00359674f}, + {0.00238054f, 0.00337157f, 0.00447736f}, + {0.0064692f, 0.0079176f, 0.00481887f}, + {-0.01666895f, -0.0205261f, -0.0158731f}, + {0.00172027f, 0.00137958f, 0.00177866f}, + {0.0104531f, 0.01367265f, 0.01114835f}, + {0.00413643f, 0.00111523f, 0.00162922f}, + {-0.0074566f, -0.00919865f, -0.00998905f}, + {-0.0050393f, -0.00518405f, -0.00109112f}, + {-0.00395705f, -0.00202577f, -0.00299947f}, + {0.0088063f, 0.00309171f, -0.00003328f}, + {0.00471243f, -0.00103247f, -0.00290162f}, + {0.00339047f, -0.00145871f, -0.0004606f}, + {-0.0110996f, -0.00241581f, -0.00042426f}, + {-0.00757935f, -0.0078583f, -0.0053651f}, + {0.00454823f, 0.00859925f, 0.00848925f}, + {0.0063612f, 0.0085306f, 0.0151714f}, + {0.0098281f, 0.00106226f, 0.0063872f}, + {0.01165065f, 0.0114497f, 0.00541935f}, + {0.0026038f, 0.00496496f, 0.00331335f}, + {-0.00001889f, 0.00230115f, -0.00237566f}, + {-0.01558815f, -0.0226783f, -0.02434505f}, + {0.0097899f, 0.0140623f, 0.0090051f}, + {-0.00870745f, -0.01204335f, -0.00943925f}, + {0.00005233f, 0.00329504f, 0.0072297f}, + {-0.00155543f, -0.0120713f, -0.0122082f}, + {0.0168231f, 0.01525865f, 0.01655505f}, + {0.03068125f, 0.0332805f, 0.0305099f}, + {-0.01433785f, -0.01627005f, -0.0169018f}, + {0.0070767f, 0.0094133f, 0.01265295f}, + {-0.00274099f, -0.00085099f, 0.00280873f}, + {-0.0058936f, -0.00381609f, -0.00725185f}, + {-0.0126652f, -0.01226085f, -0.00724525f}, + {-0.00196812f, 0.00175024f, 0.00382781f}, + {0.00568125f, 0.00280788f, -0.0056836f}, + {-0.0150639f, -0.0130736f, -0.01509515f}, + {0.0084315f, 0.00868905f, 0.0085458f}, + {-0.00247554f, 0.00343375f, 0.00141384f}, + {0.00062705f, -0.00189036f, -0.00132058f}, + {-0.00132f, -0.00264886f, -0.00565545f}, + {-0.027444f, -0.02877305f, -0.0254573f}, + {-0.009721f, -0.0116458f, -0.01293185f}, + {0.0066681f, 0.0080904f, 0.00458976f}, + {-0.0174501f, -0.0186321f, -0.0233103f}, + {-0.00108463f, 0.00104369f, 0.00383246f}, + {0.0134264f, 0.01505895f, 0.01142895f}, + {0.0113088f, 0.010768f, 0.011576f}, + {-0.0055323f, -0.00255675f, -0.0068673f}, + {-0.0049212f, -0.00109088f, 0.00207273f}, + {0.00100108f, 0.00220866f, -0.00682575f}, + {0.00347973f, 0.00156555f, -0.00189718f}, + {0.00941885f, 0.00720295f, 0.0114862f}, }; -float ltxav_latent_rgb_bias[3] = {0.043849f, 0.0201085f, 0.0150286f}; +float ltxav_latent_rgb_bias[3] = {0.5219245f, 0.51005425f, 0.5075143f}; const float wan_21_latent_rgb_proj[16][3] = { - {0.015123f, -0.148418f, 0.479828f}, - {0.003652f, -0.010680f, -0.037142f}, - {0.212264f, 0.063033f, 0.016779f}, - {0.232999f, 0.406476f, 0.220125f}, - {-0.051864f, -0.082384f, -0.069396f}, - {0.085005f, -0.161492f, 0.010689f}, - {-0.245369f, -0.506846f, -0.117010f}, - {-0.151145f, 0.017721f, 0.007207f}, - {-0.293239f, -0.207936f, -0.421135f}, - {-0.187721f, 0.050783f, 0.177649f}, - {-0.013067f, 0.265964f, 0.166578f}, - {0.028327f, 0.109329f, 0.108642f}, - {-0.205343f, 0.043991f, 0.148914f}, - {0.014307f, -0.048647f, -0.007219f}, - {0.217150f, 0.053074f, 0.319923f}, - {0.155357f, 0.083156f, 0.064780f}}; -float wan_21_latent_rgb_bias[3] = {-0.270270f, -0.234976f, -0.456853f}; + {0.0075615f, -0.074209f, 0.239914f}, + {0.001826f, -0.00534f, -0.018571f}, + {0.106132f, 0.0315165f, 0.0083895f}, + {0.1164995f, 0.203238f, 0.1100625f}, + {-0.025932f, -0.041192f, -0.034698f}, + {0.0425025f, -0.080746f, 0.0053445f}, + {-0.1226845f, -0.253423f, -0.058505f}, + {-0.0755725f, 0.0088605f, 0.0036035f}, + {-0.1466195f, -0.103968f, -0.2105675f}, + {-0.0938605f, 0.0253915f, 0.0888245f}, + {-0.0065335f, 0.132982f, 0.083289f}, + {0.0141635f, 0.0546645f, 0.054321f}, + {-0.1026715f, 0.0219955f, 0.074457f}, + {0.0071535f, -0.0243235f, -0.0036095f}, + {0.108575f, 0.026537f, 0.1599615f}, + {0.0776785f, 0.041578f, 0.03239f}}; +float wan_21_latent_rgb_bias[3] = {0.364865f, 0.382512f, 0.2715735f}; const float wan_22_latent_rgb_proj[48][3] = { - {0.017126f, -0.027230f, -0.019257f}, - {-0.113739f, -0.028715f, -0.022885f}, - {-0.000106f, 0.021494f, 0.004629f}, - {-0.013273f, -0.107137f, -0.033638f}, - {-0.000381f, 0.000279f, 0.025877f}, - {-0.014216f, -0.003975f, 0.040528f}, - {0.001638f, -0.000748f, 0.011022f}, - {0.029238f, -0.006697f, 0.035933f}, - {0.021641f, -0.015874f, 0.040531f}, - {-0.101984f, -0.070160f, -0.028855f}, - {0.033207f, -0.021068f, 0.002663f}, - {-0.104711f, 0.121673f, 0.102981f}, - {0.082647f, -0.004991f, 0.057237f}, - {-0.027375f, 0.031581f, 0.006868f}, - {-0.045434f, 0.029444f, 0.019287f}, - {-0.046572f, -0.012537f, 0.006675f}, - {0.074709f, 0.033690f, 0.025289f}, - {-0.008251f, -0.002745f, -0.006999f}, - {0.012685f, -0.061856f, -0.048658f}, - {0.042304f, -0.007039f, 0.000295f}, - {-0.007644f, -0.060843f, -0.033142f}, - {0.159909f, 0.045628f, 0.367541f}, - {0.095171f, 0.086438f, 0.010271f}, - {0.006812f, 0.019643f, 0.029637f}, - {0.003467f, -0.010705f, 0.014252f}, - {-0.099681f, -0.066272f, -0.006243f}, - {0.047357f, 0.037040f, 0.000185f}, - {-0.041797f, -0.089225f, -0.032257f}, - {0.008928f, 0.017028f, 0.018684f}, - {-0.042255f, 0.016045f, 0.006849f}, - {0.011268f, 0.036462f, 0.037387f}, - {0.011553f, -0.016375f, -0.048589f}, - {0.046266f, -0.027189f, 0.056979f}, - {0.009640f, -0.017576f, 0.030324f}, - {-0.045794f, -0.036083f, -0.010616f}, - {0.022418f, 0.039783f, -0.032939f}, - {-0.052714f, -0.015525f, 0.007438f}, - {0.193004f, 0.223541f, 0.264175f}, - {-0.059406f, -0.008188f, 0.022867f}, - {-0.156742f, -0.263791f, -0.007385f}, - {-0.015717f, 0.016570f, 0.033969f}, - {0.037969f, 0.109835f, 0.200449f}, - {-0.000782f, -0.009566f, -0.008058f}, - {0.010709f, 0.052960f, -0.044195f}, - {0.017271f, 0.045839f, 0.034569f}, - {0.009424f, 0.013088f, -0.001714f}, - {-0.024805f, -0.059378f, -0.033756f}, - {-0.078293f, 0.029070f, 0.026129f}}; -float wan_22_latent_rgb_bias[3] = {0.013160f, -0.096492f, -0.071323f}; + {0.008563f, -0.013615f, -0.0096285f}, + {-0.0568695f, -0.0143575f, -0.0114425f}, + {-0.000053f, 0.010747f, 0.0023145f}, + {-0.0066365f, -0.0535685f, -0.016819f}, + {-0.0001905f, 0.0001395f, 0.0129385f}, + {-0.007108f, -0.0019875f, 0.020264f}, + {0.000819f, -0.000374f, 0.005511f}, + {0.014619f, -0.0033485f, 0.0179665f}, + {0.0108205f, -0.007937f, 0.0202655f}, + {-0.050992f, -0.03508f, -0.0144275f}, + {0.0166035f, -0.010534f, 0.0013315f}, + {-0.0523555f, 0.0608365f, 0.0514905f}, + {0.0413235f, -0.0024955f, 0.0286185f}, + {-0.0136875f, 0.0157905f, 0.003434f}, + {-0.022717f, 0.014722f, 0.0096435f}, + {-0.023286f, -0.0062685f, 0.0033375f}, + {0.0373545f, 0.016845f, 0.0126445f}, + {-0.0041255f, -0.0013725f, -0.0034995f}, + {0.0063425f, -0.030928f, -0.024329f}, + {0.021152f, -0.0035195f, 0.0001475f}, + {-0.003822f, -0.0304215f, -0.016571f}, + {0.0799545f, 0.022814f, 0.1837705f}, + {0.0475855f, 0.043219f, 0.0051355f}, + {0.003406f, 0.0098215f, 0.0148185f}, + {0.0017335f, -0.0053525f, 0.007126f}, + {-0.0498405f, -0.033136f, -0.0031215f}, + {0.0236785f, 0.01852f, 0.0000925f}, + {-0.0208985f, -0.0446125f, -0.0161285f}, + {0.004464f, 0.008514f, 0.009342f}, + {-0.0211275f, 0.0080225f, 0.0034245f}, + {0.005634f, 0.018231f, 0.0186935f}, + {0.0057765f, -0.0081875f, -0.0242945f}, + {0.023133f, -0.0135945f, 0.0284895f}, + {0.00482f, -0.008788f, 0.015162f}, + {-0.022897f, -0.0180415f, -0.005308f}, + {0.011209f, 0.0198915f, -0.0164695f}, + {-0.026357f, -0.0077625f, 0.003719f}, + {0.096502f, 0.1117705f, 0.1320875f}, + {-0.029703f, -0.004094f, 0.0114335f}, + {-0.078371f, -0.1318955f, -0.0036925f}, + {-0.0078585f, 0.008285f, 0.0169845f}, + {0.0189845f, 0.0549175f, 0.1002245f}, + {-0.000391f, -0.004783f, -0.004029f}, + {0.0053545f, 0.02648f, -0.0220975f}, + {0.0086355f, 0.0229195f, 0.0172845f}, + {0.004712f, 0.006544f, -0.000857f}, + {-0.0124025f, -0.029689f, -0.016878f}, + {-0.0391465f, 0.014535f, 0.0130645f}}; +float wan_22_latent_rgb_bias[3] = {0.50658f, 0.451754f, 0.4643385f}; const float flux_latent_rgb_proj[16][3] = { - {-0.041168f, 0.019917f, 0.097253f}, - {0.028096f, 0.026730f, 0.129576f}, - {0.065618f, -0.067950f, -0.014651f}, - {-0.012998f, -0.014762f, 0.081251f}, - {0.078567f, 0.059296f, -0.024687f}, - {-0.015987f, -0.003697f, 0.005012f}, - {0.033605f, 0.138999f, 0.068517f}, - {-0.024450f, -0.063567f, -0.030101f}, - {-0.040194f, -0.016710f, 0.127185f}, - {0.112681f, 0.088764f, -0.041940f}, - {-0.023498f, 0.093664f, 0.025543f}, - {0.082899f, 0.048320f, 0.007491f}, - {0.075712f, 0.074139f, 0.081965f}, - {-0.143501f, 0.018263f, -0.136138f}, - {-0.025767f, -0.082035f, -0.040023f}, - {-0.111849f, -0.055589f, -0.032361f}}; -float flux_latent_rgb_bias[3] = {0.024600f, -0.006937f, -0.008089f}; + {-0.020584f, 0.0099585f, 0.0486265f}, + {0.014048f, 0.013365f, 0.064788f}, + {0.032809f, -0.033975f, -0.0073255f}, + {-0.006499f, -0.007381f, 0.0406255f}, + {0.0392835f, 0.029648f, -0.0123435f}, + {-0.0079935f, -0.0018485f, 0.002506f}, + {0.0168025f, 0.0694995f, 0.0342585f}, + {-0.012225f, -0.0317835f, -0.0150505f}, + {-0.020097f, -0.008355f, 0.0635925f}, + {0.0563405f, 0.044382f, -0.02097f}, + {-0.011749f, 0.046832f, 0.0127715f}, + {0.0414495f, 0.02416f, 0.0037455f}, + {0.037856f, 0.0370695f, 0.0409825f}, + {-0.0717505f, 0.0091315f, -0.068069f}, + {-0.0128835f, -0.0410175f, -0.0200115f}, + {-0.0559245f, -0.0277945f, -0.0161805f}}; +float flux_latent_rgb_bias[3] = {0.5123f, 0.4965315f, 0.4959555f}; const float flux2_latent_rgb_proj[32][3] = { - {0.000736f, -0.008385f, -0.019710f}, - {-0.001352f, -0.016392f, 0.020693f}, - {-0.006376f, 0.002428f, 0.036736f}, - {0.039384f, 0.074167f, 0.119789f}, - {0.007464f, -0.005705f, -0.004734f}, - {-0.004086f, 0.005287f, -0.000409f}, - {-0.032835f, 0.050802f, -0.028120f}, - {-0.003158f, -0.000835f, 0.000406f}, - {-0.112840f, -0.084337f, -0.023083f}, - {0.001462f, -0.006656f, 0.000549f}, - {-0.009980f, -0.007480f, 0.009702f}, - {0.032540f, 0.000214f, -0.061388f}, - {0.011023f, 0.000694f, 0.007143f}, - {-0.001468f, -0.006723f, -0.001678f}, - {-0.005921f, -0.010320f, -0.003907f}, - {-0.028434f, 0.027584f, 0.018457f}, - {0.014349f, 0.011523f, 0.000441f}, - {0.009874f, 0.003081f, 0.001507f}, - {0.002218f, 0.005712f, 0.001563f}, - {0.053010f, -0.019844f, 0.008683f}, - {-0.002507f, 0.005384f, 0.000938f}, - {-0.002177f, -0.011366f, 0.003559f}, - {-0.000261f, 0.015121f, -0.003240f}, - {-0.003944f, -0.002083f, 0.005043f}, - {-0.009138f, 0.011336f, 0.003781f}, - {0.011429f, 0.003985f, -0.003855f}, - {0.010518f, -0.005586f, 0.010131f}, - {0.007883f, 0.002912f, -0.001473f}, - {-0.003318f, -0.003160f, 0.003684f}, - {-0.034560f, -0.008740f, 0.012996f}, - {0.000166f, 0.001079f, -0.012153f}, - {0.017772f, 0.000937f, -0.011953f}}; -float flux2_latent_rgb_bias[3] = {-0.028738f, -0.098463f, -0.107619f}; + {0.000368f, -0.0041925f, -0.009855f}, + {-0.000676f, -0.008196f, 0.0103465f}, + {-0.003188f, 0.001214f, 0.018368f}, + {0.019692f, 0.0370835f, 0.0598945f}, + {0.003732f, -0.0028525f, -0.002367f}, + {-0.002043f, 0.0026435f, -0.0002045f}, + {-0.0164175f, 0.025401f, -0.01406f}, + {-0.001579f, -0.0004175f, 0.000203f}, + {-0.05642f, -0.0421685f, -0.0115415f}, + {0.000731f, -0.003328f, 0.0002745f}, + {-0.00499f, -0.00374f, 0.004851f}, + {0.01627f, 0.000107f, -0.030694f}, + {0.0055115f, 0.000347f, 0.0035715f}, + {-0.000734f, -0.0033615f, -0.000839f}, + {-0.0029605f, -0.00516f, -0.0019535f}, + {-0.014217f, 0.013792f, 0.0092285f}, + {0.0071745f, 0.0057615f, 0.0002205f}, + {0.004937f, 0.0015405f, 0.0007535f}, + {0.001109f, 0.002856f, 0.0007815f}, + {0.026505f, -0.009922f, 0.0043415f}, + {-0.0012535f, 0.002692f, 0.000469f}, + {-0.0010885f, -0.005683f, 0.0017795f}, + {-0.0001305f, 0.0075605f, -0.00162f}, + {-0.001972f, -0.0010415f, 0.0025215f}, + {-0.004569f, 0.005668f, 0.0018905f}, + {0.0057145f, 0.0019925f, -0.0019275f}, + {0.005259f, -0.002793f, 0.0050655f}, + {0.0039415f, 0.001456f, -0.0007365f}, + {-0.001659f, -0.00158f, 0.001842f}, + {-0.01728f, -0.00437f, 0.006498f}, + {0.000083f, 0.0005395f, -0.0060765f}, + {0.008886f, 0.0004685f, -0.0059765f}}; +float flux2_latent_rgb_bias[3] = {0.485631f, 0.4507685f, 0.4461905f}; // This one was taken straight from // https://github.com/Stability-AI/sd3.5/blob/8565799a3b41eb0c7ba976d18375f0f753f56402/sd3_impls.py#L288-L303 // (MiT Licence) const float sd3_latent_rgb_proj[16][3] = { - {-0.0645f, 0.0177f, 0.1052f}, - {0.0028f, 0.0312f, 0.0650f}, - {0.1848f, 0.0762f, 0.0360f}, - {0.0944f, 0.0360f, 0.0889f}, - {0.0897f, 0.0506f, -0.0364f}, - {-0.0020f, 0.1203f, 0.0284f}, - {0.0855f, 0.0118f, 0.0283f}, - {-0.0539f, 0.0658f, 0.1047f}, - {-0.0057f, 0.0116f, 0.0700f}, - {-0.0412f, 0.0281f, -0.0039f}, - {0.1106f, 0.1171f, 0.1220f}, - {-0.0248f, 0.0682f, -0.0481f}, - {0.0815f, 0.0846f, 0.1207f}, - {-0.0120f, -0.0055f, -0.0867f}, - {-0.0749f, -0.0634f, -0.0456f}, - {-0.1418f, -0.1457f, -0.1259f}, + {-0.03225f, 0.00885f, 0.0526f}, + {0.0014f, 0.0156f, 0.0325f}, + {0.0924f, 0.0381f, 0.018f}, + {0.0472f, 0.018f, 0.04445f}, + {0.04485f, 0.0253f, -0.0182f}, + {-0.001f, 0.06015f, 0.0142f}, + {0.04275f, 0.0059f, 0.01415f}, + {-0.02695f, 0.0329f, 0.05235f}, + {-0.00285f, 0.0058f, 0.035f}, + {-0.0206f, 0.01405f, -0.00195f}, + {0.0553f, 0.05855f, 0.061f}, + {-0.0124f, 0.0341f, -0.02405f}, + {0.04075f, 0.0423f, 0.06035f}, + {-0.006f, -0.00275f, -0.04335f}, + {-0.03745f, -0.0317f, -0.0228f}, + {-0.0709f, -0.07285f, -0.06295f}, }; -float sd3_latent_rgb_bias[3] = {0, 0, 0}; +float sd3_latent_rgb_bias[3] = {0.5f, 0.5f, 0.5f}; const float sdxl_latent_rgb_proj[4][3] = { - {0.258303f, 0.277640f, 0.329699f}, - {-0.299701f, 0.105446f, 0.014194f}, - {0.050522f, 0.186163f, -0.143257f}, - {-0.211938f, -0.149892f, -0.080036f}}; -float sdxl_latent_rgb_bias[3] = {0.144381f, -0.033313f, 0.007061f}; + {0.1291515f, 0.13882f, 0.1648495f}, + {-0.1498505f, 0.052723f, 0.007097f}, + {0.025261f, 0.0930815f, -0.0716285f}, + {-0.105969f, -0.074946f, -0.040018f}}; +float sdxl_latent_rgb_bias[3] = {0.5721905f, 0.4833435f, 0.5035305f}; const float sd_latent_rgb_proj[4][3] = { - {0.337366f, 0.216344f, 0.257386f}, - {0.165636f, 0.386828f, 0.046994f}, - {-0.267803f, 0.237036f, 0.223517f}, - {-0.178022f, -0.200862f, -0.678514f}}; -float sd_latent_rgb_bias[3] = {-0.017478f, -0.055834f, -0.105825f}; + {0.168683f, 0.108172f, 0.128693f}, + {0.082818f, 0.193414f, 0.023497f}, + {-0.1339015f, 0.118518f, 0.1117585f}, + {-0.089011f, -0.100431f, -0.339257f}}; +float sd_latent_rgb_bias[3] = {0.491261f, 0.472083f, 0.4470875f}; void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*latent_rgb_proj)[3], const float latent_rgb_bias[3], int patch_size) { size_t buffer_head = 0; @@ -376,10 +376,6 @@ void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*l g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; } - // change range - r = r * .5f + .5f; - g = g * .5f + .5f; - b = b * .5f + .5f; // clamp rgb values to [0,1] range r = r >= 0 ? r <= 1 ? r : 1 : 0; @@ -446,9 +442,9 @@ void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, con g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; } - r = std::min(1.0f, std::max(0.0f, r * .5f + .5f)); - g = std::min(1.0f, std::max(0.0f, g * .5f + .5f)); - b = std::min(1.0f, std::max(0.0f, b * .5f + .5f)); + r = std::min(1.0f, std::max(0.0f, r)); + g = std::min(1.0f, std::max(0.0f, g)); + b = std::min(1.0f, std::max(0.0f, b)); buffer[pixel_id * 3 + 0] = (uint8_t)(r * 255); buffer[pixel_id * 3 + 1] = (uint8_t)(g * 255); From cac087fe3d67dc21ca64044fe0192fdfb3ffe09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20du=20Hamel?= Date: Wed, 23 Sep 2026 02:20:28 +0200 Subject: [PATCH 2/5] support rgb preview for qwen2.1 VAE --- src/pipeline/diffusion_engine.cpp | 8 ++++ src/runtime/latent-preview.h | 69 +++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/src/pipeline/diffusion_engine.cpp b/src/pipeline/diffusion_engine.cpp index e3624e36ff..58aa6ea1a1 100644 --- a/src/pipeline/diffusion_engine.cpp +++ b/src/pipeline/diffusion_engine.cpp @@ -1987,6 +1987,14 @@ void StableDiffusionGGML::preview_image(int step, LOG_WARN("No latent to RGB projection known for this model"); return; } + } else if (channels == 64) { + if (version == VERSION_QWEN_IMAGE_2_1) { + latent_rgb_proj = qwen21_latent_rgb_proj; + latent_rgb_bias = qwen21_latent_rgb_bias; + } else { + LOG_WARN("No latent to RGB projection known for this model"); + return; + } } else if (channels == 48) { if (sd_version_is_wan(version)) { latent_rgb_proj = wan_22_latent_rgb_proj; diff --git a/src/runtime/latent-preview.h b/src/runtime/latent-preview.h index 7eb06398b5..44b0b1fc5c 100644 --- a/src/runtime/latent-preview.h +++ b/src/runtime/latent-preview.h @@ -4,6 +4,75 @@ #include "core/tensor.hpp" #include "ggml.h" +const float qwen21_latent_rgb_proj[64][3] = { + {0.00430247761, 0.00609750731, -0.00160668598}, + {0.00944616545, 0.00623290608, 0.00537479741}, + {0.0627970723, 0.0588439672, -0.0166106176}, + {0.0209119264, 0.0521713877, 0.0060833158}, + {0.01012669, 0.00726835148, -0.000112168022}, + {-0.00948360351, -0.0103049515, -0.0161364292}, + {0.00219492398, -0.00687484883, 0.01424598}, + {-0.0187247928, -0.0143388563, -0.0346596405}, + {0.00755957367, 0.0121489693, 0.0276939435}, + {-0.0569314759, -0.010195733, 0.000775260261}, + {-0.0116825348, -0.0208646009, -0.0181180591}, + {-0.0175801671, -0.0121797962, -0.00108130519}, + {0.00546677644, -0.0186733462, 0.00120657675}, + {0.00889352372, -0.00200992339, -0.0171629596}, + {0.0243029667, 0.0126572, 0.0336282483}, + {0.0154731779, 0.0138981583, 0.0260434811}, + {0.0187242504, 0.0275876838, 0.0112926951}, + {-0.0045404981, -0.002378088, 0.00318221806}, + {-0.0135227826, -0.0192483477, -0.00452954041}, + {-0.00276746878, 0.00742276842, -0.0105751234}, + {0.00659751281, 0.00474002833, 0.0241894606}, + {-0.00465923552, -0.00138226367, -0.00505992651}, + {0.0090239129, 0.00807477178, -0.0104712345}, + {-0.0107265217, -0.00136480588, 0.0108943738}, + {-0.0318386152, -0.0104446774, 0.0239583871}, + {-0.0125160618, -0.0143357838, 0.0265055073}, + {-0.00926539039, 0.00823636409, -0.00103873794}, + {0.0011550541, 0.00614400374, 0.00651752503}, + {-0.00621835704, -0.0129319364, -0.0189558132}, + {0.00299467355, 0.00321281775, -0.00617257152}, + {-0.0148366998, -0.0117349025, 0.00030009106}, + {-0.0161009749, -0.0264600231, -0.00172493707}, + {-0.00102513229, -0.00423299723, 0.00227985519}, + {-0.00541113532, 0.0157830974, -0.0338876681}, + {0.0322776737, 0.0554833499, 0.0337372432}, + {0.00518400554, -0.00242420605, -0.000764584237}, + {0.00632176783, 0.00774063169, -0.00483187162}, + {-0.0111946204, -0.00435875763, -0.000153210835}, + {0.0135661371, 0.01748262, -0.0044846429}, + {0.0256089336, 0.0086540017, 0.00402113873}, + {0.00605493596, 0.00379012963, -0.00140856293}, + {0.0948639195, 0.0605130914, 0.031301946}, + {0.0104029411, 0.00273774091, 0.00631477819}, + {0.00406666429, 0.00507965457, 0.00650885645}, + {-0.000463618007, -0.00076270297, -0.00299606651}, + {0.00831657308, -0.00291394813, 0.0081979066}, + {-0.0126273171, -0.0302096866, -0.0803459961}, + {-0.045861343, -0.0204600612, -0.0479788099}, + {0.0141481556, -0.00693611936, -0.00824407232}, + {0.0276158409, 0.0483773894, 0.0206793316}, + {0.00461424646, 0.00225733771, -0.0264586189}, + {0.0279300384, 0.0061494154, -0.00722971211}, + {0.000105330451, -0.00647979391, -0.00902380882}, + {0.0179068125, -0.0236252985, -0.0578202571}, + {-0.0253195348, -0.0235957421, 0.0174895734}, + {-0.0240071584, 0.00314194934, -0.0272581913}, + {0.0157749791, 0.0282423303, -0.0215425244}, + {-0.0181165158, -0.00633894277, 0.0030512386}, + {0.0019313771, 0.00455527958, -0.00379263004}, + {-0.0223551649, -0.00417705704, 0.00772936164}, + {-0.007503369, 0.00135306151, -0.00392180678}, + {-0.0110877524, -0.0256672374, -0.0237658712}, + {-0.00518328147, -0.00211073034, -0.0106749526}, + {0.00894476353, 0.00595972095, 0.0198602619}, +}; +float qwen21_latent_rgb_bias[3] = { 0.478353441, 0.48652011, 0.44006647}; + + const float minimax_latent_rgb_proj[24][3] = { {0.09909928f, 0.05792499f, 0.03964889f}, {-0.08023612f, -0.05300585f, -0.07998162f}, From 773492af2327a9ce266314aab8d4970988ae1686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20du=20Hamel?= Date: Wed, 23 Sep 2026 12:42:17 +0200 Subject: [PATCH 3/5] Support alpha channel for preview --- src/pipeline/diffusion_engine.cpp | 6 +- src/runtime/latent-preview.h | 782 +++++++++++++++--------------- 2 files changed, 402 insertions(+), 386 deletions(-) diff --git a/src/pipeline/diffusion_engine.cpp b/src/pipeline/diffusion_engine.cpp index 58aa6ea1a1..0438f3a8b2 100644 --- a/src/pipeline/diffusion_engine.cpp +++ b/src/pipeline/diffusion_engine.cpp @@ -1972,7 +1972,7 @@ void StableDiffusionGGML::preview_image(int step, : latents; if (preview_mode == PREVIEW_PROJ) { int patch_sz = 1; - const float(*latent_rgb_proj)[3] = nullptr; + const float(*latent_rgb_proj)[4] = nullptr; float* latent_rgb_bias = nullptr; if (channels == 128) { @@ -2045,13 +2045,13 @@ void StableDiffusionGGML::preview_image(int step, uint32_t img_width = static_cast(_latents.shape()[0]) * patch_sz; uint32_t img_height = static_cast(_latents.shape()[1]) * patch_sz; - uint8_t* data = (uint8_t*)malloc(frames * img_width * img_height * 3 * sizeof(uint8_t)); + uint8_t* data = (uint8_t*)malloc(frames * img_width * img_height * 4 * sizeof(uint8_t)); GGML_ASSERT(data != nullptr); preview_latent_video(data, _latents, latent_rgb_proj, latent_rgb_bias, patch_sz); sd_image_t* images = (sd_image_t*)malloc(frames * sizeof(sd_image_t)); GGML_ASSERT(images != nullptr); for (uint32_t i = 0; i < frames; i++) { - images[i] = {img_width, img_height, 3, data + i * img_width * img_height * 3}; + images[i] = {img_width, img_height, 4, data + i * img_width * img_height * 4}; } step_callback(step, frames, images, is_noisy, step_callback_data); free(data); diff --git a/src/runtime/latent-preview.h b/src/runtime/latent-preview.h index 44b0b1fc5c..13814e9b4c 100644 --- a/src/runtime/latent-preview.h +++ b/src/runtime/latent-preview.h @@ -4,396 +4,402 @@ #include "core/tensor.hpp" #include "ggml.h" -const float qwen21_latent_rgb_proj[64][3] = { - {0.00430247761, 0.00609750731, -0.00160668598}, - {0.00944616545, 0.00623290608, 0.00537479741}, - {0.0627970723, 0.0588439672, -0.0166106176}, - {0.0209119264, 0.0521713877, 0.0060833158}, - {0.01012669, 0.00726835148, -0.000112168022}, - {-0.00948360351, -0.0103049515, -0.0161364292}, - {0.00219492398, -0.00687484883, 0.01424598}, - {-0.0187247928, -0.0143388563, -0.0346596405}, - {0.00755957367, 0.0121489693, 0.0276939435}, - {-0.0569314759, -0.010195733, 0.000775260261}, - {-0.0116825348, -0.0208646009, -0.0181180591}, - {-0.0175801671, -0.0121797962, -0.00108130519}, - {0.00546677644, -0.0186733462, 0.00120657675}, - {0.00889352372, -0.00200992339, -0.0171629596}, - {0.0243029667, 0.0126572, 0.0336282483}, - {0.0154731779, 0.0138981583, 0.0260434811}, - {0.0187242504, 0.0275876838, 0.0112926951}, - {-0.0045404981, -0.002378088, 0.00318221806}, - {-0.0135227826, -0.0192483477, -0.00452954041}, - {-0.00276746878, 0.00742276842, -0.0105751234}, - {0.00659751281, 0.00474002833, 0.0241894606}, - {-0.00465923552, -0.00138226367, -0.00505992651}, - {0.0090239129, 0.00807477178, -0.0104712345}, - {-0.0107265217, -0.00136480588, 0.0108943738}, - {-0.0318386152, -0.0104446774, 0.0239583871}, - {-0.0125160618, -0.0143357838, 0.0265055073}, - {-0.00926539039, 0.00823636409, -0.00103873794}, - {0.0011550541, 0.00614400374, 0.00651752503}, - {-0.00621835704, -0.0129319364, -0.0189558132}, - {0.00299467355, 0.00321281775, -0.00617257152}, - {-0.0148366998, -0.0117349025, 0.00030009106}, - {-0.0161009749, -0.0264600231, -0.00172493707}, - {-0.00102513229, -0.00423299723, 0.00227985519}, - {-0.00541113532, 0.0157830974, -0.0338876681}, - {0.0322776737, 0.0554833499, 0.0337372432}, - {0.00518400554, -0.00242420605, -0.000764584237}, - {0.00632176783, 0.00774063169, -0.00483187162}, - {-0.0111946204, -0.00435875763, -0.000153210835}, - {0.0135661371, 0.01748262, -0.0044846429}, - {0.0256089336, 0.0086540017, 0.00402113873}, - {0.00605493596, 0.00379012963, -0.00140856293}, - {0.0948639195, 0.0605130914, 0.031301946}, - {0.0104029411, 0.00273774091, 0.00631477819}, - {0.00406666429, 0.00507965457, 0.00650885645}, - {-0.000463618007, -0.00076270297, -0.00299606651}, - {0.00831657308, -0.00291394813, 0.0081979066}, - {-0.0126273171, -0.0302096866, -0.0803459961}, - {-0.045861343, -0.0204600612, -0.0479788099}, - {0.0141481556, -0.00693611936, -0.00824407232}, - {0.0276158409, 0.0483773894, 0.0206793316}, - {0.00461424646, 0.00225733771, -0.0264586189}, - {0.0279300384, 0.0061494154, -0.00722971211}, - {0.000105330451, -0.00647979391, -0.00902380882}, - {0.0179068125, -0.0236252985, -0.0578202571}, - {-0.0253195348, -0.0235957421, 0.0174895734}, - {-0.0240071584, 0.00314194934, -0.0272581913}, - {0.0157749791, 0.0282423303, -0.0215425244}, - {-0.0181165158, -0.00633894277, 0.0030512386}, - {0.0019313771, 0.00455527958, -0.00379263004}, - {-0.0223551649, -0.00417705704, 0.00772936164}, - {-0.007503369, 0.00135306151, -0.00392180678}, - {-0.0110877524, -0.0256672374, -0.0237658712}, - {-0.00518328147, -0.00211073034, -0.0106749526}, - {0.00894476353, 0.00595972095, 0.0198602619}, +const float qwen21_latent_rgb_proj[64][4] = { + {0.00430247761, 0.00609750731, -0.00160668598, -0.0416241114}, + {0.00944616545, 0.00623290608, 0.00537479741, -0.00678954612}, + {0.0627970723, 0.0588439672, -0.0166106176, -0.0169095515}, + {0.0209119264, 0.0521713877, 0.0060833158, -0.0230551401}, + {0.01012669, 0.00726835148, -0.000112168022, 0.0100882595}, + {-0.00948360351, -0.0103049515, -0.0161364292, 0.00655586802}, + {0.00219492398, -0.00687484883, 0.01424598, 0.0401166874}, + {-0.0187247928, -0.0143388563, -0.0346596405, -0.0055510216}, + {0.00755957367, 0.0121489693, 0.0276939435, 0.0224234441}, + {-0.0569314759, -0.010195733, 0.000775260261, -0.0389640963}, + {-0.0116825348, -0.0208646009, -0.0181180591, -0.0114492163}, + {-0.0175801671, -0.0121797962, -0.00108130519, -0.00721128977}, + {0.00546677644, -0.0186733462, 0.00120657675, -0.0029064082}, + {0.00889352372, -0.00200992339, -0.0171629596, 0.0150300547}, + {0.0243029667, 0.0126572, 0.0336282483, -0.00321615308}, + {0.0154731779, 0.0138981583, 0.0260434811, -0.0498856338}, + {0.0187242504, 0.0275876838, 0.0112926951, -0.0215251401}, + {-0.0045404981, -0.002378088, 0.00318221806, 0.0240220482}, + {-0.0135227826, -0.0192483477, -0.00452954041, 0.0117338008}, + {-0.00276746878, 0.00742276842, -0.0105751234, -0.0460420624}, + {0.00659751281, 0.00474002833, 0.0241894606, 0.0387872889}, + {-0.00465923552, -0.00138226367, -0.00505992651, 0.0131517207}, + {0.0090239129, 0.00807477178, -0.0104712345, 0.0147100836}, + {-0.0107265217, -0.00136480588, 0.0108943738, 0.0266985286}, + {-0.0318386152, -0.0104446774, 0.0239583871, 0.0153097324}, + {-0.0125160618, -0.0143357838, 0.0265055073, -0.0418119757}, + {-0.00926539039, 0.00823636409, -0.00103873794, 0.0421013917}, + {0.0011550541, 0.00614400374, 0.00651752503, 0.0401724499}, + {-0.00621835704, -0.0129319364, -0.0189558132, 0.00972515915}, + {0.00299467355, 0.00321281775, -0.00617257152, 0.011718495}, + {-0.0148366998, -0.0117349025, 0.00030009106, 0.0117622291}, + {-0.0161009749, -0.0264600231, -0.00172493707, 0.0136505134}, + {-0.00102513229, -0.00423299723, 0.00227985519, -0.0350017363}, + {-0.00541113532, 0.0157830974, -0.0338876681, -0.0100692606}, + {0.0322776737, 0.0554833499, 0.0337372432, -0.0131582529}, + {0.00518400554, -0.00242420605, -0.000764584237, -0.00660639315}, + {0.00632176783, 0.00774063169, -0.00483187162, 0.00253611396}, + {-0.0111946204, -0.00435875763, -0.000153210835, -0.0195736368}, + {0.0135661371, 0.01748262, -0.0044846429, -0.04240184}, + {0.0256089336, 0.0086540017, 0.00402113873, 0.0321299262}, + {0.00605493596, 0.00379012963, -0.00140856293, 0.0106089414}, + {0.0948639195, 0.0605130914, 0.031301946, -0.0179845306}, + {0.0104029411, 0.00273774091, 0.00631477819, -0.00806212708}, + {0.00406666429, 0.00507965457, 0.00650885645, 0.0135889057}, + {-0.000463618007, -0.00076270297, -0.00299606651, -0.0157393098}, + {0.00831657308, -0.00291394813, 0.0081979066, -0.0267791344}, + {-0.0126273171, -0.0302096866, -0.0803459961, 0.0109068534}, + {-0.045861343, -0.0204600612, -0.0479788099, 0.0283931966}, + {0.0141481556, -0.00693611936, -0.00824407232, -0.0435370078}, + {0.0276158409, 0.0483773894, 0.0206793316, 0.00187883536}, + {0.00461424646, 0.00225733771, -0.0264586189, -0.0108995378}, + {0.0279300384, 0.0061494154, -0.00722971211, -0.0450757676}, + {0.000105330451, -0.00647979391, -0.00902380882, -0.0699481501}, + {0.0179068125, -0.0236252985, -0.0578202571, 0.0123562106}, + {-0.0253195348, -0.0235957421, 0.0174895734, -0.0222592249}, + {-0.0240071584, 0.00314194934, -0.0272581913, 0.0216155907}, + {0.0157749791, 0.0282423303, -0.0215425244, 0.0563755424}, + {-0.0181165158, -0.00633894277, 0.0030512386, -0.0073379912}, + {0.0019313771, 0.00455527958, -0.00379263004, 0.0160012921}, + {-0.0223551649, -0.00417705704, 0.00772936164, 0.0411637742}, + {-0.007503369, 0.00135306151, -0.00392180678, 0.0189607258}, + {-0.0110877524, -0.0256672374, -0.0237658712, -0.024025029}, + {-0.00518328147, -0.00211073034, -0.0106749526, -0.0161487905}, + {0.00894476353, 0.00595972095, 0.0198602619, -0.016913203}, }; -float qwen21_latent_rgb_bias[3] = { 0.478353441, 0.48652011, 0.44006647}; +float qwen21_latent_rgb_bias[4] = {0.478353441, 0.48652011, 0.44006647, 0.871268134}; +const float minimax_latent_rgb_proj[24][4] = { + {0.09909928f, 0.05792499f, 0.03964889f, 0}, + {-0.08023612f, -0.05300585f, -0.07998162f, 0}, + {0.23695975f, 0.18801238f, 0.10133913f, 0}, + {-0.04928721f, -0.13717725f, -0.25840875f, 0}, + {-0.09465303f, -0.05256139f, -0.14285739f, 0}, + {-0.07819785f, -0.09000464f, -0.12716426f, 0}, + {-0.0358846f, -0.05450799f, -0.03327127f, 0}, + {-0.02507039f, -0.02919913f, -0.02758044f, 0}, + {-0.02600712f, -0.02175957f, -0.0075379f, 0}, + {0.12375219f, 0.06653711f, 0.0884206f, 0}, + {0.03688723f, 0.05117929f, 0.05853913f, 0}, + {0.01454152f, 0.03293511f, 0.05321845f, 0}, + {-0.00335265f, -0.0192894f, 0.00875076f, 0}, + {-0.03559553f, -0.01541661f, -0.00997725f, 0}, + {-0.04306314f, -0.0362692f, -0.00721445f, 0}, + {0.04396601f, 0.04340875f, 0.01497323f, 0}, + {0.00438446f, 0.01360934f, 0.00045589f, 0}, + {-0.01742206f, -0.01355631f, -0.0005505f, 0}, + {-0.00339886f, -0.00922138f, -0.00841679f, 0}, + {0.02143514f, 0.00800534f, 0.02018699f, 0}, + {-0.00246716f, -0.00115264f, 0.00176955f, 0}, + {0.00747544f, 0.00146153f, 0.00208335f, 0}, + {0.00247654f, 0.02533271f, 0.02605272f, 0}, + {-0.01077421f, -0.00759262f, 0.00221201f, 0}, +}; +float minimax_latent_rgb_bias[4] = {0.53888482f, 0.49209523f, 0.46719283f, 1}; -const float minimax_latent_rgb_proj[24][3] = { - {0.09909928f, 0.05792499f, 0.03964889f}, - {-0.08023612f, -0.05300585f, -0.07998162f}, - {0.23695975f, 0.18801238f, 0.10133913f}, - {-0.04928721f, -0.13717725f, -0.25840875f}, - {-0.09465303f, -0.05256139f, -0.14285739f}, - {-0.07819785f, -0.09000464f, -0.12716426f}, - {-0.0358846f, -0.05450799f, -0.03327127f}, - {-0.02507039f, -0.02919913f, -0.02758044f}, - {-0.02600712f, -0.02175957f, -0.0075379f}, - {0.12375219f, 0.06653711f, 0.0884206f}, - {0.03688723f, 0.05117929f, 0.05853913f}, - {0.01454152f, 0.03293511f, 0.05321845f}, - {-0.00335265f, -0.0192894f, 0.00875076f}, - {-0.03559553f, -0.01541661f, -0.00997725f}, - {-0.04306314f, -0.0362692f, -0.00721445f}, - {0.04396601f, 0.04340875f, 0.01497323f}, - {0.00438446f, 0.01360934f, 0.00045589f}, - {-0.01742206f, -0.01355631f, -0.0005505f}, - {-0.00339886f, -0.00922138f, -0.00841679f}, - {0.02143514f, 0.00800534f, 0.02018699f}, - {-0.00246716f, -0.00115264f, 0.00176955f}, - {0.00747544f, 0.00146153f, 0.00208335f}, - {0.00247654f, 0.02533271f, 0.02605272f}, - {-0.01077421f, -0.00759262f, 0.00221201f}}; -float minimax_latent_rgb_bias[3] = {0.53888482f, 0.49209523f, 0.46719283f}; - -const float ltxav_latent_rgb_proj[128][3] = { - {-0.0146901f, -0.0181258f, -0.0145693f}, - {0.00588675f, 0.01117175f, 0.009428f}, - {0.00461167f, 0.0072833f, 0.0019386f}, - {0.01136495f, 0.0054561f, 0.0065692f}, - {0.00096207f, 0.0012324f, 0.00344622f}, - {-0.0052788f, -0.00679665f, -0.00436921f}, - {-0.0155111f, -0.0198179f, -0.02042225f}, - {0.00748685f, 0.01581615f, 0.017075f}, - {0.0013876f, 0.00407445f, 0.00542875f}, - {-0.00033901f, -0.00090295f, -0.0080842f}, - {0.0076982f, 0.0079887f, 0.00932395f}, - {-0.01113995f, -0.0101034f, -0.0090541f}, - {0.0064348f, 0.00377208f, -0.00336639f}, - {0.00713645f, 0.00224049f, -0.00096967f}, - {-0.007033f, -0.00968775f, -0.0080052f}, - {-0.00883925f, -0.0079515f, -0.00763105f}, - {0.01536905f, 0.0146041f, 0.0164334f}, - {0.0166464f, 0.01843145f, 0.02204465f}, - {0.0093152f, 0.00620345f, 0.0080367f}, - {0.00238894f, -0.00157829f, -0.00007285f}, - {0.00915495f, 0.00612965f, 0.00299866f}, - {-0.00972755f, -0.0091962f, -0.00737325f}, - {0.0012866f, 0.00221291f, 0.0086588f}, - {-0.00847115f, -0.01469315f, -0.0112954f}, - {-0.010614f, -0.0132547f, -0.01265245f}, - {0.01635555f, 0.00935665f, 0.0133092f}, - {-0.01132125f, -0.01568905f, -0.0207178f}, - {-0.0081571f, -0.0073072f, -0.00858965f}, - {0.00960915f, 0.00542055f, 0.00414593f}, - {-0.016123f, -0.0137423f, -0.0143717f}, - {0.001727f, 0.00577835f, 0.007644f}, - {0.00048615f, 0.00165651f, 0.00552505f}, - {0.00046975f, -0.00352542f, -0.00489724f}, - {0.02025775f, 0.0169767f, 0.02097565f}, - {0.0099298f, 0.0093313f, 0.0106883f}, - {-0.00491187f, -0.0044022f, -0.00235214f}, - {-0.01568535f, -0.0129049f, -0.01058315f}, - {0.00720795f, 0.0058948f, 0.00707865f}, - {0.00822855f, 0.0074589f, 0.004608f}, - {0.0218092f, 0.01732915f, 0.01803235f}, - {-0.00144872f, -0.00037625f, 0.00033771f}, - {-0.00310858f, -0.00027943f, 0.0067907f}, - {-0.0040879f, -0.0056792f, -0.00278396f}, - {0.00482534f, 0.00891105f, 0.0079105f}, - {0.0105916f, 0.00904135f, 0.00773535f}, - {-0.00206429f, -0.00187091f, 0.0014784f}, - {-0.00878015f, -0.0113121f, -0.0139506f}, - {-0.00218736f, -0.00334164f, 0.00008244f}, - {-0.01779915f, -0.02095465f, -0.01915325f}, - {0.0072157f, 0.0096257f, 0.00878195f}, - {-0.00653465f, -0.00284942f, -0.00170824f}, - {-0.00092344f, 0.00094517f, -0.00095281f}, - {0.0097285f, 0.00421141f, 0.0061869f}, - {-0.00238573f, -0.00103466f, 0.00141668f}, - {-0.0182272f, -0.01280705f, -0.0161168f}, - {-0.0147817f, -0.0147524f, -0.0105285f}, - {0.0072242f, 0.0095931f, 0.00562225f}, - {0.0268203f, 0.0291188f, 0.0285483f}, - {0.0042589f, 0.00374228f, 0.00497581f}, - {-0.00683185f, -0.0086457f, -0.0097989f}, - {-0.0169564f, -0.0196346f, -0.0177608f}, - {0.00306427f, 0.00284152f, -0.00106167f}, - {-0.00146125f, 0.0033441f, 0.00610655f}, - {0.00420921f, 0.00009079f, -0.00325322f}, - {-0.00257216f, 0.00635215f, 0.00840245f}, - {-0.00498692f, -0.00301131f, -0.00820155f}, - {0.0116613f, 0.016627f, 0.0153633f}, - {-0.00551005f, -0.00820845f, -0.00809145f}, - {-0.0097976f, -0.00889715f, -0.00576885f}, - {-0.00261959f, -0.00226021f, 0.00133698f}, - {0.0156732f, 0.01441205f, 0.0131248f}, - {0.0162009f, 0.0169896f, 0.01561045f}, - {-0.00816235f, -0.01152515f, -0.01316195f}, - {0.00021029f, -0.00267829f, -0.00331713f}, - {-0.0064485f, -0.00101884f, -0.00031134f}, - {-0.0316478f, -0.03256625f, -0.02922395f}, - {-0.00213317f, -0.0075049f, -0.00359674f}, - {0.00238054f, 0.00337157f, 0.00447736f}, - {0.0064692f, 0.0079176f, 0.00481887f}, - {-0.01666895f, -0.0205261f, -0.0158731f}, - {0.00172027f, 0.00137958f, 0.00177866f}, - {0.0104531f, 0.01367265f, 0.01114835f}, - {0.00413643f, 0.00111523f, 0.00162922f}, - {-0.0074566f, -0.00919865f, -0.00998905f}, - {-0.0050393f, -0.00518405f, -0.00109112f}, - {-0.00395705f, -0.00202577f, -0.00299947f}, - {0.0088063f, 0.00309171f, -0.00003328f}, - {0.00471243f, -0.00103247f, -0.00290162f}, - {0.00339047f, -0.00145871f, -0.0004606f}, - {-0.0110996f, -0.00241581f, -0.00042426f}, - {-0.00757935f, -0.0078583f, -0.0053651f}, - {0.00454823f, 0.00859925f, 0.00848925f}, - {0.0063612f, 0.0085306f, 0.0151714f}, - {0.0098281f, 0.00106226f, 0.0063872f}, - {0.01165065f, 0.0114497f, 0.00541935f}, - {0.0026038f, 0.00496496f, 0.00331335f}, - {-0.00001889f, 0.00230115f, -0.00237566f}, - {-0.01558815f, -0.0226783f, -0.02434505f}, - {0.0097899f, 0.0140623f, 0.0090051f}, - {-0.00870745f, -0.01204335f, -0.00943925f}, - {0.00005233f, 0.00329504f, 0.0072297f}, - {-0.00155543f, -0.0120713f, -0.0122082f}, - {0.0168231f, 0.01525865f, 0.01655505f}, - {0.03068125f, 0.0332805f, 0.0305099f}, - {-0.01433785f, -0.01627005f, -0.0169018f}, - {0.0070767f, 0.0094133f, 0.01265295f}, - {-0.00274099f, -0.00085099f, 0.00280873f}, - {-0.0058936f, -0.00381609f, -0.00725185f}, - {-0.0126652f, -0.01226085f, -0.00724525f}, - {-0.00196812f, 0.00175024f, 0.00382781f}, - {0.00568125f, 0.00280788f, -0.0056836f}, - {-0.0150639f, -0.0130736f, -0.01509515f}, - {0.0084315f, 0.00868905f, 0.0085458f}, - {-0.00247554f, 0.00343375f, 0.00141384f}, - {0.00062705f, -0.00189036f, -0.00132058f}, - {-0.00132f, -0.00264886f, -0.00565545f}, - {-0.027444f, -0.02877305f, -0.0254573f}, - {-0.009721f, -0.0116458f, -0.01293185f}, - {0.0066681f, 0.0080904f, 0.00458976f}, - {-0.0174501f, -0.0186321f, -0.0233103f}, - {-0.00108463f, 0.00104369f, 0.00383246f}, - {0.0134264f, 0.01505895f, 0.01142895f}, - {0.0113088f, 0.010768f, 0.011576f}, - {-0.0055323f, -0.00255675f, -0.0068673f}, - {-0.0049212f, -0.00109088f, 0.00207273f}, - {0.00100108f, 0.00220866f, -0.00682575f}, - {0.00347973f, 0.00156555f, -0.00189718f}, - {0.00941885f, 0.00720295f, 0.0114862f}, +const float ltxav_latent_rgb_proj[128][4] = { + {-0.0146901f, -0.0181258f, -0.0145693f, 0}, + {0.00588675f, 0.01117175f, 0.009428f, 0}, + {0.00461167f, 0.0072833f, 0.0019386f, 0}, + {0.01136495f, 0.0054561f, 0.0065692f, 0}, + {0.00096207f, 0.0012324f, 0.00344622f, 0}, + {-0.0052788f, -0.00679665f, -0.00436921f, 0}, + {-0.0155111f, -0.0198179f, -0.02042225f, 0}, + {0.00748685f, 0.01581615f, 0.017075f, 0}, + {0.0013876f, 0.00407445f, 0.00542875f, 0}, + {-0.00033901f, -0.00090295f, -0.0080842f, 0}, + {0.0076982f, 0.0079887f, 0.00932395f, 0}, + {-0.01113995f, -0.0101034f, -0.0090541f, 0}, + {0.0064348f, 0.00377208f, -0.00336639f, 0}, + {0.00713645f, 0.00224049f, -0.00096967f, 0}, + {-0.007033f, -0.00968775f, -0.0080052f, 0}, + {-0.00883925f, -0.0079515f, -0.00763105f, 0}, + {0.01536905f, 0.0146041f, 0.0164334f, 0}, + {0.0166464f, 0.01843145f, 0.02204465f, 0}, + {0.0093152f, 0.00620345f, 0.0080367f, 0}, + {0.00238894f, -0.00157829f, -0.00007285f, 0}, + {0.00915495f, 0.00612965f, 0.00299866f, 0}, + {-0.00972755f, -0.0091962f, -0.00737325f, 0}, + {0.0012866f, 0.00221291f, 0.0086588f, 0}, + {-0.00847115f, -0.01469315f, -0.0112954f, 0}, + {-0.010614f, -0.0132547f, -0.01265245f, 0}, + {0.01635555f, 0.00935665f, 0.0133092f, 0}, + {-0.01132125f, -0.01568905f, -0.0207178f, 0}, + {-0.0081571f, -0.0073072f, -0.00858965f, 0}, + {0.00960915f, 0.00542055f, 0.00414593f, 0}, + {-0.016123f, -0.0137423f, -0.0143717f, 0}, + {0.001727f, 0.00577835f, 0.007644f, 0}, + {0.00048615f, 0.00165651f, 0.00552505f, 0}, + {0.00046975f, -0.00352542f, -0.00489724f, 0}, + {0.02025775f, 0.0169767f, 0.02097565f, 0}, + {0.0099298f, 0.0093313f, 0.0106883f, 0}, + {-0.00491187f, -0.0044022f, -0.00235214f, 0}, + {-0.01568535f, -0.0129049f, -0.01058315f, 0}, + {0.00720795f, 0.0058948f, 0.00707865f, 0}, + {0.00822855f, 0.0074589f, 0.004608f, 0}, + {0.0218092f, 0.01732915f, 0.01803235f, 0}, + {-0.00144872f, -0.00037625f, 0.00033771f, 0}, + {-0.00310858f, -0.00027943f, 0.0067907f, 0}, + {-0.0040879f, -0.0056792f, -0.00278396f, 0}, + {0.00482534f, 0.00891105f, 0.0079105f, 0}, + {0.0105916f, 0.00904135f, 0.00773535f, 0}, + {-0.00206429f, -0.00187091f, 0.0014784f, 0}, + {-0.00878015f, -0.0113121f, -0.0139506f, 0}, + {-0.00218736f, -0.00334164f, 0.00008244f, 0}, + {-0.01779915f, -0.02095465f, -0.01915325f, 0}, + {0.0072157f, 0.0096257f, 0.00878195f, 0}, + {-0.00653465f, -0.00284942f, -0.00170824f, 0}, + {-0.00092344f, 0.00094517f, -0.00095281f, 0}, + {0.0097285f, 0.00421141f, 0.0061869f, 0}, + {-0.00238573f, -0.00103466f, 0.00141668f, 0}, + {-0.0182272f, -0.01280705f, -0.0161168f, 0}, + {-0.0147817f, -0.0147524f, -0.0105285f, 0}, + {0.0072242f, 0.0095931f, 0.00562225f, 0}, + {0.0268203f, 0.0291188f, 0.0285483f, 0}, + {0.0042589f, 0.00374228f, 0.00497581f, 0}, + {-0.00683185f, -0.0086457f, -0.0097989f, 0}, + {-0.0169564f, -0.0196346f, -0.0177608f, 0}, + {0.00306427f, 0.00284152f, -0.00106167f, 0}, + {-0.00146125f, 0.0033441f, 0.00610655f, 0}, + {0.00420921f, 0.00009079f, -0.00325322f, 0}, + {-0.00257216f, 0.00635215f, 0.00840245f, 0}, + {-0.00498692f, -0.00301131f, -0.00820155f, 0}, + {0.0116613f, 0.016627f, 0.0153633f, 0}, + {-0.00551005f, -0.00820845f, -0.00809145f, 0}, + {-0.0097976f, -0.00889715f, -0.00576885f, 0}, + {-0.00261959f, -0.00226021f, 0.00133698f, 0}, + {0.0156732f, 0.01441205f, 0.0131248f, 0}, + {0.0162009f, 0.0169896f, 0.01561045f, 0}, + {-0.00816235f, -0.01152515f, -0.01316195f, 0}, + {0.00021029f, -0.00267829f, -0.00331713f, 0}, + {-0.0064485f, -0.00101884f, -0.00031134f, 0}, + {-0.0316478f, -0.03256625f, -0.02922395f, 0}, + {-0.00213317f, -0.0075049f, -0.00359674f, 0}, + {0.00238054f, 0.00337157f, 0.00447736f, 0}, + {0.0064692f, 0.0079176f, 0.00481887f, 0}, + {-0.01666895f, -0.0205261f, -0.0158731f, 0}, + {0.00172027f, 0.00137958f, 0.00177866f, 0}, + {0.0104531f, 0.01367265f, 0.01114835f, 0}, + {0.00413643f, 0.00111523f, 0.00162922f, 0}, + {-0.0074566f, -0.00919865f, -0.00998905f, 0}, + {-0.0050393f, -0.00518405f, -0.00109112f, 0}, + {-0.00395705f, -0.00202577f, -0.00299947f, 0}, + {0.0088063f, 0.00309171f, -0.00003328f, 0}, + {0.00471243f, -0.00103247f, -0.00290162f, 0}, + {0.00339047f, -0.00145871f, -0.0004606f, 0}, + {-0.0110996f, -0.00241581f, -0.00042426f, 0}, + {-0.00757935f, -0.0078583f, -0.0053651f, 0}, + {0.00454823f, 0.00859925f, 0.00848925f, 0}, + {0.0063612f, 0.0085306f, 0.0151714f, 0}, + {0.0098281f, 0.00106226f, 0.0063872f, 0}, + {0.01165065f, 0.0114497f, 0.00541935f, 0}, + {0.0026038f, 0.00496496f, 0.00331335f, 0}, + {-0.00001889f, 0.00230115f, -0.00237566f, 0}, + {-0.01558815f, -0.0226783f, -0.02434505f, 0}, + {0.0097899f, 0.0140623f, 0.0090051f, 0}, + {-0.00870745f, -0.01204335f, -0.00943925f, 0}, + {0.00005233f, 0.00329504f, 0.0072297f, 0}, + {-0.00155543f, -0.0120713f, -0.0122082f, 0}, + {0.0168231f, 0.01525865f, 0.01655505f, 0}, + {0.03068125f, 0.0332805f, 0.0305099f, 0}, + {-0.01433785f, -0.01627005f, -0.0169018f, 0}, + {0.0070767f, 0.0094133f, 0.01265295f, 0}, + {-0.00274099f, -0.00085099f, 0.00280873f, 0}, + {-0.0058936f, -0.00381609f, -0.00725185f, 0}, + {-0.0126652f, -0.01226085f, -0.00724525f, 0}, + {-0.00196812f, 0.00175024f, 0.00382781f, 0}, + {0.00568125f, 0.00280788f, -0.0056836f, 0}, + {-0.0150639f, -0.0130736f, -0.01509515f, 0}, + {0.0084315f, 0.00868905f, 0.0085458f, 0}, + {-0.00247554f, 0.00343375f, 0.00141384f, 0}, + {0.00062705f, -0.00189036f, -0.00132058f, 0}, + {-0.00132f, -0.00264886f, -0.00565545f, 0}, + {-0.027444f, -0.02877305f, -0.0254573f, 0}, + {-0.009721f, -0.0116458f, -0.01293185f, 0}, + {0.0066681f, 0.0080904f, 0.00458976f, 0}, + {-0.0174501f, -0.0186321f, -0.0233103f, 0}, + {-0.00108463f, 0.00104369f, 0.00383246f, 0}, + {0.0134264f, 0.01505895f, 0.01142895f, 0}, + {0.0113088f, 0.010768f, 0.011576f, 0}, + {-0.0055323f, -0.00255675f, -0.0068673f, 0}, + {-0.0049212f, -0.00109088f, 0.00207273f, 0}, + {0.00100108f, 0.00220866f, -0.00682575f, 0}, + {0.00347973f, 0.00156555f, -0.00189718f, 0}, + {0.00941885f, 0.00720295f, 0.0114862f, 0}, }; -float ltxav_latent_rgb_bias[3] = {0.5219245f, 0.51005425f, 0.5075143f}; +float ltxav_latent_rgb_bias[4] = {0.5219245f, 0.51005425f, 0.5075143f, 1}; -const float wan_21_latent_rgb_proj[16][3] = { - {0.0075615f, -0.074209f, 0.239914f}, - {0.001826f, -0.00534f, -0.018571f}, - {0.106132f, 0.0315165f, 0.0083895f}, - {0.1164995f, 0.203238f, 0.1100625f}, - {-0.025932f, -0.041192f, -0.034698f}, - {0.0425025f, -0.080746f, 0.0053445f}, - {-0.1226845f, -0.253423f, -0.058505f}, - {-0.0755725f, 0.0088605f, 0.0036035f}, - {-0.1466195f, -0.103968f, -0.2105675f}, - {-0.0938605f, 0.0253915f, 0.0888245f}, - {-0.0065335f, 0.132982f, 0.083289f}, - {0.0141635f, 0.0546645f, 0.054321f}, - {-0.1026715f, 0.0219955f, 0.074457f}, - {0.0071535f, -0.0243235f, -0.0036095f}, - {0.108575f, 0.026537f, 0.1599615f}, - {0.0776785f, 0.041578f, 0.03239f}}; -float wan_21_latent_rgb_bias[3] = {0.364865f, 0.382512f, 0.2715735f}; +const float wan_21_latent_rgb_proj[16][4] = { + {0.0075615f, -0.074209f, 0.239914f, 0}, + {0.001826f, -0.00534f, -0.018571f, 0}, + {0.106132f, 0.0315165f, 0.0083895f, 0}, + {0.1164995f, 0.203238f, 0.1100625f, 0}, + {-0.025932f, -0.041192f, -0.034698f, 0}, + {0.0425025f, -0.080746f, 0.0053445f, 0}, + {-0.1226845f, -0.253423f, -0.058505f, 0}, + {-0.0755725f, 0.0088605f, 0.0036035f, 0}, + {-0.1466195f, -0.103968f, -0.2105675f, 0}, + {-0.0938605f, 0.0253915f, 0.0888245f, 0}, + {-0.0065335f, 0.132982f, 0.083289f, 0}, + {0.0141635f, 0.0546645f, 0.054321f, 0}, + {-0.1026715f, 0.0219955f, 0.074457f, 0}, + {0.0071535f, -0.0243235f, -0.0036095f, 0}, + {0.108575f, 0.026537f, 0.1599615f, 0}, + {0.0776785f, 0.041578f, 0.03239f, 0}, +}; +float wan_21_latent_rgb_bias[4] = {0.364865f, 0.382512f, 0.2715735f, 1}; -const float wan_22_latent_rgb_proj[48][3] = { - {0.008563f, -0.013615f, -0.0096285f}, - {-0.0568695f, -0.0143575f, -0.0114425f}, - {-0.000053f, 0.010747f, 0.0023145f}, - {-0.0066365f, -0.0535685f, -0.016819f}, - {-0.0001905f, 0.0001395f, 0.0129385f}, - {-0.007108f, -0.0019875f, 0.020264f}, - {0.000819f, -0.000374f, 0.005511f}, - {0.014619f, -0.0033485f, 0.0179665f}, - {0.0108205f, -0.007937f, 0.0202655f}, - {-0.050992f, -0.03508f, -0.0144275f}, - {0.0166035f, -0.010534f, 0.0013315f}, - {-0.0523555f, 0.0608365f, 0.0514905f}, - {0.0413235f, -0.0024955f, 0.0286185f}, - {-0.0136875f, 0.0157905f, 0.003434f}, - {-0.022717f, 0.014722f, 0.0096435f}, - {-0.023286f, -0.0062685f, 0.0033375f}, - {0.0373545f, 0.016845f, 0.0126445f}, - {-0.0041255f, -0.0013725f, -0.0034995f}, - {0.0063425f, -0.030928f, -0.024329f}, - {0.021152f, -0.0035195f, 0.0001475f}, - {-0.003822f, -0.0304215f, -0.016571f}, - {0.0799545f, 0.022814f, 0.1837705f}, - {0.0475855f, 0.043219f, 0.0051355f}, - {0.003406f, 0.0098215f, 0.0148185f}, - {0.0017335f, -0.0053525f, 0.007126f}, - {-0.0498405f, -0.033136f, -0.0031215f}, - {0.0236785f, 0.01852f, 0.0000925f}, - {-0.0208985f, -0.0446125f, -0.0161285f}, - {0.004464f, 0.008514f, 0.009342f}, - {-0.0211275f, 0.0080225f, 0.0034245f}, - {0.005634f, 0.018231f, 0.0186935f}, - {0.0057765f, -0.0081875f, -0.0242945f}, - {0.023133f, -0.0135945f, 0.0284895f}, - {0.00482f, -0.008788f, 0.015162f}, - {-0.022897f, -0.0180415f, -0.005308f}, - {0.011209f, 0.0198915f, -0.0164695f}, - {-0.026357f, -0.0077625f, 0.003719f}, - {0.096502f, 0.1117705f, 0.1320875f}, - {-0.029703f, -0.004094f, 0.0114335f}, - {-0.078371f, -0.1318955f, -0.0036925f}, - {-0.0078585f, 0.008285f, 0.0169845f}, - {0.0189845f, 0.0549175f, 0.1002245f}, - {-0.000391f, -0.004783f, -0.004029f}, - {0.0053545f, 0.02648f, -0.0220975f}, - {0.0086355f, 0.0229195f, 0.0172845f}, - {0.004712f, 0.006544f, -0.000857f}, - {-0.0124025f, -0.029689f, -0.016878f}, - {-0.0391465f, 0.014535f, 0.0130645f}}; -float wan_22_latent_rgb_bias[3] = {0.50658f, 0.451754f, 0.4643385f}; +const float wan_22_latent_rgb_proj[48][4] = { + {0.008563f, -0.013615f, -0.0096285f, 0}, + {-0.0568695f, -0.0143575f, -0.0114425f, 0}, + {-0.000053f, 0.010747f, 0.0023145f, 0}, + {-0.0066365f, -0.0535685f, -0.016819f, 0}, + {-0.0001905f, 0.0001395f, 0.0129385f, 0}, + {-0.007108f, -0.0019875f, 0.020264f, 0}, + {0.000819f, -0.000374f, 0.005511f, 0}, + {0.014619f, -0.0033485f, 0.0179665f, 0}, + {0.0108205f, -0.007937f, 0.0202655f, 0}, + {-0.050992f, -0.03508f, -0.0144275f, 0}, + {0.0166035f, -0.010534f, 0.0013315f, 0}, + {-0.0523555f, 0.0608365f, 0.0514905f, 0}, + {0.0413235f, -0.0024955f, 0.0286185f, 0}, + {-0.0136875f, 0.0157905f, 0.003434f, 0}, + {-0.022717f, 0.014722f, 0.0096435f, 0}, + {-0.023286f, -0.0062685f, 0.0033375f, 0}, + {0.0373545f, 0.016845f, 0.0126445f, 0}, + {-0.0041255f, -0.0013725f, -0.0034995f, 0}, + {0.0063425f, -0.030928f, -0.024329f, 0}, + {0.021152f, -0.0035195f, 0.0001475f, 0}, + {-0.003822f, -0.0304215f, -0.016571f, 0}, + {0.0799545f, 0.022814f, 0.1837705f, 0}, + {0.0475855f, 0.043219f, 0.0051355f, 0}, + {0.003406f, 0.0098215f, 0.0148185f, 0}, + {0.0017335f, -0.0053525f, 0.007126f, 0}, + {-0.0498405f, -0.033136f, -0.0031215f, 0}, + {0.0236785f, 0.01852f, 0.0000925f, 0}, + {-0.0208985f, -0.0446125f, -0.0161285f, 0}, + {0.004464f, 0.008514f, 0.009342f, 0}, + {-0.0211275f, 0.0080225f, 0.0034245f, 0}, + {0.005634f, 0.018231f, 0.0186935f, 0}, + {0.0057765f, -0.0081875f, -0.0242945f, 0}, + {0.023133f, -0.0135945f, 0.0284895f, 0}, + {0.00482f, -0.008788f, 0.015162f, 0}, + {-0.022897f, -0.0180415f, -0.005308f, 0}, + {0.011209f, 0.0198915f, -0.0164695f, 0}, + {-0.026357f, -0.0077625f, 0.003719f, 0}, + {0.096502f, 0.1117705f, 0.1320875f, 0}, + {-0.029703f, -0.004094f, 0.0114335f, 0}, + {-0.078371f, -0.1318955f, -0.0036925f, 0}, + {-0.0078585f, 0.008285f, 0.0169845f, 0}, + {0.0189845f, 0.0549175f, 0.1002245f, 0}, + {-0.000391f, -0.004783f, -0.004029f, 0}, + {0.0053545f, 0.02648f, -0.0220975f, 0}, + {0.0086355f, 0.0229195f, 0.0172845f, 0}, + {0.004712f, 0.006544f, -0.000857f, 0}, + {-0.0124025f, -0.029689f, -0.016878f, 0}, + {-0.0391465f, 0.014535f, 0.0130645f, 0}, +}; +float wan_22_latent_rgb_bias[4] = {0.50658f, 0.451754f, 0.4643385f, 1}; -const float flux_latent_rgb_proj[16][3] = { - {-0.020584f, 0.0099585f, 0.0486265f}, - {0.014048f, 0.013365f, 0.064788f}, - {0.032809f, -0.033975f, -0.0073255f}, - {-0.006499f, -0.007381f, 0.0406255f}, - {0.0392835f, 0.029648f, -0.0123435f}, - {-0.0079935f, -0.0018485f, 0.002506f}, - {0.0168025f, 0.0694995f, 0.0342585f}, - {-0.012225f, -0.0317835f, -0.0150505f}, - {-0.020097f, -0.008355f, 0.0635925f}, - {0.0563405f, 0.044382f, -0.02097f}, - {-0.011749f, 0.046832f, 0.0127715f}, - {0.0414495f, 0.02416f, 0.0037455f}, - {0.037856f, 0.0370695f, 0.0409825f}, - {-0.0717505f, 0.0091315f, -0.068069f}, - {-0.0128835f, -0.0410175f, -0.0200115f}, - {-0.0559245f, -0.0277945f, -0.0161805f}}; -float flux_latent_rgb_bias[3] = {0.5123f, 0.4965315f, 0.4959555f}; +const float flux_latent_rgb_proj[16][4] = { + {-0.020584f, 0.0099585f, 0.0486265f, 0}, + {0.014048f, 0.013365f, 0.064788f, 0}, + {0.032809f, -0.033975f, -0.0073255f, 0}, + {-0.006499f, -0.007381f, 0.0406255f, 0}, + {0.0392835f, 0.029648f, -0.0123435f, 0}, + {-0.0079935f, -0.0018485f, 0.002506f, 0}, + {0.0168025f, 0.0694995f, 0.0342585f, 0}, + {-0.012225f, -0.0317835f, -0.0150505f, 0}, + {-0.020097f, -0.008355f, 0.0635925f, 0}, + {0.0563405f, 0.044382f, -0.02097f, 0}, + {-0.011749f, 0.046832f, 0.0127715f, 0}, + {0.0414495f, 0.02416f, 0.0037455f, 0}, + {0.037856f, 0.0370695f, 0.0409825f, 0}, + {-0.0717505f, 0.0091315f, -0.068069f, 0}, + {-0.0128835f, -0.0410175f, -0.0200115f, 0}, + {-0.0559245f, -0.0277945f, -0.0161805f, 0}, +}; +float flux_latent_rgb_bias[4] = {0.5123f, 0.4965315f, 0.4959555f, 1}; -const float flux2_latent_rgb_proj[32][3] = { - {0.000368f, -0.0041925f, -0.009855f}, - {-0.000676f, -0.008196f, 0.0103465f}, - {-0.003188f, 0.001214f, 0.018368f}, - {0.019692f, 0.0370835f, 0.0598945f}, - {0.003732f, -0.0028525f, -0.002367f}, - {-0.002043f, 0.0026435f, -0.0002045f}, - {-0.0164175f, 0.025401f, -0.01406f}, - {-0.001579f, -0.0004175f, 0.000203f}, - {-0.05642f, -0.0421685f, -0.0115415f}, - {0.000731f, -0.003328f, 0.0002745f}, - {-0.00499f, -0.00374f, 0.004851f}, - {0.01627f, 0.000107f, -0.030694f}, - {0.0055115f, 0.000347f, 0.0035715f}, - {-0.000734f, -0.0033615f, -0.000839f}, - {-0.0029605f, -0.00516f, -0.0019535f}, - {-0.014217f, 0.013792f, 0.0092285f}, - {0.0071745f, 0.0057615f, 0.0002205f}, - {0.004937f, 0.0015405f, 0.0007535f}, - {0.001109f, 0.002856f, 0.0007815f}, - {0.026505f, -0.009922f, 0.0043415f}, - {-0.0012535f, 0.002692f, 0.000469f}, - {-0.0010885f, -0.005683f, 0.0017795f}, - {-0.0001305f, 0.0075605f, -0.00162f}, - {-0.001972f, -0.0010415f, 0.0025215f}, - {-0.004569f, 0.005668f, 0.0018905f}, - {0.0057145f, 0.0019925f, -0.0019275f}, - {0.005259f, -0.002793f, 0.0050655f}, - {0.0039415f, 0.001456f, -0.0007365f}, - {-0.001659f, -0.00158f, 0.001842f}, - {-0.01728f, -0.00437f, 0.006498f}, - {0.000083f, 0.0005395f, -0.0060765f}, - {0.008886f, 0.0004685f, -0.0059765f}}; -float flux2_latent_rgb_bias[3] = {0.485631f, 0.4507685f, 0.4461905f}; +const float flux2_latent_rgb_proj[32][4] = { + {0.000368f, -0.0041925f, -0.009855f, 0}, + {-0.000676f, -0.008196f, 0.0103465f, 0}, + {-0.003188f, 0.001214f, 0.018368f, 0}, + {0.019692f, 0.0370835f, 0.0598945f, 0}, + {0.003732f, -0.0028525f, -0.002367f, 0}, + {-0.002043f, 0.0026435f, -0.0002045f, 0}, + {-0.0164175f, 0.025401f, -0.01406f, 0}, + {-0.001579f, -0.0004175f, 0.000203f, 0}, + {-0.05642f, -0.0421685f, -0.0115415f, 0}, + {0.000731f, -0.003328f, 0.0002745f, 0}, + {-0.00499f, -0.00374f, 0.004851f, 0}, + {0.01627f, 0.000107f, -0.030694f, 0}, + {0.0055115f, 0.000347f, 0.0035715f, 0}, + {-0.000734f, -0.0033615f, -0.000839f, 0}, + {-0.0029605f, -0.00516f, -0.0019535f, 0}, + {-0.014217f, 0.013792f, 0.0092285f, 0}, + {0.0071745f, 0.0057615f, 0.0002205f, 0}, + {0.004937f, 0.0015405f, 0.0007535f, 0}, + {0.001109f, 0.002856f, 0.0007815f, 0}, + {0.026505f, -0.009922f, 0.0043415f, 0}, + {-0.0012535f, 0.002692f, 0.000469f, 0}, + {-0.0010885f, -0.005683f, 0.0017795f, 0}, + {-0.0001305f, 0.0075605f, -0.00162f, 0}, + {-0.001972f, -0.0010415f, 0.0025215f, 0}, + {-0.004569f, 0.005668f, 0.0018905f, 0}, + {0.0057145f, 0.0019925f, -0.0019275f, 0}, + {0.005259f, -0.002793f, 0.0050655f, 0}, + {0.0039415f, 0.001456f, -0.0007365f, 0}, + {-0.001659f, -0.00158f, 0.001842f, 0}, + {-0.01728f, -0.00437f, 0.006498f, 0}, + {0.000083f, 0.0005395f, -0.0060765f, 0}, + {0.008886f, 0.0004685f, -0.0059765f, 0}, +}; +float flux2_latent_rgb_bias[4] = {0.485631f, 0.4507685f, 0.4461905f, 1}; // This one was taken straight from // https://github.com/Stability-AI/sd3.5/blob/8565799a3b41eb0c7ba976d18375f0f753f56402/sd3_impls.py#L288-L303 // (MiT Licence) -const float sd3_latent_rgb_proj[16][3] = { - {-0.03225f, 0.00885f, 0.0526f}, - {0.0014f, 0.0156f, 0.0325f}, - {0.0924f, 0.0381f, 0.018f}, - {0.0472f, 0.018f, 0.04445f}, - {0.04485f, 0.0253f, -0.0182f}, - {-0.001f, 0.06015f, 0.0142f}, - {0.04275f, 0.0059f, 0.01415f}, - {-0.02695f, 0.0329f, 0.05235f}, - {-0.00285f, 0.0058f, 0.035f}, - {-0.0206f, 0.01405f, -0.00195f}, - {0.0553f, 0.05855f, 0.061f}, - {-0.0124f, 0.0341f, -0.02405f}, - {0.04075f, 0.0423f, 0.06035f}, - {-0.006f, -0.00275f, -0.04335f}, - {-0.03745f, -0.0317f, -0.0228f}, - {-0.0709f, -0.07285f, -0.06295f}, +const float sd3_latent_rgb_proj[16][4] = { + {-0.03225f, 0.00885f, 0.0526f, 0}, + {0.0014f, 0.0156f, 0.0325f, 0}, + {0.0924f, 0.0381f, 0.018f, 0}, + {0.0472f, 0.018f, 0.04445f, 0}, + {0.04485f, 0.0253f, -0.0182f, 0}, + {-0.001f, 0.06015f, 0.0142f, 0}, + {0.04275f, 0.0059f, 0.01415f, 0}, + {-0.02695f, 0.0329f, 0.05235f, 0}, + {-0.00285f, 0.0058f, 0.035f, 0}, + {-0.0206f, 0.01405f, -0.00195f, 0}, + {0.0553f, 0.05855f, 0.061f, 0}, + {-0.0124f, 0.0341f, -0.02405f, 0}, + {0.04075f, 0.0423f, 0.06035f, 0}, + {-0.006f, -0.00275f, -0.04335f, 0}, + {-0.03745f, -0.0317f, -0.0228f, 0}, + {-0.0709f, -0.07285f, -0.06295f, 0}, }; -float sd3_latent_rgb_bias[3] = {0.5f, 0.5f, 0.5f}; +float sd3_latent_rgb_bias[4] = {0.5f, 0.5f, 0.5f, 1}; -const float sdxl_latent_rgb_proj[4][3] = { - {0.1291515f, 0.13882f, 0.1648495f}, - {-0.1498505f, 0.052723f, 0.007097f}, - {0.025261f, 0.0930815f, -0.0716285f}, - {-0.105969f, -0.074946f, -0.040018f}}; -float sdxl_latent_rgb_bias[3] = {0.5721905f, 0.4833435f, 0.5035305f}; +const float sdxl_latent_rgb_proj[4][4] = { + {0.1291515f, 0.13882f, 0.1648495f, 0}, + {-0.1498505f, 0.052723f, 0.007097f, 0}, + {0.025261f, 0.0930815f, -0.0716285f, 0}, + {-0.105969f, -0.074946f, -0.040018f, 0}, +}; +float sdxl_latent_rgb_bias[4] = {0.5721905f, 0.4833435f, 0.5035305f, 1}; -const float sd_latent_rgb_proj[4][3] = { - {0.168683f, 0.108172f, 0.128693f}, - {0.082818f, 0.193414f, 0.023497f}, - {-0.1339015f, 0.118518f, 0.1117585f}, - {-0.089011f, -0.100431f, -0.339257f}}; -float sd_latent_rgb_bias[3] = {0.491261f, 0.472083f, 0.4470875f}; +const float sd_latent_rgb_proj[4][4] = { + {0.168683f, 0.108172f, 0.128693f, 0}, + {0.082818f, 0.193414f, 0.023497f, 0}, + {-0.1339015f, 0.118518f, 0.1117585f, 0}, + {-0.089011f, -0.100431f, -0.339257f, 0}, +}; +float sd_latent_rgb_bias[4] = {0.491261f, 0.472083f, 0.4470875f, 1}; -void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*latent_rgb_proj)[3], const float latent_rgb_bias[3], int patch_size) { +void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*latent_rgb_proj)[4], const float latent_rgb_bias[4], int patch_size) { size_t buffer_head = 0; uint32_t latent_width = static_cast(latents->ne[0]); @@ -425,35 +431,40 @@ void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*l // should be incremented by 1 for each pixel size_t pixel_id = k * rgb_width * rgb_height + rgb_y * rgb_width + rgb_x; - float r = 0, g = 0, b = 0; + float r = 0, g = 0, b = 0, a = 0; if (latent_rgb_proj != nullptr) { for (uint32_t d = 0; d < unpatched_dim; d++) { float value = *(float*)((char*)latents->data + latent_id + (d * patch_size * patch_size + channel_offset) * latents->nb[ggml_n_dims(latents) - 1]); r += value * latent_rgb_proj[d][0]; g += value * latent_rgb_proj[d][1]; b += value * latent_rgb_proj[d][2]; + a += value * latent_rgb_proj[d][3]; } } else { // interpret first 3 channels as RGB r = *(float*)((char*)latents->data + latent_id + 0 * latents->nb[ggml_n_dims(latents) - 1]); g = *(float*)((char*)latents->data + latent_id + 1 * latents->nb[ggml_n_dims(latents) - 1]); b = *(float*)((char*)latents->data + latent_id + 2 * latents->nb[ggml_n_dims(latents) - 1]); + a = 1; } if (latent_rgb_bias != nullptr) { // bias r += latent_rgb_bias[0]; g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; + a += latent_rgb_bias[3]; } // clamp rgb values to [0,1] range r = r >= 0 ? r <= 1 ? r : 1 : 0; g = g >= 0 ? g <= 1 ? g : 1 : 0; b = b >= 0 ? b <= 1 ? b : 1 : 0; + a = a >= 0 ? a <= 1 ? a : 1 : 0; - buffer[pixel_id * 3 + 0] = (uint8_t)(r * 255); - buffer[pixel_id * 3 + 1] = (uint8_t)(g * 255); - buffer[pixel_id * 3 + 2] = (uint8_t)(b * 255); + buffer[pixel_id * 4 + 0] = (uint8_t)(r * 255); + buffer[pixel_id * 4 + 1] = (uint8_t)(g * 255); + buffer[pixel_id * 4 + 2] = (uint8_t)(b * 255); + buffer[pixel_id * 4 + 3] = (uint8_t)(a * 255); } } } @@ -463,7 +474,7 @@ static inline bool preview_latent_tensor_is_video(const sd::Tensor& laten return latents.dim() == 5; } -void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, const float (*latent_rgb_proj)[3], const float latent_rgb_bias[3], int patch_size) { +void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, const float (*latent_rgb_proj)[4], const float latent_rgb_bias[4], int patch_size) { uint32_t latent_width = static_cast(latents.shape()[0]); uint32_t latent_height = static_cast(latents.shape()[1]); bool is_video = preview_latent_tensor_is_video(latents); @@ -492,7 +503,7 @@ void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, con : latents.values()[latent_x + latent_width * (latent_y + latent_height * latent_channel)]; }; - float r = 0.f, g = 0.f, b = 0.f; + float r = 0.f, g = 0.f, b = 0.f, a = 0.f; if (latent_rgb_proj != nullptr) { for (uint32_t d = 0; d < unpatched_dim; d++) { uint32_t latent_channel = d * patch_size * patch_size + channel_offset; @@ -500,24 +511,29 @@ void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, con r += value * latent_rgb_proj[d][0]; g += value * latent_rgb_proj[d][1]; b += value * latent_rgb_proj[d][2]; + a += value * latent_rgb_proj[d][3]; } } else { r = latent_value(0); g = latent_value(1); b = latent_value(2); + a = 1; } if (latent_rgb_bias != nullptr) { r += latent_rgb_bias[0]; g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; + a += latent_rgb_bias[3]; } r = std::min(1.0f, std::max(0.0f, r)); g = std::min(1.0f, std::max(0.0f, g)); b = std::min(1.0f, std::max(0.0f, b)); + a = std::min(1.0f, std::max(0.0f, a)); - buffer[pixel_id * 3 + 0] = (uint8_t)(r * 255); - buffer[pixel_id * 3 + 1] = (uint8_t)(g * 255); - buffer[pixel_id * 3 + 2] = (uint8_t)(b * 255); + buffer[pixel_id * 4 + 0] = (uint8_t)(r * 255); + buffer[pixel_id * 4 + 1] = (uint8_t)(g * 255); + buffer[pixel_id * 4 + 2] = (uint8_t)(b * 255); + buffer[pixel_id * 4 + 3] = (uint8_t)(a * 255); } } } From d9bd30cfb6fc5bf66a6de10235af57df48ac804f Mon Sep 17 00:00:00 2001 From: leejet Date: Wed, 23 Sep 2026 22:06:18 +0800 Subject: [PATCH 4/5] fix: restore RGB preview scaling for pixel-space models --- src/pipeline/diffusion_engine.h | 2 +- src/runtime/latent-preview.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pipeline/diffusion_engine.h b/src/pipeline/diffusion_engine.h index 3f2fe7ab6d..2e38a9e21c 100644 --- a/src/pipeline/diffusion_engine.h +++ b/src/pipeline/diffusion_engine.h @@ -179,7 +179,7 @@ class StableDiffusionGGML { std::unique_ptr config_; RunnerState runner_state_; bool conditioning_cache_allowed_ = false; - bool executing_ = false; + bool executing_ = false; std::shared_ptr denoiser; std::vector file_alphas_cumprod; diff --git a/src/runtime/latent-preview.h b/src/runtime/latent-preview.h index 13814e9b4c..7fe6b5be9b 100644 --- a/src/runtime/latent-preview.h +++ b/src/runtime/latent-preview.h @@ -442,9 +442,9 @@ void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*l } } else { // interpret first 3 channels as RGB - r = *(float*)((char*)latents->data + latent_id + 0 * latents->nb[ggml_n_dims(latents) - 1]); - g = *(float*)((char*)latents->data + latent_id + 1 * latents->nb[ggml_n_dims(latents) - 1]); - b = *(float*)((char*)latents->data + latent_id + 2 * latents->nb[ggml_n_dims(latents) - 1]); + r = *(float*)((char*)latents->data + latent_id + 0 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; + g = *(float*)((char*)latents->data + latent_id + 1 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; + b = *(float*)((char*)latents->data + latent_id + 2 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; a = 1; } if (latent_rgb_bias != nullptr) { @@ -514,9 +514,9 @@ void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, con a += value * latent_rgb_proj[d][3]; } } else { - r = latent_value(0); - g = latent_value(1); - b = latent_value(2); + r = latent_value(0) * 0.5f + 0.5f; + g = latent_value(1) * 0.5f + 0.5f; + b = latent_value(2) * 0.5f + 0.5f; a = 1; } if (latent_rgb_bias != nullptr) { From f94e463bad036464a9472e6de17f4061230663d2 Mon Sep 17 00:00:00 2001 From: leejet Date: Wed, 23 Sep 2026 22:16:07 +0800 Subject: [PATCH 5/5] refactor: separate alpha projection from RGB previews --- src/pipeline/diffusion_engine.cpp | 17 +- src/runtime/latent-preview.h | 835 +++++++++++++++--------------- 2 files changed, 436 insertions(+), 416 deletions(-) diff --git a/src/pipeline/diffusion_engine.cpp b/src/pipeline/diffusion_engine.cpp index 0438f3a8b2..2b49ede903 100644 --- a/src/pipeline/diffusion_engine.cpp +++ b/src/pipeline/diffusion_engine.cpp @@ -1972,8 +1972,10 @@ void StableDiffusionGGML::preview_image(int step, : latents; if (preview_mode == PREVIEW_PROJ) { int patch_sz = 1; - const float(*latent_rgb_proj)[4] = nullptr; + const float(*latent_rgb_proj)[3] = nullptr; float* latent_rgb_bias = nullptr; + const float* latent_alpha_proj = nullptr; + float latent_alpha_bias = 1.f; if (channels == 128) { if (sd_version_uses_flux2_vae(version)) { @@ -1989,8 +1991,10 @@ void StableDiffusionGGML::preview_image(int step, } } else if (channels == 64) { if (version == VERSION_QWEN_IMAGE_2_1) { - latent_rgb_proj = qwen21_latent_rgb_proj; - latent_rgb_bias = qwen21_latent_rgb_bias; + latent_rgb_proj = qwen21_latent_rgb_proj; + latent_rgb_bias = qwen21_latent_rgb_bias; + latent_alpha_proj = qwen21_latent_alpha_proj; + latent_alpha_bias = qwen21_latent_alpha_bias; } else { LOG_WARN("No latent to RGB projection known for this model"); return; @@ -2045,13 +2049,14 @@ void StableDiffusionGGML::preview_image(int step, uint32_t img_width = static_cast(_latents.shape()[0]) * patch_sz; uint32_t img_height = static_cast(_latents.shape()[1]) * patch_sz; - uint8_t* data = (uint8_t*)malloc(frames * img_width * img_height * 4 * sizeof(uint8_t)); + uint32_t img_channels = latent_alpha_proj != nullptr ? 4 : 3; + uint8_t* data = (uint8_t*)malloc(frames * img_width * img_height * img_channels * sizeof(uint8_t)); GGML_ASSERT(data != nullptr); - preview_latent_video(data, _latents, latent_rgb_proj, latent_rgb_bias, patch_sz); + preview_latent_video(data, _latents, latent_rgb_proj, latent_rgb_bias, patch_sz, latent_alpha_proj, latent_alpha_bias); sd_image_t* images = (sd_image_t*)malloc(frames * sizeof(sd_image_t)); GGML_ASSERT(images != nullptr); for (uint32_t i = 0; i < frames; i++) { - images[i] = {img_width, img_height, 4, data + i * img_width * img_height * 4}; + images[i] = {img_width, img_height, img_channels, data + i * img_width * img_height * img_channels}; } step_callback(step, frames, images, is_noisy, step_callback_data); free(data); diff --git a/src/runtime/latent-preview.h b/src/runtime/latent-preview.h index 7fe6b5be9b..5baf6f53cb 100644 --- a/src/runtime/latent-preview.h +++ b/src/runtime/latent-preview.h @@ -4,402 +4,407 @@ #include "core/tensor.hpp" #include "ggml.h" -const float qwen21_latent_rgb_proj[64][4] = { - {0.00430247761, 0.00609750731, -0.00160668598, -0.0416241114}, - {0.00944616545, 0.00623290608, 0.00537479741, -0.00678954612}, - {0.0627970723, 0.0588439672, -0.0166106176, -0.0169095515}, - {0.0209119264, 0.0521713877, 0.0060833158, -0.0230551401}, - {0.01012669, 0.00726835148, -0.000112168022, 0.0100882595}, - {-0.00948360351, -0.0103049515, -0.0161364292, 0.00655586802}, - {0.00219492398, -0.00687484883, 0.01424598, 0.0401166874}, - {-0.0187247928, -0.0143388563, -0.0346596405, -0.0055510216}, - {0.00755957367, 0.0121489693, 0.0276939435, 0.0224234441}, - {-0.0569314759, -0.010195733, 0.000775260261, -0.0389640963}, - {-0.0116825348, -0.0208646009, -0.0181180591, -0.0114492163}, - {-0.0175801671, -0.0121797962, -0.00108130519, -0.00721128977}, - {0.00546677644, -0.0186733462, 0.00120657675, -0.0029064082}, - {0.00889352372, -0.00200992339, -0.0171629596, 0.0150300547}, - {0.0243029667, 0.0126572, 0.0336282483, -0.00321615308}, - {0.0154731779, 0.0138981583, 0.0260434811, -0.0498856338}, - {0.0187242504, 0.0275876838, 0.0112926951, -0.0215251401}, - {-0.0045404981, -0.002378088, 0.00318221806, 0.0240220482}, - {-0.0135227826, -0.0192483477, -0.00452954041, 0.0117338008}, - {-0.00276746878, 0.00742276842, -0.0105751234, -0.0460420624}, - {0.00659751281, 0.00474002833, 0.0241894606, 0.0387872889}, - {-0.00465923552, -0.00138226367, -0.00505992651, 0.0131517207}, - {0.0090239129, 0.00807477178, -0.0104712345, 0.0147100836}, - {-0.0107265217, -0.00136480588, 0.0108943738, 0.0266985286}, - {-0.0318386152, -0.0104446774, 0.0239583871, 0.0153097324}, - {-0.0125160618, -0.0143357838, 0.0265055073, -0.0418119757}, - {-0.00926539039, 0.00823636409, -0.00103873794, 0.0421013917}, - {0.0011550541, 0.00614400374, 0.00651752503, 0.0401724499}, - {-0.00621835704, -0.0129319364, -0.0189558132, 0.00972515915}, - {0.00299467355, 0.00321281775, -0.00617257152, 0.011718495}, - {-0.0148366998, -0.0117349025, 0.00030009106, 0.0117622291}, - {-0.0161009749, -0.0264600231, -0.00172493707, 0.0136505134}, - {-0.00102513229, -0.00423299723, 0.00227985519, -0.0350017363}, - {-0.00541113532, 0.0157830974, -0.0338876681, -0.0100692606}, - {0.0322776737, 0.0554833499, 0.0337372432, -0.0131582529}, - {0.00518400554, -0.00242420605, -0.000764584237, -0.00660639315}, - {0.00632176783, 0.00774063169, -0.00483187162, 0.00253611396}, - {-0.0111946204, -0.00435875763, -0.000153210835, -0.0195736368}, - {0.0135661371, 0.01748262, -0.0044846429, -0.04240184}, - {0.0256089336, 0.0086540017, 0.00402113873, 0.0321299262}, - {0.00605493596, 0.00379012963, -0.00140856293, 0.0106089414}, - {0.0948639195, 0.0605130914, 0.031301946, -0.0179845306}, - {0.0104029411, 0.00273774091, 0.00631477819, -0.00806212708}, - {0.00406666429, 0.00507965457, 0.00650885645, 0.0135889057}, - {-0.000463618007, -0.00076270297, -0.00299606651, -0.0157393098}, - {0.00831657308, -0.00291394813, 0.0081979066, -0.0267791344}, - {-0.0126273171, -0.0302096866, -0.0803459961, 0.0109068534}, - {-0.045861343, -0.0204600612, -0.0479788099, 0.0283931966}, - {0.0141481556, -0.00693611936, -0.00824407232, -0.0435370078}, - {0.0276158409, 0.0483773894, 0.0206793316, 0.00187883536}, - {0.00461424646, 0.00225733771, -0.0264586189, -0.0108995378}, - {0.0279300384, 0.0061494154, -0.00722971211, -0.0450757676}, - {0.000105330451, -0.00647979391, -0.00902380882, -0.0699481501}, - {0.0179068125, -0.0236252985, -0.0578202571, 0.0123562106}, - {-0.0253195348, -0.0235957421, 0.0174895734, -0.0222592249}, - {-0.0240071584, 0.00314194934, -0.0272581913, 0.0216155907}, - {0.0157749791, 0.0282423303, -0.0215425244, 0.0563755424}, - {-0.0181165158, -0.00633894277, 0.0030512386, -0.0073379912}, - {0.0019313771, 0.00455527958, -0.00379263004, 0.0160012921}, - {-0.0223551649, -0.00417705704, 0.00772936164, 0.0411637742}, - {-0.007503369, 0.00135306151, -0.00392180678, 0.0189607258}, - {-0.0110877524, -0.0256672374, -0.0237658712, -0.024025029}, - {-0.00518328147, -0.00211073034, -0.0106749526, -0.0161487905}, - {0.00894476353, 0.00595972095, 0.0198602619, -0.016913203}, +// RGB is projected to [-1, 1]; alpha is projected directly to [0, 1]. +const float qwen21_latent_rgb_proj[64][3] = { + {0.00860495522f, 0.01219501462f, -0.00321337196f}, + {0.01889233090f, 0.01246581216f, 0.01074959482f}, + {0.1255941446f, 0.1176879344f, -0.0332212352f}, + {0.0418238528f, 0.1043427754f, 0.0121666316f}, + {0.02025338f, 0.01453670296f, -0.000224336044f}, + {-0.01896720702f, -0.0206099030f, -0.0322728584f}, + {0.00438984796f, -0.01374969766f, 0.02849196f}, + {-0.0374495856f, -0.0286777126f, -0.0693192810f}, + {0.01511914734f, 0.0242979386f, 0.0553878870f}, + {-0.1138629518f, -0.020391466f, 0.001550520522f}, + {-0.0233650696f, -0.0417292018f, -0.0362361182f}, + {-0.0351603342f, -0.0243595924f, -0.00216261038f}, + {0.01093355288f, -0.0373466924f, 0.00241315350f}, + {0.01778704744f, -0.00401984678f, -0.0343259192f}, + {0.0486059334f, 0.0253144f, 0.0672564966f}, + {0.0309463558f, 0.0277963166f, 0.0520869622f}, + {0.0374485008f, 0.0551753676f, 0.0225853902f}, + {-0.0090809962f, -0.004756176f, 0.00636443612f}, + {-0.0270455652f, -0.0384966954f, -0.00905908082f}, + {-0.00553493756f, 0.01484553684f, -0.0211502468f}, + {0.01319502562f, 0.00948005666f, 0.0483789212f}, + {-0.00931847104f, -0.00276452734f, -0.01011985302f}, + {0.0180478258f, 0.01614954356f, -0.0209424690f}, + {-0.0214530434f, -0.00272961176f, 0.0217887476f}, + {-0.0636772304f, -0.0208893548f, 0.0479167742f}, + {-0.0250321236f, -0.0286715676f, 0.0530110146f}, + {-0.01853078078f, 0.01647272818f, -0.00207747588f}, + {0.0023101082f, 0.01228800748f, 0.01303505006f}, + {-0.01243671408f, -0.0258638728f, -0.0379116264f}, + {0.00598934710f, 0.00642563550f, -0.01234514304f}, + {-0.0296733996f, -0.0234698050f, 0.00060018212f}, + {-0.0322019498f, -0.0529200462f, -0.00344987414f}, + {-0.00205026458f, -0.00846599446f, 0.00455971038f}, + {-0.01082227064f, 0.0315661948f, -0.0677753362f}, + {0.0645553474f, 0.1109666998f, 0.0674744864f}, + {0.01036801108f, -0.00484841210f, -0.001529168474f}, + {0.01264353566f, 0.01548126338f, -0.00966374324f}, + {-0.0223892408f, -0.00871751526f, -0.000306421670f}, + {0.0271322742f, 0.03496524f, -0.0089692858f}, + {0.0512178672f, 0.0173080034f, 0.00804227746f}, + {0.01210987192f, 0.00758025926f, -0.00281712586f}, + {0.1897278390f, 0.1210261828f, 0.062603892f}, + {0.0208058822f, 0.00547548182f, 0.01262955638f}, + {0.00813332858f, 0.01015930914f, 0.01301771290f}, + {-0.000927236014f, -0.00152540594f, -0.00599213302f}, + {0.01663314616f, -0.00582789626f, 0.0163958132f}, + {-0.0252546342f, -0.0604193732f, -0.1606919922f}, + {-0.091722686f, -0.0409201224f, -0.0959576198f}, + {0.0282963112f, -0.01387223872f, -0.01648814464f}, + {0.0552316818f, 0.0967547788f, 0.0413586632f}, + {0.00922849292f, 0.00451467542f, -0.0529172378f}, + {0.0558600768f, 0.0122988308f, -0.01445942422f}, + {0.000210660902f, -0.01295958782f, -0.01804761764f}, + {0.0358136250f, -0.0472505970f, -0.1156405142f}, + {-0.0506390696f, -0.0471914842f, 0.0349791468f}, + {-0.0480143168f, 0.00628389868f, -0.0545163826f}, + {0.0315499582f, 0.0564846606f, -0.0430850488f}, + {-0.0362330316f, -0.01267788554f, 0.0061024772f}, + {0.0038627542f, 0.00911055916f, -0.00758526008f}, + {-0.0447103298f, -0.00835411408f, 0.01545872328f}, + {-0.015006738f, 0.00270612302f, -0.00784361356f}, + {-0.0221755048f, -0.0513344748f, -0.0475317424f}, + {-0.01036656294f, -0.00422146068f, -0.0213499052f}, + {0.01788952706f, 0.01191944190f, 0.0397205238f}, }; -float qwen21_latent_rgb_bias[4] = {0.478353441, 0.48652011, 0.44006647, 0.871268134}; +float qwen21_latent_rgb_bias[3] = {-0.043293118f, -0.02695978f, -0.11986706f}; -const float minimax_latent_rgb_proj[24][4] = { - {0.09909928f, 0.05792499f, 0.03964889f, 0}, - {-0.08023612f, -0.05300585f, -0.07998162f, 0}, - {0.23695975f, 0.18801238f, 0.10133913f, 0}, - {-0.04928721f, -0.13717725f, -0.25840875f, 0}, - {-0.09465303f, -0.05256139f, -0.14285739f, 0}, - {-0.07819785f, -0.09000464f, -0.12716426f, 0}, - {-0.0358846f, -0.05450799f, -0.03327127f, 0}, - {-0.02507039f, -0.02919913f, -0.02758044f, 0}, - {-0.02600712f, -0.02175957f, -0.0075379f, 0}, - {0.12375219f, 0.06653711f, 0.0884206f, 0}, - {0.03688723f, 0.05117929f, 0.05853913f, 0}, - {0.01454152f, 0.03293511f, 0.05321845f, 0}, - {-0.00335265f, -0.0192894f, 0.00875076f, 0}, - {-0.03559553f, -0.01541661f, -0.00997725f, 0}, - {-0.04306314f, -0.0362692f, -0.00721445f, 0}, - {0.04396601f, 0.04340875f, 0.01497323f, 0}, - {0.00438446f, 0.01360934f, 0.00045589f, 0}, - {-0.01742206f, -0.01355631f, -0.0005505f, 0}, - {-0.00339886f, -0.00922138f, -0.00841679f, 0}, - {0.02143514f, 0.00800534f, 0.02018699f, 0}, - {-0.00246716f, -0.00115264f, 0.00176955f, 0}, - {0.00747544f, 0.00146153f, 0.00208335f, 0}, - {0.00247654f, 0.02533271f, 0.02605272f, 0}, - {-0.01077421f, -0.00759262f, 0.00221201f, 0}, -}; -float minimax_latent_rgb_bias[4] = {0.53888482f, 0.49209523f, 0.46719283f, 1}; +const float qwen21_latent_alpha_proj[64] = { + -0.0416241114f, -0.00678954612f, -0.0169095515f, -0.0230551401f, 0.0100882595f, 0.00655586802f, 0.0401166874f, -0.0055510216f, + 0.0224234441f, -0.0389640963f, -0.0114492163f, -0.00721128977f, -0.0029064082f, 0.0150300547f, -0.00321615308f, -0.0498856338f, + -0.0215251401f, 0.0240220482f, 0.0117338008f, -0.0460420624f, 0.0387872889f, 0.0131517207f, 0.0147100836f, 0.0266985286f, + 0.0153097324f, -0.0418119757f, 0.0421013917f, 0.0401724499f, 0.00972515915f, 0.011718495f, 0.0117622291f, 0.0136505134f, + -0.0350017363f, -0.0100692606f, -0.0131582529f, -0.00660639315f, 0.00253611396f, -0.0195736368f, -0.04240184f, 0.0321299262f, + 0.0106089414f, -0.0179845306f, -0.00806212708f, 0.0135889057f, -0.0157393098f, -0.0267791344f, 0.0109068534f, 0.0283931966f, + -0.0435370078f, 0.00187883536f, -0.0108995378f, -0.0450757676f, -0.0699481501f, 0.0123562106f, -0.0222592249f, 0.0216155907f, + 0.0563755424f, -0.0073379912f, 0.0160012921f, 0.0411637742f, 0.0189607258f, -0.024025029f, -0.0161487905f, -0.016913203f}; +const float qwen21_latent_alpha_bias = 0.871268134f; -const float ltxav_latent_rgb_proj[128][4] = { - {-0.0146901f, -0.0181258f, -0.0145693f, 0}, - {0.00588675f, 0.01117175f, 0.009428f, 0}, - {0.00461167f, 0.0072833f, 0.0019386f, 0}, - {0.01136495f, 0.0054561f, 0.0065692f, 0}, - {0.00096207f, 0.0012324f, 0.00344622f, 0}, - {-0.0052788f, -0.00679665f, -0.00436921f, 0}, - {-0.0155111f, -0.0198179f, -0.02042225f, 0}, - {0.00748685f, 0.01581615f, 0.017075f, 0}, - {0.0013876f, 0.00407445f, 0.00542875f, 0}, - {-0.00033901f, -0.00090295f, -0.0080842f, 0}, - {0.0076982f, 0.0079887f, 0.00932395f, 0}, - {-0.01113995f, -0.0101034f, -0.0090541f, 0}, - {0.0064348f, 0.00377208f, -0.00336639f, 0}, - {0.00713645f, 0.00224049f, -0.00096967f, 0}, - {-0.007033f, -0.00968775f, -0.0080052f, 0}, - {-0.00883925f, -0.0079515f, -0.00763105f, 0}, - {0.01536905f, 0.0146041f, 0.0164334f, 0}, - {0.0166464f, 0.01843145f, 0.02204465f, 0}, - {0.0093152f, 0.00620345f, 0.0080367f, 0}, - {0.00238894f, -0.00157829f, -0.00007285f, 0}, - {0.00915495f, 0.00612965f, 0.00299866f, 0}, - {-0.00972755f, -0.0091962f, -0.00737325f, 0}, - {0.0012866f, 0.00221291f, 0.0086588f, 0}, - {-0.00847115f, -0.01469315f, -0.0112954f, 0}, - {-0.010614f, -0.0132547f, -0.01265245f, 0}, - {0.01635555f, 0.00935665f, 0.0133092f, 0}, - {-0.01132125f, -0.01568905f, -0.0207178f, 0}, - {-0.0081571f, -0.0073072f, -0.00858965f, 0}, - {0.00960915f, 0.00542055f, 0.00414593f, 0}, - {-0.016123f, -0.0137423f, -0.0143717f, 0}, - {0.001727f, 0.00577835f, 0.007644f, 0}, - {0.00048615f, 0.00165651f, 0.00552505f, 0}, - {0.00046975f, -0.00352542f, -0.00489724f, 0}, - {0.02025775f, 0.0169767f, 0.02097565f, 0}, - {0.0099298f, 0.0093313f, 0.0106883f, 0}, - {-0.00491187f, -0.0044022f, -0.00235214f, 0}, - {-0.01568535f, -0.0129049f, -0.01058315f, 0}, - {0.00720795f, 0.0058948f, 0.00707865f, 0}, - {0.00822855f, 0.0074589f, 0.004608f, 0}, - {0.0218092f, 0.01732915f, 0.01803235f, 0}, - {-0.00144872f, -0.00037625f, 0.00033771f, 0}, - {-0.00310858f, -0.00027943f, 0.0067907f, 0}, - {-0.0040879f, -0.0056792f, -0.00278396f, 0}, - {0.00482534f, 0.00891105f, 0.0079105f, 0}, - {0.0105916f, 0.00904135f, 0.00773535f, 0}, - {-0.00206429f, -0.00187091f, 0.0014784f, 0}, - {-0.00878015f, -0.0113121f, -0.0139506f, 0}, - {-0.00218736f, -0.00334164f, 0.00008244f, 0}, - {-0.01779915f, -0.02095465f, -0.01915325f, 0}, - {0.0072157f, 0.0096257f, 0.00878195f, 0}, - {-0.00653465f, -0.00284942f, -0.00170824f, 0}, - {-0.00092344f, 0.00094517f, -0.00095281f, 0}, - {0.0097285f, 0.00421141f, 0.0061869f, 0}, - {-0.00238573f, -0.00103466f, 0.00141668f, 0}, - {-0.0182272f, -0.01280705f, -0.0161168f, 0}, - {-0.0147817f, -0.0147524f, -0.0105285f, 0}, - {0.0072242f, 0.0095931f, 0.00562225f, 0}, - {0.0268203f, 0.0291188f, 0.0285483f, 0}, - {0.0042589f, 0.00374228f, 0.00497581f, 0}, - {-0.00683185f, -0.0086457f, -0.0097989f, 0}, - {-0.0169564f, -0.0196346f, -0.0177608f, 0}, - {0.00306427f, 0.00284152f, -0.00106167f, 0}, - {-0.00146125f, 0.0033441f, 0.00610655f, 0}, - {0.00420921f, 0.00009079f, -0.00325322f, 0}, - {-0.00257216f, 0.00635215f, 0.00840245f, 0}, - {-0.00498692f, -0.00301131f, -0.00820155f, 0}, - {0.0116613f, 0.016627f, 0.0153633f, 0}, - {-0.00551005f, -0.00820845f, -0.00809145f, 0}, - {-0.0097976f, -0.00889715f, -0.00576885f, 0}, - {-0.00261959f, -0.00226021f, 0.00133698f, 0}, - {0.0156732f, 0.01441205f, 0.0131248f, 0}, - {0.0162009f, 0.0169896f, 0.01561045f, 0}, - {-0.00816235f, -0.01152515f, -0.01316195f, 0}, - {0.00021029f, -0.00267829f, -0.00331713f, 0}, - {-0.0064485f, -0.00101884f, -0.00031134f, 0}, - {-0.0316478f, -0.03256625f, -0.02922395f, 0}, - {-0.00213317f, -0.0075049f, -0.00359674f, 0}, - {0.00238054f, 0.00337157f, 0.00447736f, 0}, - {0.0064692f, 0.0079176f, 0.00481887f, 0}, - {-0.01666895f, -0.0205261f, -0.0158731f, 0}, - {0.00172027f, 0.00137958f, 0.00177866f, 0}, - {0.0104531f, 0.01367265f, 0.01114835f, 0}, - {0.00413643f, 0.00111523f, 0.00162922f, 0}, - {-0.0074566f, -0.00919865f, -0.00998905f, 0}, - {-0.0050393f, -0.00518405f, -0.00109112f, 0}, - {-0.00395705f, -0.00202577f, -0.00299947f, 0}, - {0.0088063f, 0.00309171f, -0.00003328f, 0}, - {0.00471243f, -0.00103247f, -0.00290162f, 0}, - {0.00339047f, -0.00145871f, -0.0004606f, 0}, - {-0.0110996f, -0.00241581f, -0.00042426f, 0}, - {-0.00757935f, -0.0078583f, -0.0053651f, 0}, - {0.00454823f, 0.00859925f, 0.00848925f, 0}, - {0.0063612f, 0.0085306f, 0.0151714f, 0}, - {0.0098281f, 0.00106226f, 0.0063872f, 0}, - {0.01165065f, 0.0114497f, 0.00541935f, 0}, - {0.0026038f, 0.00496496f, 0.00331335f, 0}, - {-0.00001889f, 0.00230115f, -0.00237566f, 0}, - {-0.01558815f, -0.0226783f, -0.02434505f, 0}, - {0.0097899f, 0.0140623f, 0.0090051f, 0}, - {-0.00870745f, -0.01204335f, -0.00943925f, 0}, - {0.00005233f, 0.00329504f, 0.0072297f, 0}, - {-0.00155543f, -0.0120713f, -0.0122082f, 0}, - {0.0168231f, 0.01525865f, 0.01655505f, 0}, - {0.03068125f, 0.0332805f, 0.0305099f, 0}, - {-0.01433785f, -0.01627005f, -0.0169018f, 0}, - {0.0070767f, 0.0094133f, 0.01265295f, 0}, - {-0.00274099f, -0.00085099f, 0.00280873f, 0}, - {-0.0058936f, -0.00381609f, -0.00725185f, 0}, - {-0.0126652f, -0.01226085f, -0.00724525f, 0}, - {-0.00196812f, 0.00175024f, 0.00382781f, 0}, - {0.00568125f, 0.00280788f, -0.0056836f, 0}, - {-0.0150639f, -0.0130736f, -0.01509515f, 0}, - {0.0084315f, 0.00868905f, 0.0085458f, 0}, - {-0.00247554f, 0.00343375f, 0.00141384f, 0}, - {0.00062705f, -0.00189036f, -0.00132058f, 0}, - {-0.00132f, -0.00264886f, -0.00565545f, 0}, - {-0.027444f, -0.02877305f, -0.0254573f, 0}, - {-0.009721f, -0.0116458f, -0.01293185f, 0}, - {0.0066681f, 0.0080904f, 0.00458976f, 0}, - {-0.0174501f, -0.0186321f, -0.0233103f, 0}, - {-0.00108463f, 0.00104369f, 0.00383246f, 0}, - {0.0134264f, 0.01505895f, 0.01142895f, 0}, - {0.0113088f, 0.010768f, 0.011576f, 0}, - {-0.0055323f, -0.00255675f, -0.0068673f, 0}, - {-0.0049212f, -0.00109088f, 0.00207273f, 0}, - {0.00100108f, 0.00220866f, -0.00682575f, 0}, - {0.00347973f, 0.00156555f, -0.00189718f, 0}, - {0.00941885f, 0.00720295f, 0.0114862f, 0}, -}; -float ltxav_latent_rgb_bias[4] = {0.5219245f, 0.51005425f, 0.5075143f, 1}; +const float minimax_latent_rgb_proj[24][3] = { + {0.19819857f, 0.11584999f, 0.07929777f}, + {-0.16047224f, -0.10601170f, -0.15996324f}, + {0.47391951f, 0.37602475f, 0.20267826f}, + {-0.09857441f, -0.27435449f, -0.51681751f}, + {-0.18930605f, -0.10512278f, -0.28571478f}, + {-0.15639569f, -0.18000929f, -0.25432852f}, + {-0.07176921f, -0.10901598f, -0.06654253f}, + {-0.05014077f, -0.05839826f, -0.05516087f}, + {-0.05201424f, -0.04351913f, -0.01507579f}, + {0.24750438f, 0.13307422f, 0.17684120f}, + {0.07377446f, 0.10235858f, 0.11707827f}, + {0.02908304f, 0.06587022f, 0.10643690f}, + {-0.00670531f, -0.03857879f, 0.01750151f}, + {-0.07119107f, -0.03083323f, -0.01995450f}, + {-0.08612627f, -0.07253841f, -0.01442890f}, + {0.08793202f, 0.08681750f, 0.02994647f}, + {0.00876893f, 0.02721868f, 0.00091178f}, + {-0.03484412f, -0.02711262f, -0.00110101f}, + {-0.00679772f, -0.01844275f, -0.01683359f}, + {0.04287028f, 0.01601068f, 0.04037397f}, + {-0.00493432f, -0.00230528f, 0.00353911f}, + {0.01495088f, 0.00292306f, 0.00416671f}, + {0.00495307f, 0.05066542f, 0.05210543f}, + {-0.02154842f, -0.01518524f, 0.00442402f}}; +float minimax_latent_rgb_bias[3] = {0.07776964f, -0.01580954f, -0.06561434f}; -const float wan_21_latent_rgb_proj[16][4] = { - {0.0075615f, -0.074209f, 0.239914f, 0}, - {0.001826f, -0.00534f, -0.018571f, 0}, - {0.106132f, 0.0315165f, 0.0083895f, 0}, - {0.1164995f, 0.203238f, 0.1100625f, 0}, - {-0.025932f, -0.041192f, -0.034698f, 0}, - {0.0425025f, -0.080746f, 0.0053445f, 0}, - {-0.1226845f, -0.253423f, -0.058505f, 0}, - {-0.0755725f, 0.0088605f, 0.0036035f, 0}, - {-0.1466195f, -0.103968f, -0.2105675f, 0}, - {-0.0938605f, 0.0253915f, 0.0888245f, 0}, - {-0.0065335f, 0.132982f, 0.083289f, 0}, - {0.0141635f, 0.0546645f, 0.054321f, 0}, - {-0.1026715f, 0.0219955f, 0.074457f, 0}, - {0.0071535f, -0.0243235f, -0.0036095f, 0}, - {0.108575f, 0.026537f, 0.1599615f, 0}, - {0.0776785f, 0.041578f, 0.03239f, 0}, +const float ltxav_latent_rgb_proj[128][3] = { + {-0.0293802f, -0.0362516f, -0.0291386f}, + {0.0117735f, 0.0223435f, 0.018856f}, + {0.00922335f, 0.0145666f, 0.0038772f}, + {0.0227299f, 0.0109122f, 0.0131384f}, + {0.00192413f, 0.0024648f, 0.00689245f}, + {-0.0105576f, -0.0135933f, -0.00873841f}, + {-0.0310222f, -0.0396358f, -0.0408445f}, + {0.0149737f, 0.0316323f, 0.03415f}, + {0.0027752f, 0.00814889f, 0.0108575f}, + {-0.000678017f, -0.00180589f, -0.0161684f}, + {0.0153964f, 0.0159774f, 0.0186479f}, + {-0.0222799f, -0.0202068f, -0.0181082f}, + {0.0128696f, 0.00754416f, -0.00673279f}, + {0.0142729f, 0.00448099f, -0.00193934f}, + {-0.014066f, -0.0193755f, -0.0160104f}, + {-0.0176785f, -0.015903f, -0.0152621f}, + {0.0307381f, 0.0292082f, 0.0328668f}, + {0.0332928f, 0.0368629f, 0.0440893f}, + {0.0186304f, 0.0124069f, 0.0160734f}, + {0.00477787f, -0.00315658f, -0.000145702f}, + {0.0183099f, 0.0122593f, 0.00599732f}, + {-0.0194551f, -0.0183924f, -0.0147465f}, + {0.0025732f, 0.00442582f, 0.0173176f}, + {-0.0169423f, -0.0293863f, -0.0225908f}, + {-0.021228f, -0.0265094f, -0.0253049f}, + {0.0327111f, 0.0187133f, 0.0266184f}, + {-0.0226425f, -0.0313781f, -0.0414356f}, + {-0.0163142f, -0.0146144f, -0.0171793f}, + {0.0192183f, 0.0108411f, 0.00829186f}, + {-0.032246f, -0.0274846f, -0.0287434f}, + {0.00345399f, 0.0115567f, 0.015288f}, + {0.000972292f, 0.00331303f, 0.0110501f}, + {0.000939494f, -0.00705084f, -0.00979449f}, + {0.0405155f, 0.0339534f, 0.0419513f}, + {0.0198596f, 0.0186626f, 0.0213766f}, + {-0.00982375f, -0.00880439f, -0.00470429f}, + {-0.0313707f, -0.0258098f, -0.0211663f}, + {0.0144159f, 0.0117896f, 0.0141573f}, + {0.0164571f, 0.0149178f, 0.00921599f}, + {0.0436184f, 0.0346583f, 0.0360647f}, + {-0.00289744f, -0.000752502f, 0.000675415f}, + {-0.00621715f, -0.000558851f, 0.0135814f}, + {-0.00817579f, -0.0113584f, -0.00556793f}, + {0.00965067f, 0.0178221f, 0.015821f}, + {0.0211832f, 0.0180827f, 0.0154707f}, + {-0.00412858f, -0.00374182f, 0.0029568f}, + {-0.0175603f, -0.0226242f, -0.0279012f}, + {-0.00437471f, -0.00668329f, 0.000164887f}, + {-0.0355983f, -0.0419093f, -0.0383065f}, + {0.0144314f, 0.0192514f, 0.0175639f}, + {-0.0130693f, -0.00569884f, -0.00341647f}, + {-0.00184689f, 0.00189034f, -0.00190561f}, + {0.019457f, 0.00842282f, 0.0123738f}, + {-0.00477146f, -0.00206932f, 0.00283336f}, + {-0.0364544f, -0.0256141f, -0.0322336f}, + {-0.0295634f, -0.0295048f, -0.021057f}, + {0.0144484f, 0.0191862f, 0.0112445f}, + {0.0536406f, 0.0582376f, 0.0570966f}, + {0.0085178f, 0.00748455f, 0.00995162f}, + {-0.0136637f, -0.0172914f, -0.0195978f}, + {-0.0339128f, -0.0392692f, -0.0355216f}, + {0.00612855f, 0.00568303f, -0.00212333f}, + {-0.0029225f, 0.00668819f, 0.0122131f}, + {0.00841843f, 0.000181587f, -0.00650644f}, + {-0.00514432f, 0.0127043f, 0.0168049f}, + {-0.00997384f, -0.00602262f, -0.0164031f}, + {0.0233226f, 0.033254f, 0.0307266f}, + {-0.0110201f, -0.0164169f, -0.0161829f}, + {-0.0195952f, -0.0177943f, -0.0115377f}, + {-0.00523918f, -0.00452043f, 0.00267397f}, + {0.0313464f, 0.0288241f, 0.0262496f}, + {0.0324018f, 0.0339792f, 0.0312209f}, + {-0.0163247f, -0.0230503f, -0.0263239f}, + {0.000420577f, -0.00535659f, -0.00663426f}, + {-0.012897f, -0.00203767f, -0.000622678f}, + {-0.0632956f, -0.0651325f, -0.0584479f}, + {-0.00426634f, -0.0150098f, -0.00719348f}, + {0.00476109f, 0.00674315f, 0.00895472f}, + {0.0129384f, 0.0158352f, 0.00963773f}, + {-0.0333379f, -0.0410522f, -0.0317462f}, + {0.00344054f, 0.00275915f, 0.00355732f}, + {0.0209062f, 0.0273453f, 0.0222967f}, + {0.00827287f, 0.00223045f, 0.00325844f}, + {-0.0149132f, -0.0183973f, -0.0199781f}, + {-0.0100786f, -0.0103681f, -0.00218224f}, + {-0.00791409f, -0.00405153f, -0.00599893f}, + {0.0176126f, 0.00618342f, -6.6569e-05f}, + {0.00942486f, -0.00206494f, -0.00580324f}, + {0.00678093f, -0.00291742f, -0.000921195f}, + {-0.0221992f, -0.00483162f, -0.000848514f}, + {-0.0151587f, -0.0157166f, -0.0107302f}, + {0.00909646f, 0.0171985f, 0.0169785f}, + {0.0127224f, 0.0170612f, 0.0303428f}, + {0.0196562f, 0.00212451f, 0.0127744f}, + {0.0233013f, 0.0228994f, 0.0108387f}, + {0.00520761f, 0.00992992f, 0.0066267f}, + {-3.77736e-05f, 0.00460229f, -0.00475132f}, + {-0.0311763f, -0.0453566f, -0.0486901f}, + {0.0195798f, 0.0281246f, 0.0180102f}, + {-0.0174149f, -0.0240867f, -0.0188785f}, + {0.000104658f, 0.00659008f, 0.0144594f}, + {-0.00311086f, -0.0241426f, -0.0244164f}, + {0.0336462f, 0.0305173f, 0.0331101f}, + {0.0613625f, 0.066561f, 0.0610198f}, + {-0.0286757f, -0.0325401f, -0.0338036f}, + {0.0141534f, 0.0188266f, 0.0253059f}, + {-0.00548197f, -0.00170198f, 0.00561745f}, + {-0.0117872f, -0.00763218f, -0.0145037f}, + {-0.0253304f, -0.0245217f, -0.0144905f}, + {-0.00393624f, 0.00350048f, 0.00765561f}, + {0.0113625f, 0.00561576f, -0.0113672f}, + {-0.0301278f, -0.0261472f, -0.0301903f}, + {0.016863f, 0.0173781f, 0.0170916f}, + {-0.00495108f, 0.00686749f, 0.00282767f}, + {0.00125409f, -0.00378072f, -0.00264117f}, + {-0.00264001f, -0.00529772f, -0.0113109f}, + {-0.054888f, -0.0575461f, -0.0509146f}, + {-0.019442f, -0.0232916f, -0.0258637f}, + {0.0133362f, 0.0161808f, 0.00917951f}, + {-0.0349002f, -0.0372642f, -0.0466206f}, + {-0.00216926f, 0.00208738f, 0.00766492f}, + {0.0268528f, 0.0301179f, 0.0228579f}, + {0.0226176f, 0.021536f, 0.023152f}, + {-0.0110646f, -0.00511349f, -0.0137346f}, + {-0.0098424f, -0.00218176f, 0.00414545f}, + {0.00200216f, 0.00441732f, -0.0136515f}, + {0.00695946f, 0.00313109f, -0.00379435f}, + {0.0188377f, 0.0144059f, 0.0229724f}, }; -float wan_21_latent_rgb_bias[4] = {0.364865f, 0.382512f, 0.2715735f, 1}; +float ltxav_latent_rgb_bias[3] = {0.043849f, 0.0201085f, 0.0150286f}; -const float wan_22_latent_rgb_proj[48][4] = { - {0.008563f, -0.013615f, -0.0096285f, 0}, - {-0.0568695f, -0.0143575f, -0.0114425f, 0}, - {-0.000053f, 0.010747f, 0.0023145f, 0}, - {-0.0066365f, -0.0535685f, -0.016819f, 0}, - {-0.0001905f, 0.0001395f, 0.0129385f, 0}, - {-0.007108f, -0.0019875f, 0.020264f, 0}, - {0.000819f, -0.000374f, 0.005511f, 0}, - {0.014619f, -0.0033485f, 0.0179665f, 0}, - {0.0108205f, -0.007937f, 0.0202655f, 0}, - {-0.050992f, -0.03508f, -0.0144275f, 0}, - {0.0166035f, -0.010534f, 0.0013315f, 0}, - {-0.0523555f, 0.0608365f, 0.0514905f, 0}, - {0.0413235f, -0.0024955f, 0.0286185f, 0}, - {-0.0136875f, 0.0157905f, 0.003434f, 0}, - {-0.022717f, 0.014722f, 0.0096435f, 0}, - {-0.023286f, -0.0062685f, 0.0033375f, 0}, - {0.0373545f, 0.016845f, 0.0126445f, 0}, - {-0.0041255f, -0.0013725f, -0.0034995f, 0}, - {0.0063425f, -0.030928f, -0.024329f, 0}, - {0.021152f, -0.0035195f, 0.0001475f, 0}, - {-0.003822f, -0.0304215f, -0.016571f, 0}, - {0.0799545f, 0.022814f, 0.1837705f, 0}, - {0.0475855f, 0.043219f, 0.0051355f, 0}, - {0.003406f, 0.0098215f, 0.0148185f, 0}, - {0.0017335f, -0.0053525f, 0.007126f, 0}, - {-0.0498405f, -0.033136f, -0.0031215f, 0}, - {0.0236785f, 0.01852f, 0.0000925f, 0}, - {-0.0208985f, -0.0446125f, -0.0161285f, 0}, - {0.004464f, 0.008514f, 0.009342f, 0}, - {-0.0211275f, 0.0080225f, 0.0034245f, 0}, - {0.005634f, 0.018231f, 0.0186935f, 0}, - {0.0057765f, -0.0081875f, -0.0242945f, 0}, - {0.023133f, -0.0135945f, 0.0284895f, 0}, - {0.00482f, -0.008788f, 0.015162f, 0}, - {-0.022897f, -0.0180415f, -0.005308f, 0}, - {0.011209f, 0.0198915f, -0.0164695f, 0}, - {-0.026357f, -0.0077625f, 0.003719f, 0}, - {0.096502f, 0.1117705f, 0.1320875f, 0}, - {-0.029703f, -0.004094f, 0.0114335f, 0}, - {-0.078371f, -0.1318955f, -0.0036925f, 0}, - {-0.0078585f, 0.008285f, 0.0169845f, 0}, - {0.0189845f, 0.0549175f, 0.1002245f, 0}, - {-0.000391f, -0.004783f, -0.004029f, 0}, - {0.0053545f, 0.02648f, -0.0220975f, 0}, - {0.0086355f, 0.0229195f, 0.0172845f, 0}, - {0.004712f, 0.006544f, -0.000857f, 0}, - {-0.0124025f, -0.029689f, -0.016878f, 0}, - {-0.0391465f, 0.014535f, 0.0130645f, 0}, -}; -float wan_22_latent_rgb_bias[4] = {0.50658f, 0.451754f, 0.4643385f, 1}; +const float wan_21_latent_rgb_proj[16][3] = { + {0.015123f, -0.148418f, 0.479828f}, + {0.003652f, -0.010680f, -0.037142f}, + {0.212264f, 0.063033f, 0.016779f}, + {0.232999f, 0.406476f, 0.220125f}, + {-0.051864f, -0.082384f, -0.069396f}, + {0.085005f, -0.161492f, 0.010689f}, + {-0.245369f, -0.506846f, -0.117010f}, + {-0.151145f, 0.017721f, 0.007207f}, + {-0.293239f, -0.207936f, -0.421135f}, + {-0.187721f, 0.050783f, 0.177649f}, + {-0.013067f, 0.265964f, 0.166578f}, + {0.028327f, 0.109329f, 0.108642f}, + {-0.205343f, 0.043991f, 0.148914f}, + {0.014307f, -0.048647f, -0.007219f}, + {0.217150f, 0.053074f, 0.319923f}, + {0.155357f, 0.083156f, 0.064780f}}; +float wan_21_latent_rgb_bias[3] = {-0.270270f, -0.234976f, -0.456853f}; -const float flux_latent_rgb_proj[16][4] = { - {-0.020584f, 0.0099585f, 0.0486265f, 0}, - {0.014048f, 0.013365f, 0.064788f, 0}, - {0.032809f, -0.033975f, -0.0073255f, 0}, - {-0.006499f, -0.007381f, 0.0406255f, 0}, - {0.0392835f, 0.029648f, -0.0123435f, 0}, - {-0.0079935f, -0.0018485f, 0.002506f, 0}, - {0.0168025f, 0.0694995f, 0.0342585f, 0}, - {-0.012225f, -0.0317835f, -0.0150505f, 0}, - {-0.020097f, -0.008355f, 0.0635925f, 0}, - {0.0563405f, 0.044382f, -0.02097f, 0}, - {-0.011749f, 0.046832f, 0.0127715f, 0}, - {0.0414495f, 0.02416f, 0.0037455f, 0}, - {0.037856f, 0.0370695f, 0.0409825f, 0}, - {-0.0717505f, 0.0091315f, -0.068069f, 0}, - {-0.0128835f, -0.0410175f, -0.0200115f, 0}, - {-0.0559245f, -0.0277945f, -0.0161805f, 0}, -}; -float flux_latent_rgb_bias[4] = {0.5123f, 0.4965315f, 0.4959555f, 1}; +const float wan_22_latent_rgb_proj[48][3] = { + {0.017126f, -0.027230f, -0.019257f}, + {-0.113739f, -0.028715f, -0.022885f}, + {-0.000106f, 0.021494f, 0.004629f}, + {-0.013273f, -0.107137f, -0.033638f}, + {-0.000381f, 0.000279f, 0.025877f}, + {-0.014216f, -0.003975f, 0.040528f}, + {0.001638f, -0.000748f, 0.011022f}, + {0.029238f, -0.006697f, 0.035933f}, + {0.021641f, -0.015874f, 0.040531f}, + {-0.101984f, -0.070160f, -0.028855f}, + {0.033207f, -0.021068f, 0.002663f}, + {-0.104711f, 0.121673f, 0.102981f}, + {0.082647f, -0.004991f, 0.057237f}, + {-0.027375f, 0.031581f, 0.006868f}, + {-0.045434f, 0.029444f, 0.019287f}, + {-0.046572f, -0.012537f, 0.006675f}, + {0.074709f, 0.033690f, 0.025289f}, + {-0.008251f, -0.002745f, -0.006999f}, + {0.012685f, -0.061856f, -0.048658f}, + {0.042304f, -0.007039f, 0.000295f}, + {-0.007644f, -0.060843f, -0.033142f}, + {0.159909f, 0.045628f, 0.367541f}, + {0.095171f, 0.086438f, 0.010271f}, + {0.006812f, 0.019643f, 0.029637f}, + {0.003467f, -0.010705f, 0.014252f}, + {-0.099681f, -0.066272f, -0.006243f}, + {0.047357f, 0.037040f, 0.000185f}, + {-0.041797f, -0.089225f, -0.032257f}, + {0.008928f, 0.017028f, 0.018684f}, + {-0.042255f, 0.016045f, 0.006849f}, + {0.011268f, 0.036462f, 0.037387f}, + {0.011553f, -0.016375f, -0.048589f}, + {0.046266f, -0.027189f, 0.056979f}, + {0.009640f, -0.017576f, 0.030324f}, + {-0.045794f, -0.036083f, -0.010616f}, + {0.022418f, 0.039783f, -0.032939f}, + {-0.052714f, -0.015525f, 0.007438f}, + {0.193004f, 0.223541f, 0.264175f}, + {-0.059406f, -0.008188f, 0.022867f}, + {-0.156742f, -0.263791f, -0.007385f}, + {-0.015717f, 0.016570f, 0.033969f}, + {0.037969f, 0.109835f, 0.200449f}, + {-0.000782f, -0.009566f, -0.008058f}, + {0.010709f, 0.052960f, -0.044195f}, + {0.017271f, 0.045839f, 0.034569f}, + {0.009424f, 0.013088f, -0.001714f}, + {-0.024805f, -0.059378f, -0.033756f}, + {-0.078293f, 0.029070f, 0.026129f}}; +float wan_22_latent_rgb_bias[3] = {0.013160f, -0.096492f, -0.071323f}; -const float flux2_latent_rgb_proj[32][4] = { - {0.000368f, -0.0041925f, -0.009855f, 0}, - {-0.000676f, -0.008196f, 0.0103465f, 0}, - {-0.003188f, 0.001214f, 0.018368f, 0}, - {0.019692f, 0.0370835f, 0.0598945f, 0}, - {0.003732f, -0.0028525f, -0.002367f, 0}, - {-0.002043f, 0.0026435f, -0.0002045f, 0}, - {-0.0164175f, 0.025401f, -0.01406f, 0}, - {-0.001579f, -0.0004175f, 0.000203f, 0}, - {-0.05642f, -0.0421685f, -0.0115415f, 0}, - {0.000731f, -0.003328f, 0.0002745f, 0}, - {-0.00499f, -0.00374f, 0.004851f, 0}, - {0.01627f, 0.000107f, -0.030694f, 0}, - {0.0055115f, 0.000347f, 0.0035715f, 0}, - {-0.000734f, -0.0033615f, -0.000839f, 0}, - {-0.0029605f, -0.00516f, -0.0019535f, 0}, - {-0.014217f, 0.013792f, 0.0092285f, 0}, - {0.0071745f, 0.0057615f, 0.0002205f, 0}, - {0.004937f, 0.0015405f, 0.0007535f, 0}, - {0.001109f, 0.002856f, 0.0007815f, 0}, - {0.026505f, -0.009922f, 0.0043415f, 0}, - {-0.0012535f, 0.002692f, 0.000469f, 0}, - {-0.0010885f, -0.005683f, 0.0017795f, 0}, - {-0.0001305f, 0.0075605f, -0.00162f, 0}, - {-0.001972f, -0.0010415f, 0.0025215f, 0}, - {-0.004569f, 0.005668f, 0.0018905f, 0}, - {0.0057145f, 0.0019925f, -0.0019275f, 0}, - {0.005259f, -0.002793f, 0.0050655f, 0}, - {0.0039415f, 0.001456f, -0.0007365f, 0}, - {-0.001659f, -0.00158f, 0.001842f, 0}, - {-0.01728f, -0.00437f, 0.006498f, 0}, - {0.000083f, 0.0005395f, -0.0060765f, 0}, - {0.008886f, 0.0004685f, -0.0059765f, 0}, -}; -float flux2_latent_rgb_bias[4] = {0.485631f, 0.4507685f, 0.4461905f, 1}; +const float flux_latent_rgb_proj[16][3] = { + {-0.041168f, 0.019917f, 0.097253f}, + {0.028096f, 0.026730f, 0.129576f}, + {0.065618f, -0.067950f, -0.014651f}, + {-0.012998f, -0.014762f, 0.081251f}, + {0.078567f, 0.059296f, -0.024687f}, + {-0.015987f, -0.003697f, 0.005012f}, + {0.033605f, 0.138999f, 0.068517f}, + {-0.024450f, -0.063567f, -0.030101f}, + {-0.040194f, -0.016710f, 0.127185f}, + {0.112681f, 0.088764f, -0.041940f}, + {-0.023498f, 0.093664f, 0.025543f}, + {0.082899f, 0.048320f, 0.007491f}, + {0.075712f, 0.074139f, 0.081965f}, + {-0.143501f, 0.018263f, -0.136138f}, + {-0.025767f, -0.082035f, -0.040023f}, + {-0.111849f, -0.055589f, -0.032361f}}; +float flux_latent_rgb_bias[3] = {0.024600f, -0.006937f, -0.008089f}; + +const float flux2_latent_rgb_proj[32][3] = { + {0.000736f, -0.008385f, -0.019710f}, + {-0.001352f, -0.016392f, 0.020693f}, + {-0.006376f, 0.002428f, 0.036736f}, + {0.039384f, 0.074167f, 0.119789f}, + {0.007464f, -0.005705f, -0.004734f}, + {-0.004086f, 0.005287f, -0.000409f}, + {-0.032835f, 0.050802f, -0.028120f}, + {-0.003158f, -0.000835f, 0.000406f}, + {-0.112840f, -0.084337f, -0.023083f}, + {0.001462f, -0.006656f, 0.000549f}, + {-0.009980f, -0.007480f, 0.009702f}, + {0.032540f, 0.000214f, -0.061388f}, + {0.011023f, 0.000694f, 0.007143f}, + {-0.001468f, -0.006723f, -0.001678f}, + {-0.005921f, -0.010320f, -0.003907f}, + {-0.028434f, 0.027584f, 0.018457f}, + {0.014349f, 0.011523f, 0.000441f}, + {0.009874f, 0.003081f, 0.001507f}, + {0.002218f, 0.005712f, 0.001563f}, + {0.053010f, -0.019844f, 0.008683f}, + {-0.002507f, 0.005384f, 0.000938f}, + {-0.002177f, -0.011366f, 0.003559f}, + {-0.000261f, 0.015121f, -0.003240f}, + {-0.003944f, -0.002083f, 0.005043f}, + {-0.009138f, 0.011336f, 0.003781f}, + {0.011429f, 0.003985f, -0.003855f}, + {0.010518f, -0.005586f, 0.010131f}, + {0.007883f, 0.002912f, -0.001473f}, + {-0.003318f, -0.003160f, 0.003684f}, + {-0.034560f, -0.008740f, 0.012996f}, + {0.000166f, 0.001079f, -0.012153f}, + {0.017772f, 0.000937f, -0.011953f}}; +float flux2_latent_rgb_bias[3] = {-0.028738f, -0.098463f, -0.107619f}; // This one was taken straight from // https://github.com/Stability-AI/sd3.5/blob/8565799a3b41eb0c7ba976d18375f0f753f56402/sd3_impls.py#L288-L303 // (MiT Licence) -const float sd3_latent_rgb_proj[16][4] = { - {-0.03225f, 0.00885f, 0.0526f, 0}, - {0.0014f, 0.0156f, 0.0325f, 0}, - {0.0924f, 0.0381f, 0.018f, 0}, - {0.0472f, 0.018f, 0.04445f, 0}, - {0.04485f, 0.0253f, -0.0182f, 0}, - {-0.001f, 0.06015f, 0.0142f, 0}, - {0.04275f, 0.0059f, 0.01415f, 0}, - {-0.02695f, 0.0329f, 0.05235f, 0}, - {-0.00285f, 0.0058f, 0.035f, 0}, - {-0.0206f, 0.01405f, -0.00195f, 0}, - {0.0553f, 0.05855f, 0.061f, 0}, - {-0.0124f, 0.0341f, -0.02405f, 0}, - {0.04075f, 0.0423f, 0.06035f, 0}, - {-0.006f, -0.00275f, -0.04335f, 0}, - {-0.03745f, -0.0317f, -0.0228f, 0}, - {-0.0709f, -0.07285f, -0.06295f, 0}, +const float sd3_latent_rgb_proj[16][3] = { + {-0.0645f, 0.0177f, 0.1052f}, + {0.0028f, 0.0312f, 0.0650f}, + {0.1848f, 0.0762f, 0.0360f}, + {0.0944f, 0.0360f, 0.0889f}, + {0.0897f, 0.0506f, -0.0364f}, + {-0.0020f, 0.1203f, 0.0284f}, + {0.0855f, 0.0118f, 0.0283f}, + {-0.0539f, 0.0658f, 0.1047f}, + {-0.0057f, 0.0116f, 0.0700f}, + {-0.0412f, 0.0281f, -0.0039f}, + {0.1106f, 0.1171f, 0.1220f}, + {-0.0248f, 0.0682f, -0.0481f}, + {0.0815f, 0.0846f, 0.1207f}, + {-0.0120f, -0.0055f, -0.0867f}, + {-0.0749f, -0.0634f, -0.0456f}, + {-0.1418f, -0.1457f, -0.1259f}, }; -float sd3_latent_rgb_bias[4] = {0.5f, 0.5f, 0.5f, 1}; +float sd3_latent_rgb_bias[3] = {0, 0, 0}; -const float sdxl_latent_rgb_proj[4][4] = { - {0.1291515f, 0.13882f, 0.1648495f, 0}, - {-0.1498505f, 0.052723f, 0.007097f, 0}, - {0.025261f, 0.0930815f, -0.0716285f, 0}, - {-0.105969f, -0.074946f, -0.040018f, 0}, -}; -float sdxl_latent_rgb_bias[4] = {0.5721905f, 0.4833435f, 0.5035305f, 1}; +const float sdxl_latent_rgb_proj[4][3] = { + {0.258303f, 0.277640f, 0.329699f}, + {-0.299701f, 0.105446f, 0.014194f}, + {0.050522f, 0.186163f, -0.143257f}, + {-0.211938f, -0.149892f, -0.080036f}}; +float sdxl_latent_rgb_bias[3] = {0.144381f, -0.033313f, 0.007061f}; -const float sd_latent_rgb_proj[4][4] = { - {0.168683f, 0.108172f, 0.128693f, 0}, - {0.082818f, 0.193414f, 0.023497f, 0}, - {-0.1339015f, 0.118518f, 0.1117585f, 0}, - {-0.089011f, -0.100431f, -0.339257f, 0}, -}; -float sd_latent_rgb_bias[4] = {0.491261f, 0.472083f, 0.4470875f, 1}; +const float sd_latent_rgb_proj[4][3] = { + {0.337366f, 0.216344f, 0.257386f}, + {0.165636f, 0.386828f, 0.046994f}, + {-0.267803f, 0.237036f, 0.223517f}, + {-0.178022f, -0.200862f, -0.678514f}}; +float sd_latent_rgb_bias[3] = {-0.017478f, -0.055834f, -0.105825f}; -void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*latent_rgb_proj)[4], const float latent_rgb_bias[4], int patch_size) { +void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*latent_rgb_proj)[3], const float latent_rgb_bias[3], int patch_size, const float* latent_alpha_proj = nullptr, float latent_alpha_bias = 1.f) { size_t buffer_head = 0; uint32_t latent_width = static_cast(latents->ne[0]); @@ -413,7 +418,8 @@ void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*l uint32_t rgb_width = latent_width * patch_size; uint32_t rgb_height = latent_height * patch_size; - uint32_t unpatched_dim = dim / (patch_size * patch_size); + uint32_t unpatched_dim = dim / (patch_size * patch_size); + const uint32_t output_channels = latent_alpha_proj != nullptr ? 4 : 3; for (uint32_t k = 0; k < frames; k++) { for (uint32_t rgb_x = 0; rgb_x < rgb_width; rgb_x++) { @@ -438,33 +444,39 @@ void preview_latent_video(uint8_t* buffer, ggml_tensor* latents, const float (*l r += value * latent_rgb_proj[d][0]; g += value * latent_rgb_proj[d][1]; b += value * latent_rgb_proj[d][2]; - a += value * latent_rgb_proj[d][3]; + if (latent_alpha_proj != nullptr) { + a += value * latent_alpha_proj[d]; + } } } else { // interpret first 3 channels as RGB - r = *(float*)((char*)latents->data + latent_id + 0 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; - g = *(float*)((char*)latents->data + latent_id + 1 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; - b = *(float*)((char*)latents->data + latent_id + 2 * latents->nb[ggml_n_dims(latents) - 1]) * 0.5f + 0.5f; - a = 1; + r = *(float*)((char*)latents->data + latent_id + 0 * latents->nb[ggml_n_dims(latents) - 1]); + g = *(float*)((char*)latents->data + latent_id + 1 * latents->nb[ggml_n_dims(latents) - 1]); + b = *(float*)((char*)latents->data + latent_id + 2 * latents->nb[ggml_n_dims(latents) - 1]); } if (latent_rgb_bias != nullptr) { // bias r += latent_rgb_bias[0]; g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; - a += latent_rgb_bias[3]; } + // change range + r = r * .5f + .5f; + g = g * .5f + .5f; + b = b * .5f + .5f; // clamp rgb values to [0,1] range r = r >= 0 ? r <= 1 ? r : 1 : 0; g = g >= 0 ? g <= 1 ? g : 1 : 0; b = b >= 0 ? b <= 1 ? b : 1 : 0; - a = a >= 0 ? a <= 1 ? a : 1 : 0; - buffer[pixel_id * 4 + 0] = (uint8_t)(r * 255); - buffer[pixel_id * 4 + 1] = (uint8_t)(g * 255); - buffer[pixel_id * 4 + 2] = (uint8_t)(b * 255); - buffer[pixel_id * 4 + 3] = (uint8_t)(a * 255); + buffer[pixel_id * output_channels + 0] = (uint8_t)(r * 255); + buffer[pixel_id * output_channels + 1] = (uint8_t)(g * 255); + buffer[pixel_id * output_channels + 2] = (uint8_t)(b * 255); + if (latent_alpha_proj != nullptr) { + a = std::min(1.0f, std::max(0.0f, a + latent_alpha_bias)); + buffer[pixel_id * output_channels + 3] = (uint8_t)(a * 255); + } } } } @@ -474,16 +486,17 @@ static inline bool preview_latent_tensor_is_video(const sd::Tensor& laten return latents.dim() == 5; } -void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, const float (*latent_rgb_proj)[4], const float latent_rgb_bias[4], int patch_size) { +void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, const float (*latent_rgb_proj)[3], const float latent_rgb_bias[3], int patch_size, const float* latent_alpha_proj = nullptr, float latent_alpha_bias = 1.f) { uint32_t latent_width = static_cast(latents.shape()[0]); uint32_t latent_height = static_cast(latents.shape()[1]); bool is_video = preview_latent_tensor_is_video(latents); uint32_t frames = is_video ? static_cast(latents.shape()[2]) : 1; uint32_t dim = is_video ? static_cast(latents.shape()[3]) : static_cast(latents.shape()[2]); - uint32_t rgb_width = latent_width * patch_size; - uint32_t rgb_height = latent_height * patch_size; - uint32_t unpatched_dim = dim / (patch_size * patch_size); + uint32_t rgb_width = latent_width * patch_size; + uint32_t rgb_height = latent_height * patch_size; + uint32_t unpatched_dim = dim / (patch_size * patch_size); + const uint32_t output_channels = latent_alpha_proj != nullptr ? 4 : 3; for (uint32_t k = 0; k < frames; k++) { for (uint32_t rgb_x = 0; rgb_x < rgb_width; rgb_x++) { @@ -511,29 +524,31 @@ void preview_latent_video(uint8_t* buffer, const sd::Tensor& latents, con r += value * latent_rgb_proj[d][0]; g += value * latent_rgb_proj[d][1]; b += value * latent_rgb_proj[d][2]; - a += value * latent_rgb_proj[d][3]; + if (latent_alpha_proj != nullptr) { + a += value * latent_alpha_proj[d]; + } } } else { - r = latent_value(0) * 0.5f + 0.5f; - g = latent_value(1) * 0.5f + 0.5f; - b = latent_value(2) * 0.5f + 0.5f; - a = 1; + r = latent_value(0); + g = latent_value(1); + b = latent_value(2); } if (latent_rgb_bias != nullptr) { r += latent_rgb_bias[0]; g += latent_rgb_bias[1]; b += latent_rgb_bias[2]; - a += latent_rgb_bias[3]; } - r = std::min(1.0f, std::max(0.0f, r)); - g = std::min(1.0f, std::max(0.0f, g)); - b = std::min(1.0f, std::max(0.0f, b)); - a = std::min(1.0f, std::max(0.0f, a)); + r = std::min(1.0f, std::max(0.0f, r * .5f + .5f)); + g = std::min(1.0f, std::max(0.0f, g * .5f + .5f)); + b = std::min(1.0f, std::max(0.0f, b * .5f + .5f)); - buffer[pixel_id * 4 + 0] = (uint8_t)(r * 255); - buffer[pixel_id * 4 + 1] = (uint8_t)(g * 255); - buffer[pixel_id * 4 + 2] = (uint8_t)(b * 255); - buffer[pixel_id * 4 + 3] = (uint8_t)(a * 255); + buffer[pixel_id * output_channels + 0] = (uint8_t)(r * 255); + buffer[pixel_id * output_channels + 1] = (uint8_t)(g * 255); + buffer[pixel_id * output_channels + 2] = (uint8_t)(b * 255); + if (latent_alpha_proj != nullptr) { + a = std::min(1.0f, std::max(0.0f, a + latent_alpha_bias)); + buffer[pixel_id * output_channels + 3] = (uint8_t)(a * 255); + } } } }