Unity引擎渲染模块知识Tree汇总

Unity引擎渲染模块知识Tree汇总

自UWA学堂上线以来,我们也陆续推出了多篇知识Tree,按模块知识和难易度分类,旨在帮助大家更体系地学习,一步步进阶。

渲染效果作为游戏表现力的核心卖点之一,也是开发者们普遍关注的焦点。往期为大家整理过相关的知识模块推送,随着时间的推移有部分更新,本期将汇总学堂上所有的渲染课程,包含UWA Blog的相关技术文章,方便大家更快速明确地查找到需要的内容。

UWA学堂界面中的“分类“选择渲染即可查看相关课程。

无论对于从业者还是正在读大学的技术萌新,学习的有效时间和个人时间都是有限的。高效学习者最在意的是时间的价值,一个需要体系化的知识地图就显得尤为重要。


零基础

光影

《漫谈HDR和色彩管理》

本课程从什么是色彩空间和色度图谈起,介绍了常见的SDR和HDR颜色空间标准,以及ACES色彩管理的基本流程,最后介绍UE4引擎是如何集成ACES和HDR显示到其相关的渲染管线中,从而让读者能够真正理解HDR显示的必要性,以及更加深刻地了解如何在引擎里实现一套基本的色彩管理和HDR显示流水线。

课程内容概括如下:
第1节:介绍什么是光和颜色,什么是CIE 1931 RGB/XYZ颜色空间,如何看懂色度图等。
第2节:介绍颜色空间的完整定义,列举常见的颜色空间标准及其定义。
第3节:为学习HDR和ACES做铺垫,以我们最为熟悉的sRGB色彩空间为例,回顾和学习之前提到的各种知识点是如何在SDR这条流水线里运作的。
第4节:从SDR色彩空间的缺陷引出HDR色彩空间的必要性,列举了常见的HDR颜色标准;介绍ACES的相关定义及其基本的色彩管理流程。
第5节:回归初心,介绍现有游戏和UE4引擎对HDR显示流水线的相关实现。

《详解Unity引擎渲染模块》

从基本的渲染流程入手,学习Unity渲染流程的各个部分及原理,分别从顶点片元着色器及表面着色器了解Unity Shader基本规则及写法。学习使用Unity Shader控制渲染流程各个部分及可编程部分编写。从简单光照模型、贴图采样、法线采样、立法体纹理采样、透明度测试、透明度混合、模板测试到前向渲染复杂光照以及延迟渲染等,对Unity Shader基础知识做了详细的解释。这门课程属于基础课程,建议对渲染有兴趣及刚开始学习渲染的同学购买。

粒子系统

《Visual Effect Graph入门和实践》

相信开发者们已经注意到Unity在最近的版本中进行了很大的改动,例如:新的开发模式DOTS、新的粒子特效系统、新的渲染管线URP、新的输入系统InputSystem和新的Shader系统ShaderGraph等等。对于开发者来说,Unity朝着更加方便,更加高效的开发方向发展显然是件好事。

本文所要讲解的正是新的粒子系统Visual Effect Graph(由于个人习惯,笔者会简称为VFX),由3W原则入手来介绍VFX,它是什么?为什么要使用它?最后着重介绍了我们要如何使用VFX。

目前网上的资料相对较少也不成体系,笔者学习和摸索了上百个小时整理出来的入门教程,目前仅能满足项目中的常见的开发需求,希望对大家有所帮助。

《UE4 Niagara粒子特效快速入门》


本课程比较全面和系统地介绍了UE4新版粒子——Niagara粒子系统。对比传统的粒子系统,Niagara的架构更加科学合理,采用全新的节点式模块化逻辑,可以兼容更多的资源,拥有更加灵活的组合,是未来UE5的发展方向。

课程从最基础开始讲解,从如何建立粒子到粒子如何碰撞,粒子事件如何发生等等,除此之外还有UE4的材质系统、材质节点、贴图以及外部资源的导入、定序器等相关内容,基本上涵盖了UE4的Niagara粒子全部模组跟属性。

课程属于基础内容,适合对UE4感兴趣想入门的同学。

SRP

《Unity SRP从零搭建一套图形渲染管线》

可编程渲染管线 (Scriptable Render Pipeline)简称SRP,是一种在Unity中通过C#脚本配置和执行渲染的方式。通用渲染管线 (URP)和高清渲染管线 (HDRP)都是基于SRP衍生出来的。SRP允许你根据目标平台定制渲染流程,可以优化特定硬件的性能。Unity2019版本已经将SRP从Preview版转为正式版,为了便于区分开来,通常叫做CRP(Custom Render Pipeline,自定义渲染管线),不过大多数人更习惯于叫它SRP。目前已经有很多知名游戏公司的Unity新项目使用了SRP或URP,可编程渲染管线是未来的趋势,它的高性能和高度定制化注定会逐渐取代内置渲染管线(Built-in Render Pipeline)。通过本系列教程,我们将从零开始,搭建一套涵盖最基本功能的渲染管线,来学习其背后的技术原理。

