[고도엔진 내부 쉐이더 공부] 텍스트 Atlas 구조 및 쉐이더를 통한 울렁 거림 효과 구현 - Whitmem
[고도엔진 내부 쉐이더 공부] 텍스트 Atlas 구조 및 쉐이더를 통한 울렁 거림 효과 구현
Game Development
2025-01-21 22:10 게시 d76431f1c0f7fe785166

0
0
101
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
텍스트 쉐이더
엔진에서, Label 객체에도 쉐이더를 적용할 수 있다. Material 내에 Shader을 추가 한다.
fragment 쉐이더 영역에 임의 COLOR을 칠하면 텍스트 영역이 전체 칠해지는 것이 아니라 실제 폰트가 존재하는 영역만 사각형으로 채워지는 것을 확인할 수 있다. 이는 엔진이 자동으로 폰트가 존재하는 텍스트에 대해 각각 꼭짓점 4개를 가지는 평면을 생성한 뒤 각 텍스트의 UV 위치에 맵핑한다는 것을 추론할 수 있다.
기본적으로 엔진에서는 텍스트를 alpha 로 구별하며 alpha을 임의로 연하게 하면 텍스트가 유지되면서 연해지는 것을 확인할 수 있다. 다만 alpha를 1.0 등으로 대입하는 경우 글자가 사라지고 평면이 생기는 것을 확인할 수 있다.
즉 글자가 존재하는 영역만 alpha가 존재하며, alpha를 임의로 지운 경우 다시 텍스트처부터 텍스트 색상을 가져와야 한다.
텍스트 모양은 동일하다 시스템 내부에 TEXTURE 텍스처 변수가 제공되며, 이 텍스처의 글자 UV 영역에 해당하는 색상을 가져오면 된다. 그런데 그림자 부분 색상이 유지되지 않는 것을 확인할 수 있다. 이는 엔진에 텍스트를 렌더링 할 때 한 글자에 대해서 하나의 평면이 아니라, 그림자 평면까지 포함하여 2개의 평면이 동시에 렌더링되기 때문이고, 이를 구별할 방법은 색상말고는 없다. 즉 같은 UV에 대해서 렌더링하면 같은 지점의 모양과 텍스처의 색상이 가져와지기 때문에 그림자 색상이 사라지는 것이다.
UV 를 임의로 넓게 가져오면 글자가 이상하게 가져와지는 것을 볼 수 있다. 이는 엔진이 자체적으로 각 Label 마다 새로운 텍스처를 만드는 것이 아니라, 같은 글자는 공유해서 메모리를 최적화할 수 있도록 Altas 기법을 사용하기 때문에 발생한다. 즉 우리가 원하는대로 문장 하나를 의미하는 텍스처가 아닌 것이다. 각 평면은 이 Atlas 맵에 대한 특정 UV 위치를 할당받고 있는 셈이다. 그렇기에 우리는 텍스트의 어떤 효과를 주기 위해 UV를 조정하는 것은 적합하지 않다는 것을 추론할 수 있다. 정 UV를 조절하고 싶으면 하나의 표면에 하나의 문장 텍스트가 렌더링되도록 따로 레이블 시스템을 만들어야 할 것이다.
Vertex를 조절해서 울렁 효과주기
그렇기 때문에 Vertex를 조절해서 울렁 효과를 주려고 한다. Label 평면은 좌우위아래 각 꼭짓점을 4개의 꼭짓점인 평면이라고 하였다.
버텍스의 x 로컬 좌표가 매우 작을 수 있으니 100 정도를 곱하고 여기에 TIME 스케일 값을 계속 더해준다. 시간은 초 단위고 1초에 10씩 흐르도록 하기 위해 10을 곱한다. 이 값을 sin에 넣어주면 각 버텍스 위치마다 울렁이는 효과를 넣을 수 있다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.