给 Gemini Omni 1.1 Flash 写灯光 prompt:点名光源,别点名数值
我们往一条 Gemini Omni 1.1 Flash 的 prompt 里写了一条灯光指令,然后不是眯着眼看,而是把回来的东西量了一遍。其中一半原样到达了。另一半——大多数人以为是简单那部分的那一半——没有。
这条 prompt 点名了一扇朝西的窗户作为主光,一盏钨丝台灯作为比它低一档、更暖的第二光源,灰尘在光束里翻转,以及一种高光柔和过渡的胶片。八秒,720p,0.72 美元。
两个灯具都到了。在两者同时可见的每一帧里,台灯都比日光更暖——两秒半处红蓝比 3.02 对 1.49——而我们取样的四帧里,灰尘都在光束中翻转。没有到达的,是挂在它们身上的那个数量。我们要的是台灯比窗户低一档;而我们量到的差距,随着片子推进,从比窗户低 1.47 档一路摆到比窗户高半档。这就是本文的论点——Omni 接收您能指着说的那些光源,然后悄悄丢掉挂在它们身上的数字。

Google 的文档自己跟自己打架,而这很有用
Veo prompt 参考带着 Omni 共用的那套词汇,它把氛围定义为*「颜色和光如何为场景做贡献,比如蓝调、夜晚,或者暖调。」*只读那张要素表,您会得出结论:一条灯光指令长的就是「warm tones」这个样子。
现在再读那些示例 prompt。Omni 页面上那个单场景示例以*「Sunbeams illuminate dust motes in the air.」收尾——八个词里有一个光源、一个方向和一种可见的介质。Google 的 Veo 3.1 prompt 指南走得更远:其中一个办公室场景是「lit by the harsh fluorescent overhead lights and the green glow of the monochrome monitor」,配上「Retro aesthetic, shot as if on 1980s color film, slightly grainy.」*
两个灯具,各带一种颜色和一种质地,外加一个年代。没有主光、没有辅光、没有比例、没有开尔文——它描述的是一个您可以走进去的房间。表格和示例之间的这道缝,是文档里最可操作的东西:照着示例写。
物理光源胜过灯光行话
任何有片场背景的人,本能反应都是部门术语——主光从相机左侧来,辅光低两档,轮廓光从背后打。下面就是把这个本能写出来的样子,旁边是我们真正渲染出来的改写版。只有第二条是生成过的;第一条展示的是形状,不是一个测量结果。
Cinematic shot of a wooden chair in an empty apartment. Beautiful dramatic
lighting with a strong key light from camera left and soft fill from the
right, plus a rim light separating the subject from the background. Moody
atmosphere, golden hour vibes, professional color grading, high dynamic
range, rich shadows, warm cinematic tones, film look, shot on a cinema
camera, high contrast, 8k, masterpiece quality. Beautiful and atmospheric
throughout.
里面没有一处告诉模型任何东西在哪里。它不是在模拟灯具——它预测的是一个被这样描述的画面长什么样,而「key, fill, rim」几乎适配有史以来每一个专业拍摄的画面,所以这个说法关于这一个画面什么都没说。
我们真正跑过的那版,八秒,720p:
Late golden hour inside a nearly empty apartment. 35mm lens at f/2.8,
camera on a slow arcing dolly drifting left around a wooden chair. Low sun
through a west-facing window throws a long parallelogram of warm orange
light across a bare floor, dust suspended and turning through the beam. A
practical table lamp with a tungsten bulb glows in the shadowed half of the
room, a full stop under the window and noticeably warmer. As the camera
arcs, the window light rakes across the chair's back and the cool shadow
side of the room enters frame, so warm and cool sit inside the same shot.
Kodak Vision3 250D character: soft highlight roll-off, gentle halation
around the window. Ambient: distant traffic, no music.
里面每一条灯光从句都点名了房间里的某样东西:一扇带方位的窗、它的光在地板上做出的形状、光束里的颗粒、一盏带着某种灯泡的台灯。模型见过几百万帧低角度阳光穿过窗户的画面,而被标成「rim light at 45 degrees」的画面极少。
测量结果说了什么
我们抽了四帧——0.5、2.5、5.0 和 7.5 秒,在 24 fps 下就是第 12、60、120 和 180 帧——并在每一帧里对每个表面各取一个矩形取样。暖度是一个区域平均颜色的红蓝比,取的是交付时原样的 8 bit 数值;档位差是先还原传递函数、再在线性化 sRGB 上算出的 Rec.709 亮度比的以 2 为底的对数;饱和是一个区域里被顶在某个通道上限的像素占比。
因为相机在走弧线,一个区域必须跟住一个被点名的表面,而不是画面上的固定位置,所以这些矩形值得公布出来——按 1280 乘 720 画面里的 (x0, y0)–(x1, y1) 写,它们是:
| 帧 | 阳光照到的地板 | 钨丝台灯 | 两者都照不到的墙 | 窗玻璃 |
|---|---|---|---|---|
| 0.5s(n=12) | (330,570)–(470,650) | — | (950,120)–(1090,240) | (235,70)–(345,310) |
| 2.5s(n=60) | (255,545)–(395,615) | (1190,320)–(1250,380) | (880,120)–(1020,240) | (110,50)–(220,270) |
| 5.0s(n=120) | (175,540)–(315,610) | (955,320)–(1015,380) | (550,100)–(690,220) | — |
| 7.5s(n=180) | (80,595)–(220,665) | (740,315)–(790,370) | (950,120)–(1090,240) | — |
这些帧用 ffmpeg -i golden-hour-interior.mp4 -vf "select=eq(n\,12)" -vsync 0 -frames:v 1 frame.png 取出。下面的每一个数字,都由同一个脚本针对上面链接的同一个文件跑出来。
| 红蓝比 | 0.5s | 2.5s | 5.0s | 7.5s |
|---|---|---|---|---|
| 阳光照到的地板(日光主光) | 1.45 | 1.49 | 1.72 | 1.94 |
| 钨丝台灯 | — | 3.02 | 2.55 | 2.30 |
| 两个光源都照不到的墙 | 2.02 | 2.15 | 1.96 | 1.52 |
**暖度的排序守住了。**只要两者都在画面里,钨丝台灯读起来就比日光更暖——3.02 对 1.49,然后 2.55 对 1.72,然后 2.30 对 1.94。我们要的是「noticeably warmer」,每一次都拿到了。这个差距随着片子推进在收窄,但从没有合上。
暖和冷确实落进了同一帧——这正是那条指令的目的。在 7.5 秒处,单独一帧里带着三级分离:远墙 1.52,阳光照到的地板 1.94,台灯 2.30。两个被点名的灯具靠自己就产出了这个跨度。
**不过调度这件事,我们不能记在它头上。**prompt 要求冷的那一侧随着相机的弧线运动进入画面,而那面墙确实结束时比开始时更冷——两秒半处 2.15,对着七秒半处 1.52。但它并不是干干净净地走到那里的,中间读到的是 1.96,而且那也不是同一面墙:弧线运动挪动了画面,所以早期的取样落在台灯的照射范围之内,晚期的落在它之外。离一个暖光源的距离,和「照做了」一样能解释这个摇摆,而四帧分不开这两者。
**幅度失败了,而且在漂。**我们要的是台灯「a full stop under the window」。拿日光照到的地板去比台灯自己的暗部,这个差距走的是:两秒半处 1.47 档,五秒处 0.64 档,七秒半处 −0.47 档——到最后,台灯读起来比那束它被要求待在其下方的阳光还亮。从来没有出现我们要的那一档,甚至连一个稳定的错误答案都不是。
**我们本以为窗户会过曝。它没有。**在开场那一帧里,窗玻璃看着像被切掉了,其实没有:红通道达到 255 的只占它 0.81% 的像素,绿通道 0.03%,而蓝通道从来没到过——整帧里蓝通道的峰值也只有 249。这些数值反而挤在最顶上的那几个码值里:窗玻璃的红通道中位数是 249,第 99 百分位是 254,而玻璃保留了红蓝比 1.11 的一点淡淡暖色偏,而不是变成白色。一个柔和的肩部,看起来就是这样。我们说不了的是:这是我们造成的。一个从来没顶到上限的场景,从外面看是一模一样的,而我们手上并没有一版去掉胶片那句话渲染出来的同一镜头可以拿来比。
按每一条指令属于哪一类去排序,规律就很难错过:物理的、可点名的东西到达了,数值上的幅度没有,而调色语言在没有对照渲染的情况下,我们往哪一边都判不了。
实景光源能把一个运动镜头拴住
我们找到的最有用的招,是在画面里放一个看得见的灯具。一盏实景光——台灯、显示器、蜡烛、霓虹招牌——给了模型一个固定的东西去保持一致,而一致性正是最先垮掉的。相机按 prompt 向左走弧线;台灯在半秒处不在画面里,两秒半时到了右边缘,后半段完全可见。在它离开边缘的那两帧里,它守住了自己的那个角落、它相对踢脚线的位置,以及它投在墙上的那摊光。在画面里这件事本身让它稳住了。
而只被描述成一种质地的灯光——「moody」「dramatic」「low-key」——没有给模型任何可以守住的东西,所以它会漂,相机一动漂得最快。如果您的镜头有任何运动,就往里面放一盏灯。

