hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
'works/old'에 해당하는 글(24)
2008.10.17   k-DOP(discrete orientation polytopes)
2008.10.12   Direct Lighting, Image Based Lighting
2008.10.08   Parallel-Split Shadow Mapping
2008.10.08   Software Rasterizer


k-DOP(discrete orientation polytopes)

slab은 두 평행한 평면 사이에 있는 공간을 말한다.
k-dop은 미리 정해진 방향으로 slap들을 정의해서 boundng volume을 정의한다.

예를들어 AABB Box는 6-DOP인데 (1, 0, 0), (0, 1, 0), (0, 0, 1) 방향에 수직인 3개의 slab들로 정의된다.

k-dop 형식으로 정해진 bouding volume이 있을 때, 각각의 slab쌍에 대해 검사를 해서 하나라도 겹치지 않으면 충돌되지 않는다.

6-DOP인, AABB끼리의 겹침검사를 예를들어보면
bool TestOverlap(const DOP6& b0, const DOP6& b1)
{
    for(int i = 0; i < 3; ++i)
    {
         if(b0.min[i] > b1.max[i] || b1.min[i] > b0.max[i])  return false;
    }
    return true;
}

k-DOP을 이용해서 간단히 Convex Volume을 만들 수 있다.
k개 만큼의 평면을 구하고  그 평면으로 convex volume을 생성한다.

volume을 만들 떄 처음에는 AABB를 구하고 convex volume을 이루는 평면들로 잘라냈었는데, 그러면 k개보다 더 많은 폴리곤이 생성된다.

그래서 기준 평면들에 대한 최소, 최대값으로 사각형태의 폴리곤을 만든다음, 나머지 평면들로 잘라내는 형식으로 폴리곤을 생성했다.

사용자 삽입 이미지



Direct Lighting, Image Based Lighting

사용자 삽입 이미지

픽셀당 광선개수 : 16

사용자 삽입 이미지

픽셀당 광선개수 : 1024

사용자 삽입 이미지

Depth of Field 적용 전

사용자 삽입 이미지

Depth of Field 적용 후


참고자료
Physically Based Rendering (www.pbrt.org)
Advanced Global Illumination (A K Peters)



Parallel-Split Shadow Mapping

http://appsrv.cse.cuhk.edu.hk/~fzhang/pssm_vrcia/
넓은 지역에 대해 퀄리티 높은 ShadowMap을 구현하는 방법
Frustum을 여러개로 나누고 나눠진 Frustum 마다 ShadowMap을 만들어서 처리합니다.

사용자 삽입 이미지

위 이미지는 2048 한장으로 쉐도우맵을 처리했을 떄 그림자입니다.

사용자 삽입 이미지

이것은 512 4장으로 PSSM을 구현했을 때 그림자입니다. 그림자를 처리할 떄 경계선이 부드럽게 보이도록 bilinear PCF(3X3)처리를 햇습니다.


Software Rasterizer

옛날에는 하드웨어 가속이 존재하지 않았기 떄문에, 프로그래머들이 지금 D3D나 OGL같은 역할을 하는 모듈을 직접 만들었습니다.

D3D나 OGL이 렌더링이 어떻게 수행되는지 이해하고 싶어서 만들어 봤습니다.
구현할 떄 클리핑 부분에 대해서 애매하게 알았던 부분을 이해했습니다.

일반적으로 책에 나와있는 것 같이 정규화된 투영공간(-1~1)에서 클리핑을 하면 발생하는 문제는 w 성분으로 나누어 줄 때 z값이 항상 양수가 되기 때문에 near 평면의 clipping을 수행할 수가 없습니다.

그래서 Homogeneous 공간에서 Clipping을 수행합니다. 이 공간은 Perspective Matrix를 적용한 즉후의 공간, 즉 w로 나눠서 투영공간을 정규화(-1~1) 해주기 이전의 공간입니다.
Homogeneous clipping에 대해서는 아래 문서에 잘 나와있습니다.

- 게임 & 인터랙티브 애플리케이션을 위한 수학 5.4.4 동차 오려내기 p.227
- http://medialab.di.unipi.it/web/IUM/Waterloo/node51.html
- [Jim Blinn] A Trip Down the Graphics Pipeline : Line Clipping


사용자 삽입 이미지


내부적으로 VertexShader, PixelShader 클래스를 만들어서 D3D의 Vertex Shader, PixelShader를 흉내냈습니다.

위스샷은 Phong Shading이 적용된 모습입니다.

sw_rasterizer_bin-shader_x.zip



BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
1. realtime GI (0)
old (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/05   »
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 31
 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