Share via


SampleGrad(DirectX HLSL 텍스처 개체)

샘플 위치가 계산되는 방식에 영향을 주는 그라데이션을 사용하여 텍스처를 샘플링합니다.

<Template Type> Object.SampleGrad( sampler_state S, float Location, float DDX, float DDY [, int Offset] );

매개 변수

항목 설명
Object
모든 텍스처-개체 형식(Texture2DMS 및 Texture2DMSArray 제외)입니다.
S
[in] 샘플러 상태입니다. 상태 할당을 포함하는 효과 파일에 선언된 개체입니다.
Location
[in] 텍스처 좌표입니다. 인수 형식은 텍스처-개체 형식에 따라 달라집니다.
텍스처-개체 형식 매개 변수 유형
Texture1D float
Texture1DArray, Texture2D float2
Texture2DArray, Texture3D, TextureCube float3
TextureCubeArray float4
Texture2DMS, Texture2DMSArray 지원되지 않음

DDX

[in] x 방향의 표면 기하 도형 변동률입니다. 인수 형식은 텍스처-개체 형식에 따라 달라집니다.

텍스처-개체 형식 매개 변수 유형
Texture1D, Texture1DArray float
Texture2D, Texture2DArray float2
Texture3D, TextureCube, TextureCubeArray float3
Texture2DMS, Texture2DMSArray 지원되지 않음

DDY

[in] y 방향의 표면 기하 도형 변동률입니다. 인수 형식은 텍스처-개체 형식에 따라 달라집니다.

텍스처-개체 형식 매개 변수 유형
Texture1D, Texture1DArray float
Texture2D, Texture2DArray float2
Texture3D, TextureCube, TextureCubeArray float3
Texture2DMS, Texture2DMSArray 지원되지 않음

Offset

[in] 텍스처-개체 형식에 사용할 수 있는 선택적 텍스처 좌표 오프셋입니다. 오프셋은 샘플링하기 전에 위치에 적용됩니다. 정수 miplevel에서만 오프셋을 사용합니다. 그러지 않으면 하드웨어로 잘 변환되지 않는 결과를 얻을 수 있습니다. 인수 형식은 텍스처-개체 형식에 따라 달라집니다. 자세한 내용은 정수 오프셋 적용을 참조하세요.

텍스처-개체 형식 매개 변수 유형
Texture1D, Texture1DArray int
Texture2D, Texture2DArray int2
Texture3D int3
TextureCube, TextureCubeArray 지원되지 않음
Texture2DMS, Texture2DMSArray 지원되지 않음

반환 값

단일 또는 다중 구성 요소 벡터일 수 있는 텍스처의 템플릿 형식입니다. 형식은 텍스처의 DXGI_FORMAT을 기반으로 합니다.

최소 셰이더 모델

이 함수는 다음 셰이더 모델에서 지원됩니다.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x x x x
  1. TextureCubeArray는 셰이더 모델 4.1 이상에서 사용할 수 있습니다.
  2. 셰이더 모델 4.1은 Direct3D 10.1 이상에서 사용할 수 있습니다.

이 부분 코드 예제는 MotionBlur10 샘플의 MotionBlur.fx 파일에서 가져옵니다.

// Object Declarations
Texture2D g_txDiffuse;

SamplerState g_samLinear
{
    Filter = ANISOTROPIC;
    MaxAnisotropy = 8;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct VSSceneOut
{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR0;
    float2 Tex : TEXCOORD;
    float2 Aniso : ANISOTROPY;
};

float4 PSSceneMain( VSSceneOut Input ) : SV_TARGET
{
    float2 ddx = Input.Aniso;
    float2 ddy = Input.Aniso;
    
    // Shader body calling the intrinsic function
    float4 diff = g_txDiffuse.SampleGrad( g_samLinear, Input.Tex, ddx, ddy);
    
    ...
}

텍스처 개체