The ActorPositionWS BP node calls GetActorWorldPosition() in HLSL which references Primitive.ActorWorldPosition. But GetActorWorldPosition() is not protected by an #if HAS_PRIMITIVE_UNIFORM_BUFFER check. This means it will compile even in cases when there is no primitive uniform buffer, and can lead to bad memory access.

Steps to Reproduce

NOTE: This was reported by a UDN user, and I did not reproduce the crash internally

To reproduce the dangerous material configuration:

create a new 3rd person blueprint project in UE4
select the floor actor
create a new material & open blueprint
add Coordinates -> ActorPositionWS
connect output pin to material's Emissive Color pin
change Material Domain to Post Process
-> this produces invalid configuration, but no error in stats

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-37425 in the post.

Login to Vote

Affects Versions4.12
Target Fix4.15
Fix Commit3165809
Main Commit3206922
CreatedOct 17, 2016
ResolvedNov 17, 2016
UpdatedApr 27, 2018