Skip to content

Commit 567e070

Browse files
svc-reach-platform-supportEvergreen
authored andcommitted
[Port] [6000.0] [Port] [6000.2] UUM-114563: Virtual Offset baking broken on AMD
1 parent 0a14984 commit 567e070

2 files changed

Lines changed: 14 additions & 13 deletions

File tree

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public override void Initialize(ProbeVolumeBakingSet bakingSet, NativeArray<Vect
109109
batchResult = new Vector3[k_MaxProbeCountPerBatch];
110110

111111
var computeBufferTarget = GraphicsBuffer.Target.CopyDestination | GraphicsBuffer.Target.CopySource
112-
| GraphicsBuffer.Target.Structured | GraphicsBuffer.Target.Raw;
112+
| GraphicsBuffer.Target.Structured;
113113

114114
// Create acceletation structure
115115
m_AccelerationStructure = BuildAccelerationStructure(voSettings.collisionMask);

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.urtshader

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,22 @@ void RayGenExecute(UnifiedRT::DispatchInfo dispatchInfo)
8787
if (!hit.IsValid() || hit.isFrontFace)
8888
{
8989
validHits++;
90-
continue;
9190
}
92-
93-
float distanceDiff = hit.hitDistance - minDist;
94-
if (distanceDiff < DISTANCE_THRESHOLD)
91+
else if (hit.IsValid())
9592
{
96-
UnifiedRT::HitGeomAttributes attributes = UnifiedRT::FetchHitGeomAttributes(hit, UnifiedRT::kGeomAttribFaceNormal);
97-
float dotSurface = dot(ray.direction, attributes.faceNormal);
98-
99-
// If new distance is smaller by at least kDistanceThreshold, or if ray is at least DOT_THRESHOLD more colinear with normal
100-
if (distanceDiff < -DISTANCE_THRESHOLD || dotSurface - maxDotSurface > DOT_THRESHOLD)
93+
float distanceDiff = hit.hitDistance - minDist;
94+
if (distanceDiff < DISTANCE_THRESHOLD)
10195
{
102-
outDirection = ray.direction;
103-
maxDotSurface = dotSurface;
104-
minDist = hit.hitDistance;
96+
UnifiedRT::HitGeomAttributes attributes = UnifiedRT::FetchHitGeomAttributes(hit, UnifiedRT::kGeomAttribFaceNormal);
97+
float dotSurface = dot(ray.direction, attributes.faceNormal);
98+
99+
// If new distance is smaller by at least kDistanceThreshold, or if ray is at least DOT_THRESHOLD more colinear with normal
100+
if (distanceDiff < -DISTANCE_THRESHOLD || dotSurface - maxDotSurface > DOT_THRESHOLD)
101+
{
102+
outDirection = ray.direction;
103+
maxDotSurface = dotSurface;
104+
minDist = hit.hitDistance;
105+
}
105106
}
106107
}
107108
}

0 commit comments

Comments
 (0)