Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래밍 기초
- Cartoon Rendering
- Cell Shader
- Private Bytes
- ColorGradingLutPass
- 게임 수학
- URP
- 벡터
- 메모리 누수
- C언어
- OculusMotionVectorPass
- Rim Light
- URP로 변경
- ASW(Application SpaceWarp)
- 가상 바이트
- Three(Two) Tone Shading
- Cell Look
- AppSW
- 개인 바이트
- working set
- Windows Build
- VR
- 작업 집합
- Toon Shader
- Specular
- Virtual Byte
- 3d
Archives
- Today
- Total
WinCNT
Edge Detect Filter 본문
외곽선을 그리는 기법
캐릭터를 그릴 때 가장 많이 사용한다
장점 : 1픽셀의 외곽선을 정확하게 따준다
두께는 블러를 적용한 것
블러의 강도를 조절하면 깜박거리는 느낌을 줄 수 있다
Edge Detect Filter의 예시
값이 급격하게 변하는 곳이 윤곽선으로 만드는 기법
값이 급격하게 변하는 곳은 필터로 찾는다
Sobel Filter
가장 유명한 필터
주변 픽셀에 필터 값을 곱한 뒤 더한다
Laplacian Filter
또 다른 필터
적용 예시
법선 벡터(노멀 벡터)에 필터링을 적용하는 이유
노멀 벡터는 경계 부분에서 노멀 값이 급격하게 바뀐다
따라서 노멀 벡터에 필터를 적용하면 깔끔하게 딸 수 있다
반대로 일반적인 버퍼에 바로 필터링을 적용하면
카메라의 각도에 따라서 외곽선이 안 보이는 경우가 생기기도 한다
Edge Detect Code
// 외곽선 추적
float4 psEdgeDetect( float2 texCoord : TEXCOORD0 ) : COLOR0
{
float mask[9] =
{ -1, -1, -1,
-1, 8, -1,
-1, -1, -1 }; // Laplacian Filter
float coord[3] = { -1, 0, +1 };
float4 c0 = 0;
for( int i = 0 ; i < 9 ; i++ )
c0+= mask[i] * ( tex2D( SamplerSrc0, texCoord + float2( coord[i%3]*vScreenSize.z, coord[i/3]*vScreenSize.w) ) );
return c0*2; // 2배 진하게 출력
}
SSS
'게임 프로그래밍(학습 내용 정리) > 게임 수학' 카테고리의 다른 글
Texture Technique (0) | 2022.07.12 |
---|---|
Illusion (0) | 2022.06.28 |
Light Shaft (0) | 2022.06.28 |
Vignetting (0) | 2022.06.28 |
DOF(Depth Of Field) (0) | 2022.06.21 |