

韩国Unity团队研发的demo分享—ProjectKaya
healer
阅读 1612
2021年12月14日
Project Kaya是为了使用Unity Technologies Korea的URP移动平台的Unity使用者而制作的示例项目。该Unity项目的资产可用于商业/非商业用途,但禁止二次分发。
ProjectKaya是Unity Korea官方运用URP研发的手游demo项目。公共repository会持续更新,大家也可以一起来添砖加瓦。相关移动端的性能优化,大家可以参考这两个手游性能优化文档 모바일 게임 성능 최적화 01 和모바일 게임 성능 최적화 02 。更多项目信息,请参考视频Unity Webinar和 UniteSeoul 2020 Session。

Project Kaya是为了使用Unity Technologies Korea的URP移动平台的Unity使用者而制作的示例项目。该Unity项目的资产可用于商业/非商业用途,但禁止二次分发。该项目的版权归Unity Korea所有。更多关于权限的信息请参考 Asset End User License Agreement 。 Project Kaya is an example project for unity users using URP mobile platform from Unity Technologies Korea. Commercial/non-commercial use of this project's resources is permitted in the unity project, but redistribution is not permitted. All right reserved by copyrights of this project belong to Unity Korea.For further details, please refer to the Asset End User License Agreement document in the project. Requirement 至少是 Unity 2021.1.13f1(要求有安卓模块) 或以上(在后续版本中,hair shader unpacknormal重复声明,这部分要改下) URP 11.0 Android Platform module Required Vulkan API supported(如不使用Visual Effect Graph的话,需ES 3.0以上) 在window terminal, cmd, git bash 等中运行命令语 git clone https://github.com/UnityKorea/ProjectKaya editor setting

Kaya project是基于安卓平台开发的。因此,你需要把编辑器的环境设置如上。在Command Line Arguments上输入-force-vulkan,让其作为vulkan api运行。

这里选安卓平台(编辑器必须安装安卓模块)。

Project Setting Renderer setting Anti Aliasing 对于移动端项目,建议大家根据自己项目的实际情况来选择合适的MASS选项。对比图如下,MSAA采样数不同,轮廓的品质也不一样。

Resource Compression 大部分纹理压缩(Texture compression)使用了ASTC,部分资源用的未压缩的RGB24或RGB32。

- 使用ASTC12x12(0.6MB)压缩(左)和用 ASTC6x6(2.4MB)压缩的2048 normal texture(右)对比 这种现象在法线贴图中比Albedo texture更明显。在这种情况下,建议直接选择资源压缩格式和选项。 Scene List Lobby scene中展示渲染和shader案例。 Animation type是Generic,mechanim构成。 Lobby Scene
FPS Counter & information display

Frame Rate Counter : 在屏幕的左上角,以毫秒(ms)和帧为单位显示有关当前帧速率的信息 Display pixel Resoultion : 显示当前渲染中的分辨率 Graphics API : 显示当前渲染中的Graphics API信息 Cinemachine 大厅场景中的相机切换是使用Cinemachine完成的。通过在UI中更改相机的Priority值,就可实现在相机之间的切换。

在场景中放置CinemachineVirtualCamera,就能将相机移动到该virtual camera位置。

1号相机 : 脸部特写 CM Face Shot。只有1号相机应用了Depth of Field。

2号相机: 全身 CM FullBody shot

3号相机 : 技能 CM Skill Shot

Realtime Reflection 这是通过Render texture和shader custom实现的实时反射效果。


Resoultion Mutiplier : 设置渲染反射图的分辨率 Clip Plane Offset : 设置反射图的起始点 Reflect Layer : 选择要应用反射的对象层 Draw Dithering : 是否在反射上绘制角色抖动

PBR Custom Shader(Shader Graph)

项目中使用的基础shader是基于URP Lit shader,在shader graph中制作完成的。 我们在角色概念阶段,就会考虑一个角色身上要表现的金属,布料和皮革等多种材质。

使用Shader Graph,把Lit shader的metallic,smoothness和AO作为一个mask texture,通过remap处理smoothness值。 Character Object Overdraw(Shader Graph)

角色和物件重叠的效果,是用Renderer的Render Features来实现的。更多信息可以查看Universal Rendering Examples。

仅不绘制Character Layer,把它设置为在深度测试抖动后,绘制不透明(AfterRenderingOpaques),然后绘制其余部分。 Hair shader(Shader Graph) UTKTemplate/URPHairKajiyaKay

Demo中我们是用flowmap来实现光照效果。利用flowmap来记录头发方向,用shiftmap来调节高光位置。 flowmap的由来:在Houdini中使用LabsFlowmap节点,根据头发方向设置vector,然后渲染出图。

使用时,必须关掉sRGB选项(Gamma correction)。

该shader支持addlight, addlightshadow。

Shader Graphs/KajiyaKay

不同于上面的方法,我们是用Shader Graph制作的,通过调节两个高光来表现头发高光效果。 Skin shader(Shader Graph)

SSS(SubSurface Scattering)是用Shader Graph实现的。Skin Texture的Alpha Texture使用了Thickness map。 Animation Setting Rig Setting Animation使用Generic。除非你的目标是动画重定向,否则不推荐使用 Unity 的 Humanoid。泛型和类人类机器人的性能优化请参考unity forum 文档。角色的 Rig 设置通过点击Model的optimize Game Objects来提高性能,且只有使用的武器插槽会在hierarchy暴露(Extra Transforms to Expose)。

总共88个骨骼。 VFX Setting Scene VFX

背景中使用的VFX Graph。白天是樱花,晚上是跳跃的火苗。

Character VFX 特效是用Visual effect graph制作的,不是shuriken。
在实际构建移动版本时,即使在OpenGL ES 3.2的环境下,有时也会遇到无法正常输出的情况。(推荐vulkan)


** Unity Technologies Korea Evangelism dev 2021 [原文出处]
GitHub - UnityKorea/ProjectKaya: Project Kaya for mobile game platform
github.com/UnityKorea/ProjectKaya 本文仅限于学习参考交流,请勿做商业用途和随意转载。
请多指教~! 转自:知乎账户 ——Qinfei

发布于技术交流
0条评论

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI