屏幕后处理全家桶
来源:互联网 发布:网络犯罪法律案例 编辑:程序博客网 时间:2024/04/25 05:04
什么是屏幕后处理全家桶
屏幕后期处理一般涉及到屏幕上许多像素的处理,消耗带宽较大。而多种屏幕后期叠加,会多次进行屏幕重绘、取帧缓存等操作,更加浪费。而且,多种屏幕后期叠加时需要正确的执行顺序,有些必须放到另一些的前面,否则会出现问题。所以我们用屏幕后处理全家桶,多种屏幕后期最终一起全屏渲染,减少浪费,而且全家桶用堆栈方式确定了多种屏幕后期处理顺序,避免错误。
当前版本和来源
我们的屏幕后期处理全家桶版本1.0.0是在unity的全家桶基础上修改得来的,针对unity的全家桶进行了以下修改:
1. 缩减不兼容的效果和通用shader变种;
2. 对使用的效果计算流程和计算方式进行简化,减少消耗;
3. 将项目组自定制的后期效果整合进屏幕后处理全家桶,减少pass,达到优化效果;
优势和问题
- 将多个后期效果最后综合在一起全屏渲染,减少重复操作、减少屏幕重绘,减少消耗;
- 集成了常用的后期效果,使用方便,并且保证它们顺序正确;
- 使用profile进行后期设置,方便不同项目组使用,定制不同的屏幕后处理;
- 高度集成化的脚本和shader使修订起来比较困难
消耗评估
- 常见移动平台使用的后期及一般消耗评估
- 骁龙820,同时开启bloom,outline和under water的一般耗时评估:
注意事项
- 能接受的情况下尽量用小分辨率,能大幅度减少消耗;
- 尽量减少同时开启多个后期的时间;
- 对于消耗特别大的后期,对于影响性能的参数一定要谨慎设置;
- 要彻底关闭后期时,需要关闭外面post-process behavior脚本,否则不管用;
- 注意打包后期效果shader,以及相关的摄像机设置,比如depth等;
- 建议的分级策略,最高级——后期叠加,高级——单后期,中低级——无后期;
- 同级Soc机型策略:iPhone>snapdragon>others(kirin、MTK等)
环境配置
- 将MobilePostProcessing文件夹放到工程的Assets目录下;
- 将Post-Processing Behaviour脚本拖到摄像机上,如果有多个摄像机,每个摄像机上都要拖;
- 在脚本下面会出现Profile属性,点击右边的圆圈,在Assets签页下会出现post-processing profile对象,选择需要的;
- 点击上面选择的post-processing profile对象,在Inspector窗口就会出现屏幕后处理全家桶的编辑界面。
- 如果用到外发光效果,将需要外发光的物体拖到脚本上面的OutRen上,可以设置3个(建议程序在脚本里设置,也可以将inspector设为Debug模式,通过拖动设置,但不太建议,会生成变体)。
- 如果用到大气散射效果,将代表太阳的物体设置到脚本上面的Sun Shaft Tran上(同5,建议程序中设置)。
- 注意:Edit->Project Setting->Quality->Rendering下面,将Anti Aliasing设为Disabled
参数设置
在上面所述的编辑界面中,可以通过设置参数选择使用哪些屏幕特效以及设置每种特效的效果。
1. Debug Views:Mode保持默认值,设置为None;
2. Depth Of Field:景深
* Focus Distance:汇聚点到屏幕的距离(一般距离汇聚点越近的景物越清晰);
* Aperture:相机光圈,光圈越小越模糊;
* Use Camera FOV:从相机上设置的fov值自动计算焦距,建议不要勾选,因为对美术来说不太直观,不易理解
* Focal Length:焦距,焦距越大越模糊
* Kernel Size:卷积核大小,决定采样点的多少,越大越费,建议选Small(DOF中只有这个选项影响性能)
3. Bloom:泛光
* Intensity:bloom后明亮的强度,值越大越亮
* Threshold(Gamma):用于提取较亮区域使用的阈值
* Soft Knee:平滑度
* Radius:影响模糊迭代次数和采样半径,次数越大性能越差,建议小于4
* Anti Flicker:勾选上,精度会高,会比较费
4. User Lut:调主色调(控制全局)
* LUT贴图:可以从ps生成或者下载
* contribution:强度
5. Chromatic Aberration:色差
* Spectral Texture:色差贴图
* Intensity:强度
6. Water Effect:TGame定制的水下效果以及从水面上岸效果
* Mode:UnderWater是水下扭曲效果:
1. Intensity:扭曲程度;
2. Distortion SPeed: 扭曲速度
3. Distortion Tex:控制扭曲的贴图
* Mode:Wet Lens是镜头出水打湿效果:
1. 镜头打湿,法线扭动速度。可以通过脚本控制该值实现由干到湿的过程。
7. Out Line:场景中物体外发光效果
* Blur Size:外发光扩散大小
* Rt Scale: Render Texture大小,调到1是全屏,越大精度越高也越费
* Outter Color:外发光颜色
- Sky Scatter:大气散射效果
- Resolution:分辨率,影响性能,选择low
- Sun Color:颜色
- Sun Shaft Intensity:大气散射强度
- Max Radius:影响半径
- Sample Radius:采样半径
- Color Grading:使用ToonMapping,色彩映射
- ToonMapping:
- 通常被理解为从高动态范围(HDR)映射到低动态范围(LDR)的过程。在unity中,这意味着大多数平台上任意16位的浮点型颜色值将被映射为[0,1]范围内的传统8位颜色值。
- 只有在相机启用HDR时才能正常使用,建议给光源高于正常强度的亮度,从而让其具有更大的范围。
- 线性空间推荐ACES。Gamma空间Netural。
- 调色调不建议使用这个,建议用User Lut调,比较方便
- ToonMapping:
- 屏幕后处理全家桶
- 屏幕后处理
- Unity Shader-后处理:屏幕水波效果
- Unity Shader学习笔记:屏幕后处理
- unity shader:屏幕后处理技术
- 全家桶好吃吗?
- vue全家桶
- 进阶vue全家桶
- vue全家桶
- 进阶vue全家桶
- 进阶vue全家桶
- vue全家桶项目
- Vue 全家桶
- 进阶vue全家桶
- 尝一尝Vue全家桶
- ROS全家桶安装
- vue全家桶
- 尝一尝Vue全家桶
- JS的解析机制(作用域、变量提升等)和两个例子
- MySql中的FIND_IN_SET使用方法,满足包含查询,类似like但是不同于like的用法
- android关于AndroidManifest.xml详细分析
- Ajax CORS
- NS2各种学习资料
- 屏幕后处理全家桶
- MySQL学习篇——CRUD 多表操作
- js中const,var,let区别
- SSH 报错信息No result defined for action
- spring源码学习(三)解析和注册BeanDefinition(上)
- What is docker
- jmeter函数和变量(四)
- weex中使用数据流工具Vuex实践
- Jenkins将项目发布到Tomcat