CL Raytracer 는 Common Lisp 으로 구현된 레이트레이서로 다음과 같은 특징을 가진다.
- 실용성 - 없음
- 속도 - 무진장 느림
- 특별히 좋은 특징 - 전혀 없음
즉, 다른 것으로 짠 것에 비해 장점이 하나도 없다는 것이 된다. 그럼에도 불구하고 시작하는 것은 그냥 취미 생활이다. 아마도 주중에는 거의 건들지 못하고, 주말 같은 여가 시간에 잠깐씩 할 것 같다. CL 로 짜는 이유는, CL 공부겸, 취미겸 하는 것인데, 사실 기본적인 구현은 전혀 어렵지는 않은 것이라 그다지 공부가 되지 않을 것 같기도 하다.
뭐, 사실 레이트레이싱이 반사만 제대로 되도 적어도 반짝 반짝하는 정도는 볼 수 있는데, 텍스쳐와 복잡한 장면까지 구현은 사실 좀 막막하다(원래 목표는 KD-Tree 까지 넣는 것이다).
아무튼 그저께 시작해서, 만 하루가 조금 넘었는데, 생각보다 진도가 빨랐다. 지금은 기본적인 구조는 잡혔고, 실제 쉐이딩 연산은 노멀을 사용해서 간단하게 했으며 내일이면 퐁 쉐이딩까지는 가능 할 듯 하다.

2 Spheres
소스는 공개한 상태에서 진행 될 것이다. 지금은 스프링노트에는 vector.lisp 만 공개 되어 있고, 소스포지에는 정리 안된 코드 그냥 넣었음.
문제는 스프링노트는 소스를 공유하기에 매우 안좋은 환경 같다. 아무래도 소스는 소스포지나 구글코드를 이용하고, 수정 내역만 스프링노트와 병행하면서 기록하는게 나을 것 같다.
- 소스 코드의 개선 방안 지적 매우 환영
- 소스 코드를 공유하기 위한 좋은 환경 추천 ㄳ
아, 속도는...... 음.... 느려도 진짜 너무너무 느리다. -_-ㅋ 400x300 해상도에, 씬은 고작 구 2개. 초반에는 1분 안에 끝나겠는걸? 했는데, 점점 느려지더니, 무려 4분 15초가 걸렸다. 모든 결과가 리스트로 쌓이기 때문에 느려지는 듯하다. 차차 속도 개선 방법도 좀 생각해봐야겠다.
PS. 논문 진행이 좀 막혀서 스트레스를 여기에 다 풀어버린듯 -_-ㅋ
PS. 윈도우 환경이라 텍스쳐를 얻거나 하기 쉽지가 않을 것 같다. 텍스쳐를 이미지가 아닌 Procedural Texture 로 처리하도록 구현을 해야겠다.
추가
라이트와 쉐이딩을 추가했다.

Phong Shading 추가
추가 2
쉐도우 레이까지 추가

쉐도우 추가! Scene 에 global ambient 를 살짝 넣어서 조금 밝아졌다.







536924
119
559






댓글을 달아 주세요