乱斗西游NeoX引擎的开发经验
NeoX眼下支持了OpenGL ES和Metal两套API。同一时候支持多线程渲染的特性。
- 逻辑和渲染拆分成两个独立的线程。更好的运用多核运算(缺点:饥饿。死锁,Crash)
- 创建共享GL上下文来实现OpenGL的多线程渲染(!OpenGL ES上下文并不保证线程安全)
- 通过线程ID映射GLContext。每一个渲染线程独占一个GL Context
- RenderQueue使用一个LockFree的RingBuffer运行渲染命令
- 使用Double-Buffer(空间换时间)避免锁的使用。
注意事项:不论什么线程都能创建GPU资源,使用OpenGL时结束调用要调用glFlush(每一个GLContext都有一个CommandQueue);GPU资源销毁的操作必须在渲染线程中运行。
推荐參考BGFX库的实现
《无尽战区》渲染迭代经验
风格化的渲染在近期開始流行起来,比方Valve的Team Fortress军团要塞2
、暴雪的守望先锋
以及Epic的Kite Demo
。
卡通风格渲染
卡通风格渲染一般具备下面特点:
- 动漫贴图画法和着色
- 描边处理
- 风格化处理
TF2的解决方式是使用了:
- Modified Lambertian Terms
- Warping Function
- Rim Lighting
- Spatially-varying Directional Ambient
f(x)=kd[a(n⃗ )+∑i=1Lciw((α(n⃗ ⋅l⃗ i)+β)r)]
Warping Function(核心) :12(n⃗ ⋅l⃗ )+12
在他们的分享中也提到了线性工作流(Linear WorkFlow)的重要性,以及模型美术资源外包制作的一些坑。
Cloud GI(离线渲染LightMap )
关键词:Data-Parallel Octree, Radiosity, Point Cloud, Surfel
GPU上的八叉树构建和编码
大致方案:
- 全局光照算法(Point Cloud Based GI)的思路參考Point-Based Approximate Color Bleeding论文. (RenderMan使用的全局光算法)
- 八叉树(管理点云,每一个节点记录颜色和球谐系数)高速构建算法的实现參考了Data-Parallel Octrees For surface Reconstruction论文
- Light Map裂缝处理使用了Gutter方法
《天谕》大世界的渲染方案
资源控制
Budget系统:
全部资源都有优先级,不再用的资源尽可能换出。
LOD
- 贴图LOD(缩略图-原图-大图):
- 自己主动Stream大图
- Device Lost的时候直接删除原图
- D3D9使用DEFAULT POOL管理贴图
- 贴图权重定义
- 法线贴图>漫反射贴图>高光贴图
- 离镜头越近权重越高
- 包围盒越大权重越高?
合并DrawCall
使用Proxy系统合并模型焊接顶点以降低DrawCall。
…待续
版权声明:本文为博主原创文章。未经博主同意不得转载。
举报
- 本文已收录于下面专栏:
相关文章推荐
-
网易游戏2015年暑期实习生面试经历-游戏研发project师
首先。我还是先介绍一下网易游戏吧,引用别人的一段话 作者:王选易,出处: http://www.cnblogs.com/neverdie/ 欢迎转载 ,也请保留这段声明。假设你喜欢这篇文章,请点【...- tingting14054765
- 2015-06-02 17:09
- 2588
-
211小本的求职之路拿到腾讯阿里人人网易游戏offer
企鹅 笔试: 由于武汉的笔试是第二批城市。所以參加笔试之前,就先看了下第一批城市的笔试题。出的既有难度又有广度,涉及了方方面面。可是第二批城市的笔试题却略水。预计这应该就是企鹅简...- u011200598
- 2014-04-03 16:40
- 813
-
[面试经历]那几个月在找工作(百度,网易游戏,华为)
转自http://www.nowcoder.com/discuss/3196 九月二十多号停止了忙碌找工作的脚步。回家呆了两个礼拜。在家打算总结下自己的校招,留个纪念也攒点人品,可是回家了好吃...- LT163
- 2016-03-19 17:56
- 3430
-
2014.1 网易游戏平台开发实习面试总结
非常早就在系统上投递了简历,可是好几周厚才由回复。首先是电话联系确认了一个面试时间,之后就是简单的笔试加面试。因为之后就要回家。所以他们在时间上安排的非常紧凑。笔试+1面+2面两个小时所有搞定。第一次这么...- haluoluo211
- 2015-01-15 09:28
- 661
-
网易游戏技术岗在线编程题(一)
题目来源:牛客网-网易2016年研发project师编程题。1.小易的升级之路小易常常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,...- K346K346
- 2016-03-17 16:50
- 1652
-
[Vulkan教程] 一: 创建VkDevice
这个系列的文章是写给对已有的D3D11和GL比較熟悉并理解多线程、资源暂存、同步等概念但想进一步了解它们是怎样以Vulkan实现的读者。文章并不追求通俗易懂,里面有非常多术语(为了解里面的晦涩内容,建...
- tomicyo
- 2016-05-14 11:39
- 2117
-
GDC2015(游戏开发人员大会)资料链接汇总
GDC2015 资料汇总- tomicyo
- 2015-03-10 22:24
- 1310
-
30分钟入门Vulkan
这篇文章是写给对已有的D3D11和GL比較熟悉并理解多线程、资源暂存、同步等概念但想进一步了解它们是怎样以Vulkan实现的读者。因此本文会以Vulkan概念之旅结束。文章并不追求易懂(为了解里面的...
- tomicyo
- 2017-04-17 00:42
- 509
-
【Metal API 教程:第二讲】编写Metal Shader并渲染3D模型(上)
本文不讲述图形变换的理论(可參考计算机图形学和线性代数),图形编程(场景物体剔除、光照等)涉及到非常多的数学基础。本文直接从Shader语法阐述怎样用Metal API渲染3D物体。- tomicyo
- 2015-01-03 08:53
- 2424
-
【Metal API 教程:第一讲】用XCode6.1创建并调试Metalproject
2014年開始。3D图形API開始变革,逐渐開始适应新的GPU硬件特性。以苹果的Metal为首,AMD的Mantle、MS的DX12。以及SIGGRAPH期间Khronous Group发起的Open...- tomicyo
- 2014-12-07 22:32
- 3473
-
原创
- 10
-
粉丝
- 11
-
喜欢
- 0
0条评论