색 재질
색 재질은 Azure Remote Rendering에서 지원되는 재질 유형 중 하나입니다. 어떤 종류의 조명도 받지 않고 항상 전체 밝기로 나타나는 메시에 사용됩니다. 자동차 대시보드, 전구 등의 '반짝이는' 재질 또는 사진 측량을 통해 얻은 모델과 같은 고정 조명을 이미 포함하는 데이터가 여기에 해당될 수 있습니다.
색 재질은 더 간단한 음영 모델 때문에 PBR 재질보다 효율적으로 렌더링할 수 있습니다. 또한 다양한 투명도 모드도 지원합니다.
색 재질 속성
다음 재질 속성은 예를 들어, 각각 C# ColorMaterial 클래스 또는 C++ ColorMaterial 클래스에서 런타임 API에 노출됩니다.
ColorFlags
: 이 비트 마스크에 기타 기능 플래그를 결합하여 다음 기능을 사용하도록 설정할 수 있습니다.UseVertexColor
: 메시에 vertex 색이 포함되고 이 옵션이 설정된 경우 메시의 vertex 색이AlbedoColor
및AlbedoMap
에 곱해집니다. 기본적으로UseVertexColor
는 사용되지 않습니다.DoubleSided
: 이중 sidedness가 true로 설정된 경우 카메라가 후면을 바라보는 경우에도 이 재질을 갖는 삼각형이 렌더링됩니다. 기본적으로 이 옵션은 사용되지 않습니다. Single-sided rendering을 참조하세요.AlphaClipped
:AlphaClipThreshold
값 미만인 알파 값을 기준으로 픽셀 단위로 하드 컷아웃을 사용하도록 설정합니다(아래 참조). 이는 불투명한 재질에도 적용됩니다.TransparencyWritesDepth
:TransparencyWritesDepth
플래그가 재질에 설정되고 재질이 투명한 경우 이 재질을 사용하는 개체도 최종 깊이 버퍼에 기여합니다. 다음 섹션에서 색 재질 속성ColorTransparencyMode
을(를) 참조하세요. 사용 사례에서 완전히 투명한 장면에 보다 타당한 후기 단계 재투영이 필요한 경우 이 기능을 사용하는 것이 좋습니다. 불투명/투명 혼합 장면의 경우에는 이 설정으로 인해 타당하지 않은 재투영 동작 또는 재투영 아티팩트가 발생할 수 있습니다. 그러므로 일반 사용 사례에서 기본 및 권장 설정은 이 플래그를 사용하지 않도록 설정하는 것입니다. 작성된 깊이 값은 카메라에 가장 가까운 개체의 픽셀별 깊이 계층에서 가져옵니다.FresnelEffect
: 이 재질 플래그를 사용하면 각 재질에서 가산적 프레스넬효과를 사용할 수 있습니다. 효과의 모양은 아래에 설명된 다른 프레넬 매개 변수FresnelEffectColor
및FresnelEffectExponent
에 의해 제어됩니다.
AlbedoColor
: 이 색은AlbedoMap
또는 vertex 색과 같은 다른 색에 곱해집니다. 재질에서 투명도를 사용하는 경우 알파 채널을 사용하여 불투명도가 조정됩니다.1
은 완전히 불투명한 것을 의미하고0
은 완전히 투명한 것을 의미합니다. 기본 알베도 색은 불투명한 흰색입니다.참고 항목
색 재질은 환경을 반사하지 않으므로 완전히 투명한 색 재질은 보이지 않게 됩니다. 이는 PBR 재질에서 다릅니다.
AlbedoMap
: 픽셀별 albedo 값의 2D 텍스처입니다.AlphaClipThreshold
:ColorFlags
속성에AlphaClipped
플래그가 설정되면 알베도 알파 값이AlphaClipThreshold
값보다 작은 모든 픽셀이 그려지지 않습니다. 알파 클리핑은 투명도를 사용하도록 설정하지 않아도 사용할 수 있으며 렌더링 속도가 훨씬 빠릅니다. 그러나 알파 클리핑된 재질은 완전히 불투명한 재질보다 렌더링 속도가 느립니다. 기본적으로 알파 클리핑은 사용되지 않습니다.TexCoordMode
: albedo 텍스처에 대한 텍스처 좌표를 생성하는 데 사용되는 모드를 정의합니다. 이 재질에서 텍스처를 사용하지 않는 경우 이 모드는 무시됩니다. 기본적으로 텍스처 좌표는 메시의 입력 꼭짓점 스트림(모드TextureCoordinateGenerationMode.SourceUv0
또는)에서 가져온 다음 변환됩니다TexCoordScale
TexCoordOffset
.TextureCoordinateGenerationMode.SourceUv1
코드를 통해 재질을 설정할 때 이 모드를 구성 가능한 3D 평면TexCoordPlaneU
2개까지의 꼭짓점 거리로 좌표를 설정TextureCoordinateGenerationMode.PlanarObjectSpace
하거나TextureCoordinateGenerationMode.PlanarWorldSpace
생성할 수도 있습니다TexCoordPlaneV
. 이를 '평면 텍스처 매핑'이라고 합니다.TexCoordScale
및TexCoordOffset
: 원본 메시의 텍스처 좌표의 경우 추가 선형 변환을 적용할 수 있습니다. 배율을 UV 텍스처 좌표로 곱하고 오프셋이 추가됩니다. 텍스처를 늘이거나 이동하는 데 사용할 수 있습니다. 기본 눈금은 (1, 1)이고 오프셋은 (0, 0)입니다.TexCoordPlaneU
및TexCoordPlaneV
: 평면 매핑 모드의 경우 U 좌표 및 v 좌표에 대한 질감 평면을 각각 정의합니다. 평면은 표준 표준 형식(A,B,C,D)으로 정의되므로 좌표는 t = Ax + By + C*z + D로 계산됩니다. 여기서 (x,y,z)는 월드 또는 개체 공간에서 꼭짓점 위치입니다.FresnelEffectColor
: 이 재질에 사용되는 프레스넬 색입니다. 이 재질에 프레스넬 효과 플래그가 설정된 경우에만 중요합니다(위 참조). 이 속성은 프레스넬 빛의 기본 색을 제어합니다(전체 설명은 프레스넬 효과 참조). 현재는 RGB 채널 값만 중요하며 알파 값은 무시됩니다.FresnelEffectExponent
: 이 재질에 사용되는 프레스넬 지수입니다. 이 재질에 프레스넬 효과 플래그가 설정된 경우에만 중요합니다(위 참조). 이 속성은 프레스넬 빛의 분산을 제어합니다. 최솟값 0.01에서는 빛이 전체 개체로 분산됩니다. 최댓값 10.0에서는 빛이 눈에 보이는 가장 빛나는 가장자리로만 제한됩니다.VertexMix
: 이 값(0
~1
)은 메시의 vertex 색이 최종 색에 기여하는 강도를 지정합니다. 기본값 1에서 vertex 색은 albedo 색에 완전히 곱해집니다. 값 0에서는 vertex 색이 완전히 무시됩니다.ColorTransparencyMode
: PBR 재질과 반대로 색 재질은 여러 투명도 모드에서 구분됩니다.Opaque
: 기본 모드에서는 투명도를 사용하지 않습니다. 그러나 알파 클리핑은 여전히 가능하며, 충분한 경우 우선되어야 합니다.AlphaBlended
: 이 모드는 PBR 재질의 투명도 모드와 비슷합니다. 유리와 같이 비치는 재질에 사용해야 합니다.Additive
: 이 모드는 가장 간단하고 가장 효율적인 투명도 모드입니다. 재질의 기여가 렌더링된 이미지에 가산됩니다. 이 모드는 중요한 개체를 강조 표시하는 데 사용되는 표식과 같이 빛나는(하지만 여전히 투명한) 개체를 시뮬레이트하는 데 사용할 수 있습니다.
참고 항목
AlbedoColor
및 FresnelEffectColor
는 PBR 재질과 동일한 수락 값 범위를 가지지만 해당 채널은 색 재질의 경우 [0;1]에 효과적으로 고정됩니다.
변환 중 색 재질 재정의
색 재질 속성의 하위 집합은 재질 재정의 파일을 통해 모델을 변환하는 동안 재정의할 수 있습니다. 다음 표는 위에서 설명한 런타임 속성과 재정의 파일의 해당 속성 이름 간의 매핑을 보여 줍니다.
재질 속성 이름 | 재정의 파일의 속성 이름 |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
API 설명서
- C# ColorMaterial 클래스
- C# RenderingConnection.CreateMaterial()
- C++ ColorMaterial 클래스
- C++ RenderingConnection::CreateMaterial()