일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 언리얼 한글
- 유니티
- 랜더러
- unity4
- Unity2018
- legacy lightmapped
- 언리얼5 화면 움직임
- 언리얼5
- 노트북 그래픽 카드
- 언리얼 메뉴 한글
- gitea
- 와콤 feel 드라이버
- 3ds max #spring #스프링
- wacom feel
- msi gf63
- 3dsmax
- 노트북 아답터
- Unreal5
- 애프터이펙트 aftereffect ram preview no sound 소리 안날때
- unity5
- shader
- gtx1050
- legacy lightmap
- mx150
- 로스트 아크
- 요가북
- 언리얼 팁
- 언리얼 뷰포트 움직임
- 내장 그래픽
- 언리얼 pan
- Today
- Total
애니메이터
Alpha Blending & Alpha Test 본문
출처 : http://blog.naver.com/PostView.nhn?blogId=xeoris&logNo=100045508141
<Alpha Test의 효용성에 대하여 (Alpha blend와의 비교)>
1. 연산을 절약할 수 있다.
Alpha blending시 발생하게 되는 per pixel 연산인 color mixing 연산을 줄일 수 있다. 이미 값이 계산되어있는 Pixel 위에 B.alpha의 불투명도로 B를 겹쳐 그리는 경우,
Pixel.color = Pixel.color * (1.0f - B.alpha) + B.color * B.alpha;
의 연산을 하게 되는데, 이 연산은 매 픽셀마다 이루어지게 된다. B.alpha가 0.0f인 경우, 값의 변화가 없음에도 불구하고 연산을 해야 한다. 따라서 투명한 공간이 많은 텍스쳐일 수록 많은 시간이 헛되이 소모되게 되며, alpha test를 사용함으로써 시간을 절약할 수 있다. (불투명한 곳만 모델링 한 오브젝트를 렌더하는 경우, alpha blending 에 비해서 alpha test가 더욱 적은 연산을 한다.)
2. Billboard 렌더 시 쉽게 정확한 렌더를 할 수 있다.
Alpha blending의 경우, 정확한 값의 계산을 위해서는 z-buffering을 사용할 수 없었다. 빈 공간이 있는 물체의 경우, alpha값이 0인 부분에서도 z-buffer는 해당 z값을 저장해 둠으로 인해, z-buffer를 사용하게 되면 그려져야 할 물체가 그려지지 않는 상황이 발생할 수 있다. 이는 모든 transparent 한 물체들을 카메라의 view의 반대방향으로 정렬하여 차례대로 렌더함으로써 해결해야 한다.
이 때, Alpha test를 사용하게 되면, 쉽게 z-buffering을 사용하여 문제를 해결할 수 있다. Alpha test는 pixel별로 render 여부를 결정하기 때문에, 그려지지 않는 pixel에 대해서는 아예 넘겨주지 않을 수 있고, 그에 따라서 그려지지 않는 픽셀(투명한 픽셀)에 대해서는 z 값이 update되지 않는다. 따라서 z-buffer를 사용하여 그림을 그리면, 특별한 정렬 없이도 원하는 결과를 만들어 낼 수 있다.
--------------------------------------------------------
참고로 짧게 설명하자면, alpha blending은 두 픽셀의 색을 섞는 것이고
alpha test는 어떤 픽셀을 특정 value와 비교하여 그 결과를 바탕으로
픽셀에 대한 렌더 여부를 결정하는 방식이다.
Stencil buffer를 추가로 사용하여 두 가지 방식을 모두 사용할 수도 있지만
3개의 스텝을 돌려 얻는 결과나, 잘 선택되어 1개의 스텝만 도는 결과가 거의 같기에
잘 선택해 돌리는 편이 훨씬 이익이라 하겠다.
(사실 2번의 문제가 크다.)
그에 따른(2번 문제) 테스트는 시험기간에 해 봤었지만, 본 아티클에는 귀찮아서 패스 -_-
혹시라도 나중에 생각이 잘 안나면, 본 글의 내용을 바탕으로 직접 돌려보자.