Friday, January 8, 2010

Shading Rate vs. Pixel samples in Renderman.

"Decoupling between shading and sampling in RenderMan."

Renderman rendering과정(REYES Algorithm)을 크게 둘로 나눈다면 shading rate가 영향을 받는 부분 까지와 이후 영향을 안받는 나머지 후반 부분, 즉 pixel sampling이 지배하게 되는 단계로 나눌 수 있겠다. 이 두단계를 서로 영향 안받게 만듬으로 RenderMan은 pixel sampling(super sub-sampling)에 자유로움을 갖게 되었다. 이는 모든 Renderer의 최대의 적 aliasing issue에 대해 보다 자유로워 질수 있고 많은 투자 없이도 좋은 quality로 final pixel까지 가게 해 주었다. 더 나가 motion blur와 DOF에서 요구되는 충분한 samples을 얻는데 쉽게 갈수 있는 길을 열어 주었고 할 수 있겠다.

하드웨어 사용면에서 보면, 이로써 shading과 hidden surface calculations와 분리를 하였기에 많은 부하를 줄일 수 있게 됐다. shading 과정에는 메모리 먹는 괴물 texture가 포함되어 있기에 sampling 과정에서 나오는 또 다른 메모리 포식자 visible point lists와 분리 시킴으로써 효울적인 메모리 관리가 가능하게 된 것이다.

이런 완전, 완벽한 분리는 RenderMan같은 종류의 Reyes Renderer에 pure ray-tracing renderer 가 따라 올 수 없는 많은 독특한 특징을 지어준다고 볼 수 있다.

단점으로는 미리 shading 되어 있는, 차려진 밥상에서만 가지고 a pixel안에서 sub-sampling이 들이가기에 painted texture 와 procedural texture에 high frequency 지역에서 aliasing이 방치되게 된다. sub-sampling으로 쪼개진 만큼 texture 또한 같은 sampling이 이루어져야 하는데 이미 shading에서 끝나 버렸기에 돌아 갈수가 없는 것이다. (참고로 모든 신호 체계는 reconstruction단계에서 Nyquist sampling 법칙에 의해 두배이상의 sampling을 요구한다.) 그래서 미리 high frequency를 신호를 막기위해 RenderMan은 pre-filterd texture를 쓰게 된다.

procedural texture는 얘기가 더욱 복잡해 지는데, 선분 하나 그어도 filtering을 shading script차원에서 미분까지 들쳐 가면서 만들어 줘야 하기에 그리 간단하지 않은 것이다.

반면 일반적인 Ray-tracing Renderer들은 지금 얘기와 반대로 이해하면 될것이다. 그러기에 다른 renderer에서는 super sub-sampling위해 primary sample 수를 늘려주는 만큼 드라마틱하게 rendering time이 늘어나게 되는 것이다. 물론 나름대로 primary sample 수를 줄이기 위해 여러 대처 방식(예:Adaptive sampling)으로 그 늘어난 시간과 메모리를 효율적으로 만들려고 노력하지만 근본적인 구조의 디자인이 다르기에 쉽게 Renderman같은 효과를 못 내는 것이다.

Monster Inc.부터 쓰이기 시작한 Deep shadow maps이 renderman에서 그리 많은 추가 비용이 필요 없이 효울적인 사용이 가능한 것도 Decoupling between shading and sampling의 프로세서를 가지고 있기 때문이다. deep shadow maps의 주요 특징중에 하나가 기존의 한 pixel에서 한 sample만 가능 한 traditional shadow map과 달리 sub-sampling이 가능하여 fur같이 pixel보다 작은 geometry의 detail을 놓치지 않고 shadow 생성 할 수 있는 것이다. 다시 말하면 shadow camera에서 depth map을 생성시 shading단계까지 오는 micropolygons 생성 과정이 traditional shadow maps과 deep shadow maps방식은 같고 shadow map이기에 당연히 shading은 생략을 하면서 sampling 단계 부터 서로 다른 길을 가게 되기에 reyes의 Algorithm을 갖고 있는 renderer는 부담 없이 deep shadow maps을 더 정확하게 효율적으로 쓸 수 있게 된 것이다. 이외에도 정말 환상적인 어드밴스 기능이 많은 deep shadow maps이기에 다음 기회에 이것만 갖고 더 자세히 얘기하기로 하겠다.

참고로 Mental ray도 이같은 방식의 shadow map을 지원하지만(called: detail shadow map), 어떻게 진행 시키는지는 잘은 모르지만(알 수가 없음) renderman과 같은 결과는 기대하기 힘든 것 같다.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home