HLSL 4

4. 함수

1. 사용자 정의 함수 HLSL 함수의 특징이다. 1. 익숙한 C++의 함수 구문을 사용한다. 2. 매개변수는 항상 값으로 전달된다. 3. 재귀를 지원하지 않는다. 4. 항상 인라인화된다. // in: 입력용 변수 out: 출력용 변수 inout: 입출력용 변수 bool foo(in const bool b, out int r1, inout float r2) { if(b) { r1 = 5; // r1을 통해 하나의 값을 출력한다. } else { r1 = 1; // r1을 통해 하나의 값을 출력한다. } // r2는 inout이므로 입력 값이 될 수도 출력 값이 될 수도 있다. r2 = r2 * r2 * r2; return true; } 2. 내장 함수 https://docs.microsoft.com/ko..

HLSL 2021.12.24

2. 키워드와 연산자

1. 키워드 다음은 HLSL이 정의하는 모든 키워드의 목록이다. asm bool compile const decl do double else extern false float for half if in inline inout int matrix out pass pixelshader return sampler shared static string struct technique texture true tyepdef uniform vector vertexshader void volatile while 그리고 예약되어 있지만 실제로 쓰이지 않는 키워드들이다. auto break case catch char class const_cast continue default delete dynamic_cast enum ..

HLSL 2021.12.24

1. 변수 형식

1. 스칼라 형식 2. 벡터 형식 int2, half3 bool4 등 가능 벡터를 초기화 방법 float3 v = {1.0f, 2.0f, 3.0f}; float2 w = float2(x, y); float4 u = float4(w, 3.0f, 4.0f); // u = (w.x, w.y, 3.0f, 4.0f) vec.x = vec.r = 1.0f; vec.y = vec.g = 2.0f; vec.z = vec.b = 3.0f; vec.w = vec.a = 4.0f; 벡터 u = (ux, uy, uz, uw)의 성분들을 벡터 v에 복사하되, v = (uw, uy, uy, ux)가 되도록 성분을 뒤섞어서 복사하고 싶다고 하자. 가장 직접적인 방법은 u의 각 성분을 하나하나 복사해주는 것이다. 그러나 HLSL은 ..

HLSL 2021.12.24