| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] |
| ID | Project | Category | View Status | Date Submitted | Last Update |
| 0001069 | LuxRender | Core | public | 2011-05-10 10:53 | 2012-09-11 06:10 |
|
| Reporter | guibou | |
| Assigned To | guibou | |
| Priority | low | Severity | minor | Reproducibility | have not tried |
| Status | closed | Resolution | fixed | |
| Platform | | OS | | OS Version | |
| Product Version | | |
| Target Version | 1.0 | Fixed in Version | 1.0RC4 | |
|
| Summary | 0001069: Sppm side test forgot about transmission |
| Description | The side test done in lookupaccel.cpp choose between BSDF_TRANSMISSION and BSDF_REFLEXION always sample BSDF_REFLEXION. |
| Steps To Reproduce | Create a scene with a DIFFUSE plane material that can transmit and reflect light (mattetranslucent is right).
Set a light on both sides of the plane with different colors. Render the scene with the current sppm implementation, You only get one color. With path you get a mix between the two colors. |
| Tags | No tags attached. |
|
| Mercurial Changeset # | |
| Requires Documentation Update | No |
| Requires Exporter Update | |
|
| Attached Files | fix_sppm_sidetest.diff [^] (864 bytes) 2011-05-10 10:53 [Show Content] [Hide Content]# HG changeset patch
# User Guillaume Bouchard <guillaume.bouchard@liris.cnrs.fr>
# Parent d50a84616090c77f6468357967150b6dd9de43af
Fix sppm side test error
bsdf.ng and hpep.bsdfNG are in the same direction when the two bsdf are on the same surface (the normal is defined by the geometry), resulting to a never sampled BSDF_TRANSMISSON component
diff -r d50a84616090 renderers/sppm/lookupaccel.cpp
--- a/renderers/sppm/lookupaccel.cpp Thu May 05 23:55:13 2011 -0700
+++ b/renderers/sppm/lookupaccel.cpp Tue May 10 19:45:27 2011 +0200
@@ -37,7 +37,7 @@
return;
BxDFType flag = BxDFType(BSDF_DIFFUSE | BSDF_GLOSSY |
- ((Dot(bsdf.ng, hpep.bsdfNG) > 0.f ? BSDF_REFLECTION : BSDF_TRANSMISSION)));
+ ((Dot(bsdf.ng, wi) > 0.f ? BSDF_REFLECTION : BSDF_TRANSMISSION)));
const SWCSpectrum f = bsdf.F(sw, hpep.wo, wi, false, flag);
if (f.Black())
return;
|
|