FMX

Skia for Delphi

지병철 2023. 7. 6. 17:12

Skia for Delphi 에서 사용하는 리소스는 세 가지 이다.

1. Skia (TSkSvg)   

   > Scalable Vector Graphics

   > XML 을 이용한다

   > 확장자가 SVG (Scalable Vector Graphics) 인 이미지 파일이다

   > 속도가 빠르고, 아이콘, 배경화면 등 사용성이 좋다

2. Lottie Animation (TSkAnimatedImage)

   > GIF 같은 움직이는 이미지를 Vector 형식으로 만든 것이다

   > SkAnimatedImage.Animation.Progress := 값 (0~1) 을 넣으면 Progress 를 조정할 수 있다.

   > Json 을 이용한다

3. Shader Language (TSkAnimatedPaintBox)

   > 프로그래밍을 이용하여 움직이는 그림을 만든 것이며, 마우스 등에 반응하도록 만들 수 있어서, 이를 이용하여 게임을 만들 수 도 있다.

   > 기존에 만들어진 것을 이용하면, 꽤 멋진 움직이는 배경이나, 기타 기능을 사용할 수 있는데, 자기가 원하는 것을 만드려면, Shader Language 를 공부해야 하기 때문에, 진입장벽이 높다고 생각된다.

 

 

* Skia4Delphi Homepage : https://skia4delphi.org/

 

Skia4Delphi

 

skia4delphi.org

* Skia4Delphi 설명하는 동영상 https://www.youtube.com/watch?v=rtnipmzWXhE 

아래는 위 동영상에서 설명하는 것을 간단히 적어보았다

 

* SKIA 란?

원래는 Google Project 였음(Skia는 2005년에 구글에 인수되었고, 2008년에 오픈소스로 출시되었음)

다양한 하드웨어 및 소프트웨어 플랫폼에서 공통 API를 제공하는 오픈 소스 2D 그래픽 라이브러리 임.

Skia 라는 단어는 2017년 플러터의 출시로 크게 알려졌음.

* SKIA 의 특징

매우 성능 좋은 그래픽을 생성, 초고속이고, 모양/경로/텍스트/렌더링 같은 작업을 수행한다.

SVG 를 수행하며, 매우 우수한 .SVG 렌더링 라이브러리 임.

   > 2D Drawings - Shapes, paths and texts (Vector Graphc)

   > SVG - Rednering and creation

   > Image Formats - BMP, GIF, ICO, JPG, PNG, WBMP, WEBP, and raw images

   > Animated Image Formats - Lottie, Telegram Stickers, Animated GIF, and Animated WEBP

   > Antialiasing - High quality drawings with smoothing of jagged edges

   > Parallelism - Possibility to draw in backgroud threads in a really parallel way

   > PDF - Creation of PDF Documents

   > Advanced Font Properties - Font weight, families fallbacks, custom font (in a simple way), max number of lines...

     (Delphi 사용자가 이 폰트 부분에 관심이 많다)

     (아래처럼 하면, 폰트를 시스템에 설치할 필요가 없다고 함)

   > RTL Language - Support for texts in Persian, Arabic, Hebrew and other right-toleft languages

   > Unicode - Render and string parser (grapheme iterators)

   > Image/Color Filters - Apply and type of filter to adjust photo colors, color drawings, produce effets

   > Shader Language Standardization - Create a single shader code to execute drawings with the GPU on any platform

 

* Skia4Delphi 란?

구글라이브러리를 가져와 Delphi 에서 사용할 수 있도록 만든 것

   > Open Source : Users a modifed fork of Google's Skia

   > Cross-Platform & Multi-Framwork

   > 2D graphics library for Delphi

   > Drawing : Text, Animations, Images

   > Focus on Quality & Performance

 

* Skia4Delphi Libaray

   > Skia API : Access to the pure Google Skia library, through a single unit: Skia.pas

   > Skia Controls :

   > Enable Skia

   > 같이 배포되는 파일 (Enable Skia 를 선택하면, 자동으로 Deployment 에 추가도며, 번들로 제공된다)

* SVG 제작 툴 : Inkscape, Adobe Illustrator

- SVG 소스는 XML 로 되어 있음

 

* Lottie Animation

- 처음에는 Airbnb 에서 디자인 했음.

- 사이트

   > lottiefiles.com, lordicon.com, useanimations.com, icon8.com/animated-icons, iconscout.com/free-lotties

 

* 셰이더

- 셰이더 언어는 셰이더 효과를 위한 프로그래밍 언어

- 가장 인기 있는 셰이더 언어는 Open GL 인 GL 셰이더 언어 임. (Open GL Shading Language)

https://en.wikipedia.org/wiki/OpenGL_Shading_Language#:~:text=OpenGL%20Shading%20Language%20(GLSL)%20is,on%20the%20C%20programming%20language. 

 

OpenGL Shading Language - Wikipedia

From Wikipedia, the free encyclopedia High-level shading language Video games outsource rendering calculations to the GPU over OpenGL in real-time. Shaders are written in OpenGL Shading Language and compiled. The compiled programs are executed on the GPU.

en.wikipedia.org

skia.org/docs/user/sksl/

 

SkSL & Runtime Effects

Overview SkSL is Skia’s shading language. SkRuntimeEffect is a Skia C++ object that can be used to create SkShader, SkColorFilter, and SkBlender objects with behavior controlled by SkSL code. You can experiment with SkSL at https://shaders.skia.org/. The

skia.org

https://github.com/jimmckeeth/SkiaSimpleShaderViewer

 

GitHub - jimmckeeth/SkiaSimpleShaderViewer: A simple Skia Shader Language (SkSL) viewer written in Delphi with Skia4Delphi.

A simple Skia Shader Language (SkSL) viewer written in Delphi with Skia4Delphi. - GitHub - jimmckeeth/SkiaSimpleShaderViewer: A simple Skia Shader Language (SkSL) viewer written in Delphi with Ski...

github.com

thebookofshaders.com

 

The Book of Shaders

Gentle step-by-step guide through the abstract and complex universe of Fragment Shaders.

thebookofshaders.com

shadertoy.com

 

Shadertoy BETA

 

www.shadertoy.com

https://shaders.skia.org/  (Shader Language 를 테스트 할 수 있음)

 

Skia Shaders Playground

 

shaders.skia.org