一天中的时刻胜过任何形容词
「Golden hour」干的活儿比「cinematic」「moody」和「dramatic」加起来还多,因为它一次固定了三个变量:太阳的高度、它的颜色,以及每一道影子的长度和柔硬。没有人告诉模型影子是长的——影子自己就长了。一天里其余的时刻同样值得刻意去选:
- 蓝调时刻——没有硬影子,一层冷色偏,而实景光源占了主导,因为它们盖过了天光。
- 正午顶光——短而硬的影子直直向下,高对比,不讨好人,也正因此有用。
- 夜晚——除非您给一个主光,否则没有主光。点名灯具,因为光写「night」会让模型发明一个它守不住的月光光源。
方向也要用物理的方式指定:「backlit by a streetlamp behind her」给出一道轮廓光和一道朝着相机的长影子,而光写「backlight」给的是模型自己高兴的任何东西。
胶片和 LUT 语言:有一部分是能带过去的
这里诚实的答案是「一部分」。年代和胶片语言是写进文档的做法,不是民间传说——Google 把*「shot as if on 1980s color film, slightly grainy」*写进了自己的示例,并把 film noir 这类电影风格关键词列为一个风格要素,这一点我们更早那篇 prompt 指南讲过。
而我们这段片子能支持的结论要窄一些。我们要的是「Kodak Vision3 250D character: soft highlight roll-off, gentle halation around the window.」某种类似泛光的东西出现了——窗户周围的一圈辉光,开场帧下方一处光斑伪影——不过把它叫作 halation 是我们的解读,不是一次测量。而同一口气里要的那个 roll-off,在数字里是有的:高光朝着上限压缩,却没有穿过去。但单独一次渲染没法告诉我们,干活的究竟是胶片名字、那句大白话描述,还是两者都不是——一扇没被切掉的窗户,也可能就是这个场景本来的样子。这个测试的对照版本我们没有跑过。
我们的经验法则是:
- **可见的属性能带过去。**颗粒、泛光、压死或提亮的黑位、低对比和高对比、黑白、重暗角——每一个点的都是您能在一张静帧上指出来的东西。
- 颜色关系大体能带过去。「Teal shadows and orange skin」描述的是两样可测量的东西;光写「teal and orange」则是一种调色时尚,也会被当成时尚处理。
- 只有名字没有描述的风格不可靠。「Cinematic」「film look」和「professional color grading」什么都没有收窄。「Bleach bypass」处在中间:它点的是一道真实的工艺,所以要写出它做了什么——极高的对比、去饱和的颜色、黑位里保留的银。
- **「Low contrast log」**我们会避开:那是一条为了事后调色而设计的采集曲线,而模型内部没有后期这一步。您会拿到一张平的、发奶白的画面,而且回不去。

