Vargol / PhotonPump

A .net port of Sunflow
GNU General Public License v2.0
3 stars 4 forks source link

Enabled OpenEXR (broken). Fixed ByteUtil. #4

Open Rbn3D opened 8 years ago

Rbn3D commented 8 years ago
Rbn3D commented 8 years ago

@Vargol Sorry, I wanted to do my own PR on my fork. Feel free to delete.

Rbn3D commented 8 years ago

@Vargol BTW, Do you know why always render output is black, or with black and wellow pixels? Are you able to render in your tests?

I testing in a bit more detail right now, but still no idea of what causes this bug

Vargol commented 8 years ago

Hi,

Sorry I've been away for a while. Yes I get renders, there's some examples on my deviant art homepage http://vargol.deviantart.com/ what scenes are you rendering ? I'd try with the julia.sc.gz scene as it is stand alone, no issues with paths.

I know opener was broken, thats way I took it out of the plugin registry. I don't think I ever got around to testing if it worked in Sunflow, probably not as the reason I started play with Sunflow.Sharp was 32 bit java being obsoleted in OSX.

looking at the code the header attribute for the channels does seem to match the spec.

I might try and get it working if I can find some time.

Rbn3D commented 8 years ago

I was unable to render anything until I fixed byteUtil, also I get now some issues with paths.

Also, for lightmapping looks like I am exporting meshes badly from unity, so I cannot bake textures properly, I get black and weird textures, but this is just related to my bridge code.

Thanks for the response.

Vargol commented 8 years ago

I've had a look and the ByteUtil fix and it breaks KDTrees when multithreading for me. The MSDN documents say that when ThreadStatic values are initialised when declared they are initialised once when the constructor is called.

As Bitmem is a class instance, when it is used in the KDTree it only gets initialised on the first thread and the others fail throwing a NullReferenceException.

I can vaguely remember having to deal with this when I first tried to run multi-threaded as the source code I forked wasn't thread safe, then the next fix I tried was really slow. Then I tried ThreadStatic but it crashed with NullReferenceException until I read the remark in the docs that you have to initialise on every thread.