[Shader / HLSL] HLSL Semantic

2022. 2. 2. 03:29·Shader

HLSL Semantic

- Semantic은 매개 변수의 의도된 사용에 대한 정보를 전달하는 Shader Input, Output에 연결된 문자열이다.

- Semantic은 Shader 단계 간에 전달되는 모든 변수에 필요하다.

 

정리하게된 이유

- Shader에서 Output으로 보낸 Struct의 Semantic과 해당 Struct를 Input으로 받아 사용하는 Shader의 Semantic을 일치시켜줘야 하는 부분을 동작 원리를 모르고 사용하고 있다는 느낌을 받아서 다시 한번 개념을 잡는 목적으로 정리를 하기로 생각하였다.

- 찾다보니 생각보다 많은 Semantic들이 있다는 것을 알고 해당 Semantic에 대한 정리를 해보려 한다.

 

HLSL Semantic 종류

 

Vertex Shader Input Semantics

Input Description Type
BINORMAL[n] 바이노말 (Binormal) float4
BLENDINDICES[n] 혼합 인덱스 (Blend Indices) uint
BLENDWEIGHT[n] 혼합 가중치 (Blend Weight) float
COLOR[n] 확산 및 반사 색상 (Diffuse, Specular Color) float4
NORMAL[n] 법선 벡터 (Normal Vector) float4
POSITION[n] 객체 공간의 정점 위치 (Object Space Vertex Position) float4
POSITIONT 변환된 정점 위치 (Transformed Vertex Position) float4
PSIZE[n] 포인트 크기 (Point Size) float
TANGENT[n] 접선 (Tangent) float4
TEXCOORD[n] 텍스처 좌표 (Texture Coordinates) float4

 

Vertex Shader Output Semantics

Input Description Type
COLOR[n]  확산 및 반사 색상 (Diffuse, Specular Color) float4
FOG 정점 안개 (Vertex Fog) float
POSITION[n]  동차 공간에서 정점의 위치 (Homegenous Space Vertex Position) float4
PSIZE[n] 포인트 크기 (Point Size) float
TESSFACTOR[n] 테셀레이션 요소 (Tessellation Factor) float
TEXCOORD[n] 텍스처 좌표 (Texture Coordinates) float4

 

Pixel Shader Input Semantics

Input Description Type
COLOR[n]  확산 및 반사 색상 (Diffuse, Specular Color) float4
TEXCOORD[n] 텍스처 좌표 (Texture Coordinates) float4
VFACE 후면을 향한 부동 소수점 스칼라 값 (Floating-point scalar that indicates a back-facing primitive) float
VPOS 화면 공간의 픽셀 위치 (The pixel location [x, y] in screen space) float2

 

Pixel Shader Output Semantics

Input Description Type
COLOR[n]  출력 색상 (Output color) float4
DEPTH[n]  출력 깊이 (Output depth) float

 

Rasterizer Stage System Value Semantics

