| 977 | } |
| 978 | |
| 979 | void SparseBundleCU::PrepareJacobianNormalization() { |
| 980 | if (!_cuVectorSJ.IsValid()) return; |
| 981 | |
| 982 | if ((__jc_store_transpose || __jc_store_original) && |
| 983 | _cuJacobianPoint.IsValid() && !__bundle_current_mode) { |
| 984 | CuTexImage null; |
| 985 | null.SwapData(_cuVectorSJ); |
| 986 | EvaluateJacobians(); |
| 987 | null.SwapData(_cuVectorSJ); |
| 988 | ComputeDiagonal(_cuVectorJJ, _cuVectorSJ); |
| 989 | ComputeSQRT(_cuVectorSJ); |
| 990 | } else { |
| 991 | CuTexImage null; |
| 992 | null.SwapData(_cuVectorSJ); |
| 993 | EvaluateJacobians(); |
| 994 | ComputeBlockPC(0, true); |
| 995 | null.SwapData(_cuVectorSJ); |
| 996 | _cuVectorJJ.SwapData(_cuVectorSJ); |
| 997 | ProgramCU::ComputeRSQRT(_cuVectorSJ); |
| 998 | } |
| 999 | } |
| 1000 | |
| 1001 | void SparseBundleCU::EvaluateJacobians(bool shuffle) { |
| 1002 | if (__no_jacobian_store) return; |
nothing calls this directly
no test coverage detected