깊아 값을 이미지로 만들어 놓아서 저장 한 것
Z Read(Z값을 읽는다) : Z값에 기록된 상태를 읽어서 자신이 그려지는지 확인
└ = Z Test(Z값을 테스트 한다)
Z Write(Z값을 쓴다) : 자신이 기존의 Z값보다 앞에 있다면 자신의 Z값을 덮어씌워 기록
AlphaTesting
└ 뒤에 있어도 보여져야 함. ( ex.유리창 뒤에 있는 공은 유리창에 반쯤 영향 받은 채 보임 )
└ 깊이테스트(뒤에 있으면 그리지 않음)를 무시해야 함.
└ 알파 채널 단계 중 일정 부분을 정해서 투명도를 0또느 1로 정해버림(반투명이 없음)
└ 해당 픽셀이 보이는가 안보이는가만 임의대로 결정
└ 퀄리티가 다소 떨어짐
└ 정렬은 생각하지 않아도 됨
└ 주로 나뭇잎, 풀 등의 표현에 사용 (양이 많고 크기가 작기 때문에)
└ AlphaBlending보다 비용이 적게 듦
AlphaBlending
└ 모든 픽셀이 언제나 보일 수 있음. ( ex.반투명의 유리가 수 십장 겹쳐져 있어도 전부 보임 )
└ Z버퍼에 의한 거리 판별은 무의미, 모든 픽셀은 이 픽셀이 보인다는 가정하에 얼마나 보이는 가 계산
└ 불투명한 오브젝트라도 일단 계산에 무조건 올라감
└ 중간에 불투명한 오브젝트가 끼어 있을 수 있기 때문에 깊이 테스트는 필요함
=> 제대로 sorting을 하지 않으면 가려진 투명한 오브젝트가 보일 수 있음
=> 가로지르는 경우 우선되지만 뒤에 있는 부분이 앞에 있는 부분을 가림
=> 머리의 경우 앞과 뒤가 동시에 보여질 수 있음
-> 방법 : 잘게 쪼갬, 알파 부분을 최소화, 알파 테스팅 사용
-> 프로그램팀 : 렌더링 레이어, 여러 Pass 사용
└ 이펙트에 사용, 투명한 유리 효과나 비치는 옷에 사용
>불투명한 것은 Z버퍼만으로 앞뒤 구별이 가능하니, 대충 찍어도 됨
>반투명한 것이 끼어 버리면 문제가 되므로, 불투명한 것 먼저 찍고 반투명한 것을 나중에 모아서 찍음
>반투명인 것은 먼저 찍히냐 나중에 찍히냐에 따라 문제가 생기기 때문에 반투명한 것은 순서를 판정해서 뒤에서부터 앞으로 찍어옴
Z Read = Off Z Write = On
└ Z Read = Off : 그려지는지 확인 안하고 무조건 그려짐
└ Z Write = On : 기존의 Z값보다 앞에 있다면 자신의 Z값을 덮어씌워 기록, Z값을 쓰기 때문에 나중에 생기는 오브젝트는 자신의 뒤로 가려짐
└ 알파 블렌딩을 사용할 때 짤림 현상이 일어나지 않음
└ 반투명한 것은 불투명보다 나중에 그림 -> 다른 오브젝트에 가려지지 않고 무조건 보이게 됨
└ Interface에 사용
Z Read = Off Z Write = Off
└ Z Read = Off : 그려지는지 확인 안하고 무조건 그려짐
└ Z Write = Off : 덮어 씌워지기만 함 => 뒤에있는 오브젝트를 나중에 그려도 오브젝트가 앞에 그려짐
└ Skybox에 사용
Z Read = On Z Write = Off
└ Z Read = On : 그려지는지 안그려지는지 확인
└ Z Write = Off : 덮어 씌워지기만 함
└ 알파 블렌드에 적절하게 됨 (앞에서부터 그려도 가려지는 일이 없음)
└ 순서에 따라 섞여지는 색이 달라짐
cf.
D3DRS_ZENABLE
- z버퍼를 유효하게 하라면, D3DZB_TRUE, w버퍼를 유효하게 하려면 D3DZB_USEW, 깊이 버퍼링을 무효하게 하려면 D3DZB_FALSE를 쓴다.
D3DRS_ZWRITEENABLE
- APP에 의한 깊이 버퍼에 쓰기를 유효하게 하려면 TRUE로 설정하여, 시스템이 새로운 깊이 값으로의 깊이 버퍼 갱신을 막을 수 있다.
cf. 참고
1부 바로가기
2부 바로가기
3부 바로가기
4부 바로가기
5부 바로가기
6부 바로가기
'programing > Graphics' 카테고리의 다른 글
GLUT 3.7.6 (0) | 2017.03.16 |
---|---|
3Dグラフィックス・マニアックス (0) | 2016.09.19 |
PBR과 Diffuse와 Albedo (2) | 2016.08.19 |
[펌]DirectX 11 테셀레이션(Tessellation)—테셀레이션이 무엇이고, 왜 중요한가 (0) | 2016.08.16 |