Voronoi 셰이더 크로스 플랫폼 버그, 부동소수점 연산이 범인
원제 When the fractional part of a float fixes your shader
102 포인트댓글 18

Key Point
GPU 모델별로 다른 부동소수점 연산 결과가 셰이더 컴파일을 타게 되면서 발생하는 크로스 플랫폼 버그의 사례를 보여주며, 그래픽 프로그래머가 겪을 수 있는 재현 어려운 문제의 디버깅 방법을 제시한다.
핵심 요약
- 음악 영상 배경용 Voronoi 다이어그램 셰이더를 구현했으나, RTX 4070 윈도우 PC에서만 애니메이션에 끊김 현상이 발생했다.
- 노이즈 함수가 호출되는 부분에서 문제가 발생했으며, 인텔 통합 GPU와 RTX 2070에서는 정상 작동했으나 RTX 4070에서만 버그가 나타났다.
- 원인은 셰이더 컴파일 과정에서 노이즈 함수 입력값의 부동소수점 연산 결과가 기기별로 다르게 최적화되면서 발생한 수치 오류로 추정된다.
- 글은 버그 재현 과정, 다양한 하드웨어 테스트 결과, 셰이더 디버깅 도구 사용 방법을 상세히 기록한 일주일간의 디버깅 기록이다.