Godot은 GLES2 및 GLES3, 두 가지 렌더링 엔진을 지원합니다. 프로젝트를 시작할 때 GLES2 또는 GLES3 중에서 선택하고 가능한 경우 전환하지 않아야 합니다. 프로젝트는 이 두 렌더링 엔진 간에 전환할 수 있지만 전환하려면 추가 마이그레이션 작업이 필요합니다.
Android에서 이러한 렌더기는 각각 OpenGL ES 2.0 및 OpenGL ES 3.0 API를 사용합니다. GLES3 렌더기의 기능과 특징이 더욱 정교하며 GLES2 렌더기는 더 많은 Android 기기와 호환됩니다. 또한 렌더기는 동일한 입력 장면 데이터에 대해 약간 다른 시각적 출력을 생성합니다. 이러한 불일치는 GLES3 렌더기가 선형 색상 공간을 사용하는 반면 GLES2 렌더기는 색 공간을 사용하기 때문에 발생합니다.
렌더기 선택
GLES2
GLES2 렌더기는 그래픽 요구사항이 적당한 2D 또는 3D 프로젝트에 가장 적합하며 거의 모든 활성 Android 기기와 호환됩니다. 프로젝트가 구형 기기에서 제대로 실행 및 설계된 경우 이를 지원하는 GLES2가 가장 적합할 수 있습니다.
Android의 GLES2 렌더기에 있어 중요한 제한사항은 ETC1이라는 하나의 압축된 텍스처 형식만 지원된다는 점입니다. ETC1은 알파 채널을 지원하지 않습니다. 다른 엔진에서는 하나의 텍스처에는 색상 데이터가, 두 번째 텍스처에는 알파 채널 데이터가 포함된 이중 ETC1 텍스처를 해결 방법으로 사용할 수 있습니다. Godot은 이 작업을 하지 않습니다. Android에서 GLES2 렌더기를 사용하는 프로젝트는 알파 채널을 포함할 때 비압축 텍스처를 사용해야 합니다. 비압축 텍스처는 메모리를 훨씬 더 많이 사용하며 압축된 텍스처만큼 성능이 좋지 않습니다. 특히 리소스가 제한된 구형 기기는 큰 비압축 텍스처를 사용할 때 메모리 제한에 도달하는 등의 문제가 발생할 수 있습니다.
GLES2 렌더기에서 고급 렌더링 기능을 사용하지 못할 수 있습니다. GLES2 렌더기의 제한사항에는 다음이 포함되나 이에 국한되지 않습니다.
- 활성 실시간 조명당 성능 확장이 좋지 않습니다.
- 고화질 범위, 굴절 속성, 화면 공간 반사 또는 화면 공간 앰비언트 오클루전과 같은 렌더링 기능을 지원하지 않습니다.
- 셰이더 복잡도에 제한이 있습니다.
- 실시간 글로벌 일루미네이션 지원 기능이 없습니다.
- 입자에 대한 GPU 가속 지원 기능이 없습니다.
GLES3
GLES3 렌더기는 OpenGL ES 3.0을 지원하는 활성 Android 기기의 약 90%와 호환됩니다. 가장 오래된 활성 Android 기기에만 OpenGL ES 3.0 지원이 없습니다.
GLES3 렌더기는 모든 OpenGL ES 3.0 기기와 호환되지만 이전 기기는 허용되는 프레임 속도로 실행될 가능성이 작습니다. 일부 구형 기기에는 OpenGL ES 3.0 구현에 그래픽 드라이버 버그도 포함됩니다. Android의 GLES3 렌더기는 드라이버 버그가 제한적으로 완화되었습니다. 최신 기기에서는 이러한 문제가 크게 중요하지 않습니다.
GLES3 렌더기는 Android에서 ETC2 텍스처 압축 형식을 지원합니다. ETC1과 달리 ETC2에서는 알파 채널이 지원됩니다.
자세한 내용은 Godot 문서 - GLES2와 GLES3의 차이점을 참조하세요.