本系列教程是参考著名的Jasper Flick先生在Catlike Coding上著作的Custom SRP系列文章所作,有很多内容是直接从原英文教程中翻译过来的,大家也可以去他的Catlike Coding上去学习更多的技术。他的教学模式非常的友好,从浅到深,从易到难,一步步地实现一些功能模块。我将延续他的这种教学模式,不过我将对原教程中的很多技术知识点作出更详细的讲解说明,因为只有明白其原理和实现技术,我们才能更容易的理解后面的内容和代码的实现。原教程更针对于有一定的图形编程基础或者对内置渲染管线有一定研究的人学习,它对一些技术点只是一概而过,这会导致在某些地方对初学者不太友好,我在学习的过程中有所感受,同时本人对一些技术点的讲解也参考了一些很不错的书籍和文章。最后,本系列教程的内容后续还会更新,包括新的技术内容,以及优化部分小节的内容。另外,在每个小节的最后还会提供相关章节的Demo工程和源码供大家学习和实践

其他

《轻量级Web3D引擎关键技术及移动网页在线可视化示范应用》

嘉宾讲师所在团队针对Web3D的三大瓶颈(数据量太大而导致的服务器端出口瓶颈、因网络传输速度慢而导致的带宽瓶颈、因网页浏览器计算力不足而导致的视觉效果差与渲染速度慢的网页端渲染瓶颈)问题进行了长期的研究,并提出了一个系统的轻量级细粒度化解决方案。

首先提出了大规模3D场景的轻量化与细粒度化方法,在保证模型细节与精度的前提下,将其组织成适合移动互联网的轻而细的场景图表达方式。透过将渐进式传输与对等传输的耦合,提出了基于兴趣度的渐进式对等传输调度机制,尽可能提升Web3D场景在线即时加载的流畅性。最后提出了轻量级Web3D全局光照在线渲染管线,即云端仅烘培Lightmap,再将其传到网页端并贴在相应模型上,这使得云端计算的强度与频度以及网络带宽消耗都得以大大降低,在网页端成功实现了全局光照的在线渲染。

在长期的项目实践中,上述轻量级关键技术也逐步集成为轻量级Web3D引擎,本次报告会在线展示利用该引擎实现的若干移动WebVR/WebGame/WebBIM案例,这些手机在线案例充分展示了该技术路线的先进性及其在线可视化应用的广泛性。

《三维数字世界的虚与实》

随着科学技术和采集设备的发展,三维世界的数字化与智能化将是未来各行业智能化应用的空间智能基础,也孕育了无数机遇和挑战。三维数字世界及三维互动体验的时代已逐渐走来,三维技术已在工业设计、电影工业、电子游戏、智慧城市、动漫娱乐、智能制造、虚拟现实与增强现实等方面越来越广泛的应用。本报告将汇报与展示我们在三维几何建模、大规模场景绘制、时空数据融合、虚拟现实、3D打印等方面的研究与应用。

《虚幻4渲染编程(数学篇)》

本课程介绍了一些游戏开发中常用的数学原理推导,共分为五小节:
第一节从头开始复习游戏开发所需要的数学理论,然后再结合例子,把抽象的数学理论变成可以在屏幕上看到的效果和代码,一边做效果一边重新复习数学。
第二节是对各种求导的复习并介绍了求导在游戏视觉效果开发中的应用。
第三节针对各种矩阵进行了重新推导。
第四节介绍了使用四元数的方式来进行旋转变换之后再转回成欧拉角。
第五节介绍了游戏渲染中用光线和AABBBox、球、平面、三角形相交的这部分求交原理。


初级

《UWA本地资源检测使用方法与规则原理》

UWA本地资源检测是对游戏、VR等项目工程的资源、代码和设置等进行自动检测的插件与服务产品,是项目研发持续集成、持续交付流程中的重要工具,旨在为游戏研发制定资源与代码规范,帮助研发团队快速发现和解决项目中的性能问题与可能出现的异常、错误。研发团队可通过日常的自动检查,规范程序、美术成员的开发,从源头上对项目进行优化,规避风险,节约成本。

本系列课程旨在帮助大家更好更快地将本地资源检测运用到项目当中,内容主要包括:基本介绍、用法演示和规则讲解等,以连载的方式更新,同时会随着产品的迭代以及大家的需求增加新的内容。

光影

《Unity引擎实用阴影渲染技术全解析》

本课程主要讲解了当前中国Unity项目研发过程中最为常用且实用的三种阴影实现方案:基于ShadowMap的阴影渲染技术、基于Projector&RenderTexture的阴影渲染技术和适合于特殊场合的Flat Shadow渲染技术。我们分别详细介绍了其理论原理及其在Unity引擎中的具体实现和使用细节,以期让大家能够全面了解和掌握Unity项目开发过程中阴影渲染相关的实用技术方案。

另外,该课程还重点讲解了目前三款Unity Asset Store中非常受研发团队欢迎的阴影相关插件:MobileFastShadow、FastShadows以及FastShadowReceiver。大家不仅可以了解其实现原理和适用场景,同时也可以结合自身项目来采用对应的阴影实现方案及优化方案。

后处理

《屏幕后处理效果系列之图像模糊算法篇》

屏幕后处理效果(Screen Post Processing Effects),是游戏中实现屏幕特效的方法,有助于提升画面效果。UWA学堂将推出一个系列课程,带领读者从基础开始逐步掌握各种屏幕后处理效果的理论基础和实现方式。

