INNER CODE UNIT · Python
radical_inverse_vdc
SedulousWorks/SedulousEngine · Scripts/generate_brdf_lut.py:46
def radical_inverse_vdc(bits):
"""Hammersley quasi-random sequence (Van der Corput) - vectorized."""
bits = bits.astype(np.uint32)
bits = ((bits << 16) | (bits >> 16))
bits = (((bits & 0x55555555) << 1) | ((bits & 0xAAAAAAAA) >> 1))
bits = (((bits & 0x33333333) << 2) | ((bits & 0xCCCCCCCC) >> 2))
bits = (((bits & 0x0F0F0F0F) << 4) | ((bits & 0xF0F0F0F0) >> 4))
bits = (((bits & 0x00FF00FF) << 8) | ((bits & 0xFF00FF00) >> 8))
return bits.astype(np.float64) * 2.3283064365386963e-10
def generate_brdf_lut():
"""Generate the BRDF LUT data using vectorized numpy."""
start = time.time()
# Pre-compute Hammersley sequence for all samples.
sample_indices = np.arange(NUM_SAMPLES, dtype=np.uint32)
xi1_all = sample_indices.astype(np.float64) / NUM_SAMPLES