[gdc13]《刺客信条3》渲染技术

news/2024/4/20 10:01:13/


gdc13上面的分享(可以在gdcvault上面查看),ubi和刺客信条无需介绍了。

由于是发展了多年的引擎,所以主要是介绍在这一代有什么进化,相当不错,实用性很强。

由于需要member身份才能看,所以我这里多截一些图好了。


天气

除了正常使用particle系统来做的天气效果以外,对于一些特有的效果,使用其他的方式可以更高效和更好的来做:

cylinder based effect


使用cylinder来做一些volumetric的效果.

height based fog

这个倒不是cylinder based的,就是普通的计算height fog, 但是里面有和阳光相关的参数:






近处是particle,远处是cylinder based scrolling uv 做的雨。


只有particles

雨雪遮挡


可以看出此代console机能的无奈。

surface上的潮湿和积雪效果

  • 根据normal的方向来进行积累和潮湿效果的调整
  • 潮湿就调整gloss
  • 积雪就是调整diffuse颜色
踩出来的雪的痕迹
这个是这代游戏的一个重要特性:
  • 效果惊艳
  • 影响gameplay--应该是可以根据这个来追踪
  • 主角和动物都会有

  • 地形是地形,上面的雪是有专门的雪的mesh
  • 在做雪痕的时候,是把雪的mesh在index buffer上面做调整,中间挖出洞
  • 补上一个displacement map+tessellated triangle做出雪痕的形状
    • tessellation这部分比较直接,在可以r2vb的A卡上面可以直接做这个
个人觉得这个应该是为了lod来做,使用terrain渲染上面常用的geometry morphing应该也可以。

光照
早期的AC系列使用一个比较简单的lightmap,

左边是高度,右边是光照信息,这样的方式来记录光照,然后每个物件到这两个贴图中来sample获取光照信息。
品质上还是不太好,没有光的方向等信息。
那么改进版:

这个用法有点意思,的确不错,那个第二个贴图的HUE就是光的颜色亮度信息。

AO
原先ac使用bake在vertex上的ao,它的缺点也是比较多的:
  • 内存消耗大
  • 顶点数量很影响ao质量
新的ao方式是ssao+预处理的一个world ao
ssao的缺陷是很明显的:
  • 产生ao的信息就是来屏幕空间能够反算出来的world position的很小一个范围,这个限制直接导致voxel cone tracing(link)产生的ao质量要好得多
ac的ao做法是:

本质上就是构建了一个非常简化的世界mesh的voxel信息,只是这个是在2d texture里面存的。


多人渲染

多人战斗阶段有上千人,城镇里面有300到400人,这样的规模如何在ps3/xbox360上达到?

  • instancing, 32一个batch,把vertex buffer复制32份(内存消耗也是32倍)
    • 这个应该主要是限制于console平台的原因,如果pc平台加vertex texture应该就不用去复制32份,不过需要instancing的也不会是很精细的人物,所以尚可
  • 渲染阶段:
    • 能r2vb就r2vb
    • 360上面是cpu计算骨骼数据,然后vertex texture
    • ps3上面使用spu直接算出最后skinning好的mesh
水渲染
基于的论文是tessendorf的经典论文(最开始用于泰坦尼克号的海水渲染,略晦涩:笔记)。
然后使用论文中的方法,来预计算3个频率的波:


水上的泡沫是每帧逐渐积累和消散的,在render target上面每帧做这个。
也是有高频和低频数据。
光照效果方面比较正常。
综合一下:


NodeBasedShaderSystem
就是unreal引擎那种连节点生成material的方式,ac使用了,但是其他项目使用ac引擎的时候都给去掉了。
这一块是图形编程方面争议最多的,有用的有不用的。
ac这里把争议部分列了出来。
对于我们,可能很多人看见unreal使用了,就觉得这个是更好的方式(或者说是最好的方式),但是其实应该说不是这样的。

这里首先是NodeBasedShaderSystem好的一面:
美术易于控制和创造效果,在创造prototype阶段,效率无可比拟。
商业引擎这样选择显然是更好的:不需要程序员进行深度介入的情况下,让项目组能够快速做出好的东西,否则一开始可能就没人去使用了。
在程序员可以深入介入的情况下,手写shader的比率还是相当高的。

然后就是不好的一面:
  • 容易失控:效率,内存,复杂度
在使用这样的引擎的时候,如果自己肆意发挥,很容易导致严重的性能问题,在后期举步维艰。
这个就看团队的实力,尤其是程序员,TechArt对于资源的控制了,这还是可以搞定的问题,就像使用手写预制shader的灵活性问题也可以克服一样。

带着解决问题的态度,可能是两者结合是更合理的方法,使用NodeBasedShaderSystem,并且有程序员手写替代的功能,这样在prototype和效率上可以达到一个比较好的平衡。

DX11
首先到dx11,实际也就意味着是更强的平台,直接各种lod都拉高。
里面两大块比较特别:高质量的AO和阴影
AO是使用mssao(multi resolution screen space ao,在ssao基础上,加了多分辨率,这样就可以高效的取得更大范围内的ao信息)和hbao的结合体,起名字是:MHBAO。
在全resolution和1/2 resolution的使用mssao,在1/4 resolution上面使用hbao。

shadow
ac console版是poisson disc filter,在之前crytek一个ppt里面有提到。
但是这个在边缘就是比较花,这里ac使用了叫octagonal filter,其实是sample了更多的点,在lightspace里面以8角的方式移动,加上lightview camera本身就是会有snapping按照texel为单位移动,所以这个做出来就是更加平滑稳定,sample数量达到了25tap:


关于dx11的建议:
一顿大实话,概括起来就是dx11好像没什么用,但是ac似乎在dx11上面开展的不多,大杀器direct compute没有提根本。
deferred context由于是driver控制,不如是dx9上面自己做多线程的方式可控性高,效率更好一些。
d3d query,各个厂商实现不同,一种显卡上ok,另一种上面就跪了可能最好不要用太多
tessellation,特有用的地方不多,少用吧。
多和厂商联系。



http://www.ppmy.cn/news/616199.html

相关文章

如何做好网站SEO优化,网站SEO关键词优化的5个技巧

对于企业而言网站是非常重要,通过网站可以展示企业的产品服务,还能和客户沟通。但是,企业只有网站是不够的,还要做好SEO优化,让网站有好的排名。那么企业如何做好网站SEO优化呢,下面给大家分享SEO网站优化的…

网站标题关键词SEO优化技巧

网站SEO是围绕我们的TDK进行的,一个好的标题不仅需要描述文章内容还应该具有我们的关键词,关键词前置、关键词密度是我们文章SEO的一个技巧,如何挖掘我们的标题关键词,掌控关键词密度。我们可以从以下四点打造我们的标题关键词。 …

SEO优化就是让让关键词快速获取排名

在网络营销迅猛发展的时代,各种营销方式和渠道层出不穷。SEO是网络营销的基础,无疑是众多中小企业发展中不可缺少的营销手段之一。但要通过网络SEO推广获得流量和排名,对站长的技术要求相对较高。那么SEO优化网站有哪些营销推广技巧可以提高网…

SEO优化怎么快速把关键词优化至首页

一、了解网页中关键词出现的位置 为了确保基本的关键词密度或者网页内容相关性,关键词更多的时候应该分布在页面中的固定位置,而不是在可变因素上,像一些网站的评论、在线问答之类。如果是在页面上方的位置,就是稳定出现且不会变…

Win11总是出现BitLocker恢复,想要彻底关闭它该如何操作?

win11解除bitlocker加密方法一: 1、首先按下键盘“WinR”打开运行(如图所示)。 2、打开运行后,在其中输入“control”并点击“确定”打开控制面板(如图所示)。 3、打开后,进入“bitlocker驱动器加密”(如图所示)。 4、随后展开被加密的磁盘&…

Java虚拟机JVM常见面试题记录

文章目录 1. 运行时数据区2. 垃圾回收算法3. 垃圾回收器4. 类的加载过程5. 类加载器双亲委派机制沙箱安全机制 1. 运行时数据区 在Java虚拟机(JVM)中,运行时数据区可以分为以下几个部分: 方法区(Method Area):也叫静态…

Luat功耗指南

目录 功耗管理简介常用模块功耗指标API说明3种工作模式:1. 全功能模式2. 休眠模式3. 最少功能模式 实现流程全功能模式休眠模式最少功能模式 示例全功能模式休眠模式最少功能模式 常见问题一、飞行模式 和 超低功耗模式 哪个更省电?二、为什么模块无法进…

只需2.5W功耗,就能达到5TOPS算力!地平线新一代AIoT芯片「旭日3」发布

金磊 发自 凹非寺量子位 报道 | 公众号 QbitAI 地平线主打AIoT的「旭日家族」,再添一员「猛将」。 今天,这家 AI 芯片独角兽在其「释放 芯效能」发布会中,推出了全新一代 AIoT 边缘 AI 芯片——地平线「旭日3」。 △地平线创始人兼CEO 余凯 …

低功耗设计之RTL级降低功耗

最近在看《硬件架构的艺术》这本书,本篇博文也是来自书中的内容。随着工艺的进步,低功耗设计显得越来越重要了。作为一个数字前端设计师,我们就来看看如何在RTL级别减低功耗。实质上在大规模ASIC设计中,当RTL级设计完成的时候&…

STM32功耗介绍

一、背景 计算功耗主要是因为需要使用到太阳能板供电,为了选择合适的太阳能板需要计算一下负载的功耗。(系统模块包括:STM32F103ZET6、一个1.1W湿度传感器、1个有人4G-DTU(0.84W)) stm32一天最大不到3W&am…

stm32 3种低功耗模式

STM32 的低功耗模式有 3种: 1)睡眠模式(CM3内核停止,外设仍然运行) 2)停止模式(所有时钟都停止) 3)待机(standby)模式(1.8V内核电源关闭) 从待机模式唤醒后的…

ESP 低功耗入门

此篇博客以 ESP32 为例来说明 ESP 的睡眠模式。 ESP32 芯片可以大致分成以为五个模块: RF 模块,也就是射频模块,用于蓝牙 / Wi-Fi 的收发(TX / RX)功能。CPU,如 Xtensa 内核 (ESP32 / ESP32-S2 / ESP32-S3),RISC-V 内…

STM32L152的低功耗测试

本文将验证STM32L32在stop模式下的低功耗电流。 在ST官网的STM32L152RE芯片介绍上明确有说明此芯片在stop模式下可以达到560nA,纳安!并且还可以支持16个外部中断唤醒。 真的这么强!下面来验证一下。 采用NUCLEO-L152板子进行验证&#xff0c…

ESP功耗

ESP功耗 ESP32ESP32-C3对比ESP32ESP32-C3 ESP32 ESP32-C3 对比 ESP32 相较而言, ESP32的功耗是要高的, Deep Sleep 唯有Hibernation模式(RTC定时器唤醒)5uA的功耗, 根据其它人的实测Deep Sleep (设置EXT0唤醒)功耗为6.3uA. 待后…

STM32的功耗模式

按功耗由高到低排列, STM32 具有运行、睡眠、停止和待机四种工作模式。 低功耗各模式下芯片工作情况: 睡眠模式:仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常 运行。有两种方式…

GTO、GTR、MOSFET和IGBT的区别及应用

GTO、GTR、MOSFET和IGBT的区别及应用 1. GTO GTO(Gate-Turn-Off Thyristor)是门极可关断晶闸管的简称,他是晶闸管的一个衍生器件。但可以通过门极施加负的脉冲电流使其关断,属于全控型器件。 门极可关断晶闸管是一种具有自关断能…

TorchScript 中的动态并行性

TorchScript 中的动态并行性 在本教程中,我们介绍在 TorchScript 中执行动态互操作并行化的语法。 此并行性具有以下属性: 动态-创建的并行任务的数量及其工作量可能取决于程序的控制流。互操作-并行性与并行运行 TorchScript 程序片段有关。 这与运算…

lab值意义_色差仪lab值含义是什么?

在1931年,国际标准照明委员会(CIE)建立了一个系列,可表示可见光谱的颜色空间标准。比较基本的CIE色空间标准是CIE XYZ,它建立在标准观察者的视觉能力基础上,反映了标准人眼可见颜色的范围。基于CIE XYZ又有CIE Lab、CIE xyY、CIE …

shell_常用查看资源

----- 进制转换 ----- printf命令 输出格式 输入参数 10 <- 16 printf %d’\n’ 0x6c76 16 <- 10 printf %x’\n’ 27766 #输出6c76 备注 1.10<-16时, 输入参数添加0x表示16进制 2.%x’\n’, 输出到控制台时, 添加换行符 ----- 查看cpu ----- a.查看物理cpu个数&a…

方舟官方服务器怎么不显示伤害,方舟单人怎么显示伤害 | 手游网游页游攻略大全...

发布时间&#xff1a;2016-06-11 有些玩家不太喜欢集体生活,喜欢一个人单独行动,这篇个人生存发展攻略,让你一个人也能发展的很好,后期让你杀人越货玩到爽. 有些玩家不太喜欢 ... 标签&#xff1a; 方舟生存进化个人抄家攻略 方舟生存进化单人PVP攻略 发布时间&#xff1a;2015…