第303章 一行代码让图灵奖大佬骂娘 (第2/2页)
————这不是实时渲染的,我只能确认这一点。」
伊万操作着克里斯在洋馆里逛了逛,完全看不出有什麽端倪。
半晌,他才无奈地将游戏机关掉。
「GAMENOVA在加密上一直都做的很好,想要啃《生化危机》的源码来搞清楚背後的奥秘恐怕是不太现实。」
「不过————」
伊万顿了顿,在自己的PC上轻敲几下,「我们可以从GAMENOVA已经开源了的《DOOM》和NovaEngine的技术实现来倒推。」
「那太好了,你快点开始吧。」
Sun的总裁显然已经有些按捺不住了。
越是拖延下去,SPARC的问题就会越严重。
这可真是伤筋动骨的大事儿。
如果能靠着这次机会抄明白GAMENOVA的作业,说不定还能有一战之力,弯道超车。
等到他们明年的秘密武器64位0.18微米处理器UItraSPARCII走出实验室,有望一鼓作气干掉整个市场。
啃源码并不是件多轻松的事情。
哪怕是基於N语言编写的易读性极强的代码,哪怕伊万本身就是这方面的专家,这也耗费了他大量的精力。
「怪了。」
伊万眉头紧皱。
GAMENOVA可以说是业界里最不讲道理的公司了。
它的每一步实现都在自己的预期之外。
但偏偏它还就能用这种完全非主流的方式做到自己想做的一切。
还比其他循规蹈矩的人做的都要好!
太特麽气人了!
「怎麽?」
——
「平方根。」
伊万缓缓吐出两个词儿,而後便陷入了彻底的沉默。
不管是电子游戏还是商务软体之中,都存在着一个看似不起眼的算法函数。
Sqrt,也就是求平方根的函数。
计算角色、物件、场景中的空间距离、运动状态等各种需求,都需要频繁调用平方根的计算。
可以说这玩意儿就是3D游戏的基石。
而它往往也是计算机中运算开销最大的函数之一。
因为计算机底层的那些全加器根本无法理解除法。
加法是处理器的底层逻辑。
而自从有了补码之後,减法也可以被视作是一种加法,就像是1—1=1+(—1)。
至於乘法,也同样存在大量的高效优化算法,哪怕是仅仅粗暴地重复加法,也可以轻松实现。
唯独除法,想要实现它,复杂度比其他三种运算加在一起还要多。
计算一次除法的耗时甚至能达到乘法的数倍。
而在3D环境之中,浮点小数的出现以及各种频繁的空间计算让除法的调用变得难以避免。
平方根运算的实现思路与除法高度相似,这就让处理器在面对它们时不堪重负。
这也是3D一直难以推广的主要原因。
实在是太吃机能了!
伊万自己有推算过。
就凭现在的硬体叠代速度,哪怕是升级到了32位,恐怕也难以实现3D技术的全面普及。
可是————
GAMENOVA就愣这麽写。
完全不避讳平方根的使用,偏偏还在性能表现上好的出奇。
这绝对不寻常。
按照他的计算,如果GAMENOVA真的是这样实现的真3D,那绝不可能是NX这种机能能跑得动的。
「嗯?这个平方根倒数————不是处理器自带的指令。
,他忽然注意到了一点不寻常。
这些平方根倒数的函数调用似乎都不是从摩托罗拉自己的指令集里走的,而是通过一个自己编写的函数。
伊万眼神一亮,顿时来了精神。
一切的奥秘,GAMENOVA真正的技术底牌就在这里了!
自己已经无限地接近秘密的真相了!
「等等————只有10行??」
顺着调用找过去,预想之中成百上千行的精彩算法模块并没有出现。
除开函数的声明以外,这里只有短短的10行代码静静地躺在里面。
「牛顿逼近法?」
伊万一眼便认出了这是什麽东西,只是最常见的开方运算而已,没有什麽特殊的。
他的眼神顿时便黯淡了下去。
「等等————」
正欲关掉这部分代码,他却忽然注意到了其中有一行完全莫名其妙的东西。
i=05f3759df—(i>;>;1);
"???"
"WHAT THE FUCK?"
这玩意儿就像是光天化日之下忽然有东西跳到他的脸上给他来了一杵炮似的。
计算机是一门精确的科学。
伊万一直都深信这一点。
至少代码是这样一个优雅的东西,它应该能够精确地表达出一切内容。
而GAMENOVA,选择在代码中莫名其妙地塞入了一个不讲道理的数字。
0.5f3759df,换算成十进位就是1597463007。
没有任何道理。
可伊万很确定,这玩意儿必然就是GAMENOVA能在快速平方根倒数计算之中有如此高效性能表现的关键所在。
他默默抄起键盘,在代码的後方打上一行注释。
这是他的习惯,不管是读写代码时,顺手打注释都有助於学习。
但这一次,他真的不知道要在上面写什麽来解释这段内容了。
//What the fuck?
他只能在代码中留下一句美利坚雅韵。
>