타일러블 텍스처(tileable texture)를 사용하여 넓은 표면을 덮거나 메시에 세부적인 디테일을 더한 적이 있으신가요? 그렇다면 타일링 값이 높아지면서 반복 패턴이 빠르게 나타나는 것을 보셨을 것입니다. 이런 문제를 피하기 위해 Unity Labs는 절차적 랜덤 텍스처링(Procedural Stochastic Texturing)이라고 하는 새로운 텍스처링 기술을 개발했습니다.
타일러블 텍스처는 3D 씬에 디테일을 더하는 유용한 툴입니다. 하지만 타일러블 텍스처와 디테일 맵을 사용해서 넓은 영역을 텍스처링하거나 난이도가 높은 디테일이 적용된 표면을 구현하려고 할 때마다 타일링 패턴이 나타납니다(아래 왼쪽 이미지). 일반적으로 반복되는 패턴을 줄이려면 텍스처를 늘리거나, 오브젝트를 추가하여 반복 패턴이 보이지 않게 가려야 합니다. 이 블로그 게시물에서는 녹, 이끼, 나무껍질 등 임의의(stochastic) 형상으로 이 텍스처 관련 문제를 해결하는 플러그인을 제공합니다. 플러그인의 효과는 오른쪽 이미지에서 확인하실 수 있습니다.
여기에서 플러그인 다운로드
입력 텍스처가 제공되면 이 플러그인에서는 입력 형상에 맞는 무한히 큰 텍스처를 절차적으로 생성합니다. 이 작업을 위해 수정된 입력 텍스처 버전에 적용되는 최신 텍스처 블렌딩 함수를 사용(프래그먼트당 텍스처 샘플 3개만 필요)하고, 소규모 룩업 테이블을 불러옵니다. 이 플러그인이 있으면 타일링 작업이 필요 없어지므로 반복 아티팩트 없이 디테일 수준(LOD)은 높이면서, 더 적은 텍스처로 더 넓은 표면을 덮을 수 있습니다.
이 플러그인에는 스탠다드 셰이더의 배리언트가 Unity 패키지에 포함되어 제공됩니다. 패키지를 임포트한 다음 머티리얼에 대해 StandardStochastic 셰이더를 선택합니다. 인터페이스는 스탠다드 셰이더와 동일하지만 상단에 2가지 필수 설정 단계에 그에 상응하는 새로운 컨트롤 2개가 다음과 같이 추가됩니다.
다음은 작은(256²) 입력 텍스처를 사용하여 다양한 머티리얼로 작업 중인 프로토타입의 예를 보여줍니다.
이 기술은 거리를 두고 보았을 때 랜덤 노이즈와 유사한 텍스처와, 정밀한 기하학적 형태가 없는 자연스러운 머티리얼과 같은 타일러블 랜덤 텍스처 또는 랜덤에 가까운 텍스처에만 사용 가능합니다.
이 기술은 연구용 프로토타입이며 현재 개발 중인 것은 아니므로 유지 관리나 서비스 지원을 보장하지는 않습니다. 하지만 질문이나 의견이 있으면 Unity 포럼에 자유롭게 적어주시기 바랍니다. 현재 유니티는 새로운 렌더링 파이프라인과의 호환성 및 커스텀 셰이더에 적용할 셰이더 그래프를 구현하려고 노력하고 있습니다. 포럼 스레드에서 새로운 소식을 확인해 보세요.
이 플러그인이 어떻게 동작하는지 궁금하신가요? Unity 플러그인의 기반이 되는 주제에 대해 최근에 게재된 다음 연구 논문 2개를 읽어보시기 바랍니다.
이 플러그인과 함께 제공된 코드 주석은 위 기술 소개 부분의 특정 섹션을 참고하여 작성되었습니다.