本篇讲解的是图像模糊算法。在游戏中经常被应用的屏幕后处理特效,例如炫光(Bloom)、景深(Depth of Field)、镜头光晕(Glare Lens Flare)、体积光(Volume Ray)等效果,都用到了图像模糊算法。

从图像处理领域的角度来看,图像模糊算法是一种低通滤波算法。经过低通滤波器处理后的图像效果看起来像是将图像变模糊了,故而被应用到屏幕后处理特效中。图像模糊算法有很多经典算法,例如:高斯模糊算法(Gaussian Blur)、盒式模糊(Box Blur)、Kawase Blur和Dual Blur等。在本篇中将结合Demo学习相关算法及其优化算法,探究其应用与优化方式。

《屏幕后处理效果系列之常见后处理效果篇》

屏幕后处理效果(Screen Post Processing Effects),是游戏中实现屏幕特效的方法,有助于提升画面效果。UWA学堂将推出一系列课程,带领读者逐步掌握各种屏幕后处理效果的理论基础和实现方式。

本篇讲解的是常见后处理效果,将结合Demo学习在游戏中经常被应用的屏幕后处理特效,例如眩光(Bloom)、景深(Depth of Field)、镜头光晕(Lens Flare)等效果的相关实现方式及其实际项目应用中的优化方式。

《详解Unity引擎的屏幕后处理功能》

该课程主要讲解了部分Unity引擎屏幕后处理的具体实现方法,包括色调调整、屏幕扭曲、抗锯齿、Bloom、景深、高度雾等,一步步教你如何实现屏幕后处理效果,并且讲解如何灵活使用Unity官方Post Processing,最后介绍几款当前热门且游戏研发团队常用的屏幕后处理插件,主要包括:Mobile Lighting Box、MK Glow、2D Weather Effects和100 Post Processing Styles,供大家参考学习。

光线追踪

《光线追踪技术入门》

Nvidia RTX的技术重新激发了实时图形学界对于光线追踪技术的热情,但是对于大部分游戏从业者来说,光线追踪的技术还很陌生。本文从光线追踪的理论基础开始,完整地梳理了光线追踪技术发展历史、技术流派及常用的降噪理论,并结合最新DXR API的代码示例,讲解了DX12下光线追踪API的架构及编程方法。

PBR

《详解Unity引擎基于物理的渲染功能》

从基于物理的渲染(PBR)基本概念入手,在了解相关技术概念后,将其分成如下部分单独讲解,包括:BRDF漫反射、BRDF高光反射、菲尼尔函数和能量守护等,讲解Unity中的PBS实现原理及分析UnityPBS代码。最后通过案例进行实际相关操作调整。

SRP

《URP从原理到应用——基础篇》

自Unity 2018推出了SRP(可编程渲染管线)以来,基于SRP的基础又推出了URP和HDRP。SRP的出现具有跨时代的意义,内置渲染管线无法对开发者提供一些定制化修改接口,普通开发者无法去学习渲染管线,导致大部分开发者对这块知识都很匮乏,不利于个人成长。

基础篇主要介绍了URP的使用,如何快速从Built-in管线切换到URP,着色器如何升级,URP目前提供的功能使用说明,Shader Graph使用案例以及SRP Batcher的原理与应用,旨在帮助开发者快速上手URP。

其他

《详解Unity引擎Shader Graph功能》

Shader因为涉及数学、图形学、coding语法等诸多知识点,一直是Unity开发的难题,较高的技术门槛将很多新手挡在门外。而Shader Graph的出现,可以说是给开发者带来了福音。通过它,开发者可以直观地构建着色器,可以在图形网络中创建和连接节点,而无需手写代码。具体包括但不限于:

  • 按部就班的改变界面外观
  • 扭曲和动画UV
  • 使用熟悉的图像调整操作修改对象的外观
  • 根据相关的有用信息更改对象的表面,包括它的世界位置,法线,相机距离等
  • 将属性公开给Material Inspector,以便您可以在场景的上下文中快速调整着色器的视觉效果
  • 通过创建子图的方式,在多个图和用户之间共享节点网络
  • 通过C#和HLSL创建自己的自定义着色器图形节点

Shader Graph提供了有关更改的即时反馈,即便是新用户也可以很容易参与着色器创建。本课程通过15节视频讲解,带你全面学习使用Unity最新Shader可视化编辑器——ShaderGraph,课程中详细讲解了Shader Graph的使用方法,Shader Graph所有节点解析,使用Shader Graph制作部分效果的案例以及Unity官方Shader Graph案例工程,让你可以快速上手,学习Unity最新技术知识。

《噪声及其在渲染中的应用》

噪声(Noise)其实在渲染里面的应用非常广泛,很多程序化建模、程序化纹理都常常用到噪声,给场景加入一些噪声可以减少重复感。同时,噪声利用得当,可以实现很多特效。

本节课程的噪声不只是指那些黑白颗粒的老式电视机的白噪声。课程将会介绍几种渲染中经常应用的噪声:白噪声(White Noise)、柏林噪声(Perlin Noise)、值噪声(Value Noise)和沃利噪声(Worley Noise)。然后会介绍一些用于增加噪声细节和变化的方法,如:分形布朗运动(Fractal Brownian Motion)、Domain Warping(定义域扭曲)。最后分三个课时手把手写Shader代码,利用前两部分的理论知识做3D Perlin Noise切片动画、水面折射的焦散光纹和火焰特效。

