이 모든 것이 스마트폰 탓이다! 지금은 모든 사람들이 디스플레이가 달려 있는 것이라면 그게 무엇이든 ‘스마트폰’과 같은 사용자 인터페이스를 기대한다. 커피 메이커, 보안 시스템, 온도 조절기 패널 등 조금만 둘러봐도 컬러 화면을 갖추고 있는 기기들을 볼 수 있다.

이렇게 간단한 제품들에도 소비자의 새로운 기대가 더해져 개발자들은 이제 새로운 과제를 안게 됐다. 리소스의 제약을 받는 임베디드 그래픽 애플리케이션의 경우 제한적인 RAM과 프로세싱 성능을 바탕으로 알파 블렌드 백그라운드(alpha-blended backgrounds)를 사용해서 어떻게 아이콘을 작성할 수 있을까?

이 글에서는 바로 그 문제를 해결하는 방법에 대해 논의한다. 좀 더 구체적으로는 알파 블렌드 백그라운드를 사용해서 아이콘을 어떻게 효율적으로 작성할 수 있는지 살펴볼 것이다. 이를 위해 선별적 알파 값을 사용한 알파 블렌딩, 라인 단위 프로세싱 루틴, 전역 투명 컬러를 사용한 비-직사각형 아이콘 작성 같은 일련의 기법들을 조합해 사용한다.
 

[그림1] PIC24FJ256DA210 MCU를 사용해 알파 블렌드 백그라운드를 기반으로 작성된 아이콘 예

알파 블렌딩(alpha blending) 연산은 새로운 픽셀(포그라운드)을 화면상의 기존 픽셀(백그라운드)과 합쳐 부분 및 전체 투명 효과를 만들어내는 것이다. 여기에서는 알파 값이 투명도를 결정한다(공식 1).

공식 (1):  Rp = Fp α + Bp (1 ? α)
                Rp - 알파 블렌드 픽셀 결과 값
                Fp - 포그라운드 픽셀
                Bp - 백그라운드 픽셀
                 α - 알파 계수 (0 ≤ α ≤ 1)

α는 포그라운드 픽셀의 채도 퍼센트를 정의한다. 예를 들어서 α 값이 0.25이면 포그라운드 픽셀의 채도가 25%라는 뜻이다. 그러면 (1-α)는 75%이며 이것이 백그라운드 픽셀의 채도다.
리소스의 제약을 받는 대부분의 환경에서 하드웨어 내에 알파 블렌딩 엔진은 존재하지 않는다.

그러므로 소프트웨어 알파 블렌딩을 사용할 수밖에 없다. 그런데 이를 위해서는 α와 (1 - α) 때문에 다량의 곱셈과 나눗셈 연산이 필요하다. 게다가 픽셀이 3개의 색상 성분(적색, 녹색, 청색)으로 이뤄졌기 때문에 공식 1을 3회씩 실시해야 하고 연산이 더욱 복잡해진다. 따라서 상당한 프로세싱 성능과 시간을 필요로 한다.

이에 대한 해결책은 전체 알파 블렌딩 범위에서 원하는 ‘스마트폰’ 효과를 내기에 충분한 선별적인 α 값을 사용하는 것이다. α는 채도 퍼센트이므로, 50% 값은 1비트 쉬프트이고 25%는 2비트 쉬프트, 75%는 원래 값의 25%와 50%의 합이다. 그러므로 공식 1을 다음과 같은 3가지 공식으로 변환할 수 있다.

공식 (2):  Rp  =  (Fp  >> 2) + [(Bp >> 1) + (Bp >> 2)]  (α  = .25)
공식 (3):  Rp  =  (FP  >> 1)          +             (BP >> 1)  (α  = .50)
공식 (4):  Rp  = [(FP  >> 2) + (Fp >> 1)] + (Bp >> 2)  (α  = .75)

또한 메모리 요구량을 낮추기 위해서는 통상적인 32bpp 색 데이터가 아니라 16bpp 색 데이터를 사용할 수 있다. 16bpp 색 형식은 5비트 적색, 6비트 녹색, 5비트 청색(5-6-5)으로 이f뤄진다. 이 형식은 RGB 성분의 쉬프팅(shifting)을 한꺼번에 할 수 있으므로 연산 속도를 높일 수 있으며 각각의 색 성분을 별도로 처리할 필요도 없다.

알파 블렌딩은 전체 이미지를 대상으로 하거나 라인 단위 혹은 픽셀 단위로 할 수 있다. 전체 이미지에 대해서 알파 블렌딩을 하려면 포그라운드, 백그라운드, 결과값을 저장하기 위해 대량의 메모리가 필요하다. 픽셀 단위로 알파 블렌딩하려면 불러오기 및 저장을 해야 하는 부담이 늘어나지만 라인 단위로 하면 이 둘 사이에 균형을 이룰 수 있다.

버퍼가 필요하지만 이 버퍼는 화면 폭 길이까지로 제한되며 이는 단일 라인으로 처리할 수 있는 최대 픽셀이 화면 폭과 같기 때문이다. [그림2]는 백그라운드 이미지에 대해 직사각형 패널의 50% 알파 블렌드를 하는 과정을 보여준다. 이 예에서 백그라운드는 이미지이고 포그라운드는 평면 컬러 패널이다.

[그림2] 마이크로칩 그래픽 라이브러리에 포함된 50% 알파 블렌딩의 유사 코드

비-직사각형 아이콘은 전역 투명 컬러를 사용해 작성할 수 있다. 작성되면 안 되는 픽셀의 경우 이 아이콘이 사전 지정된 전역 투명 컬러를 사용하도록 한다는 것이다. 이 기법은 다른 기법들에 비해서 펌웨어 프로세싱 오버헤드가 낮으며 각각의 픽셀이 추가적인 정보를 포함할 필요가 없다.

또 백그라운드 이미지와 포그라운드 아이콘을 따로따로 변경할 수 있는 유연성을 제공한다. [그림3]은 이러한 기법들을 조합적으로 사용해서 스마트폰과 유사한 아이콘을 작성할 때의 런타임 출력을 보여준다.
 

[그림 3] 스마트폰과 유사한 아이콘을 작성하기 위한 흐름도

이러한 기술들을 통해 마이크로컨트롤러로 더 적은 메모리와 더 적은 프로세싱 성능을 이용해 스마트폰과 유사한 사용자 인터페이스를 달성할 수 있다. 단축된 알파 블렌드 공식과 라인 단위 프로세싱, 그리고 전역 투명 컬러 같은 기법들을 조합해 리소스 제약적인 임베디드 그래픽 애플리케이션에서 RAM 요구량과 프로세싱 성능 간의 균형을 이룰 수 있는 것이다.

글 : 파올로 타마요(Paolo Tamayo) 마이크로칩 스태프 애플리케이션 엔지니어
자료제공 : 마이크로칩테크놀로지(www.microchip.com)

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지