Jump to content

PBR in apprentice


Recommended Posts

Appreciate the insight anamous, some good perspective.

The way I see it, Mantra is a very good rendering "engine", PBR or not.

No doubt.

PBR is still experimental for lack of a better expression. Sometimes the results are dazzling for a comparatively easy setup, and sometimes you'll pull your hair over certain omissions and strange decisions (ten years later than everyone else, Mantra should finally get raytraced SSS for example).

Hehe. IMHO, with physically based rendering (in general), there shouldn't be a requirement for maps/caches/point-clouds etc to achieve those sorts of effects, so that would be very welcome. Anything that speeds up PBR rendering will be more than welcome, but it's also great to be able to raytrace all effects without having to fuss with photons or point clouds.

That said, the perspective that PBR offers is unparalleled out there right now, so I believe that it's definitely worth hanging in there. On one hand, the most recent core changes will only slowly start to pay off since conceptually they differ a lot from what we're used to in rendering engines. PBR is now based on VEX, which basically means that we can take control of most of the rendering pipeline - this is a big one, and will make a whole lot of difference. There's simply nothing comparable in the market - a physically based engine with this level of control, and it's bound to increase once SESI introduces mechanisms that allow us to define our own BSDFs. On the other hand, usability and speed enhancements like irradiance caches, portal lights and so on are on the developers maps and I believe that they will be implemented sometime soon.

I always hoped for something like PBR to appear in Houdini, so I was hooked from day one. :] A physically based renderer, backed up by a full-on shading language, I found the idea kind of... awe-inspiring. :lol: Yeah, it's going to get interesting...

Link to comment
Share on other sites

dear Abdelkareem !

we have tested with dbukovec in a last few days mantras PBR with 4*4 pixelsamples, with 16-18 minsamples, and 2 diffuse bounce for interior light. The light setup were env sphere with an area light. We find this setting very fast (5 min for 720*405) and a bit noisly, as you can see on the first image. After this i have removed the noise with furnace from the different image planes of illumination (4 image planes, with 4 different noise remover, and a bit colorcorrection of each) - the env sphere give us a more control in composit on the skylight . I think when we use a bit more samples this method is good - but:

since you used mantras PBR in production, i want ask from you some question:

- can you tell us some technical detail the rendering (and/or) shading of the rubber factory commertial?

we are very interested, cause its looks impressive!

- photon maps are good method? it is possible to use them to 2nd or 3-4th bounces ? (the document mentioned only one)

- the only way to increase the diffuse bounce power is to set the materials diffuse parameter higher? its look poor..

- i am comming from mental ray, with a lot experience in photoreal setups (xsi/maya) what do you think, PBR can achive this look on same rendertime? ( i hope this)

- there is any solution to get GI / AO / SSS using very fast point based methods, like in 3Delight?

thx, cheers

Rafael

post-4797-1244123979_thumb.jpg

post-4797-1244123995_thumb.jpg

Link to comment
Share on other sites

Well, that commercial was done two versions ago, so most of the methods used aren't applicable these days.

I use photon maps exclusively for caustics, not for diffuse bounces. Currently photon maps are a bit crippled since "view dependent photon maps" has disappeared from H10, and without it you need to go for fairly high photon counts to get any sort of smooth and nice result. In almost all cases, path tracing will be just as good. AFAIK photons are shot into the scene and stop bouncing when the energy contribution of the last bounce is insignificant, and at least in my tests photon maps have well supported second and third bounces. There's always an option of increasing the photon global search radius which will give you more blurry results in quicker time, but this tends to blur out contact shadows which isn't desirable.

One reason to use photon maps might be if you want to get higher diffuse scattering rates. Since PBR is now VEX based, you can make a copy of the default "VEX pathtracer" shader, and a copy of "pbr.h" which is in your houdini directory (houdini/vex/include). If you open the copy of the header file and go to line 289 you'll see how the result of a photon map lookup is multiplied by the currently shaded BSDF. You could easily multiply the photon map lookup color with something larger than 1 before multiplying it with the BSDF evaluation. Change it, save it as pbr_myversion.h, and include it instead of the standard pbr.h in the copied pathtracer shader. Then, in the mantra output ROP set the PBR shader parameter to the newly created pathtracing shader - and now when you render with photon maps you should have a higher diffuse scattering rate. You could extend this method to make the multiplier an attribute lookup and set it per object.

This is all now possible since the PBR pipeline is VEX based, so you can make it your own ;) I haven't tried this exact approach yet but I believe it should work out just fine.

BTW, A different approach might be to simply load in a photon map in SOPs and increase its brightness..