《移动端渲染新技术展望》

随着移动GPU性能的增强,很多从前只出现在PC和主机端的渲染技术被越来越多的手机游戏借鉴和使用。本次报告是通过介绍移动渲染近年来新技术的发展和应用场景,给手游开发者们提供更广阔的思路,并进一步推进手游画质的边界。主要内容包括:移动GPU与桌面GPU的对比、延迟渲染、Variable Rate Shading、GPU Driven Pipeline、光线追踪等。

Blog文章

《Unity移动平台下的烘焙使用及优化》

移动平台下场景制作的规模越来越大,开放视角的3D大世界场景,对地图大小、可视距离的要求越来越高,随之带来了地形尺寸变大、场景物件种类变多、物件的模型面数和数量增长,对美术效果上的要求也趋近于主机和PC端游戏。

Realtime Global Illumination 在移动平台下还不能随意使用,美术场景的光照主要还是以 Baked GI 为主,随着Unity版本的升级,场景烘焙流程也迭代过几个版本,但是仍然暴露出了越来越多的问题。在Unity官方的技术支持下我们发现在烘焙流程中疏忽了一些很重要的环节,加上升级Unity 2017.4后更换了烘焙模式,因此而整理此文。


进阶

《Unity项目从Gamma转Linear颜色空间的经验分享》

1、为什么要使用Gamma?为什么要使用线性空间?如何选择项目的颜色空间?
Gamma的工作流程就是一个编码和校正的过程。图像使用sRGB颜色标准进行编码存储在硬盘中,通过显示器的Display Gamma校正还原实际的效果。因为经过了Gamma Encoding 1/.2.2,所以图形处理的中间过程是非线性的。线性空间意味着数据计算的正确性,在线性空间对颜色数值和光照强度进行相加、相乘等计算得到的结果与真实的结果一致。线性空间渲染管线的计算结果需要进行校正然后经过显示器还原实际的效果。Gamma空间和线性空间分别适用于不同风格类型的游戏。

2、在制作和使用美术资源之前,你真的理解了线性空间吗?
美术通常只遵循制作规范,并不完全理解线性空间。使用DDC工具来创建美术资源时,美术在制作过程中需要直观地看到输入和输出的结果。我们可以保证输出结果是线性的,但是线性输入无法让人眼正确的识别颜色,所以在制作过程中使用的输入贴图和颜色数据都是非线性的。我们使用线性空间的制作流程时,与颜色无关的贴图和数据的输出是线性的,一般情况下与颜色相关的贴图输出是非线性的(sRGB颜色标准)。

3、从Gamma转到线形空间后,美术工作流程有什么变化?美术资源调整的工作量有多少?
美术的贴图资源需要规范化,在确定了使用线性空间时,还需要确定哪些贴图是线性空间贴图,哪些贴图是Gamma空间贴图,Gamma空间的贴图在使用时需要勾选sRGB。 美术需要验证材质物理属性的正确性,调整场景光照,修正场景、特效、UI的半透明效果。

4、程序可以帮助美术解决哪些问题?
我们升级和使用线性空间都是为了更好的美术表现,从Gamma升级到线性空间不会对客户端的代码有任何影响,主要是技术的升级带来一些制作规范、工具流程的代码调整。程序可以让线形空间下的制作规范对美术透明化,自动完成Texture Import Settings的设置,让美术不需要关心在Unity编辑器中对贴图的设置。程序可以对项目中需要转换线性空间的贴图进行批量处理,减少美术工作量。

光影

《Console级写实画面游戏的技术探索之路》

3A单机游戏的研发一直是国内游戏行业的痛。国外3A游戏普遍在拟真度上有非常高的水平,无论画面还是动画都力求逼真,这不仅仅考验渲染技术的水平,同时也对美术资源品控、生产效率、写实动画制作和动画融合技术带来巨大的挑战。本次报告分享了嘉宾讲师所在团队历经两年摸索积累的一些经验和教训。包括:
1)前言及《黑神话·悟空》Demo展示
2)写实画面的光和影
3)我们需要做什么?
4)手游的高品质与高性能

《Unity HDRP烘焙技术原理及应用》

从HDRP 7.0版本开始,HDRP正式脱离Preview标签,成为正式版,未来HDRP将不会产生太大的框架性的变动。如果你希望获得效果炫酷的照片级渲染效果,现在正是学习HDRP的好时机。

然而,想获得非常高的画质表现,对于烘焙的理解是必不可少的。HDRP的全局光照和Build-in管线的全局光照在Planar Reflection、Screen Space Reflection、Light Layer、Reflection Hierarchy等方面是不同的,所以在一定程度上需要重新学习。当然,有一部分知识与Build-in管线的烘焙也是重合的,例如:Lightmapper参数、光照探针、Lightmap Parameter Asset等等,所以也可以使用本教程的内容作为Build-in管线烘焙的参考。

在HDRP中,通过Lightmap、光照探针、反射探针、Planar Reflection等技术,可以获得优秀的间接光和阴影,让产品的真实度上一个量级。

《如何实现角色的自阴影效果》

本课程介绍了如何不使用任何光照来实现角色自阴影,并且能够适应于各类高中低配手机。从实际需求入手,逆推解决问题方法,从目的反向找出正确的处理流程,除了能够学习到如何不用光做出光影效果,更能掌握解决问题的方法;从性能入手,让大家对自阴影的性能知根知底;最后附带Demo的代码,更能让大家立刻在项目中将其实装,提升自己游戏的表现力。

这门课程虽然不属于基础课程,但对渲染有兴趣或者刚开始学习渲染的同学也能从中受益。

《光照贴图Lightmap初探》

光照贴图是游戏中很常用的一个技术,不同引擎都有相似但细节处又有很多不同的实现。本文将从原理出发,梳理Unity/UE4等引擎的不同实现,并着重分析项目开发过程中常见但很容易被忽视的精度问题及解决办法,以及很多实际工程中会遇到的问题及对策。

通过对本文阅读,读者能对包括光照贴图、光照探针等一系列全局光照相关技术有所认识,并结合到实际工作中。

后处理

《Unity引擎景深实现原理剖析与优化》

从基本的后处理渲染流程入手,学习DepthOfField渲染流程中的各个部分及原理,分别从如何通过深度图计算出模糊圈、计算焦外模糊效果,如何把模糊图与原图混合完成焦点清晰、焦外模糊的景深效果入手,通过剖析其每一步的原理与GPU耗时,分析思考对其进行优化,从而提高渲染效率。希望读者们可以通过此文学习并掌握后处理性能优化的方法。

流体模拟

《基于网格的GPU流体模拟》

文章主要介绍了基于网格的流体模拟的基本原理及其实现方式,分为4个部分。首先,简单介绍了流体模拟的概念,再是介绍相关的数学基础,然后在理论上从流体方程Navier Stokes入手,对其分解解析,逐步分析公式的每一部分的数学概念和解算过程,最后在Unity上通过Demo实现流体模拟的每一部分的计算并进行讲解。

本课程属于进阶课程,解算过程相对晦涩,适合有一定的图形学基础、数学基础或者Shader编程经验的读者。

PBR

《Unity和Substance Painter的Look Dev显示校准》

随着PBR制作流程在手游开发里逐渐发力,Substance Painter在美术绘制贴图方面开始发挥越来越重要的作用,如何让美术在制作美术资源时能够所见即所得地得到和游戏引擎一样的渲染效果,成为开发Look Dev阶段非常重要的一个流程。由于不同项目的渲染风格不同,Substance Painter默认的显示效果无法和Unity等游戏引擎中的渲染效果保持一致。本文介绍了一套基本的Unity和Substance Painter的Look Dev显示校准流程,能够适应不同的渲染材质、Tone Mapping算法,让美术同学在制作资源时可以得到近乎完全一致的渲染效果。

《基于物理渲染功能的重要知识合辑》

本课程整理了UWA Blog上7篇关于物理渲染的文章,方便大家整理查看。

  1. 《迪士尼的渲染模型》
    基于迪士尼公司分享的在电影渲染中用到的PBR渲染光线模型,该模型的提出并非基于物理真实,而是偏重于对美术设计者的友好和易于使用。通过本文的学习,可以加深对PBR渲染管线原理的理解,从而更好地在工作中应用。

  2. 《微表面模式 – PBR渲染管线的材质》
    基于微表面模型,提出了新的材质模型,很好地考虑了对菲涅尔现象、阴影遮蔽以及微表面朝向分布等因素对高光项的影响,从而能够更好地模拟粗糙表面的高光现象。

  3. 《更精确的微表面分布函数GGX》
    基于2007年图形学会议EGSR的一篇论文,创新性地将微表面反射模型推广到了表面粗糙的半透明物体,从而能够模拟类似于毛玻璃的粗糙表面透射效果。文中介绍了BSDF函数、全新的微表面分布函数GGX,能够为您的实际应用提供理论指导。

  4. 《基于球面调和基的实时全局光照明》
    详细介绍了球面调和基函数、传输函数,以及预计算和实时渲染的过程,不仅提供了实现全局光照技术的方法,还提供了优化实时渲染性能的思路。

  5. 《基于Haar小波基的全局光照明》
    详细介绍了Haar小波基的算法和实现方式,这是一种采用非线性小波变换来替代线性SH变换的PRT算法,可以实时渲染出能够保留全频信息的全局光照效果,效果更加逼真。

  6. 《用真实光照亮物体》
    基于图形学、计算机视觉专家Paul Debevec 在1998年发表的一篇论文,文中介绍了使用真实拍摄光照贴图对虚拟物体进行渲染并融合的算法,以及 HDR (High Dynamic Range)及全局光线技术的使用。通过学习,您可以对改算法有深入的了解。

  7. 《HDR Tone Mapping》
    介绍了一种新的Tone Mapping算法,对于不同区域采用不同的缩放系数,从而自适应dodging-and-burning,能够在将高动态图转换为低动态图时防止高亮部分过曝,并且能达到在亮部和暗部都保持细节的效果。

《Unity PBR介绍及经验分享》

Physically-Based Rendering(基于物理的渲染)是最近几年比较火的一个话题,有不少的端游及手游都在项目里实际使用。那么这个PBR到底是什么?能起到什么样的作用?我们该如何使用好这个解决方案?本议题将从以下几个方面来说明:

  • PBR使用背景知识介绍
  • Standard Shader代码分析
  • 使用经验及性能优化分享