System-Value Semantic Description Type
SV_ClipDistance[n] - Clip Distance Data
- SV_ClipDistance 값은 각각 평면까지의 float32 부호 있는 거리로 가정
- Vertex Shader를 제외하고 모든 Shader 읽기, 쓰기 가능
float
SV_CullDistance[n] - Cull Distance Data
- SV_CullDistance 값은 각각 평면까지의 float32 부호 있는 거리로 간주
- Vertex Shader를 제외하고 모든 Shader 읽기, 쓰기 가능
float
SV_Coverage - Pixel Shader의 Input, Output 지정 가능한 마스크 uint
SV_Depth - Depth Buffer Data
- Pixel Shader로 작성 가능
float
SV_DepthGreaterEqual - Rasterizer에 의해 결정된 값보다 크거나 같은 경우 깊이 출력
- Early Z를 비활성화하지 않고 깊이 조정을 활성화
float
SV_DepthLessEqual - Rasterizer에 의해 결정된 값보다 작거나 같은 경우 깊이 출력
- Early Z를 비활성화하지 않고 깊이 조정을 활성화
float
SV_DispatchThreadID - 그룹별 Dispatch 호출 내 Global Thread Offset 설정
- Compute Shader Input
- 읽기 전용
uint3
SV_DomainLocation - 작업중인 현재 Domain Point의 Hull 위치 정의
- Domain Shader Input
- 읽기 전용
float2, float3
SV_GroupID - Dispatch 호출의 크기당 Dispatch 호출 내에서의 Group Offset 정의
- Compute Shader Input
- 읽기 전용
uint3
SV_GroupIndex - 주어진 그룹 내에서 주어진 Thread에 대한 병합된 인덱스 제공
- Compute Shader Input
- 읽기 전용
uint
SV_GroupThreadID - 그룹 크기별로 그룹 내 Thread Offset 정의
- Compute Shader Input
- 읽기 전용
uint3
SV_GroupInstanceID - Geometry Shader의 Instance 정의
- 동일한 Geometry Primitive에서 Geometry Shader 최대 32번 호출 가능
- Geometry Shader Input
uint
SV_InnerCoverage - Pixel이 완전이 덮여 있는지 여부에 따른 Rasterization 정보 나타냄
- Pixel Shader 읽기, 쓰기 가능
void
SV_InsideTessFactor - Patch Surface 내의 Tessellation 양을 정의
- Hull Shader 쓰기 가능
- Domain Shader 읽기 가능
float, float2
SV_InstanceID - Runtime에 자동으로 생성된 Instance 별 식별자
- 모든 Shader에서 사용 가능
void
SV_IsFrontFace - 삼각형이 정면을 향하는지 여부를 지정
- Geometry Shader 쓰기 가능
- Pixel Shader 읽기 가능
bool
SV_OutputControlPointID - Hull Shader의 기본 진입점 호출에 의해 작동되는 제어점 ID의 인덱스 정의
- Hull Shader 읽기 가능
uint
SV_Position - Pixel Position Data
- 모든 Shader 사용 가능
float4
SV_PrimitiveID - Runtime에 자동으로 생성된 기본 단위 식별자
- Geometry, Pixel Shader 쓰기 가능
- Pixel, Hull, Domain Shader 읽기 가능
uint
SV_RenderTargetArrayIndex - Geometry Shader Output
- Pixel Shader 해당 RenderTarget Array Index
- RenderTarget이 Array Resource일 경우에만 유효
- Geometry Shader 쓰기 가능
- Pixel Shaer 읽기 가능
uint
SV_SampleIndex - Sample Frequency Index Data
- Pixel Shader 읽기, 쓰기 가능
uint
SV_StencilRef - 현재 Pixel Shader Stencil 참조 값
- Pixel Shader 쓰기 가능
uint
SV_Target[n] - RenderTarget에 저장될 출력 값
- Index는 8개의 Binding된 RenderTarget 중 사용할 대상을 나타냄
- 모든 Shader에서 사용 가능
float2, float3, float4
SV_TessFactor - Patch의 각 가장자리에서 Tessellation 양을 정의
- Hull Shader 쓰기 가능
- Domain Shader 읽기 가능
float2, float3, float4
SV_VertexID - Runtime에 생성되는 Vertex별 식별자
- Vertex Shader Input
uint
SV_ViewportArrayIndex - 현재 작성 중인 Primitive에 사용할 ViewPort 나타냄.
- Geometry Shader Output
- Pixel Shader 읽기 가능
uint
SV_ShadingRate - Shading Rate Values을 통해 Variable Shading Rate Tier 2 이상 장치에 대한 하나의 Pixel Shader 호출로 작성된 Pixel 수를 정의
- Pixel Shader 읽기 가능
- Vertex, Geometry Shader 쓰기 가능
uint

 

MSDL Semantic 관련 자료

 

Semantics - Win32 apps

A semantic is a string attached to a shader input or output that conveys information about the intended use of a parameter.

docs.microsoft.com

 

저작자표시 (새창열림)

'Shader' 카테고리의 다른 글

[Shader / HLSL] Shader Reflection & Define Macro Resource Hash Table 을 이용한 Resource 동기화  (0) 2022.01.17
[Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (3)  (0) 2021.12.19
[Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (2)  (0) 2021.12.19
[Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (1)  (0) 2021.12.19
[Shader / HLSL] RunTime Compile Shader / Shader Macro  (0) 2021.12.19
'Shader' 카테고리의 다른 글
  • [Shader / HLSL] Shader Reflection & Define Macro Resource Hash Table 을 이용한 Resource 동기화
  • [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (3)
  • [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (2)
  • [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (1)
KyuHwang
KyuHwang
  • KyuHwang
    DirectX Engine
    KyuHwang
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • C++ (4)
      • CS (0)
      • Graphics (32)
      • DLL (2)
      • Shader (7)
      • Project (4)
      • ETC (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • YouTube
  • 공지사항

  • 인기 글

  • 태그

    DLL Interface
    nvtt
    Define Macro
    Shader Reflection
    Explicit Linking
    Win API
    Hash Code
    animation constraint
    Implicit Linking
    std::enable_if
    DirectX 2D
    rigging chain
    Return Type Operator
    Directx11
    dll
    Shader Macro
    hlsl
    shader
    Shader Resource 관리
    Order Independent Transparency
    std::is_base_of
    texture block compression
    animation retargeting
    C ++
    Alpha Blending
    Define Function
    mobile format
    bc format
    Project
    RunTime Compile Shader
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
KyuHwang
[Shader / HLSL] HLSL Semantic
상단으로

티스토리툴바