다중 요소 텍스처(Direct3D 9)

기존 텍스처는 단일 요소 텍스처로 간주됩니다. 다중 요소 텍스처를 사용하면 애플리케이션이 픽셀 셰이더에서 텍스처의 여러 요소에 동시에 쓸 수 있습니다. 다음 렌더링 단계의 결과는 애플리케이션이 하나 이상의 요소를 단일 요소 텍스처로 사용할 수 있다는 것입니다. 즉, 픽셀 셰이더에 대한 입력으로 사용할 수 있습니다. 이러한 추가 요소는 나중에 애플리케이션에서 전달하는 데 사용되는 중간 결과를 위한 임시 저장소로 간주할 수 있습니다.

이 기능을 노출하는 1세대 하드웨어에는 다음과 같은 제한 사항이 있습니다.

  • 모든 다중 요소 텍스처 표면이 자동으로 할당됩니다. 이 제한 사항은 여러 RGBA 채널이 인터리빙된 새로운 유형의 표면 형식으로 처리하여 해결됩니다.
  • 여러 요소 텍스처의 모든 요소는 동일한 비트 깊이를 가질 수 있습니다. 이 제한 사항은 새 표면 형식의 이름으로 표현됩니다.
  • 다중 요소 텍스처는 기본/표시 가능일 수 없습니다. 즉, 화면 외부에만 있어야 합니다. 이 제한 사항은 표면 형식 열거형으로 표현됩니다.
  • 디더링, 알파 테스트, 안개, 혼합, 래스터 작업 또는 마스킹은 허용되지 않습니다. z-test 및 스텐실 테스트를 제외하고는 픽셀 후 셰이더 처리가 수행되지 않습니다.
  • 텍스처는 mipmap일 수 없습니다. 밉 체인 만들기가 실패합니다.
  • 동일한 요소는 렌더링 대상인 동시에 텍스처로 설정할 수 없습니다. 그러나 동일한 다중 요소 텍스처 표면의 다른 요소는 동시에 텍스처 및 렌더링 대상이 될 수 있습니다.
  • 앤티앨리어싱은 지원되지 않습니다.
  • 텍스처로 사용되는 경우 여러 요소 텍스처 표면을 필터링할 수 없습니다. 이 제한 사항은 CheckDeviceFormat을 사용하여 확인할 수 있습니다.
  • 여러 요소 텍스처 표면을 잠글 수 없습니다.
  • 일반 텍스처와 마찬가지로 여러 단계에 각각을 할당하여 둘 이상의 다중 요소 텍스처 표면을 동시에 사용할 수 있습니다.
  • 다중 요소 텍스처 표면은 다른 텍스처 형식과 마찬가지로 읽기 작업에서 감마를 2.2에서 1.0으로 변환하도록 지원합니다.
  • 일부 구현은 출력 쓰기 마스크(D3DRS_COLORWRITEENABLE)를 적용하지 않습니다. 독립적인 색 쓰기 마스크가 있을 수 있는 마스크입니다. 이는 새 기능 비트를 사용하여 표현됩니다. 사용 가능한 독립 색 쓰기 마스크의 수는 디바이스에서 사용할 수 있는 최대 요소 수와 같습니다.
  • 지우 기는 렌더링 대상으로 설정된 다중 요소 텍스처의 모든 요소를 지웁니다.

다중 요소 텍스처의 사용은 다음 단계를 따릅니다.

  1. 애플리케이션은 다중 요소 텍스처 형식의 가용성을 확인하여 이 기능에 대한 지원을 검색합니다.
  2. 애플리케이션은 CreateTexture를 호출하여 이러한 표면을 만듭니다.
  3. 애플리케이션은 SetRenderTarget 호출을 사용하여 표면을 렌더링 대상으로 설정합니다. 픽셀 셰이더는 mov - ps 명령을 사용하여 표면에 출력을 제공합니다.
  4. SetTexture 는 다중 요소 텍스처 표면을 특정 단계로 설정하기 위해 호출됩니다. 다른 텍스처와 마찬가지로 동일한 표면을 한 번에 여러 단계로 설정할 수 있습니다.
  5. SetSamplerState 는 D3DSAMP_ELEMENTINDEX 샘플러가 샘플링하는 다중 요소 텍스처의 적절한 요소 번호로 설정하기 위해 호출됩니다. 이 상태의 기본값은 0입니다. 즉, 다중 요소가 아닌 텍스처가 작동합니다. 이 상태를 부적절한 숫자로 설정하면 정의되지 않은 동작이 발생합니다. 예를 들어 다중 요소 텍스처가 두 개의 요소 너비에 불과하지만 샘플러가 네 번째 요소에서 샘플링하도록 요청되는 경우입니다.

API 지원

다음은 여러 요소 텍스처를 지원하는 API 요소에 대한 요약입니다.

  • D3DFMT_MULTI2_ARGB8 표면 형식은 형식의 인터리브 특성을 표현합니다.

  • D3DSAMP_ELEMENTINDEX 샘플러 상태는 사용할 요소 인덱스입니다.

  • 다음 렌더링 상태는 다중 요소 텍스처를 지원합니다.

    • D3DRS_COLORWRITEENABLE1
    • D3DRS_COLORWRITEENABLE2
    • D3DRS_COLORWRITEENABLE3

    D3DRS_COLORWRITEENABLE 렌더링 대상(또는 요소) 0에 적용됩니다.

  • D3DPMISCCAPS_INDEPENDENTWRITEMASKS 플래그는 디바이스가 여러 요소 텍스처 또는 여러 렌더링 대상에 대해 독립적인 쓰기 마스크를 지원한다는 것을 나타냅니다.

픽셀 파이프라인