《古剑奇谭》愿我中华游戏,星火世传,奋飞不辍——从技术角度浅谈古剑3

share

Steam上33入的,经历了大概60多个小时,总算是打通了一周目。可以说是感慨颇多,古剑3也确实配得上是国产游戏天花板的荣誉了,甚至放眼世界也不差。
当然也会有很多人拿着老牌大公司的3A游戏来和古剑3比。人嘛,总是要刷刷优越感的。那么......我们应该怎么怼回去呢?
像是剧情、音乐、玩法、构图等众口难调的就不说了,因为每个人都有自己的审美,虽然我都很喜欢就是了。
烛龙能做的是在符合大多数人的审美的基础上,表达自己的审美。
我自己是从事图形学和算法研发方面的工作的,所以我打算从技术的角度来说说烛龙在古剑3上所花费的心血。

liusu129:太棒啦!!!我今天开始玩二周目,困难难度,发现游戏性一下提升了很多。嘻嘻 发布于 2021-06-20 07:25:15

僵尸新娘:准备往技术美术这块发展了,之前主要搞艺术美术这块 发布于 2021-06-18 02:37:55

belongtosu:大佬厉害了,顶起来 发布于 2021-06-09 17:06:35

无需妄自菲薄:题主你好,我是新的单机主机游发行商,最近我们会有一些游戏要上市发行,想与题主寻找下合作的机会,不知道是否方便私信一下联系方式呀 发布于 2021-06-05 13:34:45

舒絶:技术大佬,收藏了 发布于 2021-06-04 03:01:25

pchd1226:我忘记在哪个吧看的了,有大佬说《流星蝴蝶剑》才是国产天花板,而古三除了画面一无是处。我当时想说两句,后来想想何必跟人杠呢。就没敢吱声。 发布于 2021-06-03 23:04:35

德意志克洛泽:卧槽 好专业啊(⊙o⊙) 李菊福 发布于 2021-06-03 22:17:45

喵喵喵_喵喵:最后讲得很好!
每次在龙宫里看到小龙人说“谢谢你玩我们的游戏”就心酸。
希望市场可以给他们这份坚持和用心给予应有的回报。
(另外希望古4不要再穿模了我换衣服真的很痛苦) 发布于 2021-06-03 17:44:05

owenner:这代人物的手比例很奇怪 发布于 2021-06-03 17:18:15

降龙宗师:我也花了60小时,玩的很沉迷,虽然剧情看的我不知所云,但是逼范儿挺高。 发布于 2021-06-03 17:05:15

错过没错是过了:看不懂,不过题主nb 发布于 2021-06-03 15:07:15

FlyingWing飞翼:问一下题主一个技术问题,就是我一开始发现古剑三角色在暗处的“亮度”(不知道技术用语是啥,就叫亮度吧)明显高于周围的环境,后来在一次调节画质的性能测试中发现,在三档环境光遮蔽的设置下,角色的“亮度”都是不变的,这个问题是出在什么方面呢?


发布于 2021-06-03 13:43:15

107948280:技术贴,不明觉厉 发布于 2021-06-03 13:42:55

王北洛的栎津草:给技术大佬点赞 发布于 2021-06-03 13:38:55

z7eem:好帖顶一个
有些人可能就选择性无视一些酸酸的评论呗
什么叫不能跟国外比
当然能比了 但是比完还要踩一脚那怎么说
有理有据地踩我还能说服了 有些云玩家真的让人火大 发布于 2021-06-03 13:26:15

茶荃:没多大必要和3A大作比(不等的研发资金and国内外市场环境) 发布于 2021-06-03 11:30:35

shrimp672:看不懂,但是给技术大佬顶帖 发布于 2021-06-03 11:11:35

鱼头嘟嘟:我寻思着拿古剑和国外游戏比有什么问题么?? 发布于 2021-06-03 10:40:35

chen836560824:讲技术的同时还挑重点谈了技术发展的历程,果然是大佬。说到与世界差距三十年经验积累这是真的一道天堑,烛龙能够魔改老引擎,想必也是有为中国游戏开发建立一个基石。就像题主说的,这块基石能在未来为从业后辈创造盖起高楼的机会,这份情怀,这份赤城之心,烛龙你前行的身影必将有我们中国玩家相伴,见证你们的成长,见证你们创造奇迹。支持,共勉。 发布于 2021-06-03 09:42:25

hfsjq2002:题主厉害,愿我中华游戏,星火世传,奋飞不辍! 发布于 2021-06-03 09:21:15

xi烟有害健康o:画质方面锯齿是个败笔 画面模糊 发布于 2021-06-03 09:14:55

AL_Mujahid:这30年的差距,大概就像是姬轩辕时代,仙人和人的差距。
在之后,刨去那些不思进取做垃圾游戏骗钱的以外,真正热爱游戏、希望国产游戏崛起的人们,都在努力追赶着这门学科进展的脚步。
后来,在有了一批优秀的商业引擎,比如Unreal和Unity之后,我们在图形学上与大厂的差距才逐渐开始缩小:至少我们会用了呀~
然而,如果要问我国在这方面领先了世界多少,或者说我们在哪方面对于世界图形学界有着突出贡献,很难讲(或者是我自己不知道)
所以说,烛龙不用大型的商业引擎,自己魔改一个远古的游戏引擎改到了亲妈都不认识,能做到这一步,真的是负重前行。
愿古剑3这个2018年的国产天花板,不会永远是天花板,而是成为后人在上面盖起高楼的基石。
愿我中华,有更多的企业愿意去写符合中华文明价值观的故事,讲述中华文明的理念。
愿我中华游戏,星火世传,奋飞不辍! 发布于 2021-06-03 09:14:35

AL_Mujahid:其实说起来,国产游戏和国外游戏在技术积累上的时间差,是非常大的。
计算机图形学,最早可以追溯到冷战期间美国的星球大战计划。
北约阵营拿出了大量经费,雇佣了当时顶级的一群数学家,研究如何渲染出酷炫的画面,让苏联以为北约有了天基武器。
在苏联解体后,这批数学家的徒弟们被卸磨杀驴式的开除了。然后他们又从事医疗影像的可视化,或者是去了好莱坞和迪士尼。
这之中有那么一批干的不那么顺利的,才去做了游戏。
所以说,在2000年的时候,我们和美国在图形学上的差距,就已经有差不多30年了。 发布于 2021-06-03 09:12:05

AL_Mujahid:嗯....目前来看,能用上的新技术也就是这些了
都做出来的话感觉烛龙甚至可以卖自己的魔改引擎了 发布于 2021-06-03 09:10:55

哭泣的沐嫦妃:看一些炫技MMD的布料解算十分震惊,不知道同级别的显示效果应用到游戏里会不会增加技术难度? 发布于 2021-06-03 09:09:45

AL_Mujahid:所以说其实RTX目前来说还仅仅是个噱头,想依靠RTX把实时渲染的画面和电影那种动辄十万spp的画面相比,显然是不可能的。
可以修改一下渲染管线,增加一个异步的Raytrace阶段,限定对某些物体进行Raytrace,比如人物、饰品等。
或者,既然RTX的每根光线的方向都是可变的,可以用RTX实现近距离细节上更高清的阴影,比如头发、树叶、草皮、饰品等细小物体的阴影。
(饰品阴影其实不用太在意,反正玩家基本都是荷叶围脖+辈辈猴)。 发布于 2021-06-03 09:09:45

无限刀片厂长:请问题主是游戏从业者吗? 发布于 2021-06-03 09:08:35

AL_Mujahid:古剑4能用上的新技术之三:光线追踪
按照古剑3的制作进度来说,估计古剑4的时候大家也都普及RTX系列显卡了。
另外按照英伟达的说法,未来GTX系列也能支持(简易的)光线追踪。
当然不要对RTX指望太大,毕竟目前RTX显卡每帧也就是1~3 spp(sample per pixel),即每帧每个像素仅有1~3根射线发射出去用于检测间接光,而且一般来说反弹5次左右时帧率就掉到15fps了。
目前RTX实时光线追踪出来的效果看起来还好,主要还是靠Nvidia AI Denoiser,对间接光照明的画面进行了单独滤波,否则画面看起来大概应该是和熊猫差不多,一块黑一块白的。 发布于 2021-06-03 09:08:05