SRP

《URP从原理到应用——进阶篇》

自Unity 2018推出了SRP(可编程渲染管线)以来,基于SRP的基础又推出了URP和HDRP。SRP的出现具有跨时代的意义,内置渲染管线无法对开发者提供一些定制化修改接口,普通开发者无法去学习渲染管线,导致大部分开发者对这块知识都很匮乏,不利于个人成长。

进阶篇主要介绍了整个URP实现的原理,内置渲染Pass的步骤,CPU的渲染数据如何传递到GPU中使用,光照阴影计算方法,CPU和GPU渲染管线的区别,如何自定义渲染管线以及Render Feature的使用,最后通过五个例子实现对渲染管线源码的定制、优化默认情况下四次RT拷贝带来的性能开销,背景模糊效果、后处理拓展、3D降分辨率UI高清分辨率等。

《基于Unity SRP的手游渲染之道》

2010年,iPhone 4横空出世,开启手游时代。十年来,手游行业慢慢从蓝海变成红海。在2020年的今天,仿佛手游只剩下了两条路,要么就是玩法取胜,抓住用户的心;要么就是精品化,抓住用户的眼。这期间,手机硬件在升级,游戏引擎也在不断变化。终于,在2018年夏天,Unity提出了SRP的概念。本次课程讲师作为一名3D行业十年的老兵,聊一聊基于Unity SRP的手游渲染之道。

《Unity HDRP烘焙技术原理及应用》

从HDRP 7.0版本开始,HDRP正式脱离Preview标签,成为正式版,未来HDRP将不会产生太大的框架性的变动。如果你希望获得效果炫酷的照片级渲染效果,现在正是学习HDRP的好时机。

然而,想获得非常高的画质表现,对于烘焙的理解是必不可少的。HDRP的全局光照和Build-in管线的全局光照在Planar Reflection、Screen Space Reflection、Light Layer、Reflection Hierarchy等方面是不同的,所以在一定程度上需要重新学习。当然,有一部分知识与Build-in管线的烘焙也是重合的,例如:Lightmapper参数、光照探针、Lightmap Parameter Asset等等,所以也可以使用本教程的内容作为Build-in管线烘焙的参考。

在HDRP中,通过Lightmap、光照探针、反射探针、Planar Reflection等技术,可以获得优秀的间接光和阴影,让产品的真实度上一个量级。

《Unity 2019 SRP实战》

本课程介绍了手游行业渲染技术发展的历史背景,从2018年Q3开始回顾上一代和这一代爆款手游所使用的渲染技术,分析行业的发展趋势。对手游行业渲染技术未来发展的展望,从主机、PC游戏看手游行业渲染技术的未来。如何进行前瞻性的技术选型,是UE4还是Unity?轻量还是高清?自主研发还是抱大腿?以及技术预研成果的一些展示。

最后着重介绍了高清管线的技术细节:包含HDRP光照模型相对于URP和Builtin的区别,HDRP移动端设备适配时候所做的取舍,以及为适配移动端对ComputeShader所做的修改。

《画质与性能的权衡:如何使用可编程渲染管线(SRP)》

Scriptable Render Pipeline使用户能够更加灵活地控制Unity的渲染管线,以实现不同的渲染效果,同时也会带来不同的性能表现。这次报告将通过案例向大家展示LWRP,HDRP以及Custom SRP的使用,并通过数据来了解不同Pipeline的性能表现,以求让大家在开发过程中能够根据项目需求选择是否使用SRP以及使用何种SRP改进所用的管线。

精品项目案例

《Console级写实画面游戏的技术探索之路》

3A单机游戏的研发一直是国内游戏行业的痛。国外3A游戏普遍在拟真度上有非常高的水平,无论画面还是动画都力求逼真,这不仅仅考验渲染技术的水平,同时也对美术资源品控、生产效率、写实动画制作和动画融合技术带来巨大的挑战。本次报告分享了嘉宾讲师所在团队历经两年摸索积累的一些经验和教训。包括:
1)前言及《黑神话·悟空》Demo展示
2)写实画面的光和影
3)我们需要做什么?
4)手游的高品质与高性能

其他

《基于组件和配置的着色器编辑器框架》

文章主要介绍了一套完整的着色器编辑器框架。本教程从拆解常用的着色器功能入手,分别讲解了编辑器中的通用组件以及用法,着色器属性块和配置的相互包含引用方法,最后结合编辑器提供的功能讲解了一种材质资源的优化方法。本课程属于进阶课程,适合有编写着色器代码并且想进一步了解着色器编辑器设计方法的读者。

《自优化的绘制流水线优化》

介绍了嘉宾讲师近几年在绘制流水线上取得的一系列科研成果。首先介绍国际上创新提出的自优化(auto-tuning)的绘制流水线优化框架;其次介绍利用该框架开展的着色器(Shader)简化、能耗优化等多项技术,可应用于游戏、VR等实时应用中。

《如何高效使用GPU Instancing技术来进行草丛渲染》

游戏中经常需要在一个屏幕内渲染大量重复的物体。例如一望无际的广阔草原,郁郁葱葱的原始森林,流光溢彩的满地珠宝等等。在Unity开发中遇到类似需求的时候,很容易碰到性能瓶颈,导致设备卡顿发热。本文以草海渲染需求为例,详细介绍如何使用GPU Instancing技术进行渲染及性能优化。希望大家通过该文章可以了解和掌握以下内容:

  • 如何对场景中的海量重复物体(比如草海)进行高效渲染
  • 在使用GPU Instancing功能时,我们该注意哪些方面

