Skip to content
Discussion options

You must be logged in to vote

Thank you for the fantastic reproducer!

Indeed, this is expected. As you mentionned, any lane/thread that is not evaluating the red BSDF is set to be inactive hence the changing sizes. (This is only true with VCallRecord turned off).

There's a lot going on here, so let me point you to two key areas:

  1. This line (BSDFPtr bsdf = si.bsdf(ray);) in the integrator will essentially fetch a pointer per lane. Some of the lanes will obviously have nullptrs as they didn't hit anything.
  2. This snippet in DrJit is the code which is run when a non-recorded virtual function call is used. The idea is that we run each BSDF's eval method and we gather() the parameters from the appropriate indices where all l…

Replies: 1 comment 4 replies

Comment options

You must be logged in to vote
4 replies
@saeedhd96
Comment options

@njroussel
Comment options

Answer selected by saeedhd96
@saeedhd96
Comment options

@njroussel
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants