Unity 검색

공유

Is this article helpful for you?

Thank you for your feedback!

타일러블 텍스처(tileable texture)를 사용하여 넓은 표면을 덮거나 메시에 세부적인 디테일을 더한 적이 있으신가요? 그렇다면 타일링 값이 높아지면서 반복 패턴이 빠르게 나타나는 것을 보셨을 것입니다. 이런 문제를 피하기 위해 Unity Labs는 절차적 랜덤 텍스처링(Procedural Stochastic Texturing)이라고 하는 새로운 텍스처링 기술을 개발했습니다.

타일러블 텍스처는 3D 씬에 디테일을 더하는 유용한 툴입니다. 하지만 타일러블 텍스처와 디테일 맵을 사용해서 넓은 영역을 텍스처링하거나 난이도가 높은 디테일이 적용된 표면을 구현하려고 할 때마다 타일링 패턴이 나타납니다(아래 왼쪽 이미지). 일반적으로 반복되는 패턴을 줄이려면 텍스처를 늘리거나, 오브젝트를 추가하여 반복 패턴이 보이지 않게 가려야 합니다. 이 블로그 게시물에서는 녹, 이끼, 나무껍질 등 임의의(stochastic) 형상으로 이 텍스처 관련 문제를 해결하는 플러그인을 제공합니다. 플러그인의 효과는 오른쪽 이미지에서 확인하실 수 있습니다.

일반적인 텍스처링을 적용한 녹슨 금속 머티리얼(좌측)과 Unity의 기술을 적용한 녹슨 금속 머티리얼(우측)

여기에서 플러그인 다운로드

입력 텍스처가 제공되면 이 플러그인에서는 입력 형상에 맞는 무한히 큰 텍스처를 절차적으로 생성합니다. 이 작업을 위해 수정된 입력 텍스처 버전에 적용되는 최신 텍스처 블렌딩 함수를 사용(프래그먼트당 텍스처 샘플 3개만 필요)하고, 소규모 룩업 테이블을 불러옵니다. 이 플러그인이 있으면 타일링 작업이 필요 없어지므로 반복 아티팩트 없이 디테일 수준(LOD)은 높이면서, 더 적은 텍스처로 더 넓은 표면을 덮을 수 있습니다.

StandardStochastic 셰이더 사용

이 플러그인에는 스탠다드 셰이더의 배리언트가 Unity 패키지에 포함되어 제공됩니다. 패키지를 임포트한 다음 머티리얼에 대해 StandardStochastic 셰이더를 선택합니다. 인터페이스는 스탠다드 셰이더와 동일하지만 상단에 2가지 필수 설정 단계에 그에 상응하는 새로운 컨트롤 2개가 다음과 같이 추가됩니다.

  1. Stochastic Inputs 메뉴에서는 어떤 입력 텍스처에 이 기술을 활성화할 것인지 지정(Everything으로 설정하거나 알베도, 노멀 맵 등 특정 텍스처로 설정 가능)할 수 있습니다.
  2. Apply 버튼을 누르면 선택한 임의의 입력에 대한 데이터를 사전에 계산하고 머티리얼을 업데이트하여 프로세스를 완료합니다. 이 단계에서는 각 입력 텍스처에 대해 동일한 폴더에 임시 텍스처(intermediate texture) 2개를 생성합니다.

추가 참고 사항:

  • 기존에 임시 텍스처가 존재할 경우 생성 단계를 생략하고 그대로 로드되기 때문에 원본 텍스처를 수정하려면 기존의 임시 텍스처를 모두 삭제한 후 다시 Apply 버튼을 눌러서 강제로 재생성합니다.
  • 스탠다드 셰이더와 StandardStochastic 셰이더 간에 전환하는 경우 파라미터가 상호 간에 이동합니다.
  • StandardStochastic(스페큘러 설정) 셰이더는 스페큘러 워크플로를 사용하는 머티리얼에도 제공됩니다.

 

다음은 작은(256²) 입력 텍스처를 사용하여 다양한 머티리얼로 작업 중인 프로토타입의 예를 보여줍니다.

알베도, 노멀, 오클루전 텍스처가 적용된 목재 디테일 맵
알베도, 노멀, 오클루전, 하이트 텍스처가 적용된 암석 머티리얼
알베도, 노멀, 메탈릭/평활도 텍스처가 적용된 철제 머티리얼

한계

이 기술은 거리를 두고 보았을 때 랜덤 노이즈와 유사한 텍스처와, 정밀한 기하학적 형태가 없는 자연스러운 머티리얼과 같은 타일러블 랜덤 텍스처 또는 랜덤에 가까운 텍스처에만 사용 가능합니다.

피드백

이 기술은 연구용 프로토타입이며 현재 개발 중인 것은 아니므로 유지 관리나 서비스 지원을 보장하지는 않습니다. 하지만 질문이나 의견이 있으면 Unity 포럼에 자유롭게 적어주시기 바랍니다. 현재 유니티는 새로운 렌더링 파이프라인과의 호환성 및 커스텀 셰이더에 적용할 셰이더 그래프를 구현하려고 노력하고 있습니다. 포럼 스레드에서 새로운 소식을 확인해 보세요.

더 읽을거리

이 플러그인이 어떻게 동작하는지 궁금하신가요? Unity 플러그인의 기반이 되는 주제에 대해 최근에 게재된 다음 연구 논문 2개를 읽어보시기 바랍니다.

 

이 플러그인과 함께 제공된 코드 주석은 위 기술 소개 부분의 특정 섹션을 참고하여 작성되었습니다.

2019년 2월 14일 엔진 & 플랫폼 | 3 분 소요

Is this article helpful for you?

Thank you for your feedback!