Cleanup: Remove OpenCL workaround in volume_sample_channel().

This commit is contained in:
Thomas Dinges
2022-01-20 17:01:14 +01:00
parent f6c8a78ac6
commit 19622ffc5b

View File

@@ -199,22 +199,18 @@ ccl_device int volume_sample_channel(float3 albedo,
* Tracing". Matt Jen-Yuan Chiang, Peter Kutz, Brent Burley. SIGGRAPH 2016. */ * Tracing". Matt Jen-Yuan Chiang, Peter Kutz, Brent Burley. SIGGRAPH 2016. */
float3 weights = fabs(throughput * albedo); float3 weights = fabs(throughput * albedo);
float sum_weights = weights.x + weights.y + weights.z; float sum_weights = weights.x + weights.y + weights.z;
float3 weights_pdf;
if (sum_weights > 0.0f) { if (sum_weights > 0.0f) {
weights_pdf = weights / sum_weights; *pdf = weights / sum_weights;
} }
else { else {
weights_pdf = make_float3(1.0f / 3.0f, 1.0f / 3.0f, 1.0f / 3.0f); *pdf = make_float3(1.0f / 3.0f, 1.0f / 3.0f, 1.0f / 3.0f);
} }
*pdf = weights_pdf; if (rand < pdf->x) {
/* OpenCL does not support -> on float3, so don't use pdf->x. */
if (rand < weights_pdf.x) {
return 0; return 0;
} }
else if (rand < weights_pdf.x + weights_pdf.y) { else if (rand < pdf->x + pdf->y) {
return 1; return 1;
} }
else { else {