Quote: "How do you access polygon normals? Can they be accessed in fragment shaders? And how do polygon normals relate to vertex normals? Are polygon normals an average of the three surrounding vertex normals or something, or are they just perpendicular to the polygon?"
I don't know if you can access them from a fragment shader(haven't done enough shader programming), can access them from object data in DBP via "get vertexdata normals" or generate them like how Phaelax did above:
Quote: "It's a perpendicular vector from a plane's surface.
If A,B,C represent the 3 points of a triangle, you can find the normal by forming two vectors and calculating their cross product:
normal = (B-A) X (C-A)
But don't forget to normalize that result."
Quote: "you don't, there's no such thing as polygon normal."
So Sparky's Collision isn't accessing a stored normal for polygon collision?

I'd always assumed that normals were stored when models and such were loaded into memory. The DirectX file format allows for normals to be stored per-polygon IIRC.