Babylon.js 9.33.3, 셰이더 조건식 처리 보완
모아보기 · 소식 기준일 · 블로그 공개
셰이더 전처리기의 부정 조건 처리와 그래프 편집기 진단이 바뀌었습니다.

발표 내용
Babylon.js는 셰이더 전처리기에서 #if !X 조건을 #if !defined(X) 형태로 처리하도록 수정했습니다. Flow Graph Editor에는 소리 반응과 진단 기능을 추가했습니다.
확인할 부분
사용 중인 셰이더에 매크로 존재 여부를 보는 조건이 있다면, 기존 장면에서 해당 매크로를 켰을 때와 껐을 때의 결과를 비교해 볼 수 있어요.
같은 셰이더를 기능 조합별로 열어 보기
셰이더의 전처리 조건은 장면이 그려지기 전에 어떤 코드가 컴파일에 들어가는지를 고릅니다. 같은 재질을 써도 특정 기능이 켜졌을 때만 다른 분기가 만들어지므로, 평소 사용하는 기본 장면이 정상이라고 다른 조합도 정상이라는 결론은 나오지 않습니다. 공지에 나온 조건을 써서 이름을 정의했을 때와 생략했을 때 각각 의도한 분기가 선택되는지 확인하면 됩니다.
테스트 장면에는 같은 재질을 쓴 물체 둘을 두고 서로 다른 정의를 적용할 수 있어요. 하나는 기능을 켜고, 다른 하나는 끕니다. 각 분기가 다른 색이나 표면 효과를 내게 하면 눈으로도 차이를 읽기 쉽습니다. 여기에 정의가 아예 없는 경우를 더해, 예상한 분기와 실제 컴파일 결과를 비교합니다. 셰이더 오류가 처음부터 출력되는 경우와 오류 없이 잘못된 효과만 보이는 경우를 나누면 원인을 찾는 시간도 줄어듭니다.
Flow Graph Editor의 소리 반응과 진단 기능은 렌더러 전처리기 변경과 별도의 확인 대상입니다. 이를 도입하는 팀이라면 기존 그래프에서 이벤트가 들어오는 시점과 소리 입력을 연결한 새 그래프의 동작을 비교할 수 있어요. 한 릴리스에 두 변경이 함께 담겼더라도 재질 컴파일과 그래프 실행의 관찰 결과를 따로 기록하면 어느 변경을 확인했는지 명확해집니다.