블로그 이미지
smstock

카테고리

분류 전체보기 (54)
취미 (8)
공부 (32)
낙서장 (12)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

태그목록

최근에 올라온 글

windows
 - 해당하는 SVN 저장소의 hooks 디렉토리에 pre-revprop-change.bat 라는 파일을 생성
        ex) Repositories/sample_project/hooks/pre-revprop-change.bat

 - pre-revprop-change.bat 파일내용
    if "%4" == "svn:log" exit 0
    echo Changing revision property '%4' is prohibited >&2
    exit 1


unix
 - 파일명을 pre-revprop-change

hooks 디렉토리 밑에 pre-revprop-change.tmpl 에 예제참조.


참조 : http://weemy.tistory.com/46

Posted by smstock
, |

Out of Sight

낙서장 / 2012. 8. 1. 14:03


대만의 대학생 졸작이라는데 느낌이 괜찮다


시각 장애를 가진 사람이 바라보는 세상이랄까?

Posted by smstock
, |

Visual Studio 에서 제공해주는 CRT debug library와는 다르게 callstack을 보여준다는 장점이 있다.

 

아래 사이트에서 다운 받아서 사용하면 된다.

 

http://vld.codeplex.com/

 

셋팅

 - predefined header, 즉 stdafx.h 뒤에 vld.h 를 포함

 - 프로젝트 속성에서 include와 lib 위치 추가

 

셋팅된 프로젝트에서만 Leak이 검출 되기 때문에 DLL을 사용하던가 다른 프로젝트가 존재하는 경우 해당 프로젝트도 같은  셋팅을 해야한다.

 

추가 사항

 - 파일로 남기고 싶을 경우 설치 폴더에 있는 vld.ini파일에서 ReportTo 옵션을 file 또는 both를 변경

Posted by smstock
, |

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

Posted by smstock
, |

왠지 이런저런 부분에서 공감이 가는 부분이 있다는....;;;

Posted by smstock
, |

Posted by smstock
, |

HSB, YUV

공부/프로그램 / 2010. 11. 16. 12:34
HSB란?
H : 색상(hue)을 뜻하는데, 0도에 적색, 60도에 황색, 120도에 녹색, 180도에 시안(청록색), 240도에 청색, 300도에 마젠타(적보라색)가 있다
S : 채도(saturation)를 뜻하는데, 어떤 특정 색상의 색의 양으로 보통 0~100%의 백분율로 나타낸다. 채도가 높을수록 색은 강렬해진다.
B : 명도(brightness)를 뜻하는데, 어떤 색 중 백색의 양으로 0%이면 흑이고 100%이면 백이다.

RGB -> HSB




채도 변화에 따른 RGB값 구하기
x: 채도
m: R,G,B중 최대값
(R,G,B) = ((R,G,B) - m)*x + m

명도도 영향을 주고 싶으면 아래처럼하면 비슷하게 나온다
b : 명도
(R,G,B) = (((R,G,B) - m)*x + m)*b





YUV란?

휘도 신호(Y)
휘도 신호와 적색 성분의 차(U)
휘도 신호와 청색 성분의 차(V)

한마디로 Y는 명암정도 U, V는 색상정보이다. 만약 색상을 회색으로 바꾸고 싶다면 Y값을 구해서 R, G, B값에 넣으면 된다

RGB -> YUV
Y=0.3R+0.59G +0.11B
U=(B-Y)x0.493
V=(R-Y)x0.877

YUV -> RGB
R=Y+0.956U+0.621V
G=Y+0.272U+0.647V
B=Y+1.1061U+1.703V

Posted by smstock
, |

FreeStyle2 나왔다...

낙서장 / 2010. 10. 2. 20:49

Posted by smstock
, |

메시지 박스 출력후 일정 시간 후에 자동으로 사라지게 하는 기능이 필요하면 넣으면 되겠다

#pragma once

#include <windows.h>
#include <tchar.h>

//Functions & other definitions required-->
typedef int (__stdcall *MSGBOXAAPI)(IN HWND hWnd,
         IN LPCSTR lpText, IN LPCSTR lpCaption,
         IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
typedef int (__stdcall *MSGBOXWAPI)(IN HWND hWnd,
         IN LPCWSTR lpText, IN LPCWSTR lpCaption,
         IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);

int MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText,
        IN LPCSTR lpCaption, IN UINT uType,
        IN WORD wLanguageId, IN DWORD dwMilliseconds);
int MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText,
        IN LPCWSTR lpCaption, IN UINT uType,
        IN WORD wLanguageId, IN DWORD dwMilliseconds);

#ifdef UNICODE
 #define MessageBoxTimeout MessageBoxTimeoutW
#else
 #define MessageBoxTimeout MessageBoxTimeoutA
#endif

//#define MB_TIMEDOUT 32000

int MessageBoxTimeoutA(HWND hWnd, LPCSTR lpText,
        LPCSTR lpCaption, UINT uType, WORD wLanguageId,
        DWORD dwMilliseconds)
{
 static MSGBOXAAPI MsgBoxTOA = NULL;

 if (!MsgBoxTOA)
 {
  HMODULE hUser32 = GetModuleHandle(_T("user32.dll"));
  if (hUser32)
  {
   MsgBoxTOA = (MSGBOXAAPI)GetProcAddress(hUser32,
    "MessageBoxTimeoutA");
   //fall through to 'if (MsgBoxTOA)...'
  }
  else
  {
   //stuff happened, add code to handle it here
   //(possibly just call MessageBox())
   return 0;
  }
 }

 if (MsgBoxTOA)
 {
  return MsgBoxTOA(hWnd, lpText, lpCaption,
   uType, wLanguageId, dwMilliseconds);
 }

 return 0;
}


int MessageBoxTimeoutW(HWND hWnd, LPCWSTR lpText,
        LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{
 static MSGBOXWAPI MsgBoxTOW = NULL;

 if (!MsgBoxTOW)
 {
  HMODULE hUser32 = GetModuleHandle(_T("user32.dll"));
  if (hUser32)
  {
   MsgBoxTOW = (MSGBOXWAPI)GetProcAddress(hUser32,
    "MessageBoxTimeoutW");
   //fall through to 'if (MsgBoxTOW)...'
  }
  else
  {
   //stuff happened, add code to handle it here
   //(possibly just call MessageBox())
   return 0;
  }
 }

 if (MsgBoxTOW)
 {
  return MsgBoxTOW(hWnd, lpText, lpCaption,
   uType, wLanguageId, dwMilliseconds);
 }

 return 0;
}

Posted by smstock
, |
출근 길에 발견했다... 대단하다..

Posted by smstock
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함