Unity引擎渲染模块知识Tree汇总--零基础\初级篇
- 作者:admin
- /
- 时间:2021年04月12日
- /
- 浏览:5730 次
- /
- 分类:厚积薄发
自UWA学堂上线以来,我们也陆续推出了多篇知识Tree,按模块知识和难易度分类,旨在帮助大家更体系地学习,一步步进阶。
渲染效果作为游戏表现力的核心卖点之一,也是开发者们普遍关注的焦点。往期为大家整理过相关的知识模块推送,随着时间的推移有部分更新,欢迎收藏阅读。
在UWA学堂搜索对应课程名称/关键字 或是 按“分类“筛选即可查看相关课程。
无论对于从业者还是正在读大学的技术萌新,学习的有效时间和个人时间都是有限的。高效学习者最在意的是时间的价值,一个需要体系化的知识地图就显得尤为重要。
添加UWA小助手微信(17502188376),可领取完整版渲染知识体系XMind文件。
本篇介绍零基础和初级部分。
零基础
光影
本课程从什么是色彩空间和色度图谈起,介绍了常见的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 Shader基本规则及写法。学习使用Unity Shader控制渲染流程各个部分及可编程部分编写。从简单光照模型、贴图采样、法线采样、立法体纹理采样、透明度测试、透明度混合、模板测试到前向渲染复杂光照以及延迟渲染等,对Unity Shader基础知识做了详细的解释。这门课程属于基础课程,建议对渲染有兴趣及刚开始学习渲染的同学购买。
粒子系统
相信开发者们已经注意到Unity在最近的版本中进行了很大的改动,例如:新的开发模式DOTS、新的粒子特效系统、新的渲染管线URP、新的输入系统InputSystem和新的Shader系统ShaderGraph等等。对于开发者来说,Unity朝着更加方便,更加高效的开发方向发展显然是件好事。
本文所要讲解的正是新的粒子系统Visual Effect Graph(由于个人习惯,笔者会简称为VFX),由3W原则入手来介绍VFX,它是什么?为什么要使用它?最后着重介绍了我们要如何使用VFX。
目前网上的资料相对较少也不成体系,笔者学习和摸索了上百个小时整理出来的入门教程,目前仅能满足项目中的常见的开发需求,希望对大家有所帮助。
本课程比较全面和系统地介绍了UE4新版粒子——Niagara粒子系统。对比传统的粒子系统,Niagara的架构更加科学合理,采用全新的节点式模块化逻辑,可以兼容更多的资源,拥有更加灵活的组合,是未来UE5的发展方向。
课程从最基础开始讲解,从如何建立粒子到粒子如何碰撞,粒子事件如何发生等等,除此之外还有UE4的材质系统、材质节点、贴图以及外部资源的导入、定序器等相关内容,基本上涵盖了UE4的Niagara粒子全部模组跟属性。
课程属于基础内容,适合对UE4感兴趣想入门的同学。
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打印等方面的研究与应用。
本课程介绍了一些游戏开发中常用的数学原理推导,共分为五小节:
第一节从头开始复习游戏开发所需要的数学理论,然后再结合例子,把抽象的数学理论变成可以在屏幕上看到的效果和代码,一边做效果一边重新复习数学。
第二节是对各种求导的复习并介绍了求导在游戏视觉效果开发中的应用。
第三节针对各种矩阵进行了重新推导。
第四节介绍了使用四元数的方式来进行旋转变换之后再转回成欧拉角。
第五节介绍了游戏渲染中用光线和AABBBox、球、平面、三角形相交的这部分求交原理。
光线追踪
光线追踪是一种简单而强大的实时增强游戏和图形演示视觉效果的方法。它有几个可实现的功能,从光线追踪反射到光线追踪全局照明 (RTGI),用于一些“光线预算”。本次报告将从专家的角度分析这些功能的技术实现、工作流程和优点,并在Imagination Technologies的最新图形演示中展示这些功能。同时将介绍光线追踪技术的不同等级标准和Imagination光线追踪技术近几年的发展。
初级
UWA本地资源检测是对游戏、VR等项目工程的资源、代码和设置等进行自动检测的插件与服务产品,是项目研发持续集成、持续交付流程中的重要工具,旨在为游戏研发制定资源与代码规范,帮助研发团队快速发现和解决项目中的性能问题与可能出现的异常、错误。研发团队可通过日常的自动检查,规范程序、美术成员的开发,从源头上对项目进行优化,规避风险,节约成本。
本系列课程旨在帮助大家更好更快地将本地资源检测运用到项目当中,内容主要包括:基本介绍、用法演示和规则讲解等,以连载的方式更新,同时会随着产品的迭代以及大家的需求增加新的内容。
光影
本次报告主要分享两个部分,首先是在移动端实现延迟管线所面临的问题、解决方案;其次是UE5中延迟管线的框架、支持的功能、所遇到的兼容性问题以及优化方面的经验。
本课程主要讲解了当前中国Unity项目研发过程中最为常用且实用的三种阴影实现方案:基于ShadowMap的阴影渲染技术、基于Projector&RenderTexture的阴影渲染技术和适合于特殊场合的Flat Shadow渲染技术。我们分别详细介绍了其理论原理及其在Unity引擎中的具体实现和使用细节,以期让大家能够全面了解和掌握Unity项目开发过程中阴影渲染相关的实用技术方案。
另外,该课程还重点讲解了目前三款Unity Asset Store中非常受研发团队欢迎的阴影相关插件:MobileFastShadow、FastShadows以及FastShadowReceiver。大家不仅可以了解其实现原理和适用场景,同时也可以结合自身项目来采用对应的阴影实现方案及优化方案。
后处理
本次报告主要分享两个部分,首先是在移动端实现延迟管线所面临的问题、解决方案;其次是UE5中延迟管线的框架、支持的功能、所遇到的兼容性问题以及优化方面的经验。
屏幕后处理效果(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引擎屏幕后处理的具体实现方法,包括色调调整、屏幕扭曲、抗锯齿、Bloom、景深、高度雾等,一步步教你如何实现屏幕后处理效果,并且讲解如何灵活使用Unity官方Post Processing,最后介绍几款当前热门且游戏研发团队常用的屏幕后处理插件,主要包括:Mobile Lighting Box、MK Glow、2D Weather Effects和100 Post Processing Styles,供大家参考学习。
光线追踪
Nvidia RTX的技术重新激发了实时图形学界对于光线追踪技术的热情,但是对于大部分游戏从业者来说,光线追踪的技术还很陌生。本文从光线追踪的理论基础开始,完整地梳理了光线追踪技术发展历史、技术流派及常用的降噪理论,并结合最新DXR API的代码示例,讲解了DX12下光线追踪API的架构及编程方法。
PBR
从基于物理的渲染(PBR)基本概念入手,在了解相关技术概念后,将其分成如下部分单独讲解,包括:BRDF漫反射、BRDF高光反射、菲尼尔函数和能量守护等,讲解Unity中的PBS实现原理及分析UnityPBS代码。最后通过案例进行实际相关操作调整。
SRP
自Unity 2018推出了SRP(可编程渲染管线)以来,基于SRP的基础又推出了URP和HDRP。SRP的出现具有跨时代的意义,内置渲染管线无法对开发者提供一些定制化修改接口,普通开发者无法去学习渲染管线,导致大部分开发者对这块知识都很匮乏,不利于个人成长。
基础篇主要介绍了URP的使用,如何快速从Built-in管线切换到URP,着色器如何升级,URP目前提供的功能使用说明,Shader Graph使用案例以及SRP Batcher的原理与应用,旨在帮助开发者快速上手URP。
其他
本次报告主要分享两个部分,首先是在移动端实现延迟管线所面临的问题、解决方案;其次是UE5中延迟管线的框架、支持的功能、所遇到的兼容性问题以及优化方面的经验。
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文章
移动平台下场景制作的规模越来越大,开放视角的3D大世界场景,对地图大小、可视距离的要求越来越高,随之带来了地形尺寸变大、场景物件种类变多、物件的模型面数和数量增长,对美术效果上的要求也趋近于主机和PC端游戏。
Realtime Global Illumination 在移动平台下还不能随意使用,美术场景的光照主要还是以 Baked GI 为主,随着Unity版本的升级,场景烘焙流程也迭代过几个版本,但是仍然暴露出了越来越多的问题。在Unity官方的技术支持下我们发现在烘焙流程中疏忽了一些很重要的环节,加上升级Unity 2017.4后更换了烘焙模式,因此而整理此文。
以上就是我们为大家梳理的Unity引擎渲染模块学习路径图的零基础和初级部分。需要说明的是,这个路径图并不是捷径,越来越多的文章会更加训练大家的意志力。
作为体系化的知识,我们希望大家能掌握背后的逻辑与原理,结合学习方法论并反复实践,未来尝试在自己的项目中创新创造出自己满意的效果。
往期回顾
《Unity引擎渲染模块知识Tree汇总--进阶\高阶篇》
《Unity引擎UI模块知识Tree》
《UWA学堂|逻辑代码模块》
《UWA学堂|开发流程模块》
《UWA学堂|解决方案模块》
《UWA学堂|优化模块》