Page 1 of 1
option for more floating point precision
Posted: Tue Nov 27, 2012 11:14 pm
by jmfowler
I've had a problem with rendering some geometry that was rendering with faceting and edge glitches - after checking ( overlapping faces, scene scale etc) experimenting I found this was 'fixed' by placing the geometry at the origin.
I didn't initially think that my geometry was actually that far away from it - but I suppose it was for the Octane engine.
I suggest that there be an option to increase the floating point precision for scenes that need it - If i'm correct it is currently 7 digits? increasing it would no doubt cause a slowdown so I think it should be optional or even better engine detects that it needs to 'kick in'
see image attached for the example of the problem I was having.

Re: option for more floating point precision
Posted: Wed Nov 28, 2012 8:09 am
by matej
Considerably lowering your render speed just to (possibly?) avoid that simple manual step of re-setting the model to origin, is not a solution.
Maybe Octane could check if the geometry is very far from the origin and automatically recenter it, but I don't see them changing the whole architecture, just to "solve" this very rare issue.
It's the job of the artist to produce a clean and normalized model, before exporting it (no overlapping geometry, no inverted normals, proper scale, etc...)
Re: option for more floating point precision
Posted: Wed Nov 28, 2012 8:59 pm
by jmfowler
matej wrote:Considerably lowering your render speed just to (possibly?) avoid that simple manual step of re-setting the model to origin, is not a solution.
Maybe Octane could check if the geometry is very far from the origin and automatically recenter it, but I don't see them changing the whole architecture, just to "solve" this very rare issue.
It's the job of the artist to produce a clean and normalized model, before exporting it (no overlapping geometry, no inverted normals, proper scale, etc...)
wow Matej - thank you for your non-solution...this is not laziness on my part, and I am not the first or second person to bring this up...this has got nothing to do with normals, manifold geometry, overlapping etc.
As I stated - the objects are not that far away from the origin, and I was pretty sure that my suggestion is aimed at the Octane team to improve the engine to be able to do more for larger scenes.
I have already moved the entire scene so this part of the geometry lies at the origin - the problem now is all the other geometry that was previously sitting at the origin is now as far away as the problem bits I had....What you see in the image is part of a room for a building which the viewer flies into from the street and then moves through out the building.
This issue is only rare to people doing small scenes to be honest. - IF Otoy wants Weta and other studios to use their renderer ( see Avatar indirect lighting compute ) , I'm sure its not going to go well to say " please don't make your scenes too big".
Re: option for more floating point precision
Posted: Wed Nov 28, 2012 10:16 pm
by matej
I (mis)understood that you fixed this by re-setting the origin and that your model was very far off from the origin? In some other extreme cases, like extreme scale, artifacts show up too. Maybe you can fix it by tweaking scale?
But other users are able to render huge scenes, without problems,
like this one
Anyway, you can't increase the precision
just a bit. You can use single precision or double and using double on the consumer cards would considerably impact performance.
Re: option for more floating point precision
Posted: Thu Nov 29, 2012 9:23 pm
by jmfowler
matej wrote:I (mis)understood that you fixed this by re-setting the origin and that your model was very far off from the origin? In some other extreme cases, like extreme scale, artifacts show up too. Maybe you can fix it by tweaking scale?
But other users are able to render huge scenes, without problems,
like this one
Anyway, you can't increase the precision
just a bit. You can use single precision or double and using double on the consumer cards would considerably impact performance.
I do understand that it would impact performance but I think it should be an option ( double floating point ) , there's no way I could know how difficult it is to implement this BUT Octane would need to consider whether it is justified - I simply point out that I have a large *seamless* scene that has this problem ( because we get close to small detailed geometry ) even with my own fix - the only other alternative is to render the scene in sections - literally. I've rendered lots of houses, buildings and interiors with Octane but does octane want to reach further ? If you fly through a forest for long enough and land on a tree the leaves won't render properly from closeup.
So i ask the Octane team - How difficult is this to do?
How do you intend to gauge this need from your clientele?
Re: option for more floating point precision
Posted: Fri Nov 30, 2012 8:40 am
by matej
I did a test and it seems Octane can't handle geometry farther than cca 500m from the origin (real world scale in meters). Artifacts start to appear and get more intense the farther you go (tested with a 10km row of trees). I tested the same thing in Cycles and it happens there too, though considerable artifacts start to show 1 km away from the origin.
Very small things (1mm wide) render ok if they are close to the origin. So in your case put the objects that need closeup as close to the origin as possible.
Also, you should try to export your scene with a different scale factor: if you exported in meters and it shows artifacts on small things, try export in deca-meters. If it shows artifacts on big things (or things far from origin), try to export in decimeters.
Re: option for more floating point precision
Posted: Fri Nov 30, 2012 8:56 am
by abstrax
This is a very tough problem to solve. Roeland has been trying to reduce artifacts the last 3-4 releases and things have improved considerably, but in the end we are using single precision float numbers and double precision is not an option you can just "turn on". It's not only that double precision floats are super-slow to calculate on GeForce cards, you would also require heaps more memory to store the geometry, because double precision floats are 8 bytes per value instead of 4.
We will try to reduce issues in the future, but in the end there is only so much we can do. If you want to do your gigantic scene fly-through, you would keep the camera at the origin, but move the scene instead. We might add that as an option in the future, if it's somehow workable.
Cheers,
Marcis