An ensure is hit for static raytracing geometry because skeletal mesh assets that had ray tracing disabled were not handled in: FSkeletalMeshSceneProxy::GetStaticRayTracingGeometries
The concurrent render state does not create ray tracing geometries (as it’s guarded by that flag). However, later the FScene still tries to register primitives and requests the ray tracing geometry without verifying whether it was created.
An additional check can be added like the static mesh version to safeguard the function:
TArray<FRayTracingGeometry*> FSkeletalMeshSceneProxy::GetStaticRayTracingGeometries() const { + if (IsRayTracingEnabled() && bRenderStatic && SkeletalMeshRenderData->bSupportRayTracing) // if (IsRayTracingEnabled() && bRenderStatic) { TArray<FRayTracingGeometry*> RayTracingGeometries; RayTracingGeometries.AddDefaulted(SkeletalMeshRenderData->LODRenderData.Num()); for (int32 LODIndex = 0; LODIndex < SkeletalMeshRenderData->LODRenderData.Num(); LODIndex++) { FSkeletalMeshLODRenderData& LODRenderData = SkeletalMeshRenderData->LODRenderData[LODIndex]; // Skip LODs that have their render data stripped if (LODRenderData.GetNumVertices() > 0) { ensure(LODRenderData.NumReferencingStaticSkeletalMeshObjects > 0); RayTracingGeometries[LODIndex] = &LODRenderData.StaticRayTracingGeometry; }
Expected
Ensure does not get hit
Actual
Ensure is hit
n/a
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-353614 in the post.
| 0 |
| Component | UE - Graphics Features - Ray Tracing |
|---|---|
| Affects Versions | 5.6, 5.7 |
| Created | Nov 12, 2025 |
|---|---|
| Updated | Nov 12, 2025 |