Out of Sight
대만의 대학생 졸작이라는데 느낌이 괜찮다
시각 장애를 가진 사람이 바라보는 세상이랄까?
Visual Studio 에서 제공해주는 CRT debug library와는 다르게 callstack을 보여준다는 장점이 있다.
아래 사이트에서 다운 받아서 사용하면 된다.
셋팅
- predefined header, 즉 stdafx.h 뒤에 vld.h 를 포함
- 프로젝트 속성에서 include와 lib 위치 추가
셋팅된 프로젝트에서만 Leak이 검출 되기 때문에 DLL을 사용하던가 다른 프로젝트가 존재하는 경우 해당 프로젝트도 같은 셋팅을 해야한다.
추가 사항
- 파일로 남기고 싶을 경우 설치 폴더에 있는 vld.ini파일에서 ReportTo 옵션을 file 또는 both를 변경
abs: 절대값을 구한다.
acos: 코사인에 대한 역 삼각함수
all(x); x의 모든 원소가 0인가? 맞으면 true, 아니면 false를 리턴한다.
any(x): x의 원소중에 0이 아닌 원소가 하나라도 있는가? 있으면 true, 없으면 false를 리턴한다.
asfloat: 인자값을 float 타입으로 바꾼다.
asin: 싸인에 대한 역 삼각함수
asint: 인자값을 int 타입으로 바꾼다.
asuint: 인자값을 uint 타입으로 바꾼다.
atan: 탄젠트에 대한 역 삼각함수
atan2: atan2(y,x) 의 형태로 쓰이며 이는 atan(y/x)와 같다. 분모인 x는 당연히 0이어서는 안 된다.
ceil: 인자값으로 전달 받은 float형 값보다 크거나 같은 정수들 중에서 가장 작은 값
clamp: 인자값을 특정 범위로 한정한다. 즉, clamp(x, min, max)에서 x가 min보다 작으면 min을
max보다 크면 max를 리턴한다.
clip:
픽셀 쉐이더에서만 사용 가능하다. 만약 인자값이 0보다 작으면 현재의 픽셀을 버린다.
clip( Input.Color.A < 0.1f ? -1:1 );
위에서 만약 알파값이 0.1보다 작다면 인자값은 -1이 될 것이고 이는 0보다 작기 때문에
해당 픽셀은 처리되지 않게 된다.
cos, sin, tan: 기본 삼각함수
cross: 인자로 받은 두 개의 float형 3D 벡터값들의 외적값을 구한다.
D3DCOLORtoUBYTE4: D3DCOLOR값으로 채워진 4D 벡터의 float형 성분들을 UBYTE4 형으로 변경한다. UBYTE4형을 지원하지
않는 특정 하드웨어를 위해 마련된 함수이다.
ddx: ddx_coarse 참조
ddy: ddy_coarse 참조
degrees: 인자로 입력 받은 라디언 값에 해당하는 degree값을 리턴한다.
determinant: 인자로 입력받은 정방행렬의 행렬식을 구한다.
distance(x,y): 두 벡터의 거리를 구한다.
dot: 인자로 받은 두 개의 3D 벡터들의 내적값을 구한다.
log: 밑이 e인 로그값을 구한다.
log10: 밑이 10인 로그값을 구한다.
log2: 밑이 2인 로그값을 구한다.
floor:인자값으로 전달 받은 float형 값보다 작거나 같은 정수들 중에서 가장 큰 값
radians: 인자로 입력 받은 degree 값에 해당하는 radian값을 리턴한다.
sqrt(x) : x의 제곱근을 구한다.
rsqrt: 제곱근의 역수를 구한다.
max: 두 인자 중 큰 값을 구한다.
min: 두 인자 중 작은 값을 구한다.
fwidth:
isfinite(x): x가 유한한가? 맞으면 true, 아니면 false 리턴
isinf(x): x가 무한인가? 맞으면 true, 아니면 false 리턴
length(x): 벡터 x 의 길이를 리턴
normalize: 정규화한다.
pow(x,y): x^y, 즉 x의 y승 값을 리턴
exp(x): 밑을 e로 하는 지수 e^x를 리턴
exp2(x): 밑을 2로 하는 지수 2^x를 리턴
modf(x,i) : x의 정수부분은 i에 저장되고 소수점 이하부분이 리턴값으로 넘어온다.
sign(x) : x의 부호를 리턴한다. 부호가 음수이면 -1, 0이면 0, 양수이면 1을 리턴
saturate(x) : x를 [0, 1] 범위의 값으로 한전한다
lerp(x,y,s) : 선형보간 값인 x + s(y - x) 를 리턴한다.
step(x,y) : x가 y보다 작거나 같은지 판단한다. 맞으면 1, 그렇지 않으면 0을 리턴한다
smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 [0, 1] 사이의 Hermite 보간 값을
리턴한다.
fmod(x,y) : x/y의 나머지 값을 리턴한다
frac(x) : x의 소수점 이하 부분을 리턴한다
frexp(x,e) : 주어진 실수 x의 소수점 이하값인 가수부분과 지수부분을 동시에 리턴한다.
가수부분을 e로 리턴하고, 지수부분을 함수리턴값으로 리턴한다
round(x) : 반올림한 정수를 리턴
mul(x,y) : 두 행렬의 곱을 리턴한다.
faceforward(n, i, ng) : 관찰자를 향하는 표면 노말값을 리턴한다
reflect(i, n) : 반사벡터를 리턴한다.
refract(i, n, R) : 굴절벡터를 리턴한다.
lit(n·l, n·h, m) : 조명계수 벡터를 리턴한다.
noise(x) : Perlin 노이즈값을 리턴한다.
fwidth(x): abs(ddx(x)) + abs(ddy(x)) 를 계산한다.
cosh(x): x의 cosine hyperbolic(쌍곡 함수) 값을 얻는다.
sinh(x): x의 sine쌍곡 함수 값을 얻는다.
tanh(x): x의 tangent쌍곡 함수 값을 얻는다.
sincos(x, out sineVal, out cosVal): x에 대한 sine값을 구해 sineVal에 저장하고, cosine값은 cosVal에 저장한다.
GetRenderTargetSampleCount: 렌더 타겟에 대한 샘플 갯수를 구한다.
GetRenderTargetSamplePosition(index) 인덱스에 해당하는 샘플에 대해서 샘플링 위치를 구한다.
isnan(x): x가 NAN(Not a number) 이거나 QNAN(Quiet Not a number)인지 판단한다.
ldexp(x, exp): x * (2의 exp 승)을 계산한다.
tex1D(s, t) : 샘플러 s를 이용 t 위치에서 텍스쳐의 색깔 정보를 뽑아낸다. 쉐이더가 1D를 지원하지 않기 때문에
컴파일러는 2D 텍스쳐를 사용하게 되는데, 대신 컴파일러는 y좌표는 중요하지 않다고 판단한다.
tex1D(s, t, ddx, ddy): 어떤 mip 단계를 선택할지 ddx와 ddy를 가지고 판단하고, 샘플러 s를 이용해
t에서의 색깔 정보를 뽑아낸다.
tex1Dbias(s,t): bias는 Vertex Shader에서는 사용할 수 없고 Pixel Shader에서만 사용할 수 있다. t.w에 의해 mip map
level을 정한 후 샘플러 s를 이용 해당 픽셀의 색깔 정보를 얻는다.
이미지를 흐리게 보이게 하거나 선명하게 보이게 하게 위해 쓰일 수 있다.
tex1Dgrad(s, t, ddx, ddy): 어떤 mip 단계를 선택할지 x와 y의 gradient 정도값을 이용하고, 샘플러 s를 이용해
t에서의 색깔 정보를 뽑아낸다.
tex1Dlod(s,t): t.w에 의해 miplevel을 정한 후 샘플러 s를 이용 해당 픽셀의 색깔 정보를 얻는다. t.w에 의해 LOD가
어느단계에서 변할지를 결정한다.
tex1Dproj: proj 가 붙으면 t.w 값에 의해 texture 좌표값 각각이 나뉘게(/) 된다.
tex2D(s, t): 샘플러 s를 이용해 2D 텍스쳐의 색깔 정보를 얻어낸다.
tex2D(s, t, ddx, ddy): 샘플러 s를 이용해 2D 텍스쳐 t에서의 색깔 정보를 얻어낸다. ddx와 ddy를 이용해 mipmap level을 정한다.
tex2Dbias(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 2D 텍스쳐의 픽셀 색깔 정보를 얻는다.
tex2Dgrad(s, t, ddx, ddy): 어떤 mip 단계를 선택할지 ddx와 ddy를 통해 결정하고, 샘플러 s를 이용해 2D 텍스쳐
t에서의 색깔 정보를 뽑아낸다.
tex2Dlod(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 2D 텍스쳐의 픽셀 정보를 얻는다. t.w에 의해 LOD가
어느단계에서 변할지를 결정한다.
tex2Dproj(s,t): 2D 텍스쳐에서 샘플러 s를 이용해 샘플링을 한다. 이때 t.w 값에 의해 texture 좌표값 각각이 나뉘게(/) 된다.
tex3D(s, t): 샘플러 s를 이용해 3D 텍스쳐의 색깔 정보를 얻어낸다.
tex3D(s, t, ddx, ddy): 샘플러 s를 이용해 3D 텍스쳐 t에서의 색깔 정보를 얻어낸다. ddx와 ddy를 이용해 mipmap level을 정한다.
tex3Dbias(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 3D 텍스쳐의 픽셀 색깔 정보를 얻는다.
tex3Dgrad(s, t, ddx, ddy): 어떤 mip 단계를 선택할지 ddx와 ddy를 통해 결정하고, 샘플러 s를 이용해 3D 텍스쳐
t에서의 색깔 정보를 뽑아낸다.
tex3Dlod(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 3D 텍스쳐의 픽셀 정보를 얻는다. t.w에 의해 LOD가
어느단계에서 변할지를 결정한다.
tex3Dproj(s,t): 3D 텍스쳐에서 샘플러 s를 이용해 샘플링을 한다. 이때 t.w 값에 의해 texture 좌표값 각각이 나뉘게(/) 된다.
texCUBE(s, t)샘플러 s를 이용해 큐브 텍스쳐의 색깔 정보를 얻어낸다.
texCUBE(s, t, ddx, ddy): 샘플러 s를 이용해 큐브 텍스쳐 t에서의 색깔 정보를 얻어낸다.
ddx와 ddy를 이용해 mipmap level을 정한다.
texCUBEbias(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 큐브 텍스쳐의 픽셀 색깔 정보를 얻는다.
texCUBEgrad(s, t, ddx, ddy): 어떤 mip 단계를 선택할지 ddx와 ddy를 통해 결정하고, 샘플러 s를 이용해 큐브 텍스쳐
t에서의 색깔 정보를 뽑아낸다.
texCUBElod(s,t): t.w에 의해 mip map level을 정한 후 샘플러 s를 이용 큐브 텍스쳐의 픽셀 정보를 얻는다. t.w에 의해 LOD가
어느단계에서 변할지를 결정한다.
texCUBEproj(s,t): 큐브 텍스쳐에서 샘플러 s를 이용해 샘플링을 한다. 이때 t.w 값에 의해 texture 좌표값 각각이 나뉘게(/) 된다.
transpose(x): x의 행과 열이 바뀐 전치행렬을 구한다.
trunc(x): x의 소숫점 아래 값을 버린 정수값을 얻는다.
[출처] 14. [Shader Study, HLSL 기본문법] Intrinsic Functions 내장함수 - 3 (토크게임엔진 개발자 모임) |작성자 Dark Wolf