11 KiB
11 KiB
title, date, excerpt, tags, rating
title | date | excerpt | tags | rating |
---|---|---|---|---|
卡通渲染开发总览 | 2023-12-08 09:59:57 | ⭐⭐⭐ |
目录
- 卡通渲染相关资料里面的有原神、碧蓝幻想、罪恶装备、赛马娘、黑丝指的参考。
- 做完基础功能之后,再逐个寻找新的功能点与方向。
- 知乎FlashYiYi的卡通渲染分享里面有许多Fake技巧
- 参考对象分析
- 星穹铁道
- 原神
- https://zhuanlan.zhihu.com/p/316138540
- 软阴影边界
- 反射探针,获取BaseColor、Normal等,最后Relight来获得复合场景的反射CubeMap。
- https://zhuanlan.zhihu.com/p/316138540
- UnityChan
- 破晓传说
- 蓝色协议
- 蓝色反射
- 非人学园2
- 少女前线2 追放
- 明日方舟终末地
- 其他人的作品
- muro_cg
- Nevrwind
- 【【UE5动画】你会来的对吗?】 https://www.bilibili.com/video/BV1kw4m1e7qZ/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
- 【【UE5卡渲】椿 - K表情练习】 https://www.bilibili.com/video/BV1ay411b7Cm/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
- 卡通渲染晕染效果【【UE5】一些最近做的好玩的卡渲后效】 https://www.bilibili.com/video/BV1gi421v7HA/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
- 动漫制作
- 【日本最顶级的3D动画制作过程【GBC官方动捕制作片段】】 https://www.bilibili.com/video/BV1uM4m1U7CL/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
PS. 先实现一波Cel,之后再实现Thickly - Coated。
最近开发计划
- 添加ShaderModel
- 给材质添加一些属性
- 移植ToonDataAsset。
- MaterialInstance Override 完成
- 添加BackFace Outline基础代码。
- 移植ToonDataAsset。
- 添加材质自定义Output节点。
- 给GBuffer结构体添加子ToonBuffer结构体。
- ShaderModel:ToonStandard
- 实现初版ToonStandard。
- ToonOutline(后处理)
- ID、Depth、Normal Outline
- 深度描边初版
- 法线描边初版
- FOV宽度适配
- ScreenPercentage、DPI宽度适配(包括Editor Overrider)
- 后处理描边的内外描边问题。深度描边会描内部与外部。导致一些比较近的地方深度描边比较细。
- 内外描边通过是否是卡通材质来判断。所以分为 外内与内内2种情况。
- ToonOutlineDataAsset 添加深度&法线描边开关选项。
- ToonOutlineDataAsset ID描边实现。
- ToonOutlineID Overrider实现。可以使用OutlineID贴图来实现单材质描边的功能。
- SDF Outline
- 将OutlineMask 16位 15位存储SDFOutline + 1位存储Mask。
- https://www.shadertoy.com/view/4lfyR2
- BackFaceOutline
- ID、Depth、Normal Outline
- ToonPostProcess
- ToonBloom
- 实现一波Anti-Lut
- ToonRimLighting
- 后处理边缘光
- Matcap
- ASoul边缘光
- Reflection控制
- Toon GI(Lumen)
- 阴影控制
- CustomDepth制作头发阴影偏移效果哦 https://zhuanlan.zhihu.com/p/689578355
- ToonTranslucent
- 实现前向混合管线?思路有2:1. Material直接计算光照结果。2. 自定义ToonBasePass到LightingPass后,复制阴影贴图与Lumen渲染结果进行Composition。
- 原神早期的方案:
- 渲染地形(远景
- CubeMap环境光照,(和时间与地区有关)
- 渲染屏幕空间深度图
- 渲染角色以及近景模型(卡通材质相关渲染Pass)
- 有计算直接光照与阴影。使用屏幕空间深度图来计算阴影。
- 渲染深度与法线Buffer。
- 渲染级联阴影。
- 合成,阴影与环境光照(AO、环境探针)。
- 原神早期的方案:
- 添加Debug View https://zhuanlan.zhihu.com/p/668782106
- UE5 Shader Print系统
- GBufferView实现。
- Toon Debug模式,可以让美术在材质进行进行简单的光照计算。
- ToonShadow
- 考虑往GBuffer中添加更多数据(考虑Velocity以及SingleLayerWater)
- ShaderMaterialDerivedHelpers.cpp(Shader宏)、GBufferInfo.cpp(GBuffer格式)BasePassRendering.cpp(950行,SingleLayerWater写入GBuffer格式相关)
- 确定一下SingleLayerWater中VSMFiter与DistanceFieldShadow对渲染结果的影响,之后在文档中说明。
- 修复SIngleLayerWater的缩略图渲染渲染错误(双击会有一瞬间的错误产生)
- 添加对应的Stat https://zhuanlan.zhihu.com/p/716644594
- ToonLumen、GI以及晕染效果实现。!卡通渲染晕染效果.mp4
- 在材质中实现ToonEye相关效果
- Unreal Engine 5.4 Scene Extension https://zhuanlan.zhihu.com/p/706268007
- 通过SceneExtension改进ToonObjectID,这样可以减少对应ToonBuffer的精度来存其他数据。
- https://www.bilibili.com/video/BV1fM4m1U7Tp/
TODO:
- ShadingModels.ush 完善Hair高光、自定义高光
- 实现对应后处理效果的ComputeShader版本。
- ToonOutline
- RimLighting?
修改标记方便后续删除备注//BlueRose Modify //BlueRose Modify End // Copyright BlueRose, Inc. All Rights Reserved.
渲染功能兼容的游戏
- 罪恶装备
- 原神
- 星穹铁道
- 绝区零
- 蓝色协议
卡通渲染引擎功能总览(按照渲染顺序进行排序)
- GBuffer For ToonShaderModel
- ToonShaderModel
- ToonStandard
- Thickly - Coated
- 描边
-
阴影
- 边缘光
- 其他特性
待实现功能
知乎提到的渲染功能:
- 发尖勾线 https://zhuanlan.zhihu.com/p/405518306
- SDF 描边
- 屏幕空间深度边缘光 Screen Space Depth Rimlight
- 原神实现
- 遮挡时的模糊网点效果
按照需求优先级进行排列:
-
Anit-Lut功能
- Anit-ToneMapping
- 完整的Anit-Lut功能(虚拟拍摄也会用到)
-
描边改进
- 后处理部分,使用蓝色协议的方案
- MultiDraw BackFace部分
- 绘制轮廓方法落地:本村线、SDF
- 使用添加MeshDrawPass的方式实现比较完美的BackFace
-
ToonData与ToonWorldSettings改进
- 增加多个SSS 预积分贴图功能
- 将材质以外的参数都集中到ToonWorldSettings类中,以方便调节
-
面部光影方案改进
- 在GBuffer中添加额外面部自定义法线
- SDF面光方案
-
角色面部Anit-Perspective 与 手指放大效果
- 模仿VRM4U的参数
- 参考AnimMaker
-
后处理
- 原神 辉光效果
- TAA抗锯齿 => Responsive AA,解决Outline模糊问题
- 影视级Bloom实现
-
眉毛效果
- 可以考虑使用TranslucencySortPriority来解决
- 通过MeshDrawPass实现眉毛最前显示效果
- 实现眉毛描边效果
-
额发效果
- 额发阴影效果(衣服阴影效果)
- 实现半透明额发
-
天光与间接光处理
- 为了防止环境光把角色照出立体感,所以计算环境光时,会把法线全部看作世界空间上方向来处理。同时增加了一些参数可以进行一些定制化调整。
-
使用顶点色与第二套UV来修改一些可以实时修改的效果
-
实现PBR <=> Cel 卡通渲染效果的参数切换
-
使用Kawaii插件实现柔体效果
-
后处理边缘光落地
-
SSGI 卡通渲染适配?实现AnimMaker 中的一个效果
- ShaderModel
- 分阶着色
- 二阶化:
- 多阶化:
- 自定义次表面(暗部)颜色
- 颜色过渡(羽化):
- lut:待讨论
- 高光
- 高光贴图
- 高光颜色
- 参数化高光形状
- 多层高光
- Shader内编辑法线
- N=_scale * L + N
- 分阶着色
- 描边
- 外描边:后处理描边 、 Mesh挤出 2种方式,原神采用了Mesh挤出。
- 内描边:后处理、SDF描边、本村线 3种方式
- 使用Mesh基础、后处理、模型绘制。(后处理传递Id贴图)
- 阴影
- 自定义阴影颜色
- 自定义阴影范围
- 自定义阴影形状
- 阴影过渡(sdf阴影)
- 边缘光
- 边缘光是否受到光照影响
- 多层边缘光
- 边缘光衰减(入射角度更明显 or 背光角度更明显)
- 多光源支持
- 根据相机角度调整模型(非必要)
- 眼睛
- 反射 环境反射或者matcap支持
- 内阴影 AO实现或者画死的内阴影
- 瞳孔 瞳孔缩放
- 视差和效果 凹凸效果
- 高光 自定义高光形状&位置
- 高光流动效果
- 头发
- 各项异性头发
- 高光扰动
- 高光贴图
- 自定义高光属性
- 高光天使环
- 无各项异性头发
- 自定义高光参数
- 高光贴图
- 高光天使环
- 各项异性头发
- 特殊效果
- 眉毛/睫毛不受遮挡
- 自发光
- 阴影内素描效果
- 后处理效果
- 后处理 辉光效果
- 之后提到了SunFlare,应该是那个屏幕后处理效果。卡通渲染很依赖体积光,所以自然会有好的效果,假也没关系,假才是对的。谷歌搜SNN Filter https://www.shadertoy.com/view/MlyfWd
- 旁边的Kuwahara应该是个类似的算法,64采样。