외곽선 찾기와 양각효과
외곽선찾기
대에충 픽셀의 병도 대비를 이용해 외곽선을 찾는다 인데.....
과정이 뭔소린지 이해가 안된다... 걍 일딴 따라하기 정도로 끝을 내야지.. 잘 모르겠넹....
지난번 세피아 효과에서 세피아 패스만 삭제하고, 변수 추가만 있고 나버진 전부 같다....
흑백 패스에서 픽셀셰이더 코드반 변경.............
흑백효과 픽셀셰이더 코드
struct PS_INPUT{
float2 mUV : TEXCOORD0;
};
float3x3 Kx = {-1,0,1,
-2,0,2,
-1,0,1};
float3x3 Ky = {1,2,1,
0,0,0,
-1,-2,-1};
sampler2D SceneSampler;
float2 gPixelOffset;
float4 ps_main(PS_INPUT Input) : COLOR{
float Lx = 0;
float Ly = 0;
for( int y = -1; y<=1; ++y ){
for( int x = -1; x <=1; ++x ){
float2 offset = float2(x,y) * gPixelOffset;
float3 tex = tex2D(SceneSampler, Input.mUV + offset).rgb;
float luminance = dot(tex, float3(0.3,0.59,0.11));
Lx += luminance * Kx[y+1][x+1];
Ly += luminance * Ky[y+1][x+1];
}
}
float L = sqrt((Lx*Lx) + (Ly*Ly));
return float4(L.xxx,1);
}
결과
양각효과
위에 패스를 복사해 패스 추가후 수정....이것역시 왹곽선 찻기로 나온 것을 포토샵의 양각효과처럼 표현한것임....
조금은 이해가지만 잘 몰겠심 ㅜㅜ 헐;;
양각효과 픽셀셰이더 코드
struct PS_INPUT{
float2 mUV : TEXCOORD0;
};
float3x3 K = {-2,-1,0,
-1,0,1,
0,1,2 };
sampler2D SceneSampler;
float2 gPixelOffset;
float4 ps_main(PS_INPUT Input) : COLOR{
float res = 0;
for( int y = -1; y<=1; ++y ){
for( int x = -1; x <=1; ++x ){
float2 offset = float2(x,y) * gPixelOffset;
float3 tex = tex2D(SceneSampler, Input.mUV + offset).rgb;
float luminance = dot(tex, float3(0.3,0.59,0.11));
res += luminance * K[y+1][x+1];
}
}
res += 0.5f;
return float4(res.xxx,1);
}
결과
셰이더 입문 도 이걸로 끝났다...... 물론 다 이해 한것은 아니지만 이다음으로 공부할 이론과 자주 사용하는 함수를 정리하면서 익히자..... 역시 디자이너는 꺼꾸로 배워야 편한듯 ㅎ;; 공부는 힘들어~
셰이더 프로그래밍 입문 끝!!!
'Unity공부 > HLSL Shader 공부' 카테고리의 다른 글
셰이더 프로그래밍 입문-10 (0) | 2012.12.10 |
---|---|
셰이더 프로그래밍 입문-9 (0) | 2012.12.04 |
셰이더 프로그래밍 입문-8 (0) | 2012.12.03 |
셰이더 프로그래밍 입문-7 (0) | 2012.11.27 |
셰이더 프로그래밍 입문-6 (0) | 2012.11.21 |