除开函数的声明以外,这里只有短短的10行代码静静地躺在里面。
「牛顿逼近法?」
伊万一眼便认出了这是什麽东西,只是最常见的开方运算而已,没有什麽特殊的。
他的眼神顿时便黯淡了下去。
「等等————」
按照他的计算,如果GAMENOVA真的是这样实现的真3D,那绝不可能是NX这种机能能跑得动的。
「嗯?这个平方根倒数————不是处理器自带的指令。
,他忽然注意到了一点不寻常。
计算机是一门精确的科学。
伊万一直都深信这一点。
至少代码是这样一个优雅的东西,它应该能够精确地表达出一切内容。
而GAMENOVA,选择在代码中莫名其妙地塞入了一个不讲道理的数字。
0.5f3759df,换算成十进位就是1597463007。
//What the fuck?
他只能在代码中留下一句美利坚雅韵。
>
而它往往也是计算机中运算开销最大的函数之一。
因为计算机底层的那些全加器根本无法理解除法。
加法是处理器的底层逻辑。
伊万自己有推算过。
就凭现在的硬体叠代速度,哪怕是升级到了32位,恐怕也难以实现3D技术的全面普及。
可是————
正欲关掉这部分代码,他却忽然注意到了其中有一行完全莫名其妙的东西。
i=05f3759df—(i>;>;1);
"???"
"WHAT THE FUCK?"
这玩意儿就像是光天化日之下忽然有东西跳到他的脸上给他来了一杵炮似的。
而自从有了补码之後,减法也可以被视作是一种加法,就像是1—1=1+(—1)。
至於乘法,也同样存在大量的高效优化算法,哪怕是仅仅粗暴地重复加法,也可以轻松实现。
唯独除法,想要实现它,复杂度比其他三种运算加在一起还要多。
计算一次除法的耗时甚至能达到乘法的数倍。
而在3D环境之中,浮点小数的出现以及各种频繁的空间计算让除法的调用变得难以避免。
没有任何道理。
可伊万很确定,这玩意儿必然就是GAMENOVA能在快速平方根倒数计算之中有如此高效性能表现的关键所在。
他默默抄起键盘,在代码的後方打上一行注释。
这是他的习惯,不管是读写代码时,顺手打注释都有助於学习。
但这一次,他真的不知道要在上面写什麽来解释这段内容了。
GAMENOVA就愣这麽写。
完全不避讳平方根的使用,偏偏还在性能表现上好的出奇。
这绝对不寻常。
自己已经无限地接近秘密的真相了!
「等等————只有10行??」
顺着调用找过去,预想之中成百上千行的精彩算法模块并没有出现。
这些平方根倒数的函数调用似乎都不是从摩托罗拉自己的指令集里走的,而是通过一个自己编写的函数。
伊万眼神一亮,顿时来了精神。
一切的奥秘,GAMENOVA真正的技术底牌就在这里了!
第303章 一行代码让图灵奖大佬骂娘 (第3/3页)
t,也就是求平方根的函数。
计算角色、物件、场景中的空间距离、运动状态等各种需求,都需要频繁调用平方根的计算。
可以说这玩意儿就是3D游戏的基石。
平方根运算的实现思路与除法高度相似,这就让处理器在面对它们时不堪重负。
这也是3D一直难以推广的主要原因。
实在是太吃机能了!
阅读美利坚:游戏制作教父最新章节 请关注舞文小说网(www.wushuxs.net)



