-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VFX Enhance: more image layers #576
Comments
Hey guys, This "World Position" image layer would be such a gamechanger due to relighting possibilities. |
? |
Hi @MeyerAdrian, just to be sure i understand the concept of world position correctly: |
Hi, Yes, I mean another image pass just like the current Normal Pass. World Position Pass is very similar. Combined with the normal pass, that allows in Compositing (like in Nuke) to basically completely recreate the scene in 3D space and relight it and do all sorts of cool stuff with it. It looks something like this for a cube: Searched for an example implementation in blender, but they solved it in another way.
Appleseed Position Pass Github Thanks a lot so far! PS. |
As I suppose the only format which can handle is EXR, which works with floating point numbers. With PNG it would need some special mapping to integer format and would be dramatic loose of coordinates resolution. |
Yes, |
@buddhi1980 |
Hey, In the sample image I posted above, you can nicely see, that there is a black area in one corner, that is because this is the "-x, -y" corner, so values for x & y are negative, below 0. Showing up as black when displayed as a normal sRGB Image. But in compositing these negative values get picked up correctly. Should be exactly the same with the Surface Normal. |
Hi Adrian, ok i see. I am not sure the image libraries will behave correctly, though when the pixels are out of range. But we will find out... |
Hey, It only works with .EXR, of course not with .JPG or .PNG because they can't store negative floating point values but just 0-255 8Bit or 0-65536 for 16 bit .PNG. While you figure this out, could you maybe also check the Surface Normal Pass implementation again? It should look something like upper right picture, and the Position pass like the lower right. Right Mandelbulber does some kind of Object normals in 0-1 range, but with still that weird Blue value far above 1. We had a discussion about that a while ago. Thanks so much, really appreciate!!! |
PS. |
@MeyerAdrian @buddhi1980 |
Awesome, thanks!! The Background Looks a bit funky :-P Do you think you could revisit the Surfae Normal Pass with that approach again as I mentioned above? Thanks a lot! looking forward to test this |
sure, here it is: |
thanks a lot! you exported as 16bit half float right? just to make sure could you also test 32bit full? the funky artifacts are then just in the .png and .jpg etc. so I guess thats fine (-; Thanks for implementing! |
Omnidirectional Stereoscopic! Working on some VR? 🍄⚡️
… On Jun 15, 2019, at 9:29 AM, Adrian Meyer ***@***.***> wrote:
thanks a lot!
looks great and values seem to be just as expected (-:
you exported as 16bit half float right? just to make sure could you also test 32bit full?
and could you maybe also test this with stereo equirectangular mode?
because thats the main thing where I need this to work.
the funky artifacts are then just in the .png and .jpg etc. so I guess thats fine (-;
checking the normals again would be awesome. or should we start a sperate thread for this?
Thanks for implementing!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Sorry don't really understand the question? (-; |
@MeyerAdrian here is mandedlbulb in equirectangular with all channels enabled and set to 32 bit: |
@buddhi1980 I have two questions:
|
32Bit equirectangluar looks perfect!
Ah would this maybe fix these issues that the Color Channel looks so different with 32Bit Exr opposed to 8Bit Jpg as I mentioned here? That would be awesome.
Production standard is definitely the way I suggested. |
|
@zebastian, General remark about image channels. As I see in the code they are stored in 3 buffers in the same time. It consumes a lot of memory. It would be enough to store then on float accuracy buffer and convert to 8-bit or 16-bit only when buffer is being saved. Conversion is very fast. |
That reminds me that the current mode should probably be called "Screen Space Normals" (not Object Space as I wrote earlier, thats misleading) and the new mode I suggested "World Space Normals". |
@MeyerAdrian
About appearance of colors in floating point EXR formats: |
What software leverages these additional layers? @buddhi1980 are you familiar with the post processing software? What features do these layers enhance? |
It enables you for instance to to relighting in Post. Also animated lights etc. that are much harder to control in Mandelbulber itself. And also because you have the 3D information from Position Pas, you can for instance render clouds or other 3d objects in normal CG apps, and render them with the fractal point cloud as "Matte Holdout", so the fractal occludes the other cg obejcts where they overlap, and then you can perfectly combine them in post. |
@buddhi1980 i will rewrite the code to use only the 32bit buffers and simplify / generalize the code in general... |
@zebastian , we cannot use only 32-bit buffers because they cannot be used for word coordinates and specular light (which has very wide dynamic range). The best will be to keep additional channels only in floating point format. |
sure i mean float: float == 32bit |
ok, generalized the saving of the channels here: fec9749 |
options (with my opinion):
|
I prefer third option |
OK, here it is: 01f1013 |
also cleaned up the code and removed unnecessary buffers: afbb4fa |
One thing that I realised... When exporting as EXR though, it puts all channels in one Image. So it would be a great little feature to have "Export each Channel as separate File". (-; |
Would be possible, but I think that's the win of exr: have all data in one file. |
Oh sorry I thought it wasn't possible to have mixed precisions, but your right! That works. Pretty cool EXR feature. That defenitely makes this less important. Another advantage would be, to work around the color issues with linear EXR as described above. |
Little offtopic here, but don't know if your still watching that thread, have a quick qeustion for the image metadata: |
Hey guys, |
Hey, I would love to continue with it and expand it a bit and share it... For this I am still really hoping to have the features we discussed in here in Mandelbulber. Thanks!! To summarize:
Less Priority Stuff
|
BTW. 2.19 looks amazing so far!! |
Greetings Adrian,
Make a folder called Contrib and put your files in our repo. Make a pull request. Thanks!
Coast
… On Jul 30, 2019, at 10:42 AM, Adrian Meyer ***@***.***> wrote:
BTW. 2.19 looks amazing so far!!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Hey, Best! |
Hey guys,
|
I'm really craving for more hands writing code |
I believe you that. |
Hey, I contacted a colligue of mine who knows C++ and a bit of OpenCL, we will try to have a look at it. Thanks! PS. |
To add more image layers especially for OpenCL is quite complex. It is difficult to explain in few sentences. About building process, here are notes how to start: https://github.com/buddhi1980/mandelbulber2#easy-preparation-for-development |
Thanks, And just so that we can have a look, even though it will prob. be too complex, why not point me to lets say the OpenCL Scripts for zDepth Pass. |
zDepth pass is always rendered (when fractal is calculated - no special code for it) because it is needed for many effects and UI. Normal pass channel is optional channel. Optional channels are not yet implemented in OpenCL code and it will be quite difficult (of course doable). It is not easy because OpenCL cannot use dynamic arrays, so many tricks have to be used. From other side I don't want to render this layer every time because it consumes precious GPU memory. From these points you should be able to follow more parts of the code. |
Alright thanks! |
Hey, |
hey, if possible it would also be great to have that for "global illumination" as well (would store just the MC GI contribution). And "reflection" layer. Or does this get included with "Specular" Layer? thanks! PS. |
also just noticed that the "diffuse" layer is a unshaded flat diffuse color. |
see feature request here by stilikon:
https://fractalforums.org/mandelbulber/14/mandelbulber-vfx-feature-ideas/2042
For compositing it is crucial to have different layers (AOVs) from the render.
As I understand right these layers must be present internally of Mandelbulber anyways.
It would be great to be able to export them seperately.
The most important here would be a "World Position" pass. (This would enable us to do a complete relighting in compositing)
Other very usefull ones:
Diffuse, Specular, Ambient Occlusion, Emission, Fog
The text was updated successfully, but these errors were encountered: