http://candycat1992.github.io/2016/06/25/diablo/

视频:GDC 2013

Diablo(暗黑破坏神),暴雪出品。演讲者是暴雪TA,额最后的QA环节听出来代码不是他写的(恩什么ps、vs他看起来也完全不知道,“I have no idea, haha”)……看来暴雪TA负责是的设计shader和特效,但代码还是另外由人来写的。

Simon在他的文章里详细分析了翅膀特效的实现,他当时没看到这个演讲所以很多靠猜很不容易……

“Blend Add” Shading

传统的additive(左边)太亮了,blend(中间)缺少bloom效果,所以他们选择右边这种。

他们所说的Blend Add实际就是把各个颜色或透明通道相乘以后又乘以了2进行加亮。

Blend One OneMinusSrcAlpha // Blend Add

Texture Multiplication Shader

下面的公式就是所有特效使用的基本公式,简单来说就是在普通的乘法后又乘以2。

下面他举了很多例子。先从最简单的开始。下面是两张非常简单的纹理,只考虑alpha通道,因此rgb现在都是白色。TEX1和TEX2是两张相同的纹理,但是按照不同的速率滚动,乘起来之后就可以得到右边的效果。看起来像云。

下面再添加一张纹理,TEX2现在是缩放成0.5,TEX3是放大成2.0,然后按不同速率滚动,得到更加复杂的类似云层飘逸的效果。

下面是再添加一张texture(其实只是第二张,前三张本质是一张纹理,只是uv不同),这张纹理定义了particle的基本区域,然后乘起来(注意这里没有乘以2,因为只是想作为mask)得到一个基本的particle渲染效果。

下面是把7个这样的particle叠在一起的效果,就很有圆状的动态效果了。

他指出很多特效都是靠这种方法,然后举了一些实际的例子。例如下面的幽灵毒药效果,TEX1不动,TEX2不断向上滚动,把17个这样的particle叠加起来就得到了右侧的效果。

再比如下面的火焰特效。

以及下面的冰冻拖尾特效。拖尾的动作还是依靠改变particle网格动画得到的,但每个particle的渲染是使用了这种方法。

下面这个特效也是仅靠两张texture来实现的。

下面这张图是上面那个特效的实现细节。TEX1是一个不动的纹理,TEX2不停滚动,然后整个特效再依靠12个particle的运动来实现。

同上,还有一些更复杂的例子。这个火焰只使用了23个particle。

上面的特效,这种方法来用于渲染一些伪体积渲染。例如下面的烟雾,只用了60个particle。

下面这张图是真正的网格。

下面的地火也是,只用了28个particle,和一些滚动的纹理。


这种方法大大节省了particle的数目,从而减少了overdraw,在作者看来这是一个huge win!oh yeah!这种方法的瓶颈其实是在memory上,而不是shader计算上。每个particle多用了大概两张texture,但减少了很多overdraw。

QA环节有一个人问,为什么要把alpha和rgb分开,和在一起可以吗?除了一些内容创建的原因,他更倾向于分开,因此这样每张texture都比较小,texture load的时间就比较快。

