Version: 2021.1
언어: 한국어
ShaderLab: 레거시 텍스처 조합
Unity의 HLSL

ShaderLab: 레거시 버텍스 데이터 채널 매핑

참고: 이 페이지의 ShaderLab 기능은 레거시이며, 이전 버전과의 호환성 목적으로만 문서화되었습니다. 셰이더 소스 파일에 HLSL 코드가 포함된 경우, Unity는 이러한 커맨드를 완전히 무시합니다. 셰이더 소스 파일에 HLSL 코드가 포함되지 않은 경우, Unity는 임포트 시 이러한 커맨드를 일반 셰이더 프로그램으로 컴파일합니다.

렌더 파이프라인 호환성

기능 이름 빌트인 렌더 파이프라인 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 SRP
레거시 버텍스 데이터 채널 매핑 지원 지원 안 함 지원 안 함 지원 안 함

개요

BindChannels 커맨드로 버텍스 데이터 맵을 그래픽스 하드웨어에 매핑하는 방법을 지정할 수 있습니다. Unity는 기본적으로 바인딩을 자동으로 계산하지만, 경우에 따라 커스텀 바인딩을 사용하고 싶을 수 있습니다.

예를 들어, 1차 UV 세트가 첫 텍스처 스테이지에 사용되고 2차 UV 세트가 두 번째 텍스처 스테이지에 사용되도록 매핑하거나, 버텍스 컬러를 고려해야 한다고 하드웨어에 알릴 수 있습니다.

구문

BindChannels { Bind "source", target }

버텍스 데이터 source 가 하드웨어 target 에 매핑되도록 지정합니다.

Source는 다음 중 하나일 수 있습니다.

  • Vertex: 버텍스 포지션
  • Normal: 버텍스 노멀
  • Tangent: 버텍스 탄젠트
  • Texcoord: 1차 UV 좌표
  • Texcoord1: 2차 UV 좌표
  • Color: 버텍스당 컬러

Target은 다음 중 하나일 수 있습니다.

  • Vertex: 버텍스 포지션
  • Normal: 버텍스 노멀
  • Tangent: 버텍스 탄젠트
  • Texcoord0, Texcoord1, …: 해당 텍스처 스테이지의 텍스처 좌표
  • Texcoord: 모든 텍스처 스테이지의 텍스처 좌표
  • Color: 버텍스 컬러

세부 정보

Unity는 타겟에 매핑할 수 있는 소스에 대한 다음과 같은 제한을 적용합니다. Vertex, Normal, TangentColor 의 소스와 타겟이 일치해야 합니다. 메시의 텍스처 좌표(TexcoordTexcoord1)를 텍스처 좌표 타겟(모든 텍스처 스테이지의 경우__Texcoord, 특정 스테이지의 경우 TexcoordN__)에 매핑할 수 있습니다.

BindChannels는 일반적으로 다음 두 가지 셰이더에 사용됩니다.

  • 버텍스 컬러를 감안하는 셰이더
  • UV 세트 2개를 사용하는 셰이더

예제

// Maps the first UV set to the first texture stage
// and the second UV set to the second texture stage
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord0
   Bind "texcoord1", texcoord1
}
// Maps the first UV set to all texture stages
// and uses vertex colors
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord
   Bind "Color", color
}
ShaderLab: 레거시 텍스처 조합
Unity의 HLSL