도트 팝아트 형식으로 표현하기
도트 패턴의 팝아트적인 효과를 만들어보았다.
도트 패턴의 사이즈를 조절이 가능하게 해서 도트 팝아트 형식의 효과를 낼수 있게 했다.
반응형
반응형
< Material 속성 >
< Shader Code >
Shader"Custom/DotPopArtShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {} // 텍스처 입력
_DotSize ("Dot Size", Float) = 10 // 도트 크기 조정
}
SubShader
{
Tags { "RenderType"="Transparent" "Queue"="Transparent" }
Blend
SrcAlpha OneMinusSrcAlpha // 알파 블렌딩 설정
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
// 텍스처와 설정값 선언
sampler2D _MainTex;
float _DotSize;
float4 _MainTex_ST;
// 버텍스 데이터 구조체
struct appdata_t
{
float4 vertex : POSITION; // 위치 데이터
float2 uv : TEXCOORD0; // UV 좌표
};
// 셰이더로 전달될 데이터 구조체
struct v2f
{
float2 uv : TEXCOORD0; // UV 좌표
float4 vertex : SV_POSITION; // 위치 데이터
};
// 버텍스 셰이더
v2f vert(appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex); // 클립 공간으로 변환
o.uv = TRANSFORM_TEX(v.uv, _MainTex); // UV 변환
return o;
}
// 프래그먼트 셰이더
fixed4 frag(v2f i) : SV_Target
{
// UV 좌표를 도트 그리드로 변환
float2 coord = i.uv * _DotSize;
float2 dist = frac(coord) - 0.5;
// 도트 패턴 반지름 계산
float radius = length(dist);
// 도트 패턴 결정
float mask = step(radius, 0.5);
// 텍스처 색상 읽기
fixed4 texColor = tex2D(_MainTex, i.uv);
// 도트 내부의 색상 유지, 투명도 포함
fixed4 outputColor = texColor * mask;
// 알파 값 유지
outputColor.a *= texColor.a;
return outputColor;
}
ENDCG
}
}
FallBack"Transparent/Diffuse" // 대체 셰이더
}
해당 코드를 응용해서 여러가지 다른 형식의 표현도 가능하다.
★★★☆☆
반응형
'개발 > Unity) Shader' 카테고리의 다른 글
Unity Shader) 컬러를 오버레이 해서 스포트라이트 효과 내기 (0) | 2024.11.28 |
---|---|
Unity Shader) 얼어있는 느낌 텍스쳐 외곡해서 다양한 시각적인 효과 (0) | 2024.11.27 |
Unity Shader) 컬러 톤 변경해서 표현하기 (0) | 2024.11.21 |
Unity Shader) 녹아서 사라지는 효과 (Dissolve) (0) | 2024.11.20 |
Unity Shader) 오래된 효과 / 빈티지 표현하기 (Sepia) (0) | 2024.11.19 |
댓글