空气感是免费的细节,直到它变成噪音
悬浮颗粒是灯光词汇里最便宜的写实手段,因为它们让光本身变得可见。我们要的是「dust suspended and turning through the beam」,而我们取样的四帧里尘埃都在——这正是 Google 用*「Sunbeams illuminate dust motes in the air.」*去够的那个效果。薄雾、浓雾、烟和蒸汽的原理一样,它们把一个光源变成一个有形状、有衰减的体积。
失败模式是堆叠。雾加上耶稣光加上镜头光斑加上焦外光斑加上灰尘,给出的是一个空气感把主体吃掉的画面,而模型也没办法知道这五样里哪一样才要紧。一个镜头一种空气元素,为您点名的那个光源服务。只有当您希望观众注意到相机时才去要 lens flare——反正镜头对着低角度太阳时它自己就会来,就像在我们这条里那样。
诚实的限制:您没法把任何东西调回去一点
prompt 语言几乎是唯一的杠杆,而 Google 的 Omni 参考写得很明确:*「不支持系统指令、temperature、top_p、停止序列和负面 prompt。」*没有引导强度,风格上也没有强度值。如果调色回来暖了百分之十,这里没有可以减掉的那百分之十——您得重写那句话,而画面里其余的东西会跟着一起变。
第二条是可复现性。同一条灯光 prompt 不会两次返回同一束光;确定性只来自 seed。任何一个值得留下的观感,都要把它的 seed 记下来,并且要预料到改一个词就会把您扔回未知地带。
第三条是后期。编辑用的 prompt 是存在的——Google 给的例子是*「Change the lighting to be more dramatic」——但那是重新生成这个镜头,而不是给它做校色,而模型卡警告说「在编辑全程保持完全的一致性」*仍然是一项挑战。在您的剪辑软件里给交付出来的文件调色。每一帧都带着一个谁也关不掉的 SynthID 水印。
在光上做迭代要花多少钱
灯光是一条 prompt 里您重写得最多的部分,因为这里没有什么可以微调。所以要紧的是犯错的成本,而各家提供商在 4K 上分歧最大:Gemini Omni 1.1 Flash 在 E2X 上是每秒 0.18 美元,而直连 Google 是0.3041 美元——低了大约百分之四十一,是我们所有档位里最大的差距。在我们上面,WaveSpeed 是每秒 0.39 美元,Runware 0.32 美元,fal 0.30 美元。Replicate 不在这个比较里——它的条目没有给这个模型挂任何每秒的数字。一条八秒的 4K 交付在我们这里是 1.44 美元,从 Google 那里是 2.43 美元;十秒是 1.80 美元对 3.04 美元。
这个差距本质上是各自阶梯相对自家 720p 价格的倍率之差。两边都从低三分之一起步,两边在 1080p 都加了一半;分岔出现在最顶上那一档,Google 的倍率是三,我们的是二。完整的提供商对比另有一篇。
工作流也就跟着出来了。在 360p 上探索,那里一条四秒的片子是十二美分,而您依然能判断光源位置、影子方向、冷暖分离,以及那盏实景灯有没有待在原地。然后一次性定稿:十遍 360p 加一条八秒的 4K 母版是 2.63 美元,对着同样十一个活儿全跑 4K 的 8.64 美元。360p 显示不出来的是细部质感——颗粒、泛光、高光过渡——所以 prompt 里胶片那一半要在 720p 上测,就像我们做的那样。
价格核对于 2026 年 8 月 29 日,可能变化;在做采购决定之前,请核对各家服务商当前的定价。这是一次有范围的比较,不是宣称在任何配置下都最便宜。
常见问题
在 Gemini Omni 1.1 Flash 的 prompt 里该怎么描述灯光?
点名物理光源,而不是灯光的角色。「Low sun through a west-facing window」胜过「key light from camera left with soft fill」。Google 自己的示例也是这么做的——其中一个场景是被「harsh fluorescent overhead lights and the green glow of the monochrome monitor」照亮的:两个灯具,各带一种颜色和一种质地,没有部门术语。
点名一种像 Kodak Portra 这样的胶片会改变输出吗?
会一部分,而我们说不清其中有多少来自这个名字本身。我们把「Kodak Vision3 250D character」和对 halation 与 roll-off 的明确描述配在一起;某种类似泛光的东西出现了,而高光也确实守在上限之下、没有被切掉。但在没有一版去掉这个名字的渲染之前,这两个结果都不能记在胶片名字头上,而那一版我们没有做。胶片和年代语言是写进文档的做法——Google 的 Veo 3.1 指南把「shot as if on 1980s color film, slightly grainy」写进了一个示例——但要同时点名胶片和您想要的那些属性。
能给 Gemini Omni 设定以开尔文为单位的色温吗?
不能作为参数设定,而写在 prompt 文本里的开尔文数字并不可靠。点名灯泡或日光条件是有用的:tungsten、sodium vapour、fluorescent、candlelight、low sun。在我们的测量里,在同时包含两者的每一帧中,钨丝台灯都比穿过窗户的阳光更暖——被点名的灯具之间的相对颜色是一个真实的控制手段,即便绝对数字不是。
我要的是冷色,为什么镜头的暗部那一侧出来是暖的?
通常是因为确实有暖的东西照在上面。在我们这条片子里,墙面的读数从红蓝比 2.15 一路降到 1.52,但相机在走弧线,所以那是不同的表面而不是同一面墙在变冷——而偏暖的那些读数,来自一面坐在钨丝台灯照射范围内的墙。无论如何这个教训都成立:一个表面读起来是什么,取决于什么照到了它。给冷的那一半一个属于它自己的光源,比如一扇对着蓝色暮空的窗或者一台显示器,而不是把它描述成暖色的缺席。
相机移动时,实景灯会保持一致吗?
在我们这条片子里,会。一盏台灯在一次弧线运动中途进入画面,并且在它离开边缘的那两帧里,守住了自己的角落、相对踢脚线的位置,以及投在墙上的那摊光。一个看得见的灯具给了模型一个具体的东西去保持不变;而一种情绪没有锚点,相机一动它漂得最快。
同一条灯光 prompt 会给我两次同样的光吗?
不会。可复现性只来自 seed,因为采样参数并没有暴露出来。任何一条产出了值得留下的观感的 prompt,都要把 seed 一起记下来,而且要预料到即便固定了 seed,改一个词也会让结果移位。
在 4K 上做灯光迭代要花多少钱?
截至 2026 年 8 月 29 日,一条八秒的 4K 片子在 E2X 上是 1.44 美元,直连 Google 是 2.43 美元,十秒是 1.80 美元对 3.04 美元。在 360p 上探索——一条四秒的片子十二美分——然后在顶端一次性定稿:十遍 360p 加一条 4K 母版是 2.63 美元,对着同样十一个活儿全跑 4K 的 8.64 美元。
在哪里试这些
上面那段片子是通过文生视频跑的,720p 下每秒 0.09 美元;如果您更愿意把一张打好光的静图交给模型,图生视频和首尾帧生视频是同样的价钱。第一次用?先从标签语法和镜头数量的行为开始——一条灯光 prompt 写在一段被模型悄悄切成三个镜头的片子上就白写了。而如果您的光必须活过十秒,延伸是另一个独立的问题。