에디터 모바일 프리뷰에서 UI Domain 머티리얼에 RadialGradientExponential 노드 사용하는 머티리얼 크래시

[2025.08.20-03.10.00:636][978]LogRHI: Error: Failed to create graphics pipeline, hashes: Vertex: D24312211E10A6DCBA287369D45EF56214E1393C, Pixel: B0F53FB5A34C17C33EF44594C0CC6109F4897176, Pipeline: 916BC42CA0CE85140AC627F9023974C748F355A2.

[2025.08.20-03.10.00:636][978]LogRHI: Error: Vertex: <unknown>

[2025.08.20-03.10.00:636][978]LogRHI: Error: Pixel: <unknown>

[2025.08.20-03.10.00:636][978]LogRHI: Error: Render Targets: (8)

[2025.08.20-03.10.00:638][978]LogRHI: Error: 0x12

[2025.08.20-03.10.00:638][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:638][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: 0x0

[2025.08.20-03.10.00:639][978]LogRHI: Error: Depth Stencil Format:

[2025.08.20-03.10.00:640][978]LogRHI: Error: 0x0

Fatal error: [File:F:\UnrealEngine\Engine\Source\Runtime\RHI\Private\PipelineStateCache.cpp] [Line: 528]

Shader compilation failures are Fatal.

중단점 명령(__debugbreak() 문 또는 유사한 호출)이 UnrealEditor.exe에서 실행되었습니다.

안녕하세요.

5.5 버전의 UI 도메인 머티리얼에서 RadialGradientExponential 사용 시 에디터 모바일 프리뷰에서 크래시가 발생하는 현상에 대해 답변 드립니다.

추가 셰이더 디버깅 설정 후 다음과 같은 로그를 확인했습니다

[LogShaderCompilers: Warning: Warnings while compiling Material /Game/M_Test.M_Test for platform PCD3D_ES31:
LogShaders: Warning:   Cross-compiled shader to intermediate HLSL after first attempt crashed FXC
LogShaders: Warning:   /Engine/Private/GammaCorrectionCommon.ush(62,31-63): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
LogShaders: Warning:   error X8000: D3D11 Internal Compiler Error: Invalid Bytecode: Incompatible min precision type for operand #1 of opcode #21 (counts are 1-based). Expected int or uint.
LogD3D12RHI: Error: Failed to create pipeline state with combined hash 9B6A94EAF0594C7C, error 80070057.
LogD3D12RHI: Warning: Failed to create graphics PSO with combined hash 0x9B6A94EAF0594C7C:

로그를 통해 다음과 같은 내용이 확인 가능했습니다.

  1. FXC 컴파일 단계에서 내부 오류 발생
  2. 셰이더 내 pow(f, e)의 밑(base)이 음수일 수 있음을 경고(X3571)
  3. 최소 정밀도(min precision) 타입 불일치로 인한 Invalid Bytecode 에러
  4. 결과적으로 D3D12에서 PSO 생성 실패(80070057)

로그를 근거로, UI 도메인 + 감마/지수 연산 구간에서 pow의 밑이 음수가 될 수 있는 코드 패턴과 UE 5.5의 FXC + 최소 정밀도 경로가 맞물려 유효하지 않은 셰이더 바이트코드가 생성되었을 가능성이 큽니다.

첨부해주신 샘플 프로젝트 기준으로 머티리얼의 Float Precision Mode를 Use Full-precision for MaterialExpressions only 또는 Use Full-precision for every float로 변경하면 크래시가 사라지는 것을 확인했습니다. 다만 이는 임시적인 우회에 가깝고, 모바일 성능을 고려하면 Use Full-precision for MaterialExpressions only 사용을 권장드립니다.

또한 해당 이슈는 5.6 버전에서는 발생하지 않는 것을 확인했습니다. 5.5 버전을 반드시 사용하셔야 하는 경우가 아니라면 엔전 버전 업데이트를 권장드립니다.

감사합니다.

안녕하세요 답변 감사합니다.

질문 올릴 때 작성했던 글들이 일부 안보이네요. full precision 설정 외에 해결 방법을 알고 싶습니다.

엔진 버전 업데이트는 당장 어려워 해결 방법 문의드립니다.

안녕하세요.

CL 40938238을 참고하시면 도움이 될 것 같습니다.

https://github.com/EpicGames/UnrealEngine/commit/c5fb42b25124228363e43bf248241eccb36a77ef

감사합니다.

해당 방법으로 해결 확인했습니다 감사합니다