Unity中二次元渲染算法总汇

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实现


轮廓线绘制代码

粘贴到subshader即可使用。

3.边缘光RimLight

max(0,dot(viewDir, normal))^Strength在物体边缘增加一层光效或用于对人物照明的补充。

Shader Forge实现


效果


4.Tone Based Shading

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




[if !supportLists]5. [endif]日式赛璐璐着色

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


现在资料中,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光照模型。

点击链接加入群聊【Unity/Cocos交流群】

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容