:题主太厉害了,你能稍微讲一下你的大学和工作的经历么,我挺想借鉴一番 发布于 2021-06-03 08:00:45

PC梅梅99:烛龙:我都要做好古剑4了你给我说这些?
游戏完成度: - 0.1% 发布于 2021-06-03 07:32:15

王红小胖:和大佬留影顺带说一句,星火世传,奋飞不辍 超级喜欢这句 发布于 2021-06-03 07:31:35

净錂:顶题主,太赞了 发布于 2021-06-03 07:31:25

maisfly:技术贴力顶!!虽然不太懂,但仍然看的很带劲~ 发布于 2021-06-03 07:29:15

AL_Mujahid:目前我个人知道的求IK的方法只有CCD......
当然,用eigen库之后可以实现求解逆雅可比(Jacob)矩阵。
不过貌似eigen求矩阵的逆的时候,如果这个矩阵没有逆,可能会出现除0等bug 发布于 2021-06-03 07:24:55

AL_Mujahid:实现IK的意义非常大,比如攀爬、骑马(与砍杀)、上台阶。
现在北洛站在台阶处时,一只脚是悬空的。
理论上,应该使用物理引擎中的射线检测(Raycast)向下检测地面的距离,然后把脚放下去,之后通过IK链向上更改小腿、大腿、大胯的位置。
发布于 2021-06-03 07:24:35

AL_Mujahid:二、逆向动力学,也就是IK(Inverse Kinematics)
目前古剑3已经实现了头部看向特定目标的功能。
但是这个只需要动1个骨骼,不能算是IK。
未来希望古剑4能够实现手、脚、腰、头的全面IK。 发布于 2021-06-03 07:24:25

AL_Mujahid:一、新的布料解算
可能会用上更加高效且安定的布料解算方法,避免头发乱抖的问题。
长发大概理论上是可以安定的吸附在肩膀上的。
而且头发的片应该能够实现曲面细分,通过hermite曲线或者是b样条曲线控制,而非是现在这样绑定到骨骼上。
当然不是说到时候就不要骨骼了——骨骼还是可以作为曲线的控制点,只不过头发可以更加飘逸柔软一些。
这方面我个人接触过的是Nvidia的Flex。
融入Flex之后还有一个好处就是能算ru摇以及身上肥肉/赘肉乱晃了
缙云胸那么大,不摇一下可惜了。 发布于 2021-06-03 07:23:25

