王小虎的视线落在妹妹的涂鸦上。
泥土地就是一张无穷大的画纸。一根小树枝就是画笔。
王小花蹲在院子里,脑袋低着,头发扎成两根短辫子,辫梢上系着王小虎前阵子用红线头给她编的小花结,这会儿垂在脸颊两侧,随着她划线的动作一晃一晃。
她画得很认真。
先画了一个方块,是房子。再在房子上头画了个三角形,是屋顶。然后在屋顶旁边画了一个圆圈,拉出几条线——太阳。
“哥,你看。”
王小花头也没抬,用树枝指了指地上那个歪歪扭扭的小人儿。
“这个是哥哥。”
又指了指旁边两个更小的人。
“这个是小牛。这个是我。”
王小虎没说话,站在原地看着。
这画歪七扭八的,比例完全不对。房子比人还矮,太阳跟人头一样大。但就是这么简单的几笔,一个家的样子就出来了。
房子,人,太阳。
就这三样东西。
王小虎脑子里突然“嗡”地一下。
一个念头冒了出来,但还不清楚,像隔了一层水。他能感觉到那个东西就在那儿,可一伸手又摸不着。
他没急。
上次在院子里琢磨编译器的时候也是这样,灵感这东西急不来。越急越跑。
他干脆就在旁边蹲下来,看王小花画画。
“哥哥你蹲这儿干嘛?”王小花终于抬头看了他一眼。
“看你画画。”
“有啥好看的。”王小花嘴上这么说,手上的动作却明显更用力了,每一笔都划得更深。
她又画了一棵树。
树干是一条粗线,树冠是一团乱圈。
然后在树下面画了个小东西,四条腿,尖耳朵。
“这是小白?”王小虎问。
“嗯!”王小花很满意自己的作品,“小白在树底下睡觉。”
王小虎看着那个被称为“小白”的涂鸦。说实话,要不是她自己解释,他绝对猜不出来这是一匹狼。看着更像一只胖兔子。
但这不重要。
重要的是——她只需要知道“这是小白”就行了。
她不需要知道白狼的骨骼结构,不需要知道狼毛的生长方向,不需要知道狼爪子有几根趾头。
她脑子里想的是“小白在树下睡觉”,然后她就画出来了。四条腿,尖耳朵,树底下。够了。
就在这一刻,那层水破了。
王小虎脑袋里那个模糊的念头变得清清楚楚。
图形API是什么?
它不就是一套“画画的规矩”吗?
你有什么颜色的“颜料”,你就用什么数据。你有什么型号的“画笔”,你就调什么函数。你可以在哪几块“画布”上作画,你就往哪个缓冲区写东西。
至于这些颜料是怎么生产的,画笔是怎么制造的,画布是怎么织成的——画师不用管。
画师唯一要做的事情,就是拿起画笔,蘸上颜料,在画布上画。
这就是“抽象”和“封装”。
王小虎心里一阵畅快。
这个道理他早就懂了。之前的“庖丁解牛”是这个道理,“木偶戏”也是这个道理。操作系统是这样,编译器是这样,眼前的图形渲染,还是这样。
底层逻辑是通的。
换了个壳子而已。
他站起来,在院子里走了两步,脑子里的东西越来越清楚。
但紧跟着,一个问题冒了出来。
怎么把这套东西教给西山那帮人?
直接画一张架构图丢过去?
不行。
王小虎几乎是本能地否定了这个想法。
上次的教训太深了。他直接给出答案,结果差点把那帮人的道心给毁了。更别说还引来了“世界之种”的污染,连他自己都差点翻车。
捷径不能走。
走了就是害他们。
“老师”能做的事情,是给一个方向,给一个启发,给一个让他们自己能想明白的“工具”。
不能替他们想。
一替,就完了。
王小虎深吸了一口气,把这个念头压实了。
那就做一个“情景”出来。
一个看着像是小孩过家家,但里头藏着真东西的“情景”。
让他们自己去看,自己去悟。
就像之前每一次那样。
想到这里,他低头看了一眼王小花的涂鸦。
图层。
他脑子里蹦出了这个词。
小花画的这幅画,所有东西都在同一个平面上。房子、人、太阳、树、小白,全混在一块。
但真正的画不是这样的。
背景是一层。天空、太阳、远处的山。
景物是一层。房子、树。
人物又是一层。
不同的层,用不同的规矩来画。先画哪层,后画哪层,也得有个固定的顺序。
这就是渲染管线的雏形。
王小虎越想越兴奋,脑子里的构思像开了闸的水一样往外涌。
他还需要一套标准接口。
就像他只需要告诉小花——“用这根红色的树枝,在那块透明的油布上画一个太阳”。
他不需要跟她解释树枝的分子结构。不需要跟她讲油布的透光率。不需要告诉她红色是波长620到750纳米的电磁波。
她只需要知道三个东西:“红色树枝”、“透明油布”、“画”。
两个对象,一个动作。
这就是API的核心。
定义对象,定义行为。
就这么简单。
但简单的东西,往往最难讲清楚。因为太简单了,简单到所有人都觉得“不可能这么简单”,非得往复杂了想。
所以他不能讲。
他得让他们自己发现。
王小虎的目光从地上的涂鸦移开,开始在院子里扫了一圈。
靠东墙那儿,堆着一些前阵子做木工活剩下的边角料。松木、柳木、杂七杂八的,有长条的,有方块的,大小不一。
院子西北角,有几块前几天他去菜市场买鱼时顺手拿回来的油布。那天卖鱼的老李头说这几块油布不要了,上头有两个洞,补也补不好。王小虎觉得扔了可惜,就卷吧卷吧带回来了,想着以后总能用上。
还有角落里那一小堆各色沙土。红的、黄的、白的,是他之前从灵草空间里弄出来的,本来打算用来改良院子里的土壤。
他的视线在这些杂物上来回扫了三遍。
木头。油布。沙土。
脑子里“咔”地一声,最后一块拼图落了位。
他知道怎么做了。
但他没急着动手。
因为这个游戏不能光是他自己觉得好,还得让小花愿意玩。得让一个七岁的小丫头觉得有意思,她才会发自内心地去摆弄,去试。她的那些自然反应,才是西山那帮科学家最需要看到的东西。
如果小花都能看懂的规矩,那帮人没道理看不懂。
“小花。”
王小虎走到妹妹身边,蹲下来。
王小花正在给她画里的“小白”添尾巴,头也没抬:“干嘛?”
“你画的画好看。”
“我知道。”王小花理直气壮。
王小虎乐了。这丫头,越来越有底气了。以前在山洞里那个怯生生的小女娃,跟现在完全不是一个人。
“但是有个问题。”王小虎故意叹了口气。
“什么问题?”王小花这下抬头了。
“你看,你画在地上。”王小虎指了指那些涂鸦,“等会儿风一吹,沙子一盖,就看不见了。”
王小花低头看了看自己的画,没说话。
她知道哥哥说的是对的。之前她画过好几次,每次第二天起来就没了。
“我可以再画。”她说,语气里带着一点倔强。
“能是能。”王小虎点头,“但你还记得你昨天画的那幅吗?”
王小花想了想,摇头。
“忘了吧?”
“……嗯。”
王小虎看到她眼里有点失落。
他心里一软。别说是小孩了,谁费了半天劲做的东西,第二天就没了,都得难受。
“那哥哥给你做个新玩具。”他说。
“什么玩具?”
“一个能让你的画永远保存下来的玩具。而且比在地上画有意思多了。”
王小花的眼睛亮了一下,但很快又暗了。
“真的假的?”
她不是不信哥哥。哥哥说的话从来没有不算数的。但“永远保存”这四个字,对一个七岁的小女孩来说有点太大了。
“你什么时候见哥哥骗过你?”
王小花想了整整三秒钟。
“没有。”她承认。
“那不就得了。”
“那……是什么样的玩具?”王小花的好奇心终于被勾起来了,树枝也不画了,攥在手里看着王小虎。
“现在不告诉你。等做好了你就知道了。”
“哼。”王小花撅了一下嘴。
这时候,正在院子另一头蹲着看蚂蚁搬家的王小牛听到了动静,颠颠儿地跑过来。
“哥,做什么玩具?我也要!”
“你也有份。”
“耶!”王小牛高兴得直蹦。
王小花瞪了弟弟一眼:“哥说的是给我做的。”
“哥刚才说了我也有份!”
“那也是给我做的,你是捎带的。”
“我才不是捎带的!”
眼看两个小的又要拌嘴,王小虎伸手一人摁了一个脑袋。
“都有,别吵。”
“哥你先说是什么嘛!”王小牛不死心。
“说了现在不告诉你们。不过——”王小虎看了看两个小家伙,“你们俩得帮忙。”
“帮什么忙?”两个人异口同声。
“一会儿你就知道了。小牛,你去把东墙那堆木头边角料给我搬过来。小花,你去把西北角那几块油布拿来。”
“哦!”
两个小的跑开了。
王小牛跑到东墙边上,看着那堆木头边角料,二话不说,两只手一抱,一整堆大大小小的木块全搂在怀里。这要搁在一般七岁的孩子身上,能搬动三四块就不错了。但王小牛经过灵泉水淬炼,这点分量跟端盘子差不多。
他抱着一堆木头哗啦啦走回来,往王小虎面前一放。
“哥,够不够?”
“够了。”
王小花那边也拿着油布跑回来了。油布叠了几层抱在怀里,她特意拍了拍上面的灰。
“哥,这油布上有两个洞。”
“没事,有洞的不用。”
王小虎在院子中间盘腿坐下来,把木头边角料和油布在身前摊开。然后他又起身,走到角落,用一个破瓦罐装了几捧不同颜色的沙土端过来。
红沙。黄沙。白沙。
他把这些东西分门别类地摆好,然后看着它们,脑子里的构思一步步具体化。
这个“玩具”到底应该是什么样的?
他需要让小花理解“图层”的概念。
最直观的办法——叠起来。
他拿起一块油布,展开,摊在地上。这块油布半透明,有点泛黄,但透过它能隐约看到底下的泥地。
这是第一层。
底层。背景层。
他又拿起另一块油布,叠在第一块上面。
第二层。景物层。
如果再叠一块,那就是第三层。人物层。
每一层上面画不同的东西,叠在一起,就是一幅完整的画。
但光叠油布不够。还得有“画笔”和“颜料”。
沙土就是颜料。红沙、黄沙、白沙,三种颜色。
画笔呢?
王小虎拿起一根细长的木条,比划了一下。这根木条大概一尺来长,指头粗细,刚好能握在小孩手里。如果把一头削尖,就能蘸着沙土在油布上画出线条。
但这样太粗糙了。
他想了想,又拿起另一根短一些的木条。这根更粗,截面是方的。如果把一头削平,就能像刷子一样,抹出一大片颜色。
一根细的画线条,一根粗的涂色块。两种“画笔”。
然后他需要定义“规则”。
哪种画笔只能在哪一层上用。哪种颜色对应什么东西。先画哪层,后画哪层。
这些规则不能他来定。
得让小花自己去试。
让她在试的过程中,自然而然地发现——啊,原来背景得先画,人物得最后画,不然人就被盖住了。
这个“自然而然”,才是最关键的。
王小虎越想越觉得这事儿能成。
他正琢磨着怎么把木条削好,院门外忽然传来一阵脚步声。
“虎子!在家不?”
是何雨柱的声音。
王小虎抬头。
何雨柱从院门口探了个脑袋进来,手里拎着一个粗布口袋,里头鼓鼓囊囊的。
“柱子哥,进来吧。”
何雨柱大步走进来,看到院子当中摆了一堆木头、油布和沙土,愣了一下。
“你这是捣鼓啥呢?”
“给小花做个玩具。”
“玩具?”何雨柱走过来,蹲下看了看那堆东西,挠了挠头,“这……木头加油布加土,能做啥玩具?”
“做好了你就知道了。”王小虎说,“你来干嘛?”
“哦,对。”何雨柱拍了一下脑门,把手里的粗布口袋递过来,“厂里食堂今天中午蒸包子,面发多了。我爹让我拎两斤发面回来,我寻思着给你们也送点来。”
王小虎接过口袋,掂了掂,大概有个三四斤的分量。
“这么多?你们家还够用不?”
“够够够。”何雨柱摆手,“我爹那人你还不知道?弄回来的面够我们爷仨吃三天的。这几斤是多出来的。”
王小虎没跟他客气。跟傻柱之间的交情,用不着推来推去。
“行,回头我给你们送点东西过去。”
“甭甭甭。”何雨柱一听就急了,“我送个面你还得回礼,那多不够意思。”
“有来有往。”
何雨柱张了张嘴,想反驳,但想起这四个字还是王小虎教他的,又把话咽回去了。
他没再纠结这个事儿,而是好奇地看着地上那些东西。
“虎子,你真能用这些破烂做出玩具来?别到时候小花不乐意。”
旁边的王小花听到了,立马接话:“我哥做什么我都乐意!”
何雨柱被噎了一下,笑了:“行行行,你哥最厉害。”
“那当然。”王小花理直气壮。
何雨柱没待多久,又跟王小虎扯了几句院里的闲话就走了。说是许大茂今天又在院里显摆他爹从厂里弄回来的一个铁皮饭盒,结果被刘光福给摔地上了,两个小子差点打起来,让刘海中一人一巴掌给扇回去了。
“那铁皮饭盒摔瘪了,许大茂回去嚎了半天。”何雨柱说这事儿的时候,语气里带着幸灾乐祸。
王小虎听着也觉得好笑,但心思没在这上头。他已经迫不及待想开始做了。
等何雨柱走了,院子里又安静下来。
王小虎拿起一块方正的松木边角料,在手里翻了翻。这块木头大概巴掌大,表面还算平整。他从旁边拿起砍刀,开始一点一点地修整。
他要做一个“底座”。
准确地说,是一个能把三层油布固定住的“画架”。
这东西不用太复杂。底下一块平板,上面竖两根立柱,立柱之间拉三道槽。每道槽里能夹住一块油布,油布能抽出来也能放进去。
王小虎动手的速度很快,但他有意放慢了节奏。
因为他一边做,一边还在想另一件事。
这个玩具做出来之后,光给小花玩还不够。他还得想一个办法,把小花玩这个玩具的“过程”,把她从摸索到理解的那个弧线,完完整整地传递给西山那帮人。
光靠口述?不行。
太干巴了。
口述能传达信息,但传达不了“顿悟”那一下的感觉。
得让他们也经历一遍。
用同样的玩具,同样的规则,让他们自己上手试。
让那帮搞了半辈子高精尖的科学家,像一个七岁的小女孩一样,蹲在地上,拿着木棍在油布上画画。
让他们在这个过程中,自己发现——原来,如此复杂的图形渲染,底层的逻辑就这么简单。
就是分层,排序,用对工具。
王小虎想到这里,心里踏实了。
他手上的活儿也没停。
砍刀在松木上刮出一圈圈细碎的木屑。王小花和王小牛在旁边看着,时不时凑过来问一句“好了没”。
“没呢。”
“快了没?”
“也没呢。”
王小花撅着嘴,拿树枝在地上戳。
王小牛则蹲在旁边,两只胳膊搭在膝盖上,眼睛一眨不眨地盯着哥哥手里的木头。
“哥,你做的这个是啥?”
“画架。”
“啥是画架?”
“就是架画的架子。”
王小牛想了想,觉得好像懂了,又好像没懂。
他决定不问了,等做好了就知道了。
底座修整好以后,王小虎开始削立柱。两根手指粗的松木条,用砍刀修成方形截面的细柱,再在侧面各刻出三道浅槽。
刻槽的时候他格外仔细。
这三道槽就代表三个图层。最底下的是背景层,中间的是景物层,最上面的是人物层。油布从槽里插进去,就固定住了。
他把两根立柱竖在底座的两端,用灵力微微加热木头接缝处,让木质纤维紧紧咬合在一起,比用钉子还牢固。
“差不多了。”
王小虎把做好的画架放在地上,退后两步看了看。
一个巴掌大的木底座,两根筷子粗的立柱,中间三道细槽。看着就是个简简单单的木头架子,没什么特别的。
但王小虎看着它,心里涌上一股说不清道不明的情绪。
这个破烂玩意儿,承载的东西比它看上去重得多。
他要通过它,让那些顶尖的脑子理解一个概念——你不需要知道所有的东西。你只需要知道你手里有什么工具,你要画什么东西,以及按什么顺序画。
剩下的,交给底层去处理。
你只管画。
他拿起油布,开始裁。
用砍刀沿着画架的尺寸,裁出三块大小一样的长方形油布片。每一块刚好能插进画架的槽里,不多不少。
有洞的那两块他挑出来扔在一边,完好的裁了三片。
“小花,过来。”
王小花一溜小跑地过来了。
“这就是玩具?”她看着那个木头架子,脸上的表情有点犹豫。
说实话,她有点失望。
她以为哥哥说的“新玩具”会是什么特别厉害的东西,至少得比地上画画好玩。结果就是个小木架子?
王小虎一眼就看出她在想什么。
他也没解释,而是把三块油布一张一张地插进画架的槽里。
三层油布叠在一起,半透明的,能隐约看到底下的泥地。
“来,你看。”王小虎拿起两根削好的木条,一根细的,一根粗的,递给王小花。
又把三碗不同颜色的沙土推到她面前。
红的。黄的。白的。
“细的这根,蘸了沙土画线。粗的这根,蘸了沙土涂色块。”他说,“你试试。”
王小花接过木条,还是有点迷糊。
“画在哪儿?”
“画在油布上。”
“哪块油布?”
“你觉得呢?”
王小花看着那三层叠在一起的油布,想了想。
然后她拿起细木条,蘸了红沙,直接在最上面那层画起来。
一个太阳。
红色的圆,几条射线。
“好。”王小虎说,“再画个人。”
王小花又画了个小人。
“再画个房子。”
房子也画了。
现在最上面那层油布上有太阳、人和房子。
然后王小虎伸手,把最上面那层油布抽出来。
底下第二层是空白的。
“现在,在这层上画个房子试试。”
王小花一愣:“刚才不是画过了吗?”
“画过了的那张收起来了。这是新的一层。”
王小花虽然不太明白为什么要重复画,但还是照做了。她在第二层油布上画了一个房子。
然后王小虎把第一层油布又插回去。
两层油布叠在一起。
最上面那层的太阳和人,和第二层的房子,重叠在了一起。因为油布半透明,两层的图案都能看到。
王小花眨了眨眼。
她盯着那两层叠在一起的画面,脑袋里似乎有什么东西在转。
“哥……”
“嗯?”
“我把第一层拿掉的话……”
“你试试。”
王小花伸手,把最上面那层油布抽出来。
太阳和人不见了。
只剩下第二层的房子。
她又把第一层插回去。
太阳和人又出现了。
她的眼睛越来越亮。
“哥!我懂了!”
“你懂什么了?”
“每一层画不同的东西,叠在一起就是一整幅画!但是拆开了,每层又是单独的!”
王小虎没说话,但心里踏实了。
七岁的小丫头,不到三分钟就摸到了核心。
他要亲手为西山那群虔诚的信徒,也为他最心爱的妹妹,把这个玩具做到最好。
一个能够开启全新世界大门的,创世的玩具。