2D 이미지를 역동적으로 표현하기( Hovering / Pulsing)
호버링(부유) 효과와 펄싱(크기 변화)의 효과를 적절히 결합해서
정적인 이미지를 약간의 역동적인 느낌을 추가하는 형식의 셰이더 코드이다.
반응형
반응형
호버링은 특정 축을 기준으로 이동을 하고 펄싱은 버텍스 스케일을 조절해서 약간의 움직임을 줄수 있다.
< Material 속성 >
< Shader Code >
Shader "Custom/PulsingAndHovering"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_PulseSpeed ("Pulse Speed", Float) = 2.0
_PulseAmountX ("Pulse Amount X", Float) = 0.05
_PulseAmountY ("Pulse Amount Y", Float) = 0.05
_Pivot ("Pulse Center (Pivot UV)", Vector) = (0.5, 0.5, 0, 0)
_YOffset ("Y Position Offset", Float) = 0.0
_TimeOffset ("Time Offset", Float) = 0.0
_HoverSpeed ("Hover Speed", Float) = 1.5
_HoverAmount ("Hover Amount", Float) = 0.03
}
SubShader
{
Tags { "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 100
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
Cull Off
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
sampler2D _MainTex;
float4 _MainTex_ST;
float _PulseSpeed;
float _PulseAmountX;
float _PulseAmountY;
float4 _Pivot;
float _YOffset;
float _TimeOffset;
float _HoverSpeed;
float _HoverAmount;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert(appdata v)
{
v2f o;
float time = _Time.y + _TimeOffset;
// Pulsing scale
float scaleX = 1.0 + sin(time * _PulseSpeed) * _PulseAmountX;
float scaleY = 1.0 + sin(time * _PulseSpeed) * _PulseAmountY;
// Hovering offset
float hoverOffset = sin(time * _HoverSpeed) * _HoverAmount;
float3 pos = v.vertex.xyz;
// Pivot scaling
pos.x -= _Pivot.x;
pos.y -= _Pivot.y;
pos.x *= scaleX;
pos.y *= scaleY;
pos.x += _Pivot.x;
pos.y += _Pivot.y + _YOffset + hoverOffset;
o.vertex = UnityObjectToClipPos(float4(pos, 1.0));
o.uv = v.uv * _MainTex_ST.xy + _MainTex_ST.zw;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
return tex2D(_MainTex, i.uv);
}
ENDCG
}
}
}
★★★☆☆
반응형
'개발 > Unity) Shader' 카테고리의 다른 글
Unity Shader) 후광 효과 만들기 (0) | 2025.05.15 |
---|---|
Unity Shader) 그림자 처리 (0) | 2025.05.15 |
Shader) 글리치 : 오류 난 효과(GlichEffect) (0) | 2025.04.28 |
Unity Shader) 다이아몬드 형태로 프리즘 효과 처리하기 (0) | 2024.12.08 |
UnityShader) 외곽선만 표시하는 쉐이더 (0) | 2024.12.05 |
댓글