MRTK2 표준 셰이더

표준 셰이더 예제

MRTK2 표준 음영 시스템은 Unity의 표준 셰이더와 유사한 시각적 개체를 달성하고, Fluent Design 시스템 원칙을 구현하고, 혼합 현실 디바이스에서 성능을 유지할 수 있는 유연한 단일 셰이더를 활용합니다.

예제 장면

아래의 MaterialGallery 장면에서 MRTK/Examples/Demos/StandardShader/Scenes/셰이더 재질 예제를 찾을 수 있습니다. 이 장면의 모든 재질은 MRTK/표준 셰이더를 사용합니다.

재질 갤러리

아래의 StandardMaterialComparison 장면에서 Unity/표준 셰이더 예제와 MRTK/표준 셰이더를 비교하고 테스트하는 비교 장면을 MRTK/Examples/Demos/StandardShader/Scenes/찾을 수 있습니다.

재질 비교

아키텍처

MRTK/표준 음영 시스템은 Unity의 셰이더 프로그램 변형 기능을 사용하여 재질 속성에 따라 최적의 셰이더 코드를 자동으로 생성하는 "uber 셰이더"입니다. 사용자가 재질 검사기에서 재질 속성을 선택하면 사용하도록 설정한 기능에 대한 성능 비용만 발생합니다.

재질 검사기

라는 MixedRealityStandardShaderGUI.csMRTK/표준 셰이더에 대한 사용자 지정 재질 검사기가 있습니다. 이 검사기는 렌더링 상태를 설정할 때 사용자 선택 및 보조 기능에 따라 셰이더 기능을 자동으로 사용하거나 사용하지 않도록 설정합니다. 각 기능에 대한 자세한 내용은 도구 설명을 보려면 Unity 편집기에서 각 속성을 마우스로 가리킵니다.

재질 검사기

검사기의 첫 번째 부분은 재질의 렌더링 상태를 제어합니다. 렌더링 모드는 재질이 렌더링되는 시기와 방법을 결정합니다. MRTK/표준 셰이더의 목적은 Unity/표준 셰이더에 있는 렌더링 모드를 미러 것입니다. MRTK/표준 셰이더에는 전체 사용자 제어를 위한 추가 렌더링 모드 및 사용자 지정 렌더링 모드도 포함되어 있습니다.

렌더링 모드 설명
불투명 (기본값) 투명 영역이 없는 일반 단색 개체에 적합합니다.
그림 조각 불투명 영역과 투명 영역 사이에 정확한 가장자리가 있는 투명 효과를 만들 수 있습니다. 이 모드에서는 반투명 영역이 없거나 텍스처가 100% 불투명하거나 보이지 않습니다. 이는 투명도를 사용하여 식물과 같은 재질의 셰이프를 만들 때 유용합니다.
페이드 투명도 값이 있을 수 있는 반사 하이라이트 또는 리플렉션을 포함하여 개체를 완전히 페이드 아웃할 수 있습니다. 이 모드는 개체가 페이드 인 또는 아웃되도록 애니메이션 효과를 주려는 경우에 유용합니다. 반사와 하이라이트도 사라지므로 투명한 플라스틱이나 유리와 같은 사실적인 투명 재질을 렌더링하는 데 적합하지 않습니다.
투명 투명 플라스틱 또는 유리와 같은 사실적인 투명 재질을 렌더링하는 데 적합합니다. 이 모드에서는 재질 자체가 투명도 값을 사용합니다(텍스처의 알파 채널과 색조 색의 알파를 기반으로). 그러나 반사 및 조명 하이라이트는 실제 투명 재질의 경우와 마찬가지로 완전히 선명하게 표시됩니다.
더하기 이전 픽셀 색을 현재 픽셀 색과 합산하는 가산 혼합 모드를 사용하도록 설정합니다. 이는 투명도 정렬 문제를 방지하기 위한 기본 투명도 모드입니다.
사용자 지정 렌더링 모드의 모든 측면을 수동으로 제어할 수 있습니다. 고급 사용 전용입니다.

렌더링 모드

컬 모드 설명
끄기 면 컬링을 사용하지 않도록 설정합니다. 양면 메시가 필요한 경우에만 컬링을 끄기로 설정해야 합니다.
Front 전면 컬링을 사용하도록 설정합니다.
뒤로 (기본값) 후면 컬링을 사용하도록 설정합니다. 렌더링 성능을 향상시키려면 후면 컬링을 가능한 한 자주 사용하도록 설정해야 합니다.

성능

Unity 표준 셰이더를 통해 MRTK 표준 셰이더를 사용할 때의 주요 이점 중 하나는 성능입니다. MRTK 표준 셰이더는 활성화된 기능만 활용하기 위해 확장할 수 있습니다. 그러나 MRTK 표준 셰이더는 Unity 표준 셰이더와 비슷한 미적 결과를 제공하기 위해 작성되었지만 훨씬 저렴한 비용으로 작성되었습니다. 셰이더 성능을 비교하는 간단한 방법 중 하나는 GPU에서 수행해야 하는 작업 수를 사용하는 것입니다. 물론 계산의 크기는 사용 가능한 기능 및 기타 렌더링 구성에 따라 변동될 수 있습니다. 그러나 일반적으로 MRTK 표준 셰이더는 Unity 표준 셰이더보다 훨씬 적은 계산을 수행합니다.