Diablo(暗黑破坏神)的特效实现相关推荐

  1. 事后分析:暴雪的暗黑破坏神 II【翻译】

    原文章地址: Postmortem: Blizzard's Diablo II 文章阅读大约需要5-10分钟,了解暗黑破坏神II开发背后的故事. 正文: 暗黑破坏神发布后,我们花了大约三个月的时间来为 ...

  2. 大型计算机 水冷,思聪排第二 2015年20大水冷定制机排名

    12015年20大定制主机排名 很快,2015已经悄悄的从每个人的回忆中溜走,在这一年中,本站曝光了很多的MOD定制水冷主机,那么今日我们几十款定制水冷机以排名的形式展现给每一个网友. 当然,这20大 ...

  3. 转一个游戏里用到的英文单词

    Account[ә'kaunt]账号 action['ækʃәn]脚本 AI[ai]abbr. 人工智能 algorithm['ælgәriðәm]算法 Alias['eiliәs]锯齿 alpha ...

  4. Blizzard Something

    暴雪巨头精彩语录: "对于我们父母和更上一辈的人来说,[制作游戏]几乎不能算是一份工作!"――Max Schaefer "让我们回到工作室坚持下去的动力是制作伟大游戏作品 ...

  5. pandas模块使用介绍

    pandas模块使用介绍 1.pandas简介 ​ pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型 ...

  6. 越狱Season 1-Episode 6: Riots, Drills and the Devil: Part 1

    Season 1, Episode 6: Riots, Drills and the Devil: Part 1 - Diamond: Just a few more rides. 就再多玩几次吧 O ...

  7. Blizzard(暴雪)公司的历史

    星际争霸>(starcraft)在游戏圈内可以说是大名鼎鼎,如雷贯耳.但是制作<星际争霸>的暴雪公司(blizzard)则远远不如它的产品有名.而实际上,暴雪公司已经成为游戏产业的一 ...

  8. 上周版面人气及综合利用率排名 2011-11-13

    1       Job             毕业生找工作 2       Talking         谈天说地 3       Picture         贴图秀 4       Frie ...

  9. Blizzard(暴雪)公司的发迹史

    <星际争霸>(starcraft)在游戏圈内可以说是大名鼎鼎,如雷贯耳.但是制作<星际争霸>的暴雪公司(blizzard)则远远不如它的产品有名.而实际上,暴雪公司已经成为游戏 ...

  10. 顶尖游戏公司介绍---暴雪

    暴雪公司主页 http://www.blizzard.com/ 1991       Silicon & Synapse公司成立,同时发展RPM游戏 * 成立后Allen Adham为公司总裁 ...

最新文章

  1. nginx 部署antd_design_pro
  2. AAAI 2022接收论文列表发布,1349篇论文都在这了!
  3. uc浏览器为什么安装在c盘_你肯定不知道为什么Windows上面的软件都想把自己安装在C盘...
  4. codeforces Labyrinth
  5. 看不见的战斗——阿里云护航世界杯直播容灾实践
  6. mysql读取自增值失败_MySQL添加自增列失败
  7. Count Primes
  8. 精美绝伦的KShong GHOST Windows7-Pro 2010幸福版
  9. wms仓库管理系统中条形码管理的两大优势
  10. Java中获取时间戳
  11. 添加打印机,错误为0x0000011b
  12. 程序员教你玩转电脑手机
  13. Shaderlab 玻璃效果
  14. 【内网穿透笔记】FTP映射出现227 Entering Passive Mode错误命令原因及解决方法
  15. esp8266 nvs应用
  16. 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1005 Lunch (杭电 6892)
  17. 计算机老是跳出usb设备无法识别,电脑一直弹出无法识别的USB设备的解决办法
  18. 基于Django的博客BBS项目
  19. 得分(Score,ACM/ICPC Seoul 2005,UVa1585)
  20. [GWCTF 2019]枯燥的抽奖 1——php_mt_seed

热门文章

  1. 调用NMAP批量扫描IP端口
  2. php redis事务,Redis中事务的使用详解
  3. Centos8安装软加密狗
  4. android简易计算,android实现简易计算器
  5. Comarin香豆素标记金纳米团簇|Ce6二氢卟吩标记金纳米团簇|红色荧光的水溶性金纳米团簇(T-Au NCs)
  6. 查看电脑ip,关闭电脑,远程重启关闭等电脑命令大全
  7. (五)比赛中的CV算法(上)cv基础知识和opencv的api
  8. 留言赠书|AI圣经,这本书YYDS
  9. 个人知识管理系统 mysql_个人知识管理系统Version1.0开发记录(12)
  10. CLAHE算法实现图像增强「AI工程论」