실시간 레이트레이서

segfault의 이미지

http://www.saarcor.de

90MHz로 동작하는 FPGA입니다.

스텐실 버퍼 쉐도우나 GPU 쉐이더를 쓰지 않고 순수 100% 레이트레이싱으로 이미지를 처리한다고 합니다.

1억 8천만개의 폴리곤을 5~10fps로 뿌리는 수준이랍니다 OTL

SunCor: 187,145,136 triangles, 5622 objects

Terrain: 10,469,866 triangles, 264 objects

jachin의 이미지

우오... 90 Mhz 라... 이거 너무 무서운거 아니에요?

fibonacci의 이미지

헉... 실시간 레이트레이서 -0-;

No Pain, No Gain.

lazylady의 이미지

흐흐 시각적으로는 메트릭스의 구현이 멀지 않은 듯..
그런데 레이트레이싱이라면 그림자 뿐만 아니라 굴절, 반사 등의 데모가 제공 되야 되는 거 아니에요?

건축과 다니면서 프로그램 공부하는 이상한 사람;;

lazylady의 이미지

lazylady wrote:

그런데 레이트레이싱이라면 그림자 뿐만 아니라 굴절, 반사 등의 데모가 제공 되야 되는 거 아니에요?

아.. 있었군요.-_-

건축과 다니면서 프로그램 공부하는 이상한 사람;;

dopesoul의 이미지

FPGA 의 특성상 그리 놀라운 일은아닌듯한데요...
아닌가?

kirrie의 이미지

레이트레이싱이 뭔가해서 구글링 해봤습니다.

"레이트 레이싱"이 아니라,
"레이 트레이싱(Ray Tracing)" 이군요. :oops: :oops:

--->
데비안 & 우분투로 대동단결!

jachin의 이미지

dopesoul wrote:
FPGA 의 특성상 그리 놀라운 일은아닌듯한데요...
아닌가?

90 Mhz 라는 클럭 속도는 물론 별로 대단한 것이 아닙니다만, Clock Per Instruction 과 같이 클럭 당 폴리곤 처리 용량이 엄청나지 않습니까? 겨우 90 Mhz 에서 1억 단위 이상의 폴리곤 프레임을 5개나 처리하다뇨...

어떻게 구현했을지 정말 궁금합니다. +_+

segfault의 이미지

단일 머신에서 1억개에 달하는 트라이앵글 데이터를 전부 메모리에 올리기는 사실상 불가능합니다.

저 하드웨어에서는 일종의 가상메모리 기법으로 이 문제를 해결하는 것 같군요.

수 GB대에 달하는 트라이앵글 데이터도 몇 메가바이트의 물리적 메모리만 있으면 다룰 수 있다고 합니다.

참고하세요.

http://graphics.cs.uni-sb.de/Publications/2003/Schmittler_Leidinger_Slusallek-VMA4RT-preprint.pdf

덧 : 저 기술이 상용화된다면, 아마 복셀 엔진 개발에 큰 도움이 될지 싶습니다.
지금의 복셀 엔진의 가장 큰 한계점이 바로 메모리입니다.
방대한 양의 복셀 데이터를 넣어둘 메모리 공간이 절대 부족하기 때문이지요.
예를 들어서, Ken silverman씨의 Voxlap( http://www.advsys.net/ken/voxlap.htm )을 써보시면 알겠지만, 저 엔진은 복셀 데이터를 하드디스크에 풀어놓고 씁니다..
게다가 필드의 크기는 1024x1024x256으로 제한되어 있죠...

chadr의 이미지

죄송하지만 FPGA가 어떤 물건인가요??

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

chadr의 이미지

babjo87 wrote:

저 하드웨어에서는 일종의 가상메모리 기법으로 이 문제를 해결하는 것 같군요.

수 GB대에 달하는 트라이앵글 데이터도 몇 메가바이트의 물리적 메모리만 있으면 다룰 수 있다고 합니다.

가상메모리 기법을 사용하더라도 어차피 물리메모리는 한정되어있기 때문에 page fault가 일어날 경우 하드에서 데이터를 읽어와야하는 오버헤드와 이를 다시 복원하여 메모리에서 엑세스하는 오버헤드도 상당할 텐데 실시간으로 10fps로 렌더링 하는게 신기하군요..

문서를 더 읽어봐야겠습니다.:)

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

앙마의 이미지

chadr wrote:
죄송하지만 FPGA가 어떤 물건인가요??

저도 잘 모르지만 프로그래밍이 가능한 비메모리 반도체 정도로 이해하고 있습니다. 다른 분들이 정정 및 추가 답변을 해 주실듯. ^^;

autography

인간에게는 자신의 운명을 거부할 권리가 있다.

앙마의 이미지

kirrie wrote:
레이트레이싱이 뭔가해서 구글링 해봤습니다.

"레이트 레이싱"이 아니라,
"레이 트레이싱(Ray Tracing)" 이군요. :oops: :oops:

저도 붙여써 놔서 새로운 뭔가가 있는줄 알았습니다.
레이 트레이싱이라고 써 놓으니 그래픽스 시간에 배운 기억이 납니다. 광선 추적이라고 해석하나요?

autography

인간에게는 자신의 운명을 거부할 권리가 있다.

hyang의 이미지

chadr wrote:
죄송하지만 FPGA가 어떤 물건인가요??

Field Programmable Gate Array 입니다.

logic cell들을 Look Up Table(LUT)를 참조하여 적절히 이어서 원하는 논리 회로를 합성해냅니다.

동적으로 원하는 회로를 합성해서 테스트해볼 수 있으므로 집적회로의 프로토타입용으로 많이 사용합니다.

GAL,PAL,PLD 같은 programmable 회로 라고 생각하시면 됩니다;;;

우리는 지금 미쳐있는 상태다.

jachin의 이미지

chadr wrote:
죄송하지만 FPGA가 어떤 물건인가요??

Field Programmable Gate Array 라는 것으로 논리형 게이트 소자가 쭈~욱 깔려있습니다. 정말로 Gate 의 Field 입니다. 각 게이트를 연결할 수 있는 전선의 역할을 하는 도선이 사방팔방으로 뻗어 있으며, 각 도선이 만나는 곳 마다 연결을 위한 소자가 붙어 있어서 외부의 입력을 통해 도선을 연결(개념적으로 이렇게 설명했지만, 사실은 논리적 Synthesis 와 Routing 을 거쳐 Implement 의 작업을 거칩니다.) 할 수 있습니다. Xlinx 와 Altera 가 주로 많이 쓰이고 있지요.
chadr의 이미지

아.. 그렇군요!! 잘 배웠습니다. :)

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.