컬러 톤 변경해서 표현하기
텍스쳐의 컬러의 톤을 단계화 시켜서 컬러를 좀더 쨍하게 표현하는 방법이다.
흔히 아는 카툰 렌더링에서도 해당 컬러를 단순화 하는 과정이 포함된다.
반응형
반응형
< Material 속성 >
< Shader Code >
Shader "custom/ColorToonShader"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" { }
_ColorSteps ("Color Steps", Range(1, 8)) = 3
}
SubShader
{
Tags { "RenderType"="Transparent" }
Pass
{
Tags { "LightMode"="ForwardBase" }
Blend SrcAlpha
OneMinusSrcAlpha
ZWrite
On
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float _ColorSteps;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
v2f vert(appdata v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
half4 frag(v2f i) : SV_Target
{
half4 texColor = tex2D(_MainTex, i.uv);
if (texColor.a < 0.1)
{
discard;
}
// Color quantization logic (using ColorSteps)
texColor.rgb = round(texColor.rgb * _ColorSteps) / _ColorSteps;
return texColor;
}
ENDCG
}
}
FallBack"Diffuse"
}
색상의 단계를 나눠서 정해진 단계 수로 제한해서 Toon 효과를 만든다.
여기에서는 총 8단계로 처리를 했다.
★★★☆☆
반응형
'개발 > Unity) Shader' 카테고리의 다른 글
Unity Shader) 얼어있는 느낌 텍스쳐 외곡해서 다양한 시각적인 효과 (0) | 2024.11.27 |
---|---|
Unity Shader) 도트 팝아트 형식으로 표현하기 (0) | 2024.11.22 |
Unity Shader) 녹아서 사라지는 효과 (Dissolve) (0) | 2024.11.20 |
Unity Shader) 오래된 효과 / 빈티지 표현하기 (Sepia) (0) | 2024.11.19 |
UnityShader) 픽셀화 표현하기 (0) | 2024.11.15 |
댓글