hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
Deferred Rendering
처음에는 Light-Pre Pass 방식으로 Deferred Rendering을 구현했었는데...

Normal

Depth

Diffuse

Specular

Final



Normal, Depth용으로 한번, 재질처리용으로 한번 총 2번의 DrawCall 그리고
Diffuse, Specular 따로 처리하려면 2개의 HDR 포맷 렌더타겟이 필요하다. 비용이 생각보다 꽤 들고, 기존의 Deferred 방식보다 더 복잡하다.

물론 최적화로 Diffuse(RGB), Specular(A) 이렇게 Specular 세기만 저장할 수도 있겠지만 그럼 색상이 있는 Specular를 표현하지 못하니까 별로 맘에 들지 않아 기존의 Deferred Rendering 방식으로 처리하기로 결정

Global Light Only


Deferred로 처리된 Local Light 포함

G-Buffer의 구성은 아래와 같다. 

MRT0 : Albedo(RGB), Specular(A)
MRT1 : Normal(RGB)
MRT2 : Depth(R32F)
MRT3 : Global Lighting(LogLUV)

Emissive나 환경맵 반사, SH를 이용한 Ambient 라이트 같이 객체별로 다른 특성을 가질 수 있는 조명 환경/특성이나 Directional Light같이 전체에 적용되어야하는 조명을 위해서 마지막에 LogLUV로 인코딩되는 버퍼를 하나 두었다. 

GPU PRO를 보니까 Call of Juarez2에서 MRT1의 Normal를 제외한 나머지 Alpha 성분에  SSS 특성을 저장했는데 그런 재질 특성을 추가적으로 하나 더 저장해놓으면 좋을것 같다. 

CPU로 스키닝 중이라 GPU로 하게하면 더 최적화 시킬 수 있을 것 같다. 둠3 모델들이 뼈대가 많아서 자동으로 나눠주는 알고리즘을 보고 있다. 


BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/04   »
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
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
바보가 아닌 Mr
V i n t e r s o r g
 Visitor Statistics
Total :
Today :
Yesterday :
rss