블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (663)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (102)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (217)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total338,297
Today6
Yesterday63

early z

Study/Graphics / 2018.08.29 16:27

Early Z : 

- Z Test(Depth Test, 깊이 판정)를 미리 해서 비싼 Pixel연산을 피하자

- 일종의 픽셀단위 Culling 기법.


Z Test :

- 깊이 판정은 픽셀의 깊이 값을 깊이 버퍼의 깊이 값과 비교해서 픽셀의 가시성을 판단한다.

- 현재 픽셀이 다른 픽셀의 뒤에 있는지를 판단하여 뒤에 있다면 픽셀을 폐기하고,

  앞에 있다면 그 픽셀을 다음 단계로 넘겨 값을 z버퍼에 기록한다.


그렇다면 기존 Z Test의 순서는?

- 간단하게 말하자면 pixel shader(fragment shader) 다음.

   자세하게 말하자면 파이프 라인 참고.

- 왜 깊이판정을 ps 이후로 했을까?

- ps 연산에 따라 depth가 변경될 수 있기 때문에 ps 앞에서 하지 않음.


Early Z를 위해서는?

- 기존 하드웨어 동작방식이 바뀌는 거기 때문에 하드웨어에서 지원해 줘야 한다.

- Coarse-grained Z Culling vs Fine-grained Z Culling

- Depth Stencil buffer를 사용

- Early Z 비활성화 (Z buffer Optimization, 10page)

  - 그래서 ps에서 depth 값을 write(갱신)한다면 비활성화 된다. 

    (ps에서는 원하는 depth을 저장해야 하니)

  - ps에서 discard 하면 비활성화 된다.

    (ps에서는 버리려는데 write 할 수 있으니)

  - alpha-test을 쓸 경우 비활성화 된다.

    (discard와 마찬가지)

- 결국 ps에서 depth는 왠만하면 건들지 마라.


Early Z의 구현은?

- 하드웨어적으로 지원하고 적용될 수 있는 상황이라면 하드웨어에서

  내부적으로 사용되며 다른 멀티패스 기술(z pass 후 color pass)과 관련이 없다.

- OpenGL 이나 D3D 어디에서도 early z 작업을 지정하지 않는다.

  이 모든 작업은 하드웨어 관련 작업이며 사용 또는 미사용 설정은 할 필요 없이 

  하드웨어에서 자동으로 처리된다.

  즉, early z 는 실행가능한 조건충족하면 하드웨어가 알아서 지원한다.

- Depth/ Stencil buffer 사용

- Early Z를 하드웨어가 실행하는 조건을 충족시켜 주기 위해 사용하는 Early-Z Pass

- 1st pass에서 depth rendering, 2st pass에서 depth write 비활성화 하고 rendering.



Reference Link

- early-z를 이용한 pixel shader 최적화

- everything about early-z

- 3dmp - early z

- early z visibility test (early-z)

- early z and discard

- why discard pixel take a noticeable performance hit?

- 픽셀 셰이더의 기초

- wiki, HyperZ

- Applications of Explicit Early-Z culling, pdf

- Hierarchical Z-Buffer Visiblility

- microsoft early-z

- Triple Depth Culling

- Saving the Z-Cull Optimization

- Early Fragment Tests, Hi Z, Depth, Stencil and other benchmarks

- Early Fragment Test

- You Can Never Have a Custom Z Buffer Distribution and Early Z at the Same Time

- Early-Z

'Study > Graphics' 카테고리의 다른 글

Clipmaps  (0) 2019.06.15
early z  (0) 2018.08.29
hlod  (0) 2018.07.20
What is Texture  (0) 2018.03.10
texture format  (0) 2018.02.21
shader에서 채널값이 모자를 때...  (0) 2018.02.13
Posted by 붕대마음

최근에 달린 댓글

최근에 받은 트랙백

글 보관함