GMS2 리소스 최적화

겜스2의 텍스쳐 그룹 최적화 개요.

겜스2는 기본적으로 뎁스(depth)로 코드의 실행 순서를 제어한다.
뎁스가 높을수록 (1000) 실행이 우선되며, 낮아질수록 늦게 실행된다. 그래서 룸의 백그라운드 레이어가 항상 제일 높다.

겜스2는 텍스쳐팩커(Texture Packer)와 같이 그래픽 리소스를 텍스쳐 그룹으로 만들 수 있다.
그룹을 지정하지 않는다면, 디폴트 그룹으로 간다.

여기서 중요한게, 레이어 별로 텍스쳐 스왑이 일어난다는 점이다. 예를들어, 텍스쳐 그룹 1,2 가 있고, 레이어가 1,2 가 있다고 가정해보자. 레이어 1,2에 들어가는 텍스쳐가 텍스쳐 그룹1 에만 포함되있다면 텍스쳐 스왑은 일어나지 않게된다. 하지만 레이어 1 에는 텍스쳐 그룹 1, 레이어 2 에는 텍스쳐 그룹2 가 포함이 된다면 레이어 1을 읽을때는 텍스쳐 그룹 1, 2를 읽을때는 텍스쳐 그룹 2를 읽게 되어서 스왑이 일어나게 된다. 이 과정에서 자원 소모가 심하다는. 특히, 텍스쳐 그룹의 크기가 2048 x 2048처럼 큰 크리라면 더욱 더 비용이 커진다.

요는, 전 레이어에 들어가는 텍스쳐를 같은 텍스쳐 그룹에 두는 것이 제일 좋고, 그게 안된다면 레이어 1, 2, 3 이 있다면, 레이어 1, 2는 같은 텍스쳐 그룹, 3은 다른 텍스쳐 그룹으로 나눠서 스왑을 가능한 줄이는 것. 레이어 1, 3 이 같은 텍스쳐 그룹에 레이어 2가 다른 텍스쳐 그룹이라면, 레이어 1에 대한 텍스쳐 그룹을 읽고, 다시 2에 대한 텍스쳐 그룹을 읽고, 다시 3에 대한 텍스쳐 그룹을 읽기때문에 스왑이 2번 발생하게 된다. 불가결하게 스왑을 해야하는 상황이라면 될수 있는 대로 텍스쳐 그룹을 작게 쪼개자.

comment

タイトルとURLをコピーしました