John D. Carmack (born August 20, 1970) is an American game programmer and virtual reality engineer. He co-founded id Software.
约翰卡马克.jpgCarmack was the lead programmer of the id video games Commander Keen,Wolfenstein 3D,Doom,Quake,Rage and their sequels. Carmack is best known for his innovations in 3D graphics, such as his Carmack's Reverse algorithm for shadow volumes.
In August 2013, Carmack took the position of CTO at Oculus VR.
- born:出生于
- game programmer: 游戏程序员
- virtual reality engineer: 虚拟现实工程师
- co-founded: 做动词,但是一般翻译成名词,共同创立者
- lead programmer: 主程
- Commander Keed: 指挥官基恩
- Wolfenstein 3D: 3D-重返德军总部
- Doom(1-3): 毁灭战士
- Quqke(1-4): 雷神之锤
- Rage: 狂怒
- sequels: 续集
- be best known for one's sth: 因...而最出名
- innovation in sth: 在...方面的创新
- took the position of: 出任,接管,掌管等
-
algorithm for shadow volumes: 体积阴影算法(以后会聊一下光照与阴影方面的技术,蛮有深度的一个领域)
体积阴影.jpg
3D渲染引擎中,整个渲染流程(前向渲染方式,延迟渲染有所变化,以后再聊)可分为三个部分:
-
可见几何体(mesh或表面,可以多种称呼,但从opengl/dx的角度来看,就是顶点缓存和索引缓存以及材质的集合体)的渲染。
-
受灯源影响的几何体(mesh或surface)的明亮着色计算(灯光计算)
-
阴影的计算
其中最后两步处理的时间要远远大于第一步。
其实目前主流引擎,在光影效果处理上差距各有特色,差距不算太大。
但是评估一个引擎的重要指标,渲染是一个方面,还有一个核心是速度(效率)
核心问题: 如何高效的获取:
-
可见的几何体
-
受灯源影响的几何体
-
能投射阴影的几何体
这个就是引擎场景管理方面的内容了!
要说一个引擎的效率高低,三个关键:
- 场景管理
- 碰撞检测
- 渲染批次管理
quake1引擎在当时就是完美的解决了上面提到的问题
quake3(98年)渲染器则引入了多线程渲染,基于cmd buffer记录渲染命令,然后在渲染线程中遍历cmd buffer中的内容,调用backend(opengl)进行渲染。
目前dx11,各种游戏引擎,例如cocos2d-x3.x 中的渲染器架构(由 Zynga公司设计)以及目前见到引擎,基本都是这样的架构。基于cmd buffer进行线程数据隔离,前后帧交替渲染。
quake3 引擎中渲染器分为两部分:
前台部分api,进行可见性判断,进行材质排序,进行batch,将所有数据写入cmd buffer
后台部分api, 遍历cmd buffer,进行渲染,最终屏幕呈现。
quake是宝库。那个90后期/00年代初期的程序员真的是足够强大,也是学习的好榜样!
由于年轻时候经常出差,无聊中自学c/c++,研究3D游戏之神约翰卡马克的quake系列引擎,将近5年.
研究quake以及基于quake的扩展引擎过程中,记录了将近20本笔记,涉及数据结构,渲染器,场景管理,碰撞检测,骨骼动画,多线程,计算机图形学,数学,计算几何,刚体动力学,以及服务器等等等等各个领域。一个完整的3D引擎涉及到的技术非常多,难度很大
每日科技英文16: 我的精神导师约翰卡马克
手抄以及打印的代码,文档等。整个quake3渲染器核心代码都手抄了一遍,在飞机上,火车上,长途汽车上阅读卡马克漂亮的c代码。这些都是我最珍贵的资料。我的程序知识的源泉来自于quake引擎。
每日科技英文16: 我的精神导师约翰卡马克
网友评论