다음을 통해 공유


색 재질

색 재질은 Azure Remote Rendering에서 지원되는 재질 유형 중 하나입니다. 어떤 종류의 조명도 받지 않고 항상 전체 밝기로 나타나는 메시에 사용됩니다. 자동차 대시보드, 전구 등의 '반짝이는' 재질 또는 사진 측량을 통해 얻은 모델과 같은 고정 조명을 이미 포함하는 데이터가 여기에 해당될 수 있습니다.

색 재질은 더 간단한 음영 모델 때문에 PBR 재질보다 효율적으로 렌더링할 수 있습니다. 또한 다양한 투명도 모드도 지원합니다.

색 재질 속성

다음 재질 속성은 예를 들어, 각각 C# ColorMaterial 클래스 또는 C++ ColorMaterial 클래스에서 런타임 API에 노출됩니다.

  • ColorFlags: 이 비트 마스크에 기타 기능 플래그를 결합하여 다음 기능을 사용하도록 설정할 수 있습니다.

    • UseVertexColor: 메시에 vertex 색이 포함되고 이 옵션이 설정된 경우 메시의 vertex 색이 AlbedoColorAlbedoMap에 곱해집니다. 기본적으로 UseVertexColor는 사용되지 않습니다.
    • DoubleSided: 이중 sidedness가 true로 설정된 경우 카메라가 후면을 바라보는 경우에도 이 재질을 갖는 삼각형이 렌더링됩니다. 기본적으로 이 옵션은 사용되지 않습니다. Single-sided rendering을 참조하세요.
    • AlphaClipped: AlphaClipThreshold 값 미만인 알파 값을 기준으로 픽셀 단위로 하드 컷아웃을 사용하도록 설정합니다(아래 참조). 이는 불투명한 재질에도 적용됩니다.
    • TransparencyWritesDepth: TransparencyWritesDepth 플래그가 재질에 설정되고 재질이 투명한 경우 이 재질을 사용하는 개체도 최종 깊이 버퍼에 기여합니다. 다음 섹션에서 색 재질 속성 ColorTransparencyMode을(를) 참조하세요. 사용 사례에서 완전히 투명한 장면에 보다 타당한 후기 단계 재투영이 필요한 경우 이 기능을 사용하는 것이 좋습니다. 불투명/투명 혼합 장면의 경우에는 이 설정으로 인해 타당하지 않은 재투영 동작 또는 재투영 아티팩트가 발생할 수 있습니다. 그러므로 일반 사용 사례에서 기본 및 권장 설정은 이 플래그를 사용하지 않도록 설정하는 것입니다. 작성된 깊이 값은 카메라에 가장 가까운 개체의 픽셀별 깊이 계층에서 가져옵니다.
    • FresnelEffect: 이 재질 플래그를 사용하면 각 재질에서 가산적 프레스넬효과를 사용할 수 있습니다. 효과의 모양은 아래에 설명된 다른 프레넬 매개 변수 FresnelEffectColorFresnelEffectExponent에 의해 제어됩니다.
  • 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. 이를 '평면 텍스처 매핑'이라고 합니다.

  • TexCoordScaleTexCoordOffset: 원본 메시의 텍스처 좌표의 경우 추가 선형 변환을 적용할 수 있습니다. 배율을 UV 텍스처 좌표로 곱하고 오프셋이 추가됩니다. 텍스처를 늘이거나 이동하는 데 사용할 수 있습니다. 기본 눈금은 (1, 1)이고 오프셋은 (0, 0)입니다.

  • TexCoordPlaneUTexCoordPlaneV: 평면 매핑 모드의 경우 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: 이 모드는 가장 간단하고 가장 효율적인 투명도 모드입니다. 재질의 기여가 렌더링된 이미지에 가산됩니다. 이 모드는 중요한 개체를 강조 표시하는 데 사용되는 표식과 같이 빛나는(하지만 여전히 투명한) 개체를 시뮬레이트하는 데 사용할 수 있습니다.

참고 항목

AlbedoColorFresnelEffectColorPBR 재질과 동일한 수락 값 범위를 가지지만 해당 채널은 색 재질의 경우 [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 설명서

다음 단계