Unity ShaderLab: 레거시 텍스처 조합
이 문서는 Unity의 ShaderLab에서 레거시 텍스처 조합 기능을 사용하는 방법에 대해 설명합니다. 텍스처 조합은 게임의 그래픽스 품질을 높이는 데 중요한 역할을 합니다.
개요
Unity의 ShaderLab에서는 SetTexture 커맨드를 사용하여 텍스처를 설정하고 조합합니다. 이 기능은 버텍스 조명이 적용된 후에 이루어지며, 여러 개의 텍스처를 연속적으로 적용할 수 있습니다.
구문
SetTexture [TextureName] {Texture Block}
TextureName: 텍스처 프로퍼티로 정의되어야 합니다.TextureBlock: 텍스처를 적용하는 방법을 정의합니다.
텍스처 블록
텍스처 블록에서는 다음의 커맨드를 사용할 수 있습니다:
combineconstantColor
combine 커맨드
combine 커맨드는 여러 개의 텍스처를 조합하는 방식을 설정합니다. 사용 가능한 수식은 다음과 같습니다:
src1 * src2: 두 텍스처를 곱합니다.src1 + src2: 두 텍스처를 더합니다.src1 - src2: src1에서 src2를 뺍니다.src1 lerp(src2) src3: src1과 src3 사이를 src2의 알파 값을 사용하여 선형 보간합니다.src1 * src2 + src3: src2의 알파와 곱한 후 src3을 더합니다.
constantColor 커맨드
이 커맨드는 조합에 사용할 수 있는 상수 색상을 정의합니다.
예제
텍스처 2개 알파 블렌딩
아래 예제는 두 개의 텍스처를 사용하여 알파 블렌딩하는 방법을 보여줍니다.
Shader "Examples/2 Alpha Blended Textures" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BlendTex ("Alpha Blended (RGBA) ", 2D) = "white" {}
}
SubShader {
Pass {
SetTexture [_MainTex] {
combine texture
}
SetTexture [_BlendTex] {
combine texture lerp (texture) previous
}
}
}
}
알파 제어된 자체 조명
이 예제는 텍스처의 알파 값을 사용하여 조명을 제어하는 방법을 설명합니다.
Shader "Examples/Self-Illumination" {
Properties {
_MainTex ("Base (RGB) Self-Illumination (A)", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse (1,1,1,1)
Ambient (1,1,1,1)
}
Lighting On
SetTexture [_MainTex] {
constantColor (1,1,1,1)
combine constant lerp(texture) previous
}
SetTexture [_MainTex] {
combine previous * texture
}
}
}
}
최종 예제: 모든 라이팅 프로퍼티 사용
다음 예제는 다양한 조명 속성을 사용하는 방법을 설명합니다.
Shader "Examples/Self-Illumination 3" {
Properties {
_IlluminCol ("Self-Illumination color (RGB)", Color) = (1,1,1,1)
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SetTexture [_MainTex] {
constantColor [_IlluminCol]
combine constant lerp(texture) previous
}
SetTexture [_MainTex] {
combine previous * texture
}
}
}
}
결론
ShaderLab의 텍스처 조합 기능을 활용하면 다양한 시각 효과를 구현할 수 있습니다. 위에서 소개한 예제들은 기초적인 사용법을 보여줍니다. 더 복잡한 효과를 만들어 보기를 권장합니다.