| 311 | } |
| 312 | |
| 313 | void DistantLight::update() |
| 314 | { |
| 315 | // Update transformation matrices |
| 316 | // Assumes that mData.dirW is normalized |
| 317 | const float3 up(0.f, 0.f, 1.f); |
| 318 | float3 vec = cross(up, -mData.dirW); |
| 319 | float sinTheta = length(vec); |
| 320 | if (sinTheta > 0.f) |
| 321 | { |
| 322 | float cosTheta = dot(up, -mData.dirW); |
| 323 | mData.transMat = math::matrixFromRotation(std::acos(cosTheta), vec); |
| 324 | } |
| 325 | else |
| 326 | { |
| 327 | mData.transMat = float4x4::identity(); |
| 328 | } |
| 329 | mData.transMatIT = inverse(transpose(mData.transMat)); |
| 330 | } |
| 331 | |
| 332 | void DistantLight::updateFromAnimation(const float4x4& transform) |
| 333 | { |
nothing calls this directly
no test coverage detected