카테고리 없음

HLSL Shader 변수 및 데이터 형식

zelkova 2021. 2. 10. 10:08

<목차로 돌아가기>

 

 

변수

변수는 '변하는 수'라는 의미로, 사실상 이 개념은 데이터를 담아놓는 공간을 의미합니다.

변수가 왜 필요한지 아래의 예시를 들어서 설명해보자면..

 

컴퓨터에서 13- 1  = 12 라는 계산을

변수 A라는 공간에 13을 넣고 

변수 B라는 공간에 2를 넣고

변수 C라는 공간에 결과값을 담을 공간을 준비합니다.

 

A와 B라는 공간의 값을 뺀 뒤 그 결과값을 C에 저장하고 결과값을 보여줍니다.

 

 

그리고 아래에 데이터 형식이 있는데 데이터 형식은 공간의 크기라고 생각하셔도 됩니다.

 

간장종지에 국을 담기에는 너무 작죠?

국을 담을 수 있는 그릇은 따로 있습니다.

 

간장을 국그릇에 담기에는 너무 커서 남비가 심하죠?

그래서 간장을 담을 수 있는 그릇이 따로 있습니다.

 

이와 같이 컴퓨터도 그 용도에 맞는 그릇의 이름이 데이터 타입이라고 생각하시면됩니다.

 

 

HLSL에서는 하드웨어가 부동소수점 연산을 하기때문에 float형과 같은 부동소수점형식이 효율적이다.

 

데이터형식
bool  true 또는 false를 갖는다.
bool bFlag;

 

int 32비트 부호 있는 정수
int nSize;

 

half 16비트 부동소수점
half hValue;

 

float 32비트 부동소수점
float fValue;

 

double  64비트 부동소수점
double;

 

벡터 데이터형식

데이터 형식은 1~4개의 성분을 갖는 벡터 타입으로 확장할 수 있다.

변수타입 1~4 bool2 a;
half3 b;
int4 c;
float1 a;
float2 uv;
float3 pos;
float4 rgba;
double3 pos;
vector<데이터타입, 벡터의성분> vector<bool, 2> bVector;

 

행렬 데이터 형식
변수타입 1~4x1~4 int2x2 matInt;
float1x4 matVector;
float2x3 jocobian;
float3x3 matRotation;
float4x4 matWorld;
matrix<데이터타입, 행의 개수, 열의 개수> matrix<float, 2, 3> matJacobi;

 

구조체 형식
struct 구조체명
{
   데이터 형식 데이터명;
   데이터 형식 데이터명;
   ......
}
struct MyData
{
   int3 rgb;
   float4x4 matWorld;

}

 

 

 

 

 

반응형