서버로부터 Voxel 데이터 수신 후 3D Mesh빌드.
체감상 1프레임도 안떨어지는 정도로 개선했다.
서버로부터 Voxel데이터 수신 ->
멀티스레드로 Voxel데이터 ->
삼각형 매시 변환, 라이트 계산을 위한 Patch데이터 생성 ->
멀티스레드로 라이트 계산
이 과정으로 진행된다.
라이트 계산이 좀 오래 걸리는데 대략 20ms정도 초과하면 일단 끊고 라이트 계산을 종료하도록 했다. 라이트 계산을 완료하지 못한 오브젝트들은 라이트 계산을 위한 리스트에 다시 넣고 다음 프레임을 기약한다.
이것이 이번 개선 포인트
영상에선 삼각형 매시 빌드 후에 매시가 깜빡거리는것처럼 보인다.
복셀 데이터를 삼각형 매시로 변환할때는 라이트컬러를 흰색으로 설정하고, 이후 프레임이 진행될때마다 조금씩 계산을 해서 갱신하는데, 꽤 빠르게 완료하기 때문에 깜빡거리는것으로 보인다. 싱글스레드로 돌리면 오브젝트별로 라이트맵이 갱신되는 과정을 확인할 수 있다.
처음엔 꽤나 고민했는데 어떻게든 게임 플레이할만한 정도로 충분히 개선했다.
복셀마다 지정된 컬러테이블(텍스쳐 테이블) 압축해서 송수신하는게 남았다.