변수 |
변수는 '변하는 수'라는 의미로, 사실상 이 개념은 데이터를 담아놓는 공간을 의미합니다.
변수가 왜 필요한지 아래의 예시를 들어서 설명해보자면..
컴퓨터에서 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; } |
반응형