Comments (3)
My guess would be that you're running out of floating point precision--a
32-bit float may not have quite enough precision to accumulate the sum of
200k samples per pixel.
One way to test this would be to:
- Modify the Pixel struct in film/image.h to use 'double' instead of
'float' for all members. - Remove the AtomicAdd() stuff in film/image.cc and just update the Pixel
fields directly in AddSample() and Splat(). - Render the scene using one thread (to be safe), with --ncores 1 on the
command-line. (Or don't worry about this--it's probably fine.)
And see if you still see these errors. If not, it's floating-point
precision. If you do, then it's something else. (And we can work on it
from there...)
Thanks,
Matt
On Tue, Apr 22, 2014 at 1:58 PM, HoverDong [email protected] wrote:
hi guys,
When I use path tracing to generate a very simple scene image, I got some
ringing patterns. The scene is just a Cornell box with back, floor and left
wall and a point light source. The material of all the walls are diffuse
material. I used 200k samples/pixel to generate the scene. I set the
maxDepth=0, which means the generated image only shows the direct light.
When I use less samples number, the ringing pattern becomes less obvious.
The attached image showed the R channel of the generated image. Any ideas?
[image: point_gt_d]https://cloud.githubusercontent.com/assets/7377509/2770612/b31da966-ca60-11e3-93d0-6b6d0abc007a.jpg—
Reply to this email directly or view it on GitHubhttps://github.com//issues/29
.
from pbrt-v2.
hey Matt, Thanks for the quick reply. I really appreciate it!!! I changed the code as you suggested and tried with 200k sample numbers again. The ringing pattern has gone:) So, it is the precision problem as you said.
Hover
Date: Tue, 22 Apr 2014 19:32:02 -0700
From: [email protected]
To: [email protected]
CC: [email protected]
Subject: Re: [pbrt-v2] ringing pattern generated by path tracing (#29)
My guess would be that you're running out of floating point precision--a
32-bit float may not have quite enough precision to accumulate the sum of
200k samples per pixel.
One way to test this would be to:
- Modify the Pixel struct in film/image.h to use 'double' instead of
'float' for all members.
- Remove the AtomicAdd() stuff in film/image.cc and just update the Pixel
fields directly in AddSample() and Splat().
- Render the scene using one thread (to be safe), with --ncores 1 on the
command-line. (Or don't worry about this--it's probably fine.)
And see if you still see these errors. If not, it's floating-point
precision. If you do, then it's something else. (And we can work on it
from there...)
Thanks,
Matt
On Tue, Apr 22, 2014 at 1:58 PM, HoverDong [email protected] wrote:
hi guys,
When I use path tracing to generate a very simple scene image, I got some
ringing patterns. The scene is just a Cornell box with back, floor and left
wall and a point light source. The material of all the walls are diffuse
material. I used 200k samples/pixel to generate the scene. I set the
maxDepth=0, which means the generated image only shows the direct light.
When I use less samples number, the ringing pattern becomes less obvious.
The attached image showed the R channel of the generated image. Any ideas?
[image: point_gt_d]https://cloud.githubusercontent.com/assets/7377509/2770612/b31da966-ca60-11e3-93d0-6b6d0abc007a.jpg
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/29
.
—
Reply to this email directly or view it on GitHub.
from pbrt-v2.
Closing this out. (And note that pbrt-v3 offers the ability to select double-precision for all floating-point computations at compile time.)
from pbrt-v2.
Related Issues (20)
- artifacts when EWA magnifies texels
- invalid LookAt causes crash
- Question about photon power HOT 1
- Texture blurring at the focal plane in scenes with DOF. HOT 2
- PBRT does not handle single-channel EXR textures HOT 1
- About screen clamping in irradiance cache. HOT 1
- Remove OpenEXR library dependency. HOT 3
- build issue HOT 1
- 4D noise HOT 9
- Distribution1D::SampleContinuous problem HOT 1
- L2-Norm in exrdiff HOT 1
- BVH Cost Function HOT 2
- PermutedRadicalInverse() is horribly broken
- Ambient occlusion in scenes with light sources HOT 1
- How to use pbrt to render an animation sequences? HOT 1
- villa-daylight.pbrt HOT 1
- UniformSampleSphere in AmbientOcclusionIntegrator::Li HOT 1
- Using the same code build on Windows and Linux got different result.
- Wrong direction of shading tangents in Triangle::GetShadingGeometry causing wrong bump mapping HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pbrt-v2.