RWTexture2D

읽기/쓰기 리소스입니다.

메서드 설명
GetDimensions 리소스 차원을 가져옵니다.
로드 텍스처 데이터를 읽습니다.
Operator[] 리소스 변수를 가져옵니다.

 

RWTexture2D 개체에 globallycoherent 스토리지 클래스를 접두사로 붙일 수 있습니다. 이 스토리지 클래스는 다른 그룹이 쓰기를 볼 수 있도록 전체 GPU에서 데이터를 플러시하기 위해 메모리 장벽 및 동기화를 유발합니다. 이 지정자가 없으면 메모리 배리어 또는 동기화는 현재 그룹 내에서 UAV(순서가 지정되지 않은 액세스 뷰)만 플러시합니다.

RWTexture2D 개체에는 개체에 대한 선언문에 요소 형식이 필요합니다. 예를 들어 다음 선언은 올바르지 않습니다.

// The following declaration is incorrectly coded.
RWTexture2D myTexture;

다음 선언은 올바릅니다.

// The following declaration is correctly coded.
RWTexture2D<float> tex;

RWTexture2D 개체는 UAV 형식 개체이므로 그 속성은 Texture2D 개체와 같은 SRV(셰이더 리소스 뷰) 형식 개체와 다릅니다. 예를 들어, RWTexture2D 개체에서는 읽고 쓸 수 있지만 Texture2D 개체에서는 읽기만 가능합니다.

RWTexture2D 개체는 Sample과 같은 Texture2D 개체의 메서드를 사용할 수 없습니다. 그러나 동일한 리소스에 대해 여러 보기 형식을 만들 수 있으므로 여러 텍스처 형식을 여러 셰이더에서 단일 텍스처로 선언할 수 있습니다. 예를 들어 다음 코드 조각에서는 컴퓨팅 셰이더에서 RWTexture2D 개체를 tex 로 선언하고 사용한 다음, Texture2D 개체를 픽셀 셰이더에서 tex 로 선언하고 사용하는 방법을 보여 줍니다.

참고

런타임은 동일한 리소스에 대해 여러 보기 형식을 만들 때 특정 사용 패턴을 적용합니다. 예를 들어, 런타임에서는 리소스에 대한 UAV 매핑과 동일한 리소스에 대한 SRV 매핑을 동시에 활성화할 수 없습니다.

 

다음은 컴퓨팅 셰이더에 대한 코드입니다.

RWTexture2D<float> tex;
[numthreads(groupDim_x, groupDim_y, 1)]
void main(
    uint3 groupId : SV_GroupID,
    uint3 groupThreadId : SV_GroupThreadID,
    uint3 dispatchThreadId : SV_DispatchThreadID,
    uint groupIndex : SV_GroupIndex)
{
    tex [dispatchThreadId.xy] = <something>;
}

다음은 픽셀 셰이더에 대한 코드입니다.

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
    float2 tex : TEXTURE;
};

Texture2D<float> tex;
float4 main(PixelShaderInput input) : SV_TARGET
{
    return tex.Sample(TextureSampler, input.tex);
}

최소 셰이더 모델

이 개체는 다음 셰이더 모델에서 지원됩니다.

셰이더 모델 지원 여부
셰이더 모델 5 이상의 셰이더 모델

 

이 개체는 다음 형식의 셰이더에 대해 지원됩니다.

꼭짓점 Hull 도메인 기하 도형 픽셀 컴퓨팅
x x

 

추가 정보

셰이더 모델 5 개체