RAD 스튜디오 12.0 아테네 "새 기능 한글 요약본: Skia 통합" 입니다.
12.0 아테네의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글 자동 번역 보기) 와 관련 페이지를 보기 바랍니다.
12.0 아테네 새 기능 요약 - Skia 통합
RAD 스튜디오 12.0은 Skia 지원을 파이어몽키에서 지원하는 모든 플랫폼에 추가했다. Skia 라이브러리는 C++빌더와 델파이 모두 RAD 스튜디오 아테네에서 지원하는 모든 플랫폼을 완전히 지원한다. 심지어 최근에 추가된 ARM 용 iOS 시뮬레이터와 ARM 맥OS 64-비트도 지원한다.
RAD 스튜디오는 Skia와 인터페이스 하기 위해 Skia4Delphi 오픈-소스 프로젝트를 사용한다. 하지만, 그 오픈-소프 프로젝트 안에 없는 기능들도 추가했다 (예: Vulkan 드라이버)
Skia란
Skia4Delphi는 델파이와 C++빌더 용 크로스-플랫폼 2D 그래픽 API이다. 그 기반은 구글의 Skia 그래픽 라이브러리이다. Skia는 광범위한 2D API를 제공하므로 모바일, 서버, 데스트탑 모델에 걸쳐 이미지를 렌더링한다. 이것은 RAD 스튜디오 프레임워크들 (콘솔, FMX, VCL)과 플랫폼들과 호환된다.
이것은 일반적으로 사용되는 2D API들을 제공한다. 그 이유는 뒷편에서 사용되는 저-수준 라이브러리 구현 (예: OpenGL, Vulkan, DirectX, Metal)에 있는 복잡성을 추상화하고, 최적화와 새 기능들을 구현했기 때문이다. Skia 도움말을 보면 주요 기능들과 Skia 통합을 활성화하는 방법을 알 수 있다.
Skia-기반 UI 컨트롤(들)
Skia 라이브러리 통합으로 인해 몇 가지 새 네이티브 컨트롤(들)과 컴포넌트(들)이 제공된다. 이 컨트롤들은 Skia가 활성화되어 있는 경우에만 사용하할 수 있고 타겟 플랫폼으로 배포할 수 있다.
- TSkAnimatedImage: (백터 에니메이션 등) 애니메이션이 있는 이미지를 적재하고 렌더링하는 컨트롤이다.
-
TSkLabel: TLabel에서 지원하지 않거나 또는 구현이 다른 새 기능(들)을 구현하였다. 예를 들면:
- Font families (CSS에서 처럼 글꼴이 fallback 방식으로 적용됨)
- Font weight and slant
- 텍스트 안에서 여러 스타일 지원
- BiDi 지원 (오른쪽에서 왼쪽으로)
- 수평 맞춤 지원
- 텍스트 중 일부에 백그라운드 컬러 지원
- 자동 크기 옵션
- 수준높은 꾸미기 (꾸불꾸불한 밑줄, 점선, 등등)
- TSkPaintBox: Skia API를 통해 화면에 그리기를 OnDraw 이벤트에서 직접 한다.
- TSkAnimatedPaintBox: 애니메이션의 duration(동작 시간)을 지정할 수 있고, OnAnimationDraw 이벤트를 통해 Skia API를 사용하여 애니메이션의 진행을 그릴 수 있다
- TSkSVG: SVG를 표현하는 컨트롤
파이어몽키 Skia 렌더링
Skia 지원으로 인해, FMX에서 기본 캔버스를 Skia-기반 캔버스로 교체하는 것이 가능했다. 일단 Skia가 활성화되고 나면, 모든 FMX 컨트롤들은 자동으로 Skia-기반 구녛을 사용하여 그려진다. 그 결과 FMX (주로 모바일에서)와 전체 라이브러리 수준에서 그리기 성능과 품질이 향상되었다.
앱 렌더링이 Skia를 사용하도록 활성화하려면 Skia 도움말 페이지를 참조하면 된다.
Vulkan 백엔드
주의: 이것은 Skia4Delphi 오픈-소스 프로젝트 안에서는 찾을 수 없는 기능이다.
RAD 스튜디오와 함께 제공되는 Skia는 안드로이드 용 (그리고, 옵션으로 윈도우 용) Vulkan 백엔드를 지원한다. RAD 스튜디오의 Skia Canvas는 지원이 되는 안드로이드에서는 자동으로 Vulkan을 활용한다. 그래서, 그래픽 성능이나 에너지 효율 면에서 OpenGLES보다 향상되었다. (지원되는 경우) 윈도우에서 Vulkan을 활성화하려면, FMX.Types.GlobalUseVulkan을 True로 지정하고 FMX.Skia.GlobalUseSkiaRasterWhenAvailable를 False로 지정한다 (Initialization 섹션에서 지정).
uses System.StartUpCopy, FMX.Forms, FMX.Types, FMX.Skia, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin GlobalUseSkia := True; GlobalUseSkiaRasterWhenAvailable := False; GlobalUseVulkan := True; Application.Initialize; ...
알아둘 점: 안드로이드에서 Vulkan 백엔드를 사용하지 않도록 끄려면, (윈도우에서 켤 때 사용하는 것과 똑같은) GlobalUseVulkan를 사용하면 된다. 이 경우에는 비활성화하려는 것이므로 False로 지정한다.
Skia Shading Language(Skia, 그림자효과 언어, SKSL)
주의: 이것은 Skia4Delphi 오픈-소스 프로젝트 안에서는 찾을 수 없는 기능이다.
Skia 앱 렌더링을 래스터화(raterization)가 아니라 GPU 가속화를 통해 사용하는 경우, 파이어몽키는 강력한 SKSL을 활용하여 효과와 필터를 렌더링한다. 이 방식은 현재 방식에 비해 성능이 월등하고 Skia 캔버스의 효율성을 강화한다.
SKSL을 효과와 필터 생성 시 사용하여 얻게 되는 주요 이점은 관리 단순화이다. 단 하나의 그림자 코드베이스가 모든 플랫폼에 걸쳐 일관성있게 작동한다. 따라서 각 백엔드 API를 위한 여러 가지 코드가 필요하지 않으며 단일한 결과를 확실하게 얻을 수 있다.
애니메이션 코덱 (Animated Codec): WebP 인코더
RAD 스튜디오에 통합되어 들어간 Skia 버전은 애니메이션이 있는 WebP 인코딩을 지원한다. 파이어몽키의 새 애니메이션 코덱 기반을 통해, 새 인코더를 등록하여 인코딩/디코딩 하는 것이 가능하다.
WebP는 웹 상에서 가장 널리 사용되는 포맷 중 하나이다. 압축률이 JEPG에 비해 월등하기 때문에 더 작은 파일을 사용하면서도 더 좋은 품질을 유지할 수 있다. 또한 GIF와 비슷한 애니메이션 능력을 제공하면서도 프레임 손실이 없다. 즉 품질 저하가 없으며 압축이 된다. 게다가, 투명도을 지원하므로 매우 다양한 목적으로 사용할 수 있는 포맷이다. Skia Animated Codec 도움말에 예문과 더 많은 정보가 있다.
프린터 지원과 PDF로 출력하기
Skia가 활성화되면, 파이어몽키의 윈도우 용 네이티브 프린터는 Skia를 물리적 프린터의 백엔드로 사용한다. 그리고 PDF 문서 인쇄를 통해 모든 다른 플랫폼들을 지원하며, 윈도우가 타겟 플랫폼일 때는 옵션으로 XPS 인쇄를 사용할 수 도 있다. iOS와 안드로이드에서는, 이 프린터가 프린트를 할 수 잇는 파일을 생성하고, 완료되면 자동으로 공유된다. 예문과 더 많은 정보는 Skia FireMonkey Printer 도움말에 있다.
Skia C++빌더 지원
RAD 스튜디오 12.0 아테네는 Skia4Delphi를 C++빌더 용으로도 지원한다. 예를 들어, 프로젝트의 메인 데모가 C++로 작성되어 있어서 사용자들이 구현하는 것을 도와준다.이 데모를 보려면, RAD 스튜디오를 설치할 때, Samples를 설치해야 한다. 또는 엠바카데로 GitHub 리포지토리에 방문하여 다운로드 할 수도 있다.
Skia 데모(들)
설치 시 함께 받을 수 있는 Skia 데모는 다음과 같다.