본문 바로가기

DirectX/3D

Deferred shading from Wikipedia

http://msparkms.tistory.com/77


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

'DirectX > 3D' 카테고리의 다른 글

엔진 정보  (0) 2011.01.10
모션 네트워크(Motion Network) 개발 노트  (0) 2010.11.09
DX 함수 참고사항  (0) 2010.10.25
파생 탄젠트 공간의 매트릭스  (0) 2010.10.01
노말맵이란  (0) 2010.10.01