JTRP (Jason Ma Toon Render Pipeline)
这是我业余时间开发的基于Unity HDRP并支持DX12 RayTracing的卡通渲染工具集,定位于实时生产影视级质量卡通渲染CG。
基于UTS二次开发:https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project
专栏:https://www.zhihu.com/people/blackcat1312/posts
B站:https://space.bilibili.com/42463206
Works
https://www.bilibili.com/video/BV1wD4y1w7oU?spm_id_from=333.999.0.0
https://www.bilibili.com/video/BV1Bq4y1r7bn?p=3
Installation
-
使用Unity 2021最新版本创建一个新项目(或使用你自己的项目)
-
确保安装了Blender,以及双击.blend文件可以直接打开Blender,否则示例模型将无法导入
-
(需要代理)
Window > Package Manager > Add > Add package from git URL
输入https://github.com/JasonMa0012/JTRP.git
- 你也可以选择手动从Github下载Zip,然后从
Package Manager > Add package from disk
添加Local Package
- 你也可以选择手动从Github下载Zip,然后从
-
在Project面板中找到
Packages > JTRP
,同时打开Edit > Project Settings > Graphics
,将JTRP\RenderPipelineResources\JTRP_RenderPipelineAsset
分配给SRP Settings
-
打开
Window > Rendering > HDRP Wizard
(一般会自动打开),点击Fix All
,重启编辑器 -
双击
JTRP\Samples\JTRP_Samples.unitypackage
导出示例场景,打开Assets\JTRP_Samples\SampleScenes
中的场景,检查渲染结果是否与截图一致,若渲染结果异常,请重新检查安装过程或提交Issue
Getting Started:三渲二入门视频教程
教程:https://www.bilibili.com/video/BV1AA411A7RR/
模型配布:https://www.bilibili.com/video/BV1a7411i7js/
视频中你会学到:
版本控制
- 为何使用Git:多人协作、版本控制
- Github账户、仓库、LFS、存储和单文件大小限制
- SourceTree教程:
- Clone、修改、暂存、推送、回滚、忽略
- 或直接下载Zip:https://github.com/Jason-Ma-233/JasonMaToonRenderPipeline
前置知识
- 3D 美术、DCC 基础
- Unity 安装、语言包、基本知识
- Unity MMD:https://www.bilibili.com/video/BV1Db411e74e
- Blender:
- PMX导入插件:https://github.com/GiveMeAllYourCats/cats-blender-plugin
- 模型处理:拆分材质、脸单独材质、脸部球面化法线(可选)
JTRP
- 三渲二概述:什么是PBR / NPR / 卡通渲染 / 三渲二、三渲二的常见特征与典型案例
- UTS:https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project/blob/release/urp/2.2.3/Documentation~/index.md
- 参数概览
- Outline
- 传统法线外扩
- P+ 4 Unity:https://www.psoft.co.jp/jp/product/pencil/unity/
- P+在线文档:https://docs.psoft.co.jp/pus400w/jp/latest/
- 使用JTRP进行角色卡通渲染
- 阴影色
- 光线追踪阴影
- 头发阴影
- 脸+头发球形阴影
- 头发高光
- 边缘光
- Timeline:角色动画、相机动画、表情动画、ABC
- 实时物理:https://assetstore.unity.com/packages/tools/physics/magica-cloth-160144
- HDRP / Lit Shader文档:https://docs.unity3d.com/Packages/[email protected]/manual/Lit-Shader.html
- 后处理:光线追踪GI / AO / SSR、Bloom、LUT、ToneMapping……
- 渲染输出
Usages
由于JTRP是在UTS的基础上扩展而来,因此你应该先了解UTS的基本功能:https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project/blob/release/legacy/2.0/Manual/UTS2_Manual_en.md
JTRP Custom Pass
主要控制场景内所有Toon Shader物体的渲染,若丢失则回退到灰模状态。
另可控制Outline的全局设置,若使用BackFace Outline需要先打开开关。
PostProcess Outline可以使用,但处于预览状态,功能不完善,主要用于场景描边,通过配置材质球更改颜色。
Geometry Outline只开发了一半,设置较为复杂,不推荐使用。已经有优化思路,但是没有时间继续开发,有缘人可以一起开发,效果参考视频:https://www.bilibili.com/video/BV1vp4y1r7sF
Pencil+ Outline 4 Unity
视频教程里有使用方法,官方文档:https://docs.psoft.co.jp/pus400w/jp/4.1.2/index.html
如要去除水印和范围限制请购买正版,官网:https://www.psoft.co.jp/jp/product/pencil/unity/。
Material Parameters
如有遗漏,可以参考视频教程和UTS文档,这里只列出JTRP相对于UTS的新增部分。
Scripts
如有疑问参考视频教程
Real Time Style Transfer
https://www.bilibili.com/video/bv1FY4y1h7Vm
参考:https://blog.unity.com/technology/real-time-style-transfer-in-unity-using-deep-neural-networks
6-8ms on RTX3070 1080P
DXR Sample (Removed)
Video:https://www.bilibili.com/video/BV1Tr4y1F7Pv
Light Weight ShaderGUI
一个轻量, 灵活, 强大的Unity Shader GUI系统.
使用简洁的MaterialPropertyDrawer语法实现功能复杂的Shader GUI, 节省大量开发时间, 易于使用和扩展, 有效提升美术的使用体验.
https://github.com/JasonMa0012/LWGUI
Model Outline Importer(Legacy)
导入流程已经失效,详情可以参考此文章。
如要对硬表面生成平滑法线建议借助DCC工具或NormalMap,UTS文档中也有对应介绍。
Future Works
UTS3已经被收录于Unity官方Package:https://github.com/Unity-Technologies/com.unity.toonshader
未来,在UTS3推出稳定版本并支持ShaderGraph之后,我计划将JTRP重构为一个灵活、轻量的插件,使用CustomNode或CustomPass等方式对UTS3进行非破坏性扩展。