모종의 이유로 작업폴더를 뒤지다 보면 옛날에 만들어 놓자마자 하드에 쳐박아 두느라 만들었는지도 몰랐던 것들을 발견하게 된다.
요즘 픽셀셰이더를 가지고 잠깐 테스트 할 게 있어서 고1때 평소에 셰이더 만지면서 놀기위해 미리 셋업 해 놓았던 프로젝트를 몇 년만에 켜 봤는데, 고1 겨울방학때 Photo Booth의 엑스레이 효과를 구현하겠다고 설쳐댔던게 나름 그럭저럭 되어 있었다.
아예 아무것도 못 하고 접은줄 알았는데.
셰이더로 만든 효과.
맥북에서 포토부스 앱으로 찍은 사진.
여기에서 이제 색감 좀 조정해 주고, 대비 높여주고, 약간 뽀샤시(?) 한 효과를 넣는다던가 해서 보정하면, 꽤나 비슷하게 만들어지지 않을까 싶다.
아래는 픽셀세이더 함수. 별거 없긴한데, 아직 저 mat이 뭔지 잘 기억이 안 난다. 분명히 열심히 종이에다가 적었던 기억은 있는데... 뭐 강좌가 아니니 그냥 넘어가자. 아마 저 시퍼런 색깔을 입히는 역할일지도?
float4 PS(VS_OUTPUT In) : COLOR
{
float4 Out = (float4)0;
float3 color1 = tex2D(SourceSamp, In.Tex0); // 텍스쳐 색상
float3 color2 = {0.29f,0.587f,0.114f}; // YUV 변환 공식
float3x3 mat = {
{1.0f,0.0f,1.4f},
{1.0f,-0.3f,-0.7f},
{1.0f,1.7f,0.0f},
};
float3 yuv = (float3)0;
// RGB로 이루어진 color1 을 YUV로 변환
yuv.x= dot(color1,color2)-0.125;
yuv.y= -0.02f;
yuv.z= 0.1f;
// 행렬곱
Out.rgb = mul(mat,yuv);
// 반전
Out.x = 1 - Out.x;
Out.y = 1 - Out.y;
Out.z = 1 - Out.z;
return Out;
}
'프로그래밍 > 삽질' 카테고리의 다른 글
급여명세서 복호화하기 (2) | 2017.02.07 |
---|---|
위도 경도에 맞춰서 지구본 돌리기 - unity (2) | 2015.02.12 |
stl에는 iterator가 없는 컨테이너도 있다. (1) | 2015.01.24 |
안드로이드, Android Private Libraries (0) | 2013.11.23 |
라즈베리파이, entering kdb due to keyboard entry (0) | 2013.11.21 |