《如何根据UWA制定技术选型》

在为上千款项目优化的过程中,我们发现很多团队由于前期的技术方案选择不合理,后期只能选择“治标不治本”的优化方案,前期的技术选型成为很多团队的一大痛点。因此,作为UWA性能保障体系中的第一环,我们将根据不同的游戏类型推荐恰当、优秀的使用工具和解决方案,以期助力研发团队找到最适合的技术方案。

Blog文章

《如何实现更真实的软阴影效果》

现实中,在地面上的人影往往因为被投射的物体是粗糙不光滑的,所以影子的轮廓也是有些模模糊糊,没那么棱角分明。在最新的游戏项目中,美术提出我们应该也做一个更柔和、更真实的实时阴影(本文中提到的阴影都是投射在其他物体上的影子,区分于自身的阴影)。

《Unity的Enlighten全局光照实践》

Unity一直以来被诟病的基本都是画面差,市面上大部分Unity产品或者游戏看着也确实没有Unreal和Frosbite系列的游戏那么有次世代的感觉。考虑到全世界都是一种类型大同小异的PBR,排除渲染方程导致的差异,那么效果不够好的主要原因或许就是因为没有一个比较真实的全局光照(GI)系统和没有比较全面的后期处理(PostProcess)系统。但实际上是Frosbite和Unity基本都是一套Enlighten的全局光照系统。那么Unity到底能不能做真实的渲染效果呢?


高阶

《航母战斗群中的巡洋舰 - 为项目保驾护航的技术美术们》

曾几何时,国内游戏制作圈儿中有了一小股被称为技术美术的新兴势力。诞生初期,他们顶着同样的头衔,游荡于各大电脑(或家用机)游戏开发公司,却做着各自几乎完全不同的工作。默默无闻,知者寥寥。后来,随着国内页游的兴起和手游的萌芽,他们甚至一度被排挤在仅有的几个自研引擎大厂与对接国外的各种外包公司中偏安一隅。但随着手游市场的崛起和画面要求的不断攀升,这一职业才逐渐浮出水面,甚至瞬间引爆,迎来了繁荣。那么技术美术到底缘何如此这般境况?本地报告将结合讲师自己这十几年的从业经历,从大量具体事例出发,尝试从技术美术的发展历程和在项目中所扮演的角色,娓娓试解释之。

光影

《Reflection Probe 实现伪室内和伪反射效果的改进方案》

使用Unity的ReflectionProbe可以实现伪室内效果,但由于其制作上有一定的限制,遇到复杂场景时制作并不方便。对于这一问题,作者提供了一个改进方案。在本文中,首先会讲解Reflection Probe的原理,然后参考这些实现过程制作了一个Fake Reflection的工具,就可以自行实现出类似的效果。同时,可以通过增加法线、粗糙度等参数,来模拟更丰富的玻璃折射效果。另外,它还可以用来实现室内透射、水面反射等近似效果,从而可以大幅减少真实渲染效果的计算压力。

通过本文的学习和提供的Demo工程,可以实现一个更加定制化、且容易修改的Relection Probe功能,从而实现低开销的透视和反射模拟效果。

PBR

《延迟渲染管线手游技术解决方案》

延迟渲染管线以优秀的多光源渲染性能,丰富的后处理表现效果等优势在3A端游较为普遍,但是手游上因为存在带宽等性能问题从而一直难以落地。本次报告介绍可以在forward和deferred下无缝切换,兼容双管线的Shader# Framework。利用移动端Tiled Base等特性以及修改适配Unity的deferred下的交叉编译,实现适合移动端的延迟渲染管线方案。经过一系列的测试,在普通及多光源的场景下,延迟渲染管线相对前向渲染管线在移动端设备上帧率及电量都有一定的优化。

SRP

《Render Graph with Unity SRP》

为了方便开发者定制渲染管线,Unity SRP提供了接口来满足游戏项目对于图形渲染方面的自由定制的需求。紫龙游戏blackjack studio的开发者结合GDC2017上EA的《FrameGraph Extensible Rendering Architecture in Frostbite》中的思路和Unity SRP接口设计,实现了基于Unity SRP的Render Graph来满足多个在研项目多平台、高质量、多风格的渲染要求。本次报告从项目需求出发,介绍Frame Graph Rendering Architecture、Unity SRP based Render Graph的设计和实现,以及Render Graph的应用等。

精品项目案例

《次世代卡通渲染技术》

通过对《琪亚娜·极乐净土》的制作过程讲解,揭示了如何在Unity中实现高品质的卡通渲染效果。其中包括:次世代卡通角色渲染,场景全局光照及高级反射材质,卡通渲染后处理技术,动画及表情系统,头发布料物理模拟以及灯光特效等各个方面,并对今后卡通渲染技术的发展进行展望。

Blog文章

《Unity的PBR扩展》
《Unity的PBR扩展——皮毛材质》
作者Young在这篇文章中讲解其在实际项目中对于Unity PBR功能的扩展,特别是其中对于头发、皮肤和毛皮的处理,非常推荐学习。


