반응형
1.Lerp 함수란
Linear Interpolation = 선형보간이라고 한다.
- 어떤 수치에서 값이 변경될때 한번에 변경되지않고 ( 계단식), 부드럽게 변경되는것
- 오브젝트를 부드럽게 이동시키거나, 회전할때 사용
- 카메라 추적 스크립트에도 적용 가능
Lerp(X,Y,s)
X와 Y는 같은단위이며 s는 float여야 한다.
Shader "Custom/BasicShader_lerp"
{
Properties
{
//_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_MainTex2 ("Albedo (RGB)", 2D) = "white" {}
_lerpTest ("lerp 기능 테스트" , Range(0,1)) =0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
sampler2D _MainTex;
sampler2D _MainTex2;
float _lerpTest;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);
o.Albedo = lerp(c.rgb, d.rgb,_lerpTest);
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
- lerp함수를 사용하기위해서는 두개의 텍스쳐를 받아야함
- Lerp 기능 테스트를 위한 인터페이스 추가
- 2개의 텍스쳐를 입력받기위한 코드 추가
- 슬라이드 바에서 받는 숫자값
- 두번째 텍스쳐의 uv 값 선언
- 입력 받은 C 이미지 표출
- 입력 받은 D 이미지 표출
- lerp함수를 활용(c이미지, d이미지,슬라이더 값대로 표출)
나는 고양이사진과 안경을 준비했다.
슬라이더를 조절하는 결과는?
float 로받은 _lerptest 가 0이면 고양이사진(c.rgb) , 1일때 선글라스 사진(d.rgb) 이 표출된다
그 사이값인 0.5이면 겹쳐진 모습이겠다.
그렇다면 저 선글라스를 고양이에게 씌울순 없을까?
2. Lerp함수 응용
내가 가져온 선글라스 이미지는 알파값을 가지고있다.
이걸 활용해서 고양이에게 선글라스를 씌워보겠다.
이 흰부분만 남기고 검은색 부분에는 고양이 사진으로 채워야한다.
그렇다면 d이미지(선글라스) 의 알파값을 활용해야한다.
- (c 이미지,d이미지, d의 알파값)
결과가 잘나올까?
선글라스 크기가 좀만 작았으면 딱이였겠다.
다음엔 사이즈 맞게 잘 가져와야지
사용된 고양이 사진은 저희집 공주입니다
이름이 공주에요 .
자랑맞아요..
반응형