Unity 표준 셰이더 통계 예제

Unity 표준 셰이더 통계

MRTK 표준 셰이더 통계 예제

MRTK 표준 셰이더 통계

참고

이러한 결과는 Unity 검사기에서 셰이더 자산을 선택하고 보고 컴파일 및 코드 표시 단추를 클릭하여 생성할 수 있습니다.

조명

MRTK/표준은 조명에 간단한 근사치를 사용합니다. 이 셰이더는 물리적 정확성 및 에너지 절약을 계산하지 않으므로 빠르고 효율적으로 렌더링됩니다. Blinn-Phong 프레넬 및 이미지 기반 조명과 혼합되어 물리적 기반 조명을 근사하게 하는 기본 조명 기술입니다. 셰이더는 다음과 같은 조명 기술을 지원합니다.

방향성 광원

셰이더가 장면에서 첫 번째 Unity Directional Light의 방향, 색 및 강도를 반영합니다(사용하도록 설정된 경우). 동적 점등, 스폿 조명 또는 기타 Unity 조명은 실시간 조명에서 고려되지 않습니다.

구형 고조파

셰이더는 광원 프로브를 사용하여 활성화된 경우 구형 고조파를 사용하여 장면의 조명을 근사화합니다. 구형 고조파 계산은 계산 비용을 줄이기 위해 꼭짓점당 수행됩니다.

라이트맵

정적 조명의 경우 셰이더는 Unity의 Lightmapping 시스템에서 빌드한 라이트맵을 준수합니다. 렌더러를 라이트맵을 사용하기 위해 정적(또는 라이트맵 정적)으로 표시하기만 하면 됩니다.

가리키기 라이트

근접 조명

경량 스크립트 가능 렌더링 파이프라인 지원

MRTK에는 개발자가 MRTK 셰이더를 사용하여 Unity의 LWRP(Lightweight Scriptable Render Pipeline)를 활용할 수 있도록 하는 업그레이드 경로가 포함되어 있습니다. Unity 2019.1.1f1 및 경량 RP 5.7.2 패키지에서 테스트되었습니다. LWRP 시작에 대한 지침은 이 페이지를 참조하세요.

MRTK 업그레이드를 수행하려면 Mixed Reality 도구 키트 - 유틸리티 ->> 경량 렌더링 파이프라인용 MRTK 표준 셰이더 업그레이드를 선택합니다.

lwrp 업그레이드

업그레이드가 수행되면 MRTK/표준 셰이더가 변경되고 모든 magenta(셰이더 오류) 재질을 수정해야 합니다. 업그레이드가 성공적으로 수행되었는지 확인하려면 경량 렌더링 파이프라인에 사용할 업그레이드된 자산/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader에 대한 콘솔을 검사.

UGUI 지원

MRTK 표준 음영 시스템은 Unity의 기본 제공 UI 시스템에서 작동합니다. Unity UI 구성 요소에서 unity_ObjectToWorld 행렬은 그래픽 구성 요소가 있는 로컬 변환의 변환 매트릭스가 아니라 부모 Canvas의 변환 매트릭스입니다. 많은 MRTK/표준 셰이더 효과를 사용하려면 개체 배율을 알려야 합니다. 이 문제를 해결하기 위해 ScaleMeshEffect.cs는 UI 메시 생성 중에 스케일링 정보를 UV 채널 특성에 저장합니다.

Unity 이미지 구성 요소를 사용하는 경우 Unity UI가 추가 꼭짓점을 생성하지 못하도록 원본 이미지에 "None(Sprite)"을 지정하는 것이 좋습니다.

MRTK 내의 Canvas는 필요한 경우 를 ScaleMeshEffect.cs 추가하라는 메시지를 표시합니다.

메시 크기 조정 효과

텍스처 결합자

픽셀 메탈릭당 Unity Standard 셰이더를 사용하여 패리티를 개선하기 위해 채널 패킹을 통해 평활도, 발광 및 폐색 값을 모두 제어할 수 있습니다. 예:

채널 맵 예제

채널 패킹을 사용하는 경우 4개의 개별 텍스처 대신 하나의 텍스처를 샘플링하고 메모리에 로드하기만 하면 됩니다. Substance 또는 Photoshop과 같은 프로그램에서 텍스처 맵을 작성할 때 다음과 같이 직접 패킹할 수 있습니다.

채널 속성
빨강 메탈릭
녹색 폐색
파랑 발광(회색조)
알파 평활도

또는 MRTK 텍스처 결합자 도구를 사용할 수 있습니다. 도구를 열려면 다음 창을 여는 도구 키트 - 유틸리티 ->> 텍스처 결합자를 Mixed Reality 선택합니다.

텍스처 결합자 예제

