SSAO 구현 2
SSAO 렌더타겟 텍스쳐를
캐릭터, 백모델, 위젯 등에서 조명계산에 사용하도록 코드를 수정하였다.
포워드 렌더링에서도 SSAO 를 조명계산에 사용할수 있다.
//screen pos -> UV
//get SSAO Texture color
float3 Get_SSAO_Ambient( float4 _vScreenPos )
{
float3 vOut;
//스크린포지션값을 텍스쳐 UV값으로 변환
float2 uv = _vScreenPos.xy / _vScreenPos.w;
uv = uv * float2(0.5, -0.5) + 0.5;
vOut = tex2D( Samp_Tex_SSAO, uv ).rgb;
return vOut;
}
PS()
{
//vScreenPos 는 W, V, P 가 모두 적용된 정점위치
//일반적으로 VS에서 처리해서 PS로 넘겨지는 정점위치값과 동일하다.
//앰비언트 라이팅 값으로 사용
float3 ambient = _Ambient.rgb * Original * Get_SSAO_Ambient( In.vScreenPos );
}
눈으로 보기에는,
오리지날 화면 + SSAO 텍스쳐의 합성과
차이가 느껴지지 않는다.
처리하기로는 맨 마지막 오리지날 화면에 SSAO 컬러를 합성하는 것이 더 편하고,
연산작용도 적다.
위. 다리 사이에 SSAO 가 적용된것
위. 잎사귀 사이사이로 검은 부분이 보인다.
잎이 겹쳐지는 부분에서 드리워진듯하는 그림자 효과가 나는것.
문제가 있다.
카메라 화면이 바뀔때마다 SSAO로 표현되는 명암이,
따라서 확확 변한다는 것
이 부분은 별도의 처리가 필요할듯 한데...
위. 지형에 SSAO ambient 값적용X
위. 지형에 SSAO ambient 값적용O