elsa in mac

mac:Fedora-Asahi Remix, 움직이는 배경화면(feat. shader wallpaper)을 적용해 보자. 본문

Mac(OS X)/Asahi Linux

mac:Fedora-Asahi Remix, 움직이는 배경화면(feat. shader wallpaper)을 적용해 보자.

elsa in mac 2024. 4. 5. 01:55

Linux에서 에니메이션 배경화면을 적용하는 방법에는 gif, 동영상, shader를 적용하는 등 다양한 방법이 있습니다. 

이번 포스트에서는 wayland 환경에서 Fragment Shader를 이용한 움직이는 배경화면을 적용하는 방법을 소개 합니다. 

우선, wallpaper engine이 필요한데, 이번 포스트에서는 wayland 환경을 지원하는 shaderbg라는 CLI 도구를 사용합니다. 

shader는 GPU에서 동작하는 컴퓨터 그래픽 솔루션으로, 크게 Vertex Shader 와 Fragment Shader 두 가지로 구분할 수 있습니다. Fragment Shader는 렌더링 이미지를 픽셀 단위로 생성하는 것으로 조명, 그림자, 반사, 그라디에이션, 생상 조정들을 처리할 수 있습니다.  추상적인 이미지를 생성하는데 좀 더 적격이라고 할 수 있습니다. 

shaderbg는 아래의 절차로 설치를 하면 됩니다. 

git clone https://git.sr.ht/~mstoeckl/shaderbg

cd shaderbg

meson setup build
ninja -C build
ninja -C install

다음으로, shader wallpaper가 필요한데, 이것은 shadertoy 라는 홈페이지에서 골라 쓸 수 있습니다. 

엄청나게 많은 shader들이 등록되어 있는데, 모든 것들을 다 사용할 수 있는 것은 아닙니다. 비교적 단순한 것들을 사용할 수 있고, 문제없이 적용이 된다 하더라도 굉장히 복잡한 계산을 요하는 shader의 경우 frame drop과 GPU 프로세싱 과부하가 걸릴 수 있으므로, 가급적 단순한 계산으로 처리할 수 있는 가벼운 shader를 선택해서 사용하는 것이 좋습니다. 

원하는 shader를 선택하면, 위의 스샷처럼 좌측에 에니메이션 결과를 확인할 수 있고, 오른쪽으로 shader 소스코드가 보입니다. 이 소스코드를 복사하여, 확장자 .frag 로 적당한 위치와 적당한 이름으로 저정을 해 줍니다. 

shader [display 장치명] [옵션] [fragment shader 파일 경로]

실행은 위와 같이 실행시키면 됩니다. 예를 들어, wal1.frag 라는 이름으로 저장을 했다면, 

shaderbg HDMI-A-1 --layer background --speed 0.2 ./shader/wal1.frag

HDMI-A-1 은 연결된 모니티 기기의 장치명이고, --layer 옵션은 wayland 의 어떤 layer에 위치 시킬 것인가를 결정합니다. layer는 background, bottom, top, overlay 등이 존재합니다. 배경화면으로 사용한다면 background로 정의하면 됩니다. speed는 1이 1배속 이고, 2는 2배속, 0.5은 1/2 배속을 의미합니다.   

모니터 기기명과 layer는 Hyprland를 사용한다면, hyprctl layers 로 확인할 수 있습니다. 

 

아래는 실제 동작 예 입니다. 

 

사용하는 몇가지 shader를 첨부하니, 필요하신 분들은 이용해 보시기 바립니다. 

shader.zip
0.03MB


일반 동영상을 배경화면으로 사용할 수 있는 방법도 있기는 하지만, Asahi Linux는 아직 video H/W encoding/decoding을 할 수 없기 때문에 CPU 부하가 높게 걸리는 단점이 있는 반면, shader를 사용하게 되면 GPU에서 직접 처리하기 때문에 CPU 부하를 방지할 수 있습니다.  

다만, Asahi Linux 측면에서 보면, 아직까지 내부 Sensor들에 대한 직접적인 확인과 제어를 할 수 있는 여건이 마련되어 있지 못합니다. 따라서, Fan Control도 할 수 없지요. GPU에 상시적인 부하를 주는 것은 발열을 유발하고, 이는 전제적으로 성능을 다운 시킬 원인이 됩니다.  경우에 따라서는 가능성만 확인하고, Sensor 및 Fan Controll이 가능한 시점에 사용해야 할 수 도 있다는 점 유념 하시기 바랍니다. 

공유하기 링크
Comments