Unity 표준 셰이더를 선택하고 "표준 재질에서 자동 채우기"를 클릭하여 이 창을 자동으로 채울 수 있습니다. 또는 빨강, 녹색, 파랑 또는 알파 채널당 텍스처(또는 상수 값)를 수동으로 지정할 수 있습니다. 텍스처 조합은 GPU 가속이며 입력 텍스처가 CPU에 액세스할 필요가 없습니다.

추가 기능 설명서

다음은 MRTK/표준 셰이더에서 사용할 수 있는 몇 가지 기능 세부 정보에 대한 추가 세부 정보입니다.

기본 클리핑

기본 클리핑

메시 윤곽선

많은 메시 윤곽선 기술은 사후 처리 기술을 사용하여 수행됩니다. 사후 처리는 훌륭한 품질 개요를 제공하지만 많은 Mixed Reality 장치에서 엄청나게 비쌀 수 있습니다. 아래MRTK/Examples/Demos/StandardShader/Scenes/OutlineExamples 장면에서 메시 윤곽선의 사용을 보여 주는 장면을 찾을 수 있습니다.

메시 윤곽선

MeshOutline.csMeshOutlineHierarchy.cs 는 메시 렌더러 주위에 윤곽선을 렌더링하는 데 사용할 수 있습니다. 이 구성 요소를 사용하도록 설정하면 설명되는 개체의 추가 렌더링 단계가 도입되지만 모바일 Mixed Reality 디바이스에서 성능적으로 실행되도록 설계되었으며 사후 프로세스를 활용하지 않습니다. 이 효과는 방수가 아니거나 양면이어야 하는 개체에서 잘 작동하지 않으며 겹치는 개체에서 깊이 정렬 문제가 발생할 수 있다는 제한 사항이 있습니다.

개요 동작은 MRTK/표준 셰이더와 함께 사용하도록 설계되었습니다. 윤곽선 재질은 일반적으로 조명이 켜지지 않은 단색이지만 다양한 효과를 발휘하도록 구성할 수 있습니다. 개요 자료의 기본 구성은 다음과 같습니다.

메시 윤곽선 재질
  1. 깊이 쓰기 - 윤곽선 재질이 다른 개체의 렌더링을 방해하지 않도록 하려면 사용하지 않도록 설정해야 합니다.
  2. 꼭짓점 돌출 - 윤곽선을 렌더링하려면 사용하도록 설정해야 합니다.
  3. 부드러운 법선 사용 - 일부 메시의 경우 이 설정은 선택 사항입니다. 돌출은 꼭짓점 법선을 따라 꼭짓점을 이동하여 발생하며, 기본 법선을 따라 돌출되는 일부 메시에서는 윤곽선에서 불연속성이 발생합니다. 이러한 불연속성을 해결하려면 이 상자를 검사 에서 생성되는 또 다른 부드러운 표준 집합을 사용할 수 있습니다.MeshSmoother.cs

MeshSmoother.cs는 메시에서 부드러운 법선을 자동으로 생성하는 데 사용할 수 있는 구성 요소입니다. 이 메서드는 공간에서 동일한 위치를 공유하는 메시의 꼭짓점을 그룹화한 다음, 해당 꼭짓점의 평균을 계산합니다. 이 프로세스는 기본 메시의 복사본을 만들며 필요한 경우에만 사용해야 합니다.

부드러운 보통 윤곽선
  1. 을 통해 MeshSmoother.cs생성된 부드러운 노멀
  2. 사용되는 기본 표준은 큐브 모서리 주변의 아티팩트입니다.

스텐실 테스트

다양한 효과를 얻기 위해 구성 가능한 스텐실 테스트 지원을 기본으로 제공합니다. 예를 들면 포털이 있습니다.

스텐실 테스트

인스턴스화된 색 지원

수천 개의 GPU 인스턴스 메시에 고유한 재질 속성을 제공하는 인스턴스화된 색 지원:

instanced 속성

Triplanar 매핑

삼각 매핑은 프로그래밍 방식으로 메시의 질감을 만드는 기술입니다. 지형, UV가 없는 메시 또는 셰이프 래프 해제에 자주 사용됩니다. 이 구현은 세계 또는 로컬 공간 프로젝션, 혼합 평활도 지정 및 표준 맵을 지원합니다. 사용된 각 텍스처에는 3개의 텍스처 샘플이 필요하므로 성능이 중요한 상황에서는 드물게 사용합니다.

triplanar

꼭짓점 돌출

세계 공간의 꼭짓점 돌출. 돌출된 경계 볼륨 또는 인/아웃 메시의 전환을 시각화하는 데 유용합니다.

일반 지도 배율 1

기타

albedo 최적화를 제어하는 확인란입니다. albedo 텍스처가 지정되지 않은 경우 최적화 albedo 작업을 사용하지 않도록 설정합니다. 원격 텍스처 로드를 제어하는 데 유용합니다.

이 상자를 검사.

albedo assignment

픽셀 클리핑 텍스처당, 로컬 에지 기반 앤티앨리어싱 및 일반 맵 크기 조정이 지원됩니다.

일반 맵 눈금 2

추가 정보