找回密码
 立即注册
查看: 379|回复: 0

[笔记] Unity中二次元渲染算法总汇

[复制链接]
发表于 2021-11-30 10:29 | 显示全部楼层 |阅读模式
Unity在5.0版本升级了基于物理的着色器,能很大程度的提升游戏开发者在写实类游戏中的画面效果,可是在国内强力游戏厂商都有自己的一套特殊渲染方式,比如知名的《崩坏3》。本篇文章就总结了博毅创为教育集团在二次元渲染上的所有成就。
1.Ramp Map
原理,讲Dot(Normal,LightDirection)从(-1,1)的范围重映射到(0,1)之间。使用重映射的值对贴图进行采样。Shader Forge实现如图。除了在Dot(Normal,LightDirection)上可以采样,我们还可以将边缘光的值也纳入考量,这样就可以完整对一个2D贴图进行采样。


主要使用范围。将漫反射从纯粹的黑白变化到具有风格化感觉的贴图上。




《军团要塞2》
使用的Ramp Map


2.外轮廓线
使用特殊的Pass绘制一遍物体。这个Pass不进行背面剔除而是进行正面剔除。
ShaderForge实现


轮廓线绘制代码
Tags {
"RenderType"="Opaque"
}
Pass {
Name "Outline"
Tags {
}
Cull Front
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#pragma fragmentoption ARB_precision_hint_fastest
#pragma target 3.0
uniform float _OutLineWidth;
uniform float4 _OutLineColor;
struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct VertexOutput {
float4 pos : SV_POSITION;
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.pos = UnityObjectToClipPos( float4(v.vertex.xyz + v.normal*_OutLineWidth,1) );
return o;
}
float4 frag(VertexOutput i) : COLOR {
return fixed4(_OutLineColor.rgb,0);
}
ENDCG
}
粘贴到subshader即可使用。
3.边缘光RimLight
max(0,dot(viewDir, normal))^Strength在物体边缘增加一层光效或用于对人物照明的补充。
Shader Forge实现


效果


4.Tone Based Shading






公式中α,β,Kblue,Kyellow,kd都是可调节参数。主要使用在
接近插画类的渲染中,用于创建过渡自然的场景,比如《纪念碑谷》一类的




5. 日式赛璐璐着色
模拟日式赛璐璐画法中阴影中的色彩和普通色彩分离的一个效果。色彩分为高光部,亮部,影部三部分。


现在资料中,GUILTY GEAR Xrd算实现得最好的。片元着色器部分伪代码如下
dark = dot(normal,lightDir)*AO*Shadow;
Color_shadow = Color_Light*ShadowAdjust;
LightTerm = dark<threshlod?Color_shadow:Color_Light;
Shadow来源于阴影贴图,Color_Light来源于底色贴图.ShadowAdjust来源于底色处于阴影环境中的调整。
完整Color =LightTerm+Specluar;
Specular使用标准的Blinn-phong光照模型。
博毅创为VIP课程实践中会将上述所有内容整合起来完成GGXRD中的二次元渲染


更多课程资源请点击:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-3 03:16 , Processed in 0.099755 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表