[개발일지] 텍스쳐 렌더링 성공!, 절두체 컬링과 렌더링큐 제작 완료!

17
  • 오늘은 Material System과 게임엔진에서 사용하는 메인 렌더큐를 제작했습니다.

  • ISurfaceMaterial이라는 인터페이스를 가지고 있으며 쉐이더나 렌더 스테이트.. 또는 쉐이더 파라미터 값을 세팅할수 있습니다.

  • 모델은 제가 과거에 일했던 회사에서 쓰던 모델인데 테스트로 썼습니다. ㅋ

  • 또한 SceneCamera 컴포넌트 역시 제작 했습니다.

  • 카메라 컴포넌트는 기본적으로 '독립 카메라 모드'와 '자식 카메라 모드' 두가지 모드가 있습니다.

  • 독립 카메라 모드는 렌더큐를 가지고 있으며 또한 버퍼 Clear기능도 가지고 있습니다.

  • 자식 카메라 모드는 독립 카메라 모드에서 SceneActor를 이용해 자식 노드로 놓을 경우 독립카메라의 종속됩니다

  • 이경우 렌더큐는 따로 가지지 않으며 버퍼 Clear역시 하지 않습니다.

  • 추후 카메라가 여러개가 있을 경우 멀티 쓰레드로 각자 렌더링 데이터를 채워주는 기능을 넣으면 멀티 쓰레드 렌더링에 큰 도움이 될것 같습니다. 기능 자체는 일단 넣어놨습니다.

  • 아래를 보시면 여러개의 모델을 렌더링하는데요.. 한 3000마리 정도 렌더링 하는것 같습니다. 이경우 절두체 컬링이 들어가서 카메라 밖의 객체는 렌더링하지 않도록 수정했습니다.

  • 배틀필드의 프로바이스트 엔진을 개발한 개발자의 GDC 발표 자료를 보면 .. 특별한 BVH 컬링 없이 오직 SIMD절두체 컬링과 오클루전 컬링을 통해서 화면 렌더링의 컬링 작업을 완수했다고 합니다.

  • 그래서 오클루전 컬링은 아직 없지만.. SIMD절두체 컬링을 GDC 발표자료 그대로 넣어서 구현했습니다.

  • 테스트 결과 아래와 같습니다.

  • 아.. 2배정도 밖에 안빠르네요.. SSE를 이용해서 구현했는데요. 메모리 순서나 배치 역시 SIMD에 맞게 했는데

  • 2배밖에 안빠릅니다. 문서상으로는 4~5배는 빨라야 하는데.. ㅎㅎ 아직 기능이 많이 없어서 그런걸수도 있겠습니다.

  • 아니면 클래스나 데이터 구조의 설계가 좀더 캐쉬 친화적이도록 연속적인 방식으로 만들어야 가능할 수치일수도 있습니다.

  • 일단 여기서 한번 소스코드 정리 및 최적화, 소스코드 안정화 등등 굳히기 한번 들어가야 할것 같습니다.

감사합니다.

로그인한 회원만 댓글 등록이 가능합니다.

개발한당

KR | ID | EN
  • IDR
  • KOR
7.66 =0.00

2026.09.25 KEB 하나은행 고시회차 3704회

다가오는 한인 행사일정

  • 등록 된 일정이 없어요!