[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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바