梦工厂二楼会议室,三台工作站的散热风扇低速转着,蓝白色的屏幕光打在墙上,整个房间泛着冷调。

  许琛推门进来。

  顾有文蹲在主工作站后面,拿万用表测电源输出功率。老孟坐在中间那台机器前,反复刷新引擎的版本校验页面,同一串数字看了不下二十遍。

  “都准备好了?”

  顾有文从桌底下钻出来,拍掉膝盖上的灰。

  “硬件全部重装,系统盘格式化了三遍,显卡驱动今早从官网重新拉的。”

  他伸手挨个点了三台工作站。

  “左边跑渲染主进程,中间老孟负责AI推理端,右边做数据采集和实时监控。网络全断,蓝牙关了,USB口除了键鼠之外物理封堵。”

  许琛视线扫过三块屏幕。

  干干净净。没有预加载的模型文件,没有缓存目录,连桌面壁纸都换成了纯黑。

  裸机环境。

  林哲远的助理昨天发来的邮件,措辞客气,要求不含糊——不允许预渲染缓存,不允许提前加载模型库,所有演示从零开始。

  这种要求在行业里不算罕见。顶级技术评估,看的就是引擎在“零准备”状态下的真实表现。提前塞好缓存再跑一遍,那叫表演。

  “他想看真功夫,就给他看。”

  许琛在靠窗的位置坐下,椅子液压杆吱了一声。

  老孟回过头,推了推眼镜。

  三十出头的技术骨干瘦了一圈,颧骨比上次见面突出不少,但眼底的光很亮——连续高强度工作之后,只有对结果有底气的人才有的那种亮。

  “许总,神经渲染模块升级到最新迭代,昨晚跑了一整夜压力测试,零报错。”

  许琛点了下头。

  老孟做事他放心,手底下的活儿从来不打折扣。

  顾有文在旁边坐下来,两条腿盘进椅面里。今天难得穿了件没褶子的白衬衫,头发也拿发蜡抿了抿。

  只是眼底的乌青藏不住。

  “紧张?”许琛侧头看他。

  “有点。”

  顾有文没装。

  林哲远这个名字在全球视效行业里的分量,不需要解释。纳尔视效——好莱坞六大特效公司之一——干了十二年,从合成师一路做到技术总监,经手项目拿过两次奥斯卡最佳视效提名。三年前离职回国,手底下攥着一票从好莱坞跟回来的顶尖人才。

  这种人说“来看看你们的引擎”,本质上就是考试。

  命题考试,考官自带卷子,标准答案在他手里。

  及格线是好莱坞现役的工业标准。

  许琛靠进椅背。

  心态比顾有文稳得多。他比在场任何人都清楚这台引擎的能力边界——马文龙的技术团队攻关三个月,加上新材料动捕服的数据反哺,实时渲染管线跟半年前已经完全是两套东西。

  能扛住林哲远的测试?大概率能。

  但“大概率”跟“一定”之间,还隔着今天下午这场硬仗。

  ——

  下午两点十五分,门从外面推开了。

  走在最前面的男人四十出头,一米七八左右,灰色休闲西装内搭深蓝圆领T恤,没打领带。头发剪得很短,鬓角修得干净,皮肤偏深——长期加州阳光晒出来的色调。

  林哲远。

  身后两个人。

  左边那位年纪稍大,五十上下,亚裔面孔,无框眼镜,深灰Polo衫。右边是个二十来岁的年轻女孩,抱着笔记本电脑,脖子上挂着工牌。

  左边那位,许琛认得。

  麦克·陈。林哲远在纳尔的前同事,现任独立视效顾问,在好莱坞六大厂之间来回跑,专做技术审计。

  这种人的评价等同于行业盖章。

  林哲远带他来,意思很明确——自己看还不够,还要第三方见证。

  “许总,久仰。”

  中文流利,带一丝南方腔。走过来握手,力道不轻不重,见过太多大场面的人才有的分寸。

  许琛站起来回握。

  交手的瞬间,他注意到林哲远的视线没有停留在自己脸上——在扫。

  三台工作站的屏幕、机箱配置标签、散热器型号,连显示器的色彩校准贴纸都没放过。

  前后三秒。

  搞技术出身的人,进任何工作环境第一反应永远是看硬件。

  寒暄没超过半分钟。

  秘书端着茶水过来,林哲远摆手谢绝。他弯腰打开公文包,取出一块银灰色移动硬盘,外壳上贴着手写的三行编号。

  硬盘搁在桌面上,手指在上面轻按了一下。

  “我带了三个测试场景,难度递增。”

  看的是许琛。

  “如果你们不介意,我想先看看引擎的真实上限。”

  许琛往椅背上一靠,抬手做了个“请”的手势。

  老孟已经接过硬盘,走到主工作站前插入USB口。文件管理器弹出,三个文件夹,编号01、02、03。

  林哲远在旁边坐下,身体前倾,两手搁在膝盖上。

  “打开第一个。”

  ——

  01号文件夹。一段视频参考,一组粒子系统参数。

  画面加载出来——

  暴风雪。

  铺天盖地的风雪中,数以万计的冰晶颗粒在气流里翻卷、碰撞、折射。每一颗冰晶形态各异——六棱柱、薄片、不规则碎屑。日光从云缝穿透下来,打在晶体群上,折射出密密麻麻的彩虹色散射光斑。

  视觉极其华丽。

  许琛一眼看穿了技术核心:难点在光。

  每颗冰晶都是独立的折射体,光线入射后的路径要根据晶体形状、角度、材质属性逐一计算。一颗没什么。几万颗同时存在的时候,光线在它们之间的多次弹射和叠加,计算量是指数级的。

  “这段镜头是我在纳尔做的。”林哲远的手指点了下屏幕,“Houdini解算,十四个小时。渲染又花了六个小时。”

  二十个小时,一个镜头。

  好莱坞顶级特效公司的效率天花板。

  麦克·陈开口了,英文。

  “Thefastestreal-timesolutionI'veseenintheindustrytakesaboutsixminutesofpreprocessing,followedbythirtysecondsofrendering.”

  六分钟预处理,三十秒渲染。

  语调很平。但“平”本身就是态度——标杆在这里了,够不够得到,看你们的。

  顾有文站在老孟身后,喉结滚了一下。

  老孟两手搭在键盘边框上,十根手指微蜷着。

  许琛扫了顾有文一眼。

  顾有文接到这一眼,转头对老孟点了一下。

  老孟的肩膀沉下去半寸。

  手指落键。

  参数文件灌入引擎。

  屏幕左上角的状态栏没有弹出预处理进度条。

  引擎直接跳过了这一步。

  黑色画布上冰晶开始凭空生长。一颗,十颗,百颗,千颗——密度以肉眼可见的速度攀升,漫天暴风雪在几秒内填满了整个画面。

  光线紧跟着来了。

  日光穿过云层,打在冰晶群上,折射路径逐帧计算。屏幕从冷白迅速变得斑斓,碎裂的彩虹色散射在风雪中此起彼伏。

  右下角计时器在跳。

  21。28。35。

  冰晶密度拉满,画面进入循环播放。

  41秒。

  从参数导入到完整输出,没有预处理,没有分步骤,一气呵成。

  许琛没看屏幕。

  他在看林哲远。

  林哲远的后背离开了椅背,整个人的重心前移了大概五厘米。幅度很小,许琛抓得清清楚楚。

  麦克·陈手里那支翻译笔——他一直在随行本上做记录——悬在纸面上方两厘米的位置,一动不动。

  林哲远没出声。

  ——

  “第二个。”

  两个字,声调没起伏。

  老孟切到02号文件夹。

  参考画面加载出来的瞬间,老孟的手指在键盘边框上弹了一下。

  巨浪撞击悬崖。

  一整面十几米高的水墙全速撞上粗粝岩壁,撞击瞬间水体发生大规模碎裂。水墙解体后分解成数百万个独立水滴和雾气颗粒,每个水滴带独立物理轨迹,表面还要模拟张力效应——飞行过程中从球形到椭球形的实时形变。

  流体模拟领域的噩梦级场景。

  粒子数量是上一道题的几十倍,每个粒子的物理属性远比冰晶复杂。

  “这个镜头在《天国》里花了我们三周。”

  林哲远的声线压得低。

  “我不要求你们做到一样,只是想看看引擎处理极端粒子数量时的表现。”

  许琛嘴角微动了一下。

  话说得客气,眼神没有。林哲远看向屏幕的角度,是一个等着看天花板在哪里的人才有的角度。

  老孟手指已经动了。

  流体参数灌入引擎。

  屏幕上出现了一个极其短暂的画面冻结。

  大约零点三秒。

  许琛后背的肌肉绷了一下。

  林哲远嘴唇边的那块肌肉牵动了——幅度极小,但在灯光下看得清。

  他捕捉到了这个顿帧。

  紧接着,引擎完成自适应降采样,渲染管线重新进入满载状态。

  巨浪起来了。

  十几米高的水墙在屏幕上成型,全速撞向崖壁。碎裂模式层级分明——大块水团先从主体剥离,再碎成中块、小块、水滴、雾气。每一滴飞溅出去的水,都带着物理正确的抛物线弧度。

  顾有文往前走了半步。

  “放大右下角那片区域。”

  嗓子哑,字咬得清楚。

  老孟操作鼠标,框选右下四分之一画面,放大四倍。

  单个水滴的细节暴露出来。

  表面高光反射点位随运动轨迹实时偏移。飞行中水滴从球形被气流拉扯成椭球形,边缘的微观颤动和不规则波动——表面张力引起的真实形变——清清楚楚。

  逐帧计算,全实时。

  麦克·陈整个上半身探到了屏幕前面,无框眼镜几乎贴上显示器。

  他开口了。

  第一道题他全程没出声。

  “Thisisnotpre-baked?”

  老孟回过头,看了他一眼。

  然后伸手,指着屏幕左上角实时跳动的数字。帧率48到52之间波动,GPU占用率87%。

  全部是实时数据流。

  “Real-time.”

  老孟的英文口音很重,但每个音节砸得结实。

  “Whatyouseeiswhatyouget.”

  麦克·陈的身体靠回椅背。

  他手里那支翻译笔滚落桌面,掉到地上。

  没捡。

  ——

  五秒。

  会议室里只剩空调出风口的低频嗡鸣。

  林哲远站起来了。

  他绕过桌角,走到工作站正前方,弯下腰。距屏幕半米,视线在帧率数字和GPU占用率之间来回跳了三个来回,又移到渲染管线的实时日志——每帧解算耗时、粒子数量峰值、显存占用曲线。

  看了十五秒,直起身。

  转向许琛。

  “第三个场景比较特殊。不是我的素材——是下个月开机的一个真实项目的测试镜头。”

  他回到硬盘前,打开03号文件夹。

  画面加载出来。

  没有粒子。没有流体。

  一张脸。

  数字人面部特写,皮肤质感、毛孔、绒毛、虹膜纹理——建模精度全部拉到了影视级上限。静态模型,没有动画驱动。

  附带文件里是一组表情序列数据。从微笑到愤怒到哭泣,完整的面部肌肉运动曲线。

  林哲远的手指搭在桌沿。

  “要求:皮肤次表面散射必须实时计算,不能用预设SSS贴图。肌肉形变必须基于解剖学正确的面部肌群驱动,不能用BlendShape混合。毛孔级细节必须在运动中保持物理一致性。”

  一条一条说,每一条都是独立的技术高墙。

  说完,视线落到许琛身上。

  “这个,是我离开纳尔之前,认为至少还需要五年才能被实时引擎解决的问题。”

  五年。

  好莱坞十二年技术总监基于全球渲染技术趋势做出的判断。

  老孟的手指悬在键盘上方,回头看了顾有文一眼。

  顾有文没看老孟。

  他盯着屏幕上那张静态的数字人面孔。

  两秒。

  他走过去了。

  直接走到老孟的位置。

  “让我来。”

  老孟愣了一下,起身让出操作台。

  顾有文坐下去的瞬间,整个人的气质换了一层。

  肩膀沉,脊柱直,呼吸频率降下来。刚才还绷着的下颌松开了,换上了一种高度专注的松弛。紧张还在,但它被压到了某个更深的地方,完全不影响表面那层绝对的平静。

  许琛认得这个状态。

  顾有文每次坐到创作位上都是这副模样。外界所有干扰——人、评价、压力——全部被屏蔽在一道看不见的墙外面。他的注意力收缩到屏幕上那一小块发光的区域里,和技术本身完成某种只有他自己能感知的对接。

  操作台上,界面在他手下飞速切换——骨骼绑定数据接入、面部肌群拓扑映射、表情驱动曲线格式转换、AI推理端模型加载。

  每一步之间几乎没有停顿。

  回车。

  屏幕上,那张静态的面孔动了。

  微笑。

  嘴角的提升带着生理层面的精确——颧大肌率先收缩,牵动两侧皮肤组织向上、向外位移。颧骨区域的脂肪层在肌肉拉扯下产生堆叠,法令纹加深。下眼睑微微上提,鱼尾纹区域浮出几条极细的褶皱。

  皮肤次表面散射全程运转。光线穿透表皮之后在真皮层中的散射路径,随肌肉运动引起的厚度变化实时更新。

  愤怒。

  皱眉肌介入,两道眉毛向中线挤压,眉间皮肤皱缩出竖纹。上唇提肌和鼻肌同时激活,上唇微翻,露出一线齿缝。额头和面颊的色温升了零点几个色阶——面部充血的生理反应,引擎自动算了出来。

  哭泣。

  眼轮匝肌全面收缩,眼眶周围的皮肤挤压变形。泪腺区域出现水光——引擎基于液体表面张力模型实时生成的薄层水膜,在眼球弧面上缓慢扩散。

  第一滴泪从下眼睑溢出。

  泪水划过皮肤表面时,经过的区域反射率瞬间升高,干燥的毛孔纹理被短暂覆盖。

  没人要求这个细节。

  但引擎算出来了。

  从数据导入到第一帧画面输出:二十三秒。

  灰白色的原始模型,没毛发,没虹膜高光,没雀斑。就是一张纯几何的脸。

  但在肌肉驱动和光影计算的加持下,那张脸是活的。

  会议室里没有人出声。

  林哲远站在屏幕前面一动不动,右手垂在身侧,食指第一关节微微弯曲——下意识想抓住什么,又没抓到。

  麦克·陈身体前倾的姿势保持了至少十秒。翻译笔五分钟前掉在地上,还躺在那里。

  随行记录员停止了打字。笔记本屏幕上的光标孤零零地闪,后面一整行空白。

  ——

  十秒。

  林哲远退后一步,坐回椅子。

  右手搁在桌沿上,食指敲击桌面。

  笃。

  笃。

  笃。

  三下,节奏很慢,每两下之间的间隔够数完两个数。

  像一个人把脑子里的旧图纸一张一张撕掉,腾出空间来画新的。

  “我需要重新评估。”

  五个字出来的时候气息比之前短了一截。

  他转过头,看向许琛。

  十二年好莱坞顶级特效公司磨出来的技术判断力,十五分钟内被连续击穿三次。

  第一次是惊讶,第二次是动摇,第三次是坍塌。

  坍塌之后,林哲远瞳孔深处有什么东西亮了起来。被压了很久,重新点着的、属于技术人的那种光。

  “许总。”

  他上半身前倾了几度,两手交叠搁在膝盖上。

  “我现在理解你为什么敢做电影特效了。”

  许琛靠着椅背,一条腿搭在另一条腿上,没接话。

  但他注意到——林哲远说的不是“你们”。

  是“你”。

  麦克·陈弯腰捡起地上的翻译笔,在本子上飞速写了一行字,又划掉,重写了一行。

  顾有文站在操作台侧面,两手插在裤兜里。他的视线从林哲远身上移开,落到许琛脸上,嘴唇动了一下,没出声。

  林哲远的手从膝盖上抬起来。

  “关于后续合作的框架——”

  食指在桌面上虚画了一个圈。

  “我今晚需要重新拟一份方案。之前准备的那版,不适用了。”

  许琛的脚尖在地面轻点了一下,椅子转了十度,正对林哲远。

  “那份方案,原来的假设是什么?”

  林哲远没回避。

  “原来的假设是你们的引擎在粒子和流体上能达到行业均值的一点二到一点五倍,数字人实时渲染不在评估范围内。合作模式以技术授权加我方监制为主。”

  翻译过来——他来之前的预判是这边技术还行,离好莱坞第一梯队有明显差距,合作的话他出技术大头,梦工厂出基础框架和本土化优势。

  一个“我带你飞”的方案。

  现在废了。

  林哲远坐在椅子上,两手交叉搁在腹前,拇指无意识地互相摩擦。

  许琛右手食指在扶手上点了两下,起身。

  “林总奔波了一趟,先休息。方案不急。”

  手伸出去。

  林哲远站起来握住。

  这一次,比进门时多了两秒。

  松开手,他拿起桌上的移动硬盘收进公文包。走到门口停了一步,回过头。

  视线越过许琛和顾有文,落在操作台前的老孟身上。

  “你们的引擎,叫什么名字?”

  老孟抬头,推了推鼻梁上滑下来的眼镜。

  “还没正式命名,内部代号叫'烛龙'。”

  林哲远的嘴唇动了一下,把这两个字无声地复述了一遍。

  点了下头,推门出去了。

  走廊里脚步声渐远。

  门关上的那一瞬,顾有文双腿一软,整个人往后靠上墙面,沿着墙慢慢滑坐到地上。两手捂住脸,指缝里漏出一声闷哼,分不清是笑还是别的什么。

  老孟还坐在操作台前,盯着屏幕上仍在循环播放的数字人面孔,右手在键盘边框上敲了两下,调出后台性能监控面板。

  GPU温度曲线,最后一组测试期间飙到了89度。

  安全阈值95。

  差6度。

  老孟把这个数字看了三遍,默默关掉面板,谁也没告诉。

  许琛站在窗边,手机屏幕亮着。

  空白备忘录里,光标闪了两下。

  他在第一行敲了三个字——

  【烛龙引擎】

  光标闪了两下。

  手机又震了一次。

  林哲远的微信。没有文字,一个文件——《合作框架(修订版)》。

  4.7MB。

  许琛看了一眼时间。距离林哲远离开这间会议室,过去了不到三个小时。

  他说“今晚”,就真的是今晚。

  许琛没有打开文件。

  他把手机屏幕朝下扣在桌面上,靠回椅背,闭上眼。

  三个小时前那个说“我需要重新评估”的人,要给他看的东西——大概率,比白天那三道测试题更有意思。