로봇에 알파 블랜딩 적용한다.
cull on (양면)을 끄고 cull back으로 바꾼다.
그래도 위처럼 뒤에 가려져야 할 오브젝트가 앞에 찍히는 문제가 있다.
왜 그런가?
피봇을 중심으로 거리를 산정하는 특성 때문이다.
아래 그림처럼 오브젝트와의 거리는 피봇으로 판별한다.
오브젝트 크기가 극명하게 다르면 더욱 자주 발생하는 문제다.
아래 그림에서 우측은 바닥의 피봇이 카메라와 더 가까워서 생긴 문제다.
위 내용을 정리하자면,
알파 소팅을 써도 완벽한 앞 뒤 판정은 불가능하다.
이렇듯 앞 뒤 판정이 잘못된 경우에,
자기 자신을 잘라버리는 현상을 막기 위해 z 버퍼에 자신의 위치값을 입력하지 않는다.
이를 'zwrite를 off한다' 라고 한다.
따라서 앞뒤 연산이 잘못되어도 잘리지 않고, 앞뒤만 바뀌게 오류를 그나마 줄인 것이다.
알파 블렌딩 이론 총 정리
- 불투명 오브젝트는 먼저 그린다.
- 반투명 오브젝트는 나중에 그린다.
- 반투명 오브젝트는 뒤에서부터 그린다.
- 알파 블렌딩을 썼을 때에는 zwrite를 하지 않는다.
'셰이더 (Shader) > 유니티 쉐이더 스타트업 - 정종필' 카테고리의 다른 글
[Unity/Shader] 파트17-1 : 커스텀 제어 가능한 알파 블렌딩 (0) | 2023.08.30 |
---|---|
[Unity/Shader] 파트16-5 : 알파 테스팅 (컷아웃) (0) | 2023.08.30 |
[Unity/Shader] 파트16-3 : 알파 블렌딩 제작 (0) | 2023.08.25 |
[Unity/Shader] 파트16-2 : 반투명 (알파 블렌드 Alpha Blend) (0) | 2023.08.23 |
[Unity/Shader] 파트16-1 : Z 버퍼 (0) | 2023.08.23 |
댓글