Shader实战:Unity中实现贴图像素化风格
创作时间:
作者:
@小白创作中心
Shader实战:Unity中实现贴图像素化风格
引用
CSDN
1.
https://blog.csdn.net/qq_41904236/article/details/138169056
本文将介绍如何使用Unity Shader实现贴图像素化风格。通过自定义Shader,我们可以轻松地为游戏中的材质添加像素化效果,让画面呈现出独特的艺术风格。
无需多言,将以下Shader代码赋给材质并贴上贴图即可实现像素化效果:
Shader "HQY/Shader2" //自己改名
{
Properties
{
_Diffuse ("Diffuse", Color) = (1,1,1,1)
_MainTex ("MainTex", 2D) = "white" {}
_Specular("Specular", Color) = (1,1,1,1)
_Gloss("Gloss", Range(8,256)) = 20
_PixelSize ("PixelSize", Range(1, 100)) = 1
}
SubShader
{
Tags { "RenderType"="Opaque" "LightMode"="ForwardBase"}
LOD 200
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
fixed4 _Diffuse;
sampler2D _MainTex;
sampler2D _NewTex;
fixed4 _Specular;
float _Gloss;
struct appdata {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 texcoord : TEXCOORD0;
float2 uv : TEXCOORD0;
};
struct v2f {
float4 pos : SV_POSITION;
float3 worldNormal : TEXCOORD0;
float3 worldPos : TEXCOORD1;
float2 uv : TEXCOORD2;
};
v2f vert (appdata v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = v.uv;
return o;
}
float4 _MainTex_TexelSize;
float _PixelSize;
fixed4 frag (v2f i) : SV_TARGET {
float2 interval = _PixelSize * _MainTex_TexelSize.xy;
float2 th = i.uv / interval; // 按interval划分中,属于第几个像素
float2 th_int = floor(th); // 去小数,让采样的第几个纹素整数化,这就是失真UV关键
th_int *= interval; // 再重新按第几个像素的uv坐标定位
//return tex2D(_MainTex, th_int); //若不需叠加光影则直接返回
fixed4 texColor = tex2D(_MainTex, th_int);
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.rgb * texColor.rgb;
fixed3 diffuse = _LightColor0.rgb * texColor.rgb * max(0, dot(i.worldNormal, _WorldSpaceLightPos0.xyz));
fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(reflect(_WorldSpaceLightPos0.xyz, i.worldNormal), normalize(i.worldPos - _WorldSpaceCameraPos))), _Gloss);
fixed4 c = fixed4(ambient + diffuse + specular, 1.0);
c *= _Diffuse;
return c;
}
ENDCG
}
}
FallBack "Diffuse"
}
效果如下:
至于光影效果的像素化与贴图配套,除了建立贴图UV与片元法线等的映射,还可以将光照情况预先烘焙至贴图,然后再将贴图像素化。
热门推荐
《超有趣的云科学》:一套让孩子爱上气象科学的科普绘本
香港影坛最能打的梁小龙,娶小20岁妻子,76岁与网红合照尽显年轻
越南河内欧洲小镇深度游:从美食到美景
波音737 MAX又出事了?背后真相揭秘!
F-35又双叒叕出事了?背后真相大揭秘!
当ChatGPT遇上网络梗图:一场科技与幽默的完美邂逅
2024最火搞笑沙雕头像,笑到肚子疼!
工作压力大,结节来敲门?揭秘职场健康危机
甲状腺结节穿刺会导致癌细胞扩散?米诺娃朱精强教授说“别过度焦虑”
未感觉肺结节症状是否仍需复查
保险柜防潮吗?探究家居安全保障
《诗经》起名:乐昭背后的哲学智慧
《诗经》起名热:这些名字火了!
从《诗经》到周邦彦:取名的艺术
MATAICHI盐:信息有限,暂不创作
秋冬脚水肿?试试这些舒展操!
穿上压力袜,告别脚水肿烦恼!
脚水肿竟是这些疾病的信号!
日本五岛滩天日盐:健康吃盐新趋势
播音主持形体训练有哪些方法?
春节登顶的魔童哪吒,这一次在反抗什么?
秋冬真皮沙发保养秘籍大揭秘
周末DIY:真皮沙发翻新大作战!
吉林雾凇岛几月份去好+雾凇最佳观赏地点+注意事项+美食
冬日仙境大揭秘:六大绝美自然景点,你不可错过的旅行盛宴
职场新人必看:打造完美头像攻略
南京博物院新展来袭!门票预约全攻略
南京博物院免费门票预约攻略
吉维尼小镇:莫奈花园里的艺术世界
太原旅游攻略:解锁历史文化名城的隐藏魅力