AL_Mujahid:嗯,大概再畅想一下古剑4大概能指望用上什么新技术吧~(程序猿可能要打死我系列 发布于 2021-06-03 07:22:55

椋庢笎闅愨浄:技术贴顶了,不过还是想说古剑离好玩还有一定的距离 发布于 2021-06-03 07:18:05

syy风袖低昂:大大,我很菜,我看不懂,但是我觉得您超级厉害,谢谢你喜欢古剑三 发布于 2021-06-03 07:17:15

chetiayi:金山就知道赚钱,一个单机憋好几年还太监了 发布于 2021-06-03 07:16:45

tank1982632:好久没看到关于画面的技术分析贴了,码字辛苦 发布于 2021-06-03 07:16:25

城乡结合部酋长:这个给游戏从业意愿科普了 发布于 2021-06-03 07:14:45

诡逸:技术贴,顶顶顶 发布于 2021-06-03 07:14:35

钉宫游戏王:总结:好看不好玩 发布于 2021-06-03 06:39:45

71乖小猪:插眼,技术贴就是不一样,顶就完事了 发布于 2021-06-03 06:38:05

AL_Mujahid:古剑3唯一一个做的可能不是太好的地方就是布料解算这一块。
布料解算这块主要影响的是头发和衣服
具体不清楚烛龙用的是什么方法,目测应该大概好像是...基于位置的(position based)布料模拟。
不过这个好像做的不是特别好,因为一旦缩放人物,头发就会颤动一下,有时候过场动画时头发也有小概率会抖动。
但是在单纯的旋转人物后,头发却能很快的收敛到安定态,所以应该不是阻尼的问题。
个人感觉是....头发的position based中的坐标,应该用头发父级物体的Transform,或者是世界坐标系,而不是摄像机的坐标。 发布于 2021-06-03 06:37:25

钟离琴殇:虽然我没怎么看懂,但是我想问如果出古4是继续魔改这引擎比较好还是直接换呢 发布于 2021-06-03 06:36:45

zilong5585:还是你们这些专业 发布于 2021-06-03 06:36:35

AL_Mujahid:另外说一下物理引擎这一块。
首先,把一个外部的物理引擎移植到自己开发的游戏引擎内部,是非常困难的。
比如Unity,到现在也仅仅是“部分”移植了PhysX的功能,还是单线程的,N卡的PPU的部分则完全没有移植。
这大概也就是为什么烛龙人手这么紧缺的情况下,要用四个人去做物理引擎部分。
物理引擎的效果呢,实际上还是很不错的。
其实很多第三人称游戏都取消了跳跃。主要是允许玩家蹦蹦跳跳非常容易出bug,比如蹦到房屋内,比如原地升天,比如卡墙之类的。
但是烛龙还是非常勇敢的允许了玩家跳跃的功能,这背后要加多少工作量,可能只有他们自己知道 发布于 2021-06-03 06:33:25

飘摇王:古剑三确实是国产天花板,希望仙7能够超越,这样精益求精国产才可以走出国门面向世界。(免得假洋鬼子天天叫嚣) 发布于 2021-06-03 06:33:15

冷卿:后排吃瓜看帖,虽然很多都看不懂 发布于 2021-06-03 06:32:25

AL_Mujahid:嗯,又翻了一遍剧情,图形学方面应该是没有啥遗漏的东西了。
总结下就是,古剑3在画面/图形学方面来说,和同期全球3A级游戏相比(2018年),基本是持平的,甚至某些部分做的非常好。
尤其是考虑到烛龙整个的程序员团队规模,甚至比不上EA、育碧、暴雪等大厂的一个图形研发部门。
可以说,古剑3的画面,是在力所能及的范围内,使用着一个远古引擎东拼西凑负重前行的情况下,人力所能达到的极致。 发布于 2021-06-03 06:30:45

天然除氧器: 发布于 2021-06-03 06:21:05

蜡笔的眷恋:为什么柿饼的毛看上去很糊,就像是分辨率很低一样?一直很好奇 发布于 2021-06-03 06:19:45

天使姐姐更乖:我记得柿饼爆料那时候,烛龙说过为了表现皮肤的真实质感,要用好几层贴图什么的。 发布于 2021-06-03 06:17:55

小小小小春菜:技术大佬来发干货了,必须收藏。顺便问一下大佬,有没有感觉整个古剑3的水面和岸上的波动感觉怪怪的,我一直觉得从远处看海浪和海岸的互动像是一个小杯子里放了一块石头一样,没看出气势磅礴的感觉。 发布于 2021-06-03 06:17:25

AL_Mujahid:另外,动视的COD里面所使用的PBR渲染管线大概是这样的:
https://research.activision.com/publications/archives/practical-multilayered-materials-in-call-of-dutyinfinite-warfare
我估计无论是吹COD画面的还是踩COD的,绝大多数都没了解过如何去量化的评价游戏画质 发布于 2021-06-03 06:16:05

臭阿道人:大佬牛逼。顺便如果有空的话,还请谈谈哪些好技术是烛龙没有用到的 发布于 2021-06-03 06:15:35

AL_Mujahid:我个人不大清楚古剑3里面是不是用了次表面散射,这个功能(对于我这种眼瞎的人来说)除非是用画面对比,否则很难看出来。
不过总体来说实现起来难度不大,如果这次没用,可以考虑古剑4时用。次表面散射配合上RTX效果应该能更好~
(技术美术会不会打死我) 发布于 2021-06-03 06:14:55

AL_Mujahid:既然光线在皮肤下面其实也是乱飞的,那么我们是否可以用某种噪声来模拟光的乱撞从而实现次表面散射呢?
当然是可以的。只不过这又要向我们要一张贴图,太吃资源了。
人物贴图一般都是2048甚至4096的,多一张图就意味着多吃几十MB的显存。
而实际上,我们可以用Mipmap来代替这个厚度图。
众所周知,颜色贴图(AlbedoMap)以及其他贴图都是2的N次方大小。比如512*512,1024*1024,2048*2048,4096*4096。
这是为了显卡中方便计算。当某个物体距离我们很远的时候,我们无需给它一个特别高清的贴图。给个256甚至128的就行。
Mipmap实际上是,在我们把一张贴图导入到游戏引擎中之后,自动生成的一系列贴图,比如导入一个512*512的贴图,就会生成256*256,128*128,64*64,32*32,16*16,8*8,4*4这几张图。具体案例可以参考dds格式的图。
所以我们只需要把几张Mipmap在渲染时依次叠起来,就能大概做出“白里透着红”的感觉了。 发布于 2021-06-03 06:14:15

AL_Mujahid:次表面散射的原理如图:

当光线入射皮肤后,主要的部分被反射,形成了少女皮肤的基本颜色,或者是老男人皮肤的全部颜色。
对于“吹弹可破”的皮肤而言,一部分光会在角质层、胶原蛋白层这两个半透明的层被反射出去。
还有一部分会穿过角质层和胶原蛋白,入射皮下血管。由于血管和肉是红色的,所以反射回去的颜色是红色,这样,才有了“白里透着红”的感觉。 发布于 2021-06-03 06:13:15

AL_Mujahid:在很久很久以前,次表面散射只在电影中出现,因为需要Path Tracing。
直到某位神人用Mipmap的方式(从统计学意义上)把次表面散射给实时化了。
https://pdfs.semanticscholar.org/328e/1f1e0751e41f26eedcee684eac2e431ab049.pdf 发布于 2021-06-03 06:12:05

AL_Mujahid:另外说一个我不是很确定烛龙做没做的东西:次表面散射(Subsurface Scattering)。
次表面散射指的是,当强光穿过某些半透明物体,比如皮肤(不是羽林大哥那种老皮)或者是薄片的玉时,入射到物体中的光会有一部分反射回表面。
典型的应用就像是...白里透红的皮肤、树叶。
我没有找到强光直射皮肤的地方,不过我在天鹿城找到了个树叶,不知道是不是用上了次表面散射。
发布于 2021-06-03 06:10:15

落花人寂离:厉害了(ง •̀_•́)ง点赞!!! 发布于 2021-06-03 06:06:25

漠逝墨忘:这就是古吧带佬吗,i了i了 发布于 2021-06-03 06:04:35

AL_Mujahid:另外一个****的点就是——在集泷之战,如果把摄像机朝天看,镜头上会沾水。
这个不稀奇,厉害的是,每个水滴都是有折射的!

大概就是,每个雨滴都是一个凸透镜,所以要在Post Processing阶段对雨滴专门进行一次后处理,且要在Bloom(光晕/辉光)等操作前面。

其实这个不是太难写,主要是如何让这玩意能高效运行。因为我个人测试,沾水和不沾水,区别不大。 发布于 2021-06-03 06:04:05

AL_Mujahid:除了水体之外,古剑3还做了雨滴和积水的交互效果。

雨下的太大了所以不知道雨滴和波纹是否是一一对应的。
同样,这个雨和地面波纹的牛逼之处就在于——它不是通过粒子系统喷射出来的(那样会特别吃CPU),而是靠显卡算出来的。 发布于 2021-06-03 06:02:05

蜡笔的眷恋:技术dalao支持一下 发布于 2021-06-03 06:01:25

AL_Mujahid:水这一块,其实我完全不知道咋做,水太深了
大概说一下就是:
水面波纹可以用至少3层的水波函数去叠。最简单的可以是Perlin Noise(做云的),或者是Voronoi(做山脉的),也有可能是其他函数。反正哪个都不好写。加上曲面细分就更难了。
水体的颜色一般是用一个渐进查找表去做,输入参数是水的深度,输出颜色和透明度。
折射一般是使用一个单独的RenderPass,在渲染后根据水体表面法线方向进行折射。
水下部分一般就是加个指数雾。从水面开始向下,雾的浓度呈指数上升。
当然,要加个优化——离摄像机太远的水底物体,一律剔除掉。
水与岸的交互这块....emmmm....完全不会 发布于 2021-06-03 06:01:15

小蚊子不听话:精华帖啊,支持 发布于 2021-06-03 06:00:25

AL_Mujahid:这个是莲中境的水面。
包含了水面波纹、折射、水下部分、水-岸交互等。
发布于 2021-06-03 05:59:45

AL_Mujahid:三、水体

水的渲染一直都是技术美术们最头疼的事情。因为这玩意怎么做都是没有最好,只有更好。
而且吧,水的渲染一直都是资源黑洞。
古剑3里面,水的渲染难点有:
1. 波浪。水被风吹起来的波浪,这个相当于实时调整模型顶点,以及曲面细分。
2. 水的折射。
3. 水的反射。 发布于 2021-06-03 05:59:05

骑客者:搬个小板凳拿包瓜子夹包辣条装个可乐 发布于 2021-06-03 05:57:55

AL_Mujahid:SSAO的计算阶段其实和SSR差不多,都是在渲染完成后,利用深度图做计算。
通过深度图的深度信息,可以很轻松的判断出场景里哪些位置是大角度的折角。 发布于 2021-06-03 05:56:45

holaholaholala:厉害了,技术贴,收藏等更 发布于 2021-06-03 05:56:05

AL_Mujahid:其实在次世代PBR流程的一套贴图里面,是有AO贴图的。
但是这个仅针对小物体,比如铠甲:
注意铠甲上带锯齿的黑圈。

但是,对于整个天鹿城这么大的模型,不可能每面墙都有自己独立的贴图。
也就是说,必然有相当一部分屋子是复用了墙体的。所以...就没法用AO贴图了。 发布于 2021-06-03 05:54:55

AL_Mujahid:终于发出来了。。。。。 发布于 2021-06-03 05:53:45

AL_Mujahid:这样做有一个小问题,那就是折角和窝进去的地方。比如这种:
相比平面,窝里的地方想要被点亮,需要光线反射更多次。
而光线每次反射都会造成能量损耗。
也就是说,实际上,物体表面的折角和窝进去的地方都比其他部位更暗。
因此SSAO并不是真的模拟了间接光反射(那个需要Path Tracer,渲染电影才用的,15分钟一帧),而是让虚假的间接光反射看起来真实一些。 发布于 2021-06-03 05:53:35

AL_Mujahid:原因其实也很简单,除了太阳之外,物体还获得了来自各种间接光、反射光的能量。
最主要的就是来自天空的。 发布于 2021-06-03 05:53:25

AL_Mujahid:一个贴子被连续吃了五次...... 发布于 2021-06-03 05:52:15

AL_Mujahid:接下来说说SSAO是干什么的。
从这张图可以看出,太阳光的位置是在右侧。
根据Lambert光照定理(Lambert Law of Cosine),亮度取决于:(太阳光方向单位向量 )点乘(-物体表面法线单位向量)
所以说,理论上讲,没被太阳光照到的位置都应该是黑的。
可是那多难看呀,而且不真实。
大白天的,哪个楼在太阳阴面的部分,也不是全黑的啊。
发布于 2021-06-03 05:51:45

KD懵壁接锅侠:奈何本人没文化,一句 发布于 2021-06-03 05:48:55

AL_Mujahid:说完屏幕空间反射再说一下环境光遮蔽,确切的说是屏幕空间环境光遮蔽,也就是SSAO(Screen Space Ambient Occlusion)。

(个人觉得这个“大幅”其实并不准确....SSAO开与不开并不会大幅影响游戏性能。)

典型的SSAO效果,一般在大于45度的折角附近特别明显。 发布于 2021-06-03 05:47:25

AL_Mujahid:SSR实现方法的那个论文我好像....找不到了
不过相比其他游戏,在SSR的处理方面,烛龙已经做的非常好了。
为数不多的BUG出在了眉毛上。具体忘了是哪个过场动画了....反正眉毛是花的。
当然,这个BUG大家都有。
原因很简单,眉毛实际上是一个片,上面贴了个透明贴图。
比如小缨子的浮空眉

然而在做zTest的时候,是在Raster阶段的,因此出来的深度图里面,眉毛的透明部分也是实心的。
这样,在算SSR时,眉毛肯定就是错误的。同理,这类错误还会出现在树叶、灌木等带透明通道的物体上。
只不过烛龙忘了把眉毛剔除出SSR的范围了。 发布于 2021-06-03 05:45:25

冬季冰封少年:steam上不是99元吗 发布于 2021-06-03 05:44:15

AL_Mujahid:SSR是业界老生常谈的问题了。几乎所有追求画面的次世代游戏都要追求一下SSR。
在渲染结束后,画面输送到显示屏之前,我们得到的是一张原始图片,以及深度图。
这张原始图片还没有经过任何的后处理,看起来非常糟糕(全是锯齿,没有任何特效,啥都没有)
在后效(Post-Processing)阶段,可以增加SSR来制造出“不太真实的”反射。
因为我们在计算反射时不是在3D空间内计算的,而是完全依赖那张深度图,相当于是在二维空间中算的。因此才叫“屏幕空间反射”。
SSR的优点是快速,而且可以在非屏幕的物体上展现出反射。
缺点也很明显:
1. 如果一个物体在我们的画面上没出现,那么一定不会在倒影里出现。
2. 因为我们使用的深度图实际上是渲染时用于做z-test所产生的z-buffer(貌似是),因此如果一个物体是半透明的,或者带有透明通道,那么SSR会高几率出BUG(对没错,说的就是你,Unity HDRP)。
所以为啥需要SSR?
我们需要反射来表现物体的反光度。但凡擦的特别亮的东西都会反光,对吧。
有两种东西能表现出物体的反光度:光和倒影。
某些材质,比如被雨水淋湿的石头还有亮亮的金属,不可能全程处于摄像机与太阳之间。
所以这时候就需要用反射来表现材质了。 发布于 2021-06-03 05:36:25

AL_Mujahid:二、SSR(Screen Space Reflection 屏幕空间反射,不是抽卡!)

SSR用来展现近距离不规则物体表面上的倒影。是一种较为廉价的倒影表现方式(相比于用摄像机来说)。
比如远处的火焰在地面上的倒影。那个倒影是会随着火焰变化而变化的。

比如王北洛在天鹿城金属地面附近时,金属上倒映出的腿和皮裤
发布于 2021-06-03 05:33:55

1035019785:乖巧地搬来沙发,饮料,零食 发布于 2021-06-03 05:33:05

AL_Mujahid:像阳光穿过树叶、建筑边缘、云层出现的“体积光”,也就是传说中的“GodRay”,其实有两种实现方法。
1. 简单粗暴的:在会出现GodRay的位置加个片,在片上画出GodRay。
比如一些老游戏,或者是不专业的人做的东西,例如LG的LG Simulator。
这种方法最大的问题是,体积光一定是静态的,不会随着树叶摇摆而改变。
同时,当阳光角度变化时,GodRay无法变化,或者变化的很难看。
2. 基于物理的:对光线在空气中的传播进行步长采样(Ray Marching),计算体积光。
这种方法的好处是能够实时绘制动态体积光,不受阳光角度变化及树叶变化的影响。
古剑3就是采用的这个方法。具体可以到某个树下去看看~当树叶摇摆时,体积光会随之变化。
具体可以参考这篇:
Volumetric fog: Unified, compute shader based solution to atmospheric scattering, ACM Siggraph 2014
可以从作者的主页上下载
https://bartwronski.com/publications/ 发布于 2021-06-03 05:32:15

AL_Mujahid:一、体积光(Volumetric Light)

体积光的应用就是当强光(比如太阳光)穿过水汽时,出现的折射现象,让人感觉好像阳光有了体积感。
最明显的是在树下。比如:
发布于 2021-06-03 05:28:45

E_coli_L:自己魔改的VE,这个引擎本身很老了。 发布于 2021-06-03 05:27:35

AL_Mujahid:噗....好像还真是用的VE....这***尴尬了
好吧,那后面就先简单谈谈古剑3实现了哪些功能....
顺便容我查查VE 发布于 2021-06-03 05:27:25

mianszzzzzz:先占个楼,坐等更新,但是有一个想说的是,古剑三的引擎应该是ve,只不过自己在ve的基础上修改了很多东西,古二和古三用的是同一款引擎 发布于 2021-06-03 05:24:55

AL_Mujahid:首先是引擎方面。
游戏开始界面上,打开游戏信息,拉到下面可以看到:

这些里面有我用过的,也有一部分没用过的
但是,我没在这里面找到游戏引擎
其实,当初打开游戏的时候就觉得这个像是Unreal的渲染风格。然后我去安装目录看了一眼.....
发现这个文件名和文件夹根本就不对呀...
而且也不是Unity的,也不是StingRay的,也不是Optix的。
之后我才意识到....烛龙应该是自己写的游戏引擎,然后在此基础上开发的古剑3
这个是真的勇士,也是最让我惊讶的。
现在是2020年,做一个游戏的成本已经远远低于2010年那个时代了。
随便下个UE4或者Unity,在素材库里面买几个素材,写点代码或者从github上抄点,随便拼拼就行。
然而在这个年代,还有人愿意一步一步的从底层开发,这才是真的负重前行。
然后说一下上面这几家都提供了什么:
PopcornFX:看见FX就知道是特效。这家是提供粒子系统的。
Havok:物理引擎。头发、布料的解算。碰撞、打击判定等。
Nvidia:除了造显卡之外还有很多软件。太多了所以我不知道他们到底用了啥。可能是PhysX,可能是cg。
Oodle:不知道...
SpeedTree:游戏里的树、灌木等等。Procedural Modeling的软件,专门造植物,还能优化模型。
YEBIS:特效
FMOD:音效
BINK:播视频的 发布于 2021-06-03 05:23:05

更多《古剑奇谭》愿我中华游戏,星火世传,奋飞不辍——从技术角度浅谈古剑3相关问题

问题:《古剑奇谭》愿我中华游戏,星火世传,奋飞不辍——从技术角度浅谈古剑3

回答:这游戏牛匹之处在于,和以前的暴雨、超凡双生、直到黎明不同,前面剧情中80%的选项都可能影响重要角色对相应主角的好感度,从而影响剧情走向。而以前的那些交互式电影游戏前期选项对剧情发展一般影响很小,最后结局数量也只是个位数。一般这种游戏总流程都不... 详情 >

问题:《古剑奇谭》时隔多年,再战古剑3

回答:咒刃哪里可以得呀? 详情 >

问题:《古剑奇谭》搬运! 新dlc有消息了 江山如画!

回答:除了小土豆。那个1.6米的有进化卡没 详情 >

问题:《古剑奇谭》浅谈古三取名与星宿

回答:牢头不是魔剑士,是高等法。你做了神器任务后能点凤凰,强的一比 详情 >

问题:《古剑奇谭》今天看到伊吹鸡腿子给王者合作的仙剑一画图了

回答:能不能先百度一下张郃再来说建议! 详情 >