You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While going through the forward and backward cuda code in the diff-gaussian-rasterization module, I seem to find a slight inconsistency between the two passes (or maybe I have been mistaken). See the following two screenshot:
The first one is the forward pass and the second one is the backward pass. It seems the last contributor gaussian's (1- alpha) is not recorded in the final_T value in the forward pass while still being accounted for in the backward pass. Is this a mistake, or am I missing something here?
Also, why do we need this "test_T" in the forward pass anyway? Isn't it more clear to use T's value for the testing directly?
The text was updated successfully, but these errors were encountered:
By the way, this will have a larger impact when someone changes the T threshold to a larger value or uses an alpha clipping threshold that's closer to 1.0f, i.e. when the last contributor's contribution is significant.
I think there is no bug in the code. When the forward pass skips, it actually skips the 1 over the last contributor, and the assignment last_contributor = contributor is not executed when the loop is continued.
The code is indeed confusing. But the effect is correct. if the check test_T < 0.0001 is true, and we know alpha <= 0.99, then we have T * (1-0.99) < 0.0001, so T < 0.01, which is negligible.
While going through the forward and backward cuda code in the diff-gaussian-rasterization module, I seem to find a slight inconsistency between the two passes (or maybe I have been mistaken). See the following two screenshot:
The first one is the forward pass and the second one is the backward pass. It seems the last contributor gaussian's (1- alpha) is not recorded in the final_T value in the forward pass while still being accounted for in the backward pass. Is this a mistake, or am I missing something here?
Also, why do we need this "test_T" in the forward pass anyway? Isn't it more clear to use T's value for the testing directly?
The text was updated successfully, but these errors were encountered: