【Unity Shader入门精要】— 高级篇

内容会持续更新,有错误的地方欢迎指正,谢谢!

引言

本书还有高级篇、扩展篇,这篇文章我们来说说高级篇。考虑到内容较多,我在高级篇、扩展篇博客里只列一些提纲和我自己的一些总结、领悟,具体实现方法,希望各位看客,购买乐乐女神的书,好好琢磨研究~

屏幕后处理效果

屏幕后处理,通常指的是在渲染完整场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。可以为游戏画面添加更多艺术效果。可实现低级的边缘检测、高斯模糊、Bloom效果(让屏幕中较亮的区域扩散到周围的区域中)、低级的运动模糊等效果。

复变中的卷积知识应用于边缘检测和高斯模糊。

使用GrabPass命令或OnRederImage函数来获取当前屏幕图像,Unity会把这个屏幕图像放到一张和屏幕分辨率等同的渲染纹理中,下面我们可在自定义的Pass中把它们当成普通的纹理来处理。

使用深度和法线纹理实现特定的屏幕后处理特效

可实现更高级的运动模糊、全局雾效、高级的边缘检测等效果。深度和法线纹理在屏幕特效的实现中往往扮演了重要的角色!

非真实感渲染

使用一些渲染方法,使得画面达到和某些绘画风格相似的效果:卡通、水彩效果、素描。

【Unity Shader入门精要】— 高级篇_第1张图片
卡通风格的渲染效果。

【Unity Shader入门精要】— 高级篇_第2张图片
卡通风格的渲染效果。

【Unity Shader入门精要】— 高级篇_第3张图片
素描风格的渲染效果。

使用噪声

通过噪声纹理获得随机数,可实现消融效果、波光粼粼的水波效果、不均匀雾效。

【Unity Shader入门精要】— 高级篇_第4张图片
噪声纹理的一种

【Unity Shader入门精要】— 高级篇_第5张图片
消融效果常见于游戏中的角色死亡、地图烧毁等效果。这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个物体都将消失不见

【Unity Shader入门精要】— 高级篇_第6张图片
在模拟实时水面的过程中,我们往往也会使用噪声纹理。为了模拟水不断流动的效果,我们会使用和时间相关的变量来对噪声纹理进行采样,当得到法线信息后,再进行正常的反射+折射计算,得到最后的水面波动效果。我们将使用一个由噪声纹理得到的法线贴图,实现一个包含菲涅耳发射的水面效果。

【Unity Shader入门精要】— 高级篇_第7张图片
可以模拟一种不均匀的雾效,同时让雾不断飘动,使雾看起来更加缥缈。

Unity中的渲染优化技术

在做手机游戏时,一定要时刻把优化谨记在心,不考虑优化,那么结果会惨不忍睹~

影响性能的因素

我们可以把造成游戏性能瓶颈的主要原因分成以下几个方面:
1)CPU
过多的draw call
复杂的脚本或者物理模拟
2)GPU
顶点处理(过多的顶点、过多的逐顶点计算)
片元处理(过多的片元、过多的逐片元计算)
3)带宽
使用了尺寸很大且未压缩的纹理
分辨率过高的帧缓存(针对图片而言)

对应的优化技术

具体内容参考乐乐女神的书P314—P324

1)CPU优化
使用批处理技术减少draw call 数目。
2)GPU优化
减少需要处理的顶点数目(优化几何体、使用模型的LOD技术、使用模型的LOD技术、使用遮挡剔除技术)
减少需要处理的片元数目(控制绘制顺序、警惕透明物体、减少实时光照)
减少计算复杂度(使用Shader的LOD技术、代码方面优化)
3)节省内存带宽
减少纹理大小
利用分辨率缩放
使用模型的LOD技术

Unity中的渲染分析工具

1.渲染统计窗口:也就是点击Game窗口的Stats按钮会显示出的窗口
【Unity Shader入门精要】— 高级篇_第8张图片

【Unity Shader入门精要】— 高级篇_第9张图片
这里写图片描述
属性解释如上表~

2.性能分析器的渲染区域

【Unity Shader入门精要】— 高级篇_第10张图片

3.再谈帧调试器

【Unity Shader入门精要】— 高级篇_第11张图片

你可能感兴趣的:(Unity,Shaders,UnityShader)