셰이더

라이트맵 베이크하면 URP 셰이더가 까맣게 나오는 이유가 뭘까요?

shadyshaders
1일 전 작성
조회 512

커스텀 Lit 셰이더 그래프를 소품 여러 개에 쓰고 있어요. 실시간 렌더링에서는 다 잘 나오는데, Generate Lighting을 돌리는 순간 소품이 전부 새까맣게 변해요. 경고도 에러도 콘솔에 안 뜹니다.

제가 커스텀 함수 노드에서 호출하는 라이팅 함수 일부는 아래와 같습니다.

추측으로는 SampleSH가 베이크된 GI를 쓰려면 라이트맵 UV를 직접 넘겨줘야 할 것 같은데, Shader Graph 커스텀 함수 노드에서 깔끔하게 처리하는 방법을 못 찾겠어요. 혹시 겪어보신 분 있나요?

URPLitShader.hlsl
void CustomLighting_float(float3 Normal, float3 Position, out float3 Color)
{
  Light mainLight = GetMainLight();
  float3 lightDir = normalize(mainLight.direction);
  float NdotL = saturate(dot(Normal, lightDir));

  // 베이크 후에는 bakedGI가 0으로 나옵니다 — 이게 버그예요
  float3 bakedGI = SampleSH(Normal);
  Color = mainLight.color * NdotL + bakedGI;
}
유니티URP셰이더라이팅

댓글 4

kdev_unity1일 전

Meta Pass 설정 확인해보셨어요? 베이크할 때 그것 때문에 새까맣게 나온 적 있어요.

animate_this1일 전

저도 똑같은 문제 겪었는데 결국 Lightmapping 전용 pass를 따로 만들어서 해결했어요.

jvfx21시간 전

Shader Graph 프리뷰 창에서는 Baked GI 값이 항상 0으로 나와서 헷갈리기 쉬워요. 실제 빌드에서 한번 찍어보세요.

mira_renders17시간 전

혹시 라이트맵 UV 채널(UV2)을 별도로 안 만들어두신 건 아니죠? 그것 때문에도 새까맣게 나온 적 있어요.

댓글을 작성하려면 로그인이 필요해요.