여기 엔진 만드는 사람은 거의 없겠지만, 혹시라도 있다면 도움이 될만한 정보임...
일반적으로 쉐이더 코드를 만드는데는 쉐이더 언어로 GLSL(C 스펙 기반)을 널리 사용하는데, (유니티나 혹은 일부에서 HLSL을 사용하기도)
최근 WebGPU/WGPU에서는 WGSL(Rust 스펙 기반)도 사용함.
근데 GLSL이던 WGSL이던 기본적인 쉐이더 언어로써는 손색이 없지만, 많은 부분이 부족한게 사실임.
가장 큰 문제로는 모듈화가 지원이 안된다는거임;;
그래서 사이즈가 큰 볼륨의 쉐이더 코드를 작성하기에는 한계가 있음ㅇㅇ
최근 GPGPU를 활용하기 위해 컴퓨트 쉐이더도 많이 만드는 추세다보니 이러한 언어 스펙의 부족은 여러가지로 어려움을 낳음...
그러다보니 일부 프로젝트들이 전처리기 같은걸 만들어서 모듈을 어거지로 구현하는 케이스도 종종 보임
예를 들어 bevy엔진 측에서 만든 naga_oil이라는 프로젝트도 그렇고,
https://github.com/bevyengine/naga_oil
Contribute to bevyengine/naga_oil development by creating an account on GitHub.
github.com
아예 커뮤니티 차원에서 wgsl을 확장하는 언어를 만들기도 함ㅋㅋ
WESL Documentation
wesl-lang.dev
하지만 공식 언어 스펙이 아닌 땜빵(?)식의 프로젝트다 보니 아쉬운게 사실임...
아무튼 그러다 심심해서 reddit을 뒤지다가, 벌컨 커뮤니티에 누가 slang이라는 언어로 쉐이더를 만들어서 돌리는걸 보고 도대체 slang이 뭔지가 궁금해져서 좀 조사해봤음ㅇㅇ
해당 글
https://www.reddit.com/r/vulkan/comments/1lo9lif/added_hot_reload_error_shader_to_my_vulkanslang/
놀랍게도, 모듈화를 적극 지원하는 새로운 쉐이더용 프로그래밍 언어였음!! (다른 슬랭 언어랑 헷갈렸는데 댓글로 제대로 알려주더라 ㅋㅋ)
즉 "쉐이더 프로그래밍의 모던화"를 위해 만들어진 언어라는건데, 생각보다 나온지가 꽤 됐더라고...
2015년에 개발을 시작해서 2017년에 오픈소스화가 됨.
엔비디아 r&d팀에서 내부적으로 만들던거라함ㅋㅋ
그러다가 작년에 크로노스 그룹(벌컨, opengl 관리 단체)으로 이전해서 관리중이라고 하네
공식사이트는 여기
Empowering real-time graphics developers with advanced language features and machine learning capabilities.
shader-slang.org
관심있으면 한번 둘러보셈ㅋㅋ 난 관심 크게 생기는중;;
ifndef 전처리기 작성하고있으면 현타오지 - dc App
ㄹㅇㅋㅋ
이미 에뮬레이터 쪽에서 slang 대부분 지원하지. 특히 레트로아크
그래서 요즘에는 얼마나 쉐이더를 잘 짜냐가 아니라. 얼마나 다양한 쉐이더들을 알고있냐가 더 중요한 시대인 것 같아. 이미 나올 쉐이더들은 다 나온 상태라 딸깍 조합만 잘해도 빠르게 비주얼 효과 뽑아 낼 수 있음. 물론 커스터마이징 할 수 있으면 더 좋고
나도 최근에 GLSL로 짰던거 싹다 Slang으로 포팅하고 있었는데. 시발 안드로이드에서 GLSL은 잘되는데 Slang 쓰면 세그폴트 나와서 좆됨. 걍 GLSL로 롤백하고 버그 고칠때까지 안써야됨 ㅅㅂ
헉 그런 이슈가... 홧팅.. ㅜㅜ