반응형

http://en.wikipedia.org/wiki/Deferred_shading

Deferred shading         From Wikipedia, the free encyclopedia

컴퓨터 그래픽스에서 디퍼드 렌더링은 쉐이더의 결과를 색상 프레임 버퍼에 즉시 쓰는 대신에 나중에 합쳐지기 위한 중간 저장버퍼에(G-Buffer 불리는) 쓰는  작은 파트로 나누고 계산되어 지는 쉐이딩 알고리즘 중에 하나인 삼차원 쉐이딩 기술이다. 현대 하드웨어의 구현은 불필요한 버텍스 변환을 피하기 위해 멀티 렌더 타겟(MRT) 사용하는 경향이 있다. 보통 한번에 필요로 하는 버퍼들은 쉐이딩 알고리즘에(예를들면 조명 방정식읽어질때(보통 입력 텍스쳐로만들어지고 최종 결과를 생성하기 위해 합쳐진다. 이러한 방식의 씬의 음영을 위한 계산과 메모리 대역폭은 가시적인 부분을 줄여지고 음영이 지는 깊이 복잡도는 줄어든다.


Advantages


디퍼드 쉐이딩의 주요한 장점은 조명으로 부터의 기하요소의 중복을 제거하는 것이다. 오직 한번의 지오메트리 패스를 필요로 하고 각각의 조명은 오직 실제 적용되는 픽셀들만 계산되어진다. 이것은 분명한 퍼포먼스 부하없이 씬에 많은 조명을 렌더링 있게 해준다. 진입부에 말한 다른 장점들도 있다. 이러한 장점들은 복잡한 조명 자원들의 관리를 간단하게 해주는 것과 다른 복잡한 쉐이더 자원 관리의 용이성, 소프트웨어 렌더링 파이프라인의 간략화를 포함한다.


Disadvantages


디퍼드 렌더링의 단점중 중요한 한가지는 알고리즘안에서 투명도를 다룰 없다는 것이다. 비록 문제가 Z-버퍼 씬에서는 일반적인 것이고 씬에서 투명한 부분의 렌더링을 늦추고 정렬하는 것에 의해 조절되는 경향이 있다고 할지라도. 깊이 필링은 디퍼드 렌더링에서 순서-독립적 투명도를 성취하기 위해 사용되어 있다. 그러나 추가적인 배치와 G-버퍼 크기의 비용이 있다. 다이렉트X 10 이후 버전을 지원하는 현재 하드웨어는 종종 상호적인 프레임율을 유지하기 위해서 충분히 빠른 배치들을 처리할 있다. 순서-독립적 투명도에 디퍼드 쉐이딩을 원할때는 같은 기법을 사용하는 포워드 쉐이딩보다 효과적이지 않다.

또다른 중요한 단점은 다중 머트리얼을 사용하기 어렵다는 것이다. 많은 다른 머트리얼들을 사용하는 것은 가능하지만 이미 크고 많은 양의 메모리 대역폭을 먹고 있는 G-버퍼에 많은 데이터의 저장을 요구한다.

기하 스테이지로부터 조명 스테이지가 분리되었기 때문에 생긴  중요한 단점중 하나인 하드웨어 안티 얼라이어싱은 이상 올바른 결과를 얻지 못한다. : 비록 기본 속성(디퓨즈, 노말 ) 렌더링할 사용되어지는 첫번째 패스는 안티 얼라이어싱을 사용할 있지만 안티 얼라이어싱을 필요로하는 전체 조명까지는 아니다. 제한을 극복하기 위한 보통의 기법중 하나는 마지막 이미지에 외곽선 추출을 하고 외곽선에 블러를 적용하는것이다. 하지만 최근에 고급의 -처리-외곽선-보정 기법이 개발되었다MLAA[5] (Killzone 3Dragon Age 2, 등등), FXAA[6] (Crysis 2FEAR 3Duke Nukem Forever), SRAA,[7] DLAA[8] (Star Wars: The Force Unleashed II), post MSAA (Crysis 2에서 디폴트 안티 얼라이어싱 기법). 하나의 유명한 기법은 Halo Reach에서 사용된 시간적-안티 얼라이어싱이다. 다이렉트X 10 디퍼디 쉐이딩에서 안티 얼라이어싱이 하드웨어에서 가능하게 멀티 샘플링된 렌더 타겟(10.1 버전에서는 깊이 버퍼도)에서 각각의 샘플에 접근하는 쉐이더의 기능을 소개했다이전 하드웨어에서 안티 얼라이어싱의 어떠한 이점을 잃게 할지도 모르지만  기능은 어떠한 경우에는 바람직한 안티 얼라이어싱의 형태를 만들어 주고 안티 얼라이어싱된 외곽선에 HDR 휘도 매핑을 정확하게 적용할 있게 해준다.


Deffered Lighting


디퍼드 라이팅은 (또한 -패스 조명이라 알려져 있는) 디퍼드 쉐이딩의 수정판이다. 기법은 디퍼드 쉐이딩에서 패스를 쓰던것 대신에 쓰리 패스를 사용한다. 기하요소가 넘어가는 첫번째 패스에서는 오직 픽셀당 조명(조도) 계산하기 위해 필요한 속성들만 G-버퍼에 쓴다. 오직 디퓨즈와 스페큘러 조명 데이터 출력후에 지연된 패스인 두번째 스크린-공간 패스는 조명 데이터와 최종 픽셀당 쉐이딩 출력값을 읽어와서 씬을 만들어야 한다. 디퍼드 라이팅의 분명한 장점은 G-버퍼의 크기를 극적으로 줄이는 것이다. 분명한 비용은 한번 대신 두번 기하구조를 렌더링할 필요가 있다는 것이다. 추가적인 비용은 디퍼드 쉐이딩에서의 디퍼드 패스는 오직 하나의 합쳐진 조도 값을 필요로 했지만 디퍼드 라이팅에서 디퍼드 패스는 디퓨즈와 스페큘러 조도를 분리해서 출력해야만 한다는 것이다. ( 부분은 기법을 조사해 봐야 정확하게 해석할 있겠음 -0-;;;)

G-버퍼의 크기를 줄여주기 때문에 기법은 부분적으로 디퍼드 쉐이딩의 심각한 단점을 극복할 있다. - 다중 머트리얼. 해결할 있는 하나의 문제는 MSAA이다. 디퍼드 라이팅은 DX9 하드웨어에서 MSAA 함께 사용될 있다.


Deferred lighting in commercial games

기법은 비디오 게임에서 많은 양의 동적 조명을 사용하고 필요한 쉐이더 명령의 복잡도를 줄여주는 기능을 컨트롤하기 때문에 사용이 증가되고 있다. 디퍼드 라이팅을 사용하는 게임의 몇가지 예를 들면 :

§  Alan Wake

§  Bioshock Infinite[11]

§  Blur

§  Brink

§  Crackdown and Crackdown 2[12]

§  Crysis 2[13]

§  Dead Space[14] and Dead Space 2[15]

§  Deus Ex: Human Revolution [16]

§  Grand Theft Auto IV

§  Halo: Reach [17]

§  inFamous and inFamous 2[18]

§  LittleBigPlanet and LittleBigPlanet 2[19]

§  Shift 2 UNLEASHED [20]

§  Stalker: Shadow of ChernobylClear Sky and Call of Prypiat[21]

§  Red Dead Redemption

§  Resistance series[22]

§  StarCraft II [23]

§  Uncharted and Uncharted 2[24]

§  Vanquish [25]

Deferred shading in commercial games

디퍼드 라이팅의 비교에서 기법은 높은 메모리 크기와 대역폭의 요구 때문에 매우 대중적이지는 않다. 특히 메모리 크기와 대역폭에 매우 제한적이고 자주 버틀넥이 걸리는 곳에서.

 

§  Battlefield 3[26]

§  Dungeons

§  Killzone 2 and Killzone 3[27]

§  Mafia 2

§  Metro 2033[28]

§  Rift

§  Shrek[29]

§  Splinter Cell: Conviction

§  Tabula Rasa[30]

§  Trine

§  Viva Pinata

§  Dota 2[31]

 

Deferred techniques in game engines

§  CryEngine 3 [32]

§  I-Novae [33]

§  Unity [34]

§  Frostbite 2 [35]

§  Unreal Engine 3 [36]

§  Chrome Engine

§  GameStart [37]

 

History

디퍼드 쉐이딩의 아이디어는 Michael Deering The triangle processor and normal vector shader: a VLSI system for high performance graphics 1998년도에 이름 붙여진 그의 대학 논문에서 소개되었다. 비록 논문은 "지연된"이라는 단어를 사용하지는 않았지만 중요한 컨셉은 소개되었다 : 픽셀은 깊이 해상도 후에 한번 음영 처리가 된다. G-버퍼를 사용하는 오늘날 우리에게 알려진 디퍼드 쉐이딩은 1990년에 Saito Takahashi 논문에 의해 소개되었다. 비록

들도 "지연된"이란 단어를 사용하지는 않았지만 말이다. 2004 그래픽 하드웨어 제품에서 구현을 시작으로 나타났다. 기법은 비디오 게임과 같은 프로그램에서 유명세를 얻었고 마침내 2008년에서 2010년에 메인 스트림이 되었다.

 

References

1.    ^ http://thecansin.com/Files/Deferred%20Rendering%20in%20XNA%204.pdf

2.    ^ "NVIDIA SDK 9.51 - Featured Code Samples". NVIDIA. 2007-01-17. Retrieved 2007-03-28.

3.    ^ http://diaryofagraphicsprogrammer.blogspot.com/2008/03/light-pre-pass-renderer.html

4.    ^ "Deferred shading tutorial". Pontifical Catholic University of Rio de Janeiro. Retrieved 2008-02-14.

5.    ^ http://igm.univ-mlv.fr/~biri/mlaa-gpu/TMLAA.pdf

6.    ^ http://www.ngohq.com/images/articles/fxaa/FXAA_WhitePaper.pdf

7.    ^ http://research.nvidia.com/publication/subpixel-reconstruction-antialiasing

8.    ^ http://and.intercon.ru/releases/talks/dlaagdc2011/

9.    ^ http://and.intercon.ru/releases/talks/dlaagdc2011/slides/

10.  ^ http://www.realtimerendering.com/blog/deferred-lighting-approaches/

11.  ^ http://gamer.blorge.com/2010/11/21/bioshock-infinite-development-is-ps3-focused-and-uses-uncharted-2-tech/

12.  ^ http://www.eurogamer.net/articles/digitalfoundry-crackdown2-tech-interview

13.  ^ http://www.slideshare.net/guest11b095/a-bit-more-deferred-cry-engine3

14.  ^ "Dead Space by Electronic Arts". NVIDIA. Retrieved 2008-02-14.

15.  ^ "Face-Off: Dead Space 2". Retrieved 2010-02-01.

16.  ^ http://translate.google.com/translate?hl=en&sl=ja&tl=en&u=http%3A%2F%2Fgame.watch.impress.co.jp%2Fdocs%2Fseries%2F3dcg%2F20100922_395310.html

17.  ^ http://www.eurogamer.net/articles/digitalfoundry-halo-reach-tech-interview

18.  ^ http://gamer.blorge.com/2010/11/21/bioshock-infinite-development-is-ps3-focused-and-uses-uncharted-2-tech/

19.  ^ http://www.digitalscrutiny.com/content/2011/01/littlebigplanet-2-tech-analysis/

20.  ^ http://www.eurogamer.net/articles/digitalfoundry-the-making-of-shift-2?page=2

21.  ^ Shishkovtsov, Oles (2005-03-07). "GPU Gems 2: Chapter 9. Deferred Shading in S.T.A.L.K.E.R"Nvidia. Retrieved 2011-02-02.

22.  ^ http://cmpmedia.vo.llnwd.net/o1/vault/gdc09/slides/gdc09_insomniac_prelighting.pdf

23.  ^ "StarCraft II Effects & techniques" (PDF). AMD. Retrieved 2010-02-28.

24.  ^ http://features.cgsociety.org/story_custom.php?story_id=5545

25.  ^ http://platinumgames.com/tag/deferred-rendering/

26.  ^ http://www.slideshare.net/DICEStudio/spubased-deferred-shading-in-battlefield-3-for-playstation-3

27.  ^ http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

28.  ^ http://www.eurogamer.net/articles/digitalfoundry-tech-interview-metro-2033?page=2

29.  ^ "History - Electric Sheep Games". Retrieved 14 April 2011.

30.  ^ "Deferred shading in Tabula Rasa". NVIDIA. Retrieved 2008-02-14.

31.  ^ "Valve Developer Wiki - Dota 2". Retrieved 10 April 2012.

32.  ^ "CryENGINE 3 Specifications". Crytek GmbH. Retrieved 2009-03-12.[dead link]

33.  ^ "Infinity Development Journal – Deferred Lighting". I-Novae Studios. 2009-04-03. Retrieved 2011-01-26.

34.  ^ Vosburgh, Ethan (2010-09-09). "Unity 3 Feature Preview – Deferred Rendering". Unity Technologies. Retrieved 2011-01-26.

35.  ^ "Lighting you up in Battlefield 3"DICE. March 3, 2011. Retrieved September 15, 2011.

36.  ^ "Unreal Engine 3 Showcase - Samaritan". Epic Games. 2011-03-10. Retrieved 2011-07-07.

37.  ^ "GameStart – Feature List".

38.  ^ Deering, Michael; Stephanie Winner, Bic Schediwy, Chris Duffy, Neil Hunt. "The triangle processor and normal vector shader: a VLSI system for high performance graphics". ACM SIGGRAPH Computer Graphics (ACM Press) 22 (4): 21–30.

39.  ^ Saito, Takafumi; Tokiichiro Takahashi (1990). "Comprehensible rendering of 3-D shapes". ACM SIGGRAPH Computer Graphics (ACM Press) 24 (4): 197–206. doi:10.1145/97880.97901.

40.  ^ "Deferred Shading" (PDF). NVIDIA. Retrieved 2007-03-28.

41.  ^ Klint, Josh. Deferred Rendering in Leadwerks Engine. Leadwerks.

 

See also

§  S.T.A.L.K.E.R.

§  Leadwerks Engine

§  Rockstar Advanced Game Engine

§  Unity Engine

§  Havok Vision Engine

 

반응형
Posted by msparkms
,