> lerp 선형 보간 = 그라디에이션
텍스쳐를 섞을 때 사용
lerp(X, Y, s) -> 0(x) s 1(y) 로 생각하면 된다.
> 텍스쳐 한 장 더 받기
텍스쳐 한 장을 더 받는 인터페이스 생성 - 변수 선언 - 텍스쳐2 입력(섞지 않아 1만 보임) - lerp로 섞음
Shader "Custom/tex2"
{
Properties
{
_MainTex("Albedo(RGB)", 2D) = "grey" {}
_MainTex2("Albedo(RGB)", 2D) = "grey" {} // 두 번째 텍스처 입력 인터페이스
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
sampler2D _MainTex;
sampler2D _MainTex2; // 두번째 텍스쳐 변수
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 c2 = tex2D (_MainTex2, IN.uv_MainTex); // 두번째 텍스쳐 사용
o.Albedo = lerp(c.rgb, c2.rgb, 1); //0: c텍스쳐 출력 / 1: c2 텍스쳐 출력
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
> o.Albedo = lerp(c.rgb, c2.rgb, 0.5); // 반 씩 섞기
> lerp 슬라이더 인터페이스를 만들어 섞기
Shader "Custom/tex2"
{
Properties
{
_MainTex("Albedo(RGB)", 2D) = "grey" {}
_MainTex2("Albedo(RGB)", 2D) = "grey" {}
_lerp("lerp",Range(0,1)) = 0 // lerp 슬라이더 인터페이스 생성
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
sampler2D _MainTex;
sampler2D _MainTex2;
float _lerp; // 변수 선언
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 c2 = tex2D (_MainTex2, IN.uv_MainTex);
o.Albedo = lerp(c.rgb, c2.rgb, _lerp); // lerp 슬라이더로 섞는 비율 조정
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
'게임 그래픽 프로그래밍' 카테고리의 다른 글
셰이더4: 텍스쳐 애니메이션 (0) | 2024.09.03 |
---|---|
셰이더3: 색 반전 및 밝기 조정 (0) | 2024.09.03 |
셰이더3: 텍스쳐 입력 (0) | 2024.09.03 |
셰이더2: 기본 코드로 빨강 셰이더 만들기 (2) | 2024.09.02 |
쉐이더2: 인터페이스 생성해 외부 입력 받기 (1) | 2024.09.02 |