It's hard to compare rendering engines and their speeds. Some things are quicker here than over there. Overall, I think that Mantra measures up really nicely, and the amount of flexibility it gives you is pretty much unparalleled right now. As always, whatever environment an artist feels best in will yield the best results.

There are many point based solutions in Mantra, but not in PBR. SYmek is an expert on those, as is Mario, maybe they'd like to chip in.

Have you tried the PBR min reflection ratio parameter on your scene? Try setting it to 10 instead of the default 0. It should help clear up more noise.

cheers,

Abdelkareem

Link to comment
Share on other sites

Thank you for the big answer! Its a bit better now.

No, we dont have test this "min reflection ratio", but we will!

(dbukovec says in skypewindow, he cant look the effect,

i will try it too)

This is the first time, i hear about photon maps support more bounces.

I think same, render engines cant be compared, but i made a testscene

one week ago, there is rotation, motion blur, depth, and mirrors, to look

everything in reflection, and PBR gives a fast result. The same thing

in mentalray Kill the renderer.

The point based methods in 3Delight works very fast, our friend kissb,

made some nice images with his own modells. (i have attached)

I am just searching for good method, to get faster result :)

if you use mantras vex_GI pathtrace its use the PBR motor?

thx again,

cheers

Rafael

post-4797-1244190393_thumb.jpg

Link to comment
Share on other sites

Minimum reflection ratio is a bit complicated to describe here in detail (take a look at lines 586 through 628 of pbr.h), but in layman's terms it helps keep diffuse reflection values from deviating too hard from one sample to the next, in essence smoothing out diffuse shading. Here's an example, the left image has min ration set to 0, the right one has it set to 1. Both have otherwise exactly the same setting. You can clearly see the difference.

post-1116-1244569953_thumb.jpgpost-1116-1244569959_thumb.jpg

I've attached an example that shows some render time reduction and image enhancement mechanisms for PBR, nothing too fancy but should give you a good overview. The non-optimized version renders 2:43 on my machine, the optimized one on the right takes 2:41.

post-1116-1244570099_thumb.jpgpost-1116-1244570103_thumb.jpg

cheers,

Abdelkareem

optimizing_pbr.hip

Link to comment
Share on other sites

thank You Anamous! actually the non-optimized renders 2:47 and the optimized 3:46 on my machine. I see that You've added overrides and predicing on the objects, should be on the object by default.

Is it possible to make a translucent shader with pbr, we tried here but it seems that the pbr engine ignores the reversed normal, any ideas?

Thank You for taking time to explain all this.

Link to comment
Share on other sites

  • 2 weeks later...

anamous thx again, the minimum reflection ratio is works for me too. some cases there is just a very little difference.

i have read PBR.H

line 586 through 628

i dont understand everything, but its looks, min ratio is important in the "if" loop.

if (level < reflectlimit && indirect_bounces)

{

nextsample(path_sid, sx, sy, "mode", "decorrelate");

hitAlbedo = luminance(albedo(hitF, -hitI, hitNg, indirect_bounces));

ratio = hitAlbedo*(1-reflectratio) + reflectratio;

ratio = min(ratio, 1);

if (sx < ratio)

i have a few important question.

- this file can man edit manualy for experiments? this is the running renderer, that we called PBR raytrace or micropoly? (with a saved version for sure)

- what do you think there is a code for decrease the sampling lengths (to speed up rendering? in vex_gi there is a falloff parameter - or max length, and its a timesaver in most cases)

- the code is well documented inside. the line from 529 through 339 speeks about GI chaching, can you tell some world from this codelines

I am not programer, but have some experience to play with ready code

thx again

cheers

rafael

Edited by rafilm
Link to comment
Share on other sites

i have a few important question.

- this file can man edit manualy for experiments? this is the running renderer, that we called PBR raytrace or micropoly? (with a saved version for sure)

- the code is well documented inside. the line from 529 through 339 speeks about GI chaching, can you tell some world from this codelines

I am not programer, but have some experience to play with ready code

You should make your own copy of it:

*/ in SHOPS, add a "VEX Pathtracer" SHOP

*/ RMB on it, go to the Operator Type Manager and make a copy of this node. Call it something unique, like "VEX MyPathtracer"

*/ Make a copy of pbr.h, and change it's name, like "mypbr.h"

*/ In the Type Properties of VEX MyPathTracer, in the Code section, change the #include to mypbr.h

*/ Feel free to edit both the SHOP code and the mypbr.h code at will

*/ Finally, in the PBR tab of the Mantra ROP, point the "PBR Shader" to your instance of the VEX MyPathtracer SHOP.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...