前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LayaAir 2.10新特性:可动态修改渲染管线、增加深度渲染管线、增加DirectLightMap全局光照贴图等3D功能

LayaAir 2.10新特性:可动态修改渲染管线、增加深度渲染管线、增加DirectLightMap全局光照贴图等3D功能

作者头像
Layabox Charley
发布2021-01-12 14:46:25
7480
发布2021-01-12 14:46:25
举报
文章被收录于专栏:Layabox

在今天推出的LayaAir 2.10beta版里,3D渲染效果再次得以提升,增加了DirectLightMap全局光照贴图、增加了深度渲染管线DepthPass,增加了Camera截屏功能,增加了后期处理Enable参数,支持动态切换shaderPass,一次drawCall中支持传入更多图片,支持了GLTF模型和动画的加载使用等功能。

增加深度渲染管线

从LayaAir2.10版本开始,我们增加了深度渲染管线DepthPass,Camera中增加了属性depthTextureMode。

Camera设置depthTextureMode为Depth,可以在渲染流程中增加深度图的渲染,贴图的渲染结果存储在Camera的u_CameraDepthTexture,开发者可以在shader中直接取到DepthTexture。

Camera设置depthTextureMode为DepthNormals,可以在渲染流程中增加法线深度图的渲染。贴图的渲染结果存储在Camera的u_CameraDepthNormalsTexture的相机unifrom中,开发者可以在shader中直接取到DepthNormalTexture。

关于深度管线的所有shader相关函数,在shader文件DepthNormalUtil.glsl中,使用SAMPLE_DEPTH_TEXTURE宏定义函数可以得到u_CameraDepthTexture中的深度值,但此时的深度值并不是线性深度值,需要使用Linear01Depth函数传入系统传入的u_ZBufferParams来解析出正确的线性深度值。

采样贴图u_CameraDepthNormalsTexture得到的图片值是压缩数据,rg存储了压缩法线信息,ba存储了线性深度值,可以调用函数DecodeDepthNormal来解析出法线和深度信息。

此渲染管线,大大健壮了引擎的渲染管线,开发者可以基于DepthTexture,NormalDepthTexture写出各种各样的渲染效果,增加了对后期处理效果的支持。

例如,我们可以用这个渲染管线做一个边缘后期处理功能。

上图的效果,是由下面两图通过边缘后期处理功能生成。

可动态修改渲染管线

另外我们还在本次的版本中支持动态切换渲染管线,开发者可以在程序代码中通过RenderContext3D.ConfigPipeLineMode将默认的渲染管线切换为任意的渲染管线。

LayaAir引擎现有的渲染管线有Forward、ShadowCaster,以及本次版本新添加的DepthNormal渲染管线。

可动态切换的渲染管线不止是引擎内置的渲染管线,开发者也可以增加自定义的渲染管线用于切换。具体方法是在生成shader的时候增加自定义的shaderPass,然后通过RenderContext3D.ConfigPipeLineMode把自定义的渲染管线设置为引擎的渲染管线。

此功能配合本次版本新增的Camera截图功能,开发者可以将各种渲染效果渲染到任何地方。

例如,开发者想将物体的法线渲染成图片,可以在shader生成的地方增加一个自定义的渲染管线NormalPass,写好配套的shader,再把RenderContext3D.configPipeLineMode设置为自定义的NormalPass,就可以达到渲染物体法线的效果。

增加烘培贴图中的方向贴图

本次版本增加的光照贴图DirectLightMap贴图,也是值得重点突出介绍的功能,该功能配合法线贴图可以获得更加细腻的烘培效果。

我们可以在Unity的Lighting面板中的Directional Mode进行设置并导出使用,设置方式如下图所示。

在没有设置Directional之前的效果如下图所示:

设置Directional之后效果如下图所示,与上图对比有明显更加细腻。

其它重要的3D功能

在以前的版本里,LayaAir在一次drawCall中最多只能上传8张图片。从2.10beta版开始,可以根据设备最大传入图片的数量来传入图片,用来支持更多的渲染效果。

除此之外,我们还增加了一些其它的重要3D功能,例如:

1、增加了camera中的drawRenderTextureByScene接口。可以用来截取非场景节点相机的渲染结果,类似于快照功能。开发者可以设置一个相机,调用此函数来渲染出一帧的画面,用作截屏或者其他功能使用。

2、在PostProcess后期处理中增加了enable属性,用来动态开关后期处理,优化了后期处理流程。

3、新增支持了GLTF模型和GLTF动画的加载使用,使用方式与LayaAir插件从Unity中导出的模型(.lm)是一样的。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Layabox 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档