본문 바로가기
Computer Graphics/ShaderLab, HLSL

[ShaderLab] AO(Ambient Occlusion), Vertex Color 활용2

by 진현개발일기 2024. 2. 28.

■ AO (Ambient Occlusion; 환경차폐)

 보통 대부분의 사물, 공간들은 주변광(Ambient Light)으로 인하여 빛이 닿지 않는 공간도 밝아지는 경향이 있다. 이렇게 환경광이 가득한 공간에서 매우 구석져 있거나 복잡한 물체들로 가려져서 환경광도 닿지 못하는 부분은 더욱 어두워지는데 이 부분을 Ambient Occlusion라고 부른다.

 

(예시. 출처: 유니티 공식문서)

 

(코드)

 

Occlusion은 개별 uv를 받으면 에러를 뱉어내므로 위와 같이 기존에 사용하고있는 텍스처의 uv를 가져다 사용해야한다. 

그리고 일반적으로 Occlusion은 float값을 받지만 위와 같이 float4를 반환하는 tex2D사용 시 여러 채널 중 r 채널만 사용하고 나머지는 내부적으로 버린다고한다.

[AO 적용 전] [AO 적용 후]
▼ 사용한 AO 텍스처


 

 

 

■ Vertex Color 활용2

이전 포스팅(링크)에서 활용했던 Vertex Color에다가 추가 기능을 덧붙여 활용해보려고 한다.

 

아래 사진들의 우측 텍스처는 이전에 제작한 쉐이더를 적용한 상태이고 좌측은 순서대로 NormalMap, Metallic + Smoothenesss, noambient제거를 적용한 모습이다. 빛의 각도를 약간 어둡고 비스듬하게 일부러 조정하였기 때문에 사진이 전체적으로 어두워보일 수 있다.

 

▼ noambient키워드를 제거하여 주변광을 받을 수 있도록 설정해줬다.

 

(▼ GIF)

위 gif는 설정값 metallic 0, smoothness 0.5를 기준으로 녹화했다. smoothness가 모래, 풀 등에도 적용을 받고 있기 때문에 어색해보인다. 바위 (리소스가 있었다면 벽돌로 했을텐데 아쉽)에만 적용이 되도록 변경하였다.

 

r(풀), g(모래), b(화산암) 채널들을 제외하고 배경(돌)에만 Smoothness를 적용하였고 이는 아래와 같이 눈속임으로 땅이 젖는 듯한 효과를 낼 수 있었다.

 

728x90

'Computer Graphics > ShaderLab, HLSL' 카테고리의 다른 글

[ShaderLab] Rim Light, Hologram  (0) 2024.03.03
[ShaderLab] (Half) Lambert Light  (0) 2024.03.02
[ShaderLab] NormalMap  (0) 2024.02.28
[ShaderLab] Vertex Color (Masking)  (1) 2024.02.27
[ShaderLab] UV, 불 이펙트  (1) 2024.02.27