《基于通道混合的角色染色系统实现》

在写此文前,笔者查阅了网上发现角色染色实现的文章很少,相关的讨论也不多。想来主要是因为这块技术虽然在很多项目都有用到,但太过于简单直白,没太多高深的技术含量。不过在笔者经历的几个项目中,都有针对于染色功能的实现,要想做一套兼顾效果和效率的染色系统,还是有不少细节可以讨论的。

《渲染优化-从GPU的结构谈起》
这是一篇非常好的GPU讲解问题,深入浅出,鞭辟入里!

《万物皆数-深挖UWA Benchmark之渲染篇》
性能优化的本质就是一个数学问题!该篇文章以渲染模块为例,讲解我们如何通过优化问题转化为数学问题进行研究和解决。

对于渲染模块的性能优化,我们推荐UWA学堂中的以下几篇课程:

《Unity引擎渲染、UI、逻辑代码模块的量化分析和优化方法》

Unity引擎的渲染、UI和逻辑脚本耗时是大多数项目的Top 3耗时模块。对此,我们对这三个模块进行量化地统计和分析,介绍准确定位性能瓶颈的方法。同时,从常见的性能问题入手,分析和对比各种可行的性能优化方案,以求显著地提升这些模块的效率。内容包括:

  • 渲染模块的重要参数分析以及优化方法
  • UI模块瓶颈的精确定位和优化
  • C#/Lua瓶颈函数的优化方法

《画质与性能的权衡:如何使用可编程渲染管线(SRP)》


Scriptable Render Pipeline使用户能够更加灵活地控制Unity的渲染管线,以实现不同的渲染效果,同时也会带来不同的性能表现。这次报告将通过案例向大家展示LWRP,HDRP以及Custom SRP的使用,并通过数据来了解不同Pipeline的性能表现,以求让大家在开发过程中能够根据项目需求选择是否使用SRP以及使用何种SRP改进所用的管线。

《深度剖析大型MMO移动游戏的性能优化》


针对大型MMO移动游戏来说,复杂场景、百人同屏、逼近端游的画质表现已经成为了MMO游戏发展的硬核趋势。同时,这些需求对于移动设备来说,其性能压力也是一个非常巨大的挑战。因此,本次报告将从性能和画面表现两方面入手,分享欢乐互娱引擎中心在《龙之谷手游》和《仙境传说RO:爱如初见》项目开发过程中的制作方法和优化技巧,主要包括:

  • Shader中的性能优化
  • 高效的图像后处理框架
  • 多人同屏时的Imposter使用
  • 结合顶视图的场景制作策略

《Unreal引擎渲染效率解析》


在Unreal中,如何分析渲染部分的开销?如何定位渲染的瓶颈?在各类设备上如何制定合理的渲染配置?基于UWA的项目优化经验和数据统计分析,针对当前流行的渲染效果和常用技术做更进一步的解析,从而能够更高效地实现高品质的渲染效果。内容包括:

  • 渲染模块的开销分析与瓶颈定位
  • Unreal渲染模块中各种渲染效果性能开销总结

《Unity引擎移动游戏性能优化全解析》


目前,UWA已经为超过70款移动游戏项目进行了深度优化。在针对这些项目的性能进行深度剖析时,我们遇到了大量的“疑难杂症”。在此,我们将这些问题进行总结和归纳,通过大量实际案例,让大家能够了解和掌握如何对Unity引擎各个模块、资源和内存管理方面的性能问题进行快速的定位和精准的分析,内容主要包括:
1、渲染、UI、加载、物理等Unity引擎各个主流模块的“疑难杂症”分析
2、纹理、网格等主流资源的资源加载和内存管理

《移动游戏的GPU性能优化》


随着精品移动游戏的大量涌现,移动设备GPU端的性能压力越来越大。对此,我们从Bandwidth、Fillrate和Shader等几方面出发,结合大量优化过程中的实际案例让大家了解和掌握如何快速定位和分析游戏在GPU端的性能瓶颈,以及游戏开发过程中需要注意的性能点,以求有效降低移动游戏的GPU压力,避免不必要的性能开销。

《Unity引擎渲染效率全解析》


Unity中各种高大上的渲染效果在实际开发中效率到底如何?如何去定位渲染中的性能热点?具体多大的渲染数据量算是合理的?基于UWA对各种不同类型游戏项目的优化经验和数据,针对当前流行的PBR以及实时阴影渲染技术做更进一步的详细介绍。为大家提高产品渲染效果、增加美术表现力提供合理有效的解决方案。内容包括:

  • Unity渲染模块中各种渲染效果性能开销总结
  • Unity中PBR渲染性能开销分析
  • Unity中阴影渲染性能开销分析

以上就是我们本期为大家梳理的Unity引擎渲染模块学习路径图。需要说明的是,这个路径图并不是捷径,相反50多篇文章会更加训练大家的意志力。作为体系化的知识,我们希望大家能掌握背后的逻辑与原理,结合学习方法论并反复实践,未来尝试在自己的项目中创新创造出自己满意的效果。

往期回顾

《Unity引擎UI模块知识Tree》
《UWA学堂|逻辑代码模块》
《UWA学堂|开发流程模块》
《UWA学堂|解决方案模块》
《UWA学堂|优化模块》