Popular Post rsd Posted January 13, 2015 Popular Post Share Posted January 13, 2015 (edited) Hi. After some research I developed the concept of the surface shader to make shading artist work more efficient. A while ago I have implemented it in VEX and now I want to share it with you. GitHub Features: PhySurface VOP Energy conserving surface model PBR and RayTrace render engines support GTR BSDF with anisotropy (also avaible as a separate VOP node) Conductor Fresnel Volume absorption Raytraced subsurface scattering Artist-friendly multiple scattering (also avaible as a separate VOP node) Ray-marched single scattering Translucency Dispersion Thin sheet dielectric Transparent shadows Extra image planes support Per-component image planes Per-light image planes Variance anti-aliasing support Layered material Nesting material PhyVolume VOP Color scattering and absorption Per-light image planes PhyShader v1.2.0 - download: This is usability release. BSDF has changed to GTR New artist-friendly SSS Added layer support Added metallic desaturation Improved dispersion Materials: Added PhySurface Layered material Added PhySurface Nested material Improved PhySurface material Viewport support UI: New Inside IOR presets menu Changed dispersion presets menu Numerous bugfixes Spoiler PhySurface has builtin help page which contains more info. Edited August 31, 2016 by rsd Update v1.2.0 17 Quote Link to comment Share on other sites More sharing options...
eetu Posted January 13, 2015 Share Posted January 13, 2015 Awesome, thanks for sharing! Quote Link to comment Share on other sites More sharing options...
rsd Posted January 14, 2015 Author Share Posted January 14, 2015 Nested shaders workflow. It is little tricky. Checkout the attached scene. juice_nested_shader.hiplc 1 Quote Link to comment Share on other sites More sharing options...
j00ey Posted January 15, 2015 Share Posted January 15, 2015 First of all, thanks very much for sharing this. I'm trying it out and it looks amazing straight out of the box! I'm having a little difficulty making it refract but I'll get there... I was just looking at your glass / juice setup and I don't get what 'VOPint' is in the Inline VOP. Google isn't helping me with it, could you tell me what it's about? Quote Link to comment Share on other sites More sharing options...
rsd Posted January 15, 2015 Author Share Posted January 15, 2015 (edited) First of all, thanks very much for sharing this. I'm trying it out and it looks amazing straight out of the box! I'm having a little difficulty making it refract but I'll get there... I was just looking at your glass / juice setup and I don't get what 'VOPint' is in the Inline VOP. Google isn't helping me with it, could you tell me what it's about? VOPint is just another name for int. It is defined in voptype.h (you may take a look how it is in $HFS/houdini/vex/include/) and this types used in most VOP operators and in the PhySurface also. You can replace VOPint by int and it will work. However, sometimes vcc prints strange errors in voplib.h when there are few custom operators of the same type in VOP network. In my expirience this error can be avoided by using VOP types (VOPint, VOPfloat, VOPvector, etc.) instead of builtin (despite that they are the same). I think it's relative to mechanism of Vex code generation in VOP network. Edited January 15, 2015 by rsd Quote Link to comment Share on other sites More sharing options...
j00ey Posted January 15, 2015 Share Posted January 15, 2015 Ok, I see. Or at least I will delve a bit deeper and try to understand! Thank you again for sharing your knowledge. Quote Link to comment Share on other sites More sharing options...
paul Posted January 15, 2015 Share Posted January 15, 2015 Fantastic. Many thanks Roman - kudos to you. If your in London - we at Realise will like to buy you lots of beer! I see there's a lot of interesting optimisations available. I haven't had enough time to dig deep - but how compatible would you say this is with the Disney plausible shader? I'm asking, as there's lots of interesting software that compliments the Disney model - and I'd be keen to explore how your shader could fit into that workflow. Again, thanks from all of us. Cheers, Paul Quote Link to comment Share on other sites More sharing options...
jkunz07 Posted January 16, 2015 Share Posted January 16, 2015 Very impressive ! Thanks for sharing! Quote Link to comment Share on other sites More sharing options...
Jason Posted January 16, 2015 Share Posted January 16, 2015 Excellent work! Great to have more shaders out there! Quote Link to comment Share on other sites More sharing options...
rsd Posted January 16, 2015 Author Share Posted January 16, 2015 (edited) I see there's a lot of interesting optimisations available. I haven't had enough time to dig deep - but how compatible would you say this is with the Disney plausible shader? I'm asking, as there's lots of interesting software that compliments the Disney model - and I'd be keen to explore how your shader could fit into that workflow. Rather no then yes.I discovered the Disney's paper a half-year ago. By then the most parts of physhader was done and I nothing took from paper. The main difference between the disney's way and physhader is that second one is more drastic in some principles. For example, physhader has no such parameter as metallic, there is only parameter with two discrete values: dielectric or conductor. This is also the reason why I didn't implement GTR (at least for a while) - I'm trying to keep the parameter number as little as possible. Currently I'm writing a wiki where I will explain details. Edited January 16, 2015 by rsd Quote Link to comment Share on other sites More sharing options...
rsd Posted March 18, 2015 Author Share Posted March 18, 2015 Small upgrade v1.0.1 * Move to Houdini FX version (now it isn't necessary to rebuild the asset) * Added BSDF sampling mode for RayTrace/Micropoly* Implemented variance antialiasing for RayTrace/Micropoly* Dispersion now is not limited to only smooth surface, it affects all transmission components.* Introduced volume model* Improved volume absorption and single scattering at glossy surfaces* Fixed thick sheet shading* Fixed complex Fresnel If this release works with H13, it is probably last one which does. In next versions I will use some new features of H14. 1 Quote Link to comment Share on other sites More sharing options...
Netvudu Posted March 18, 2015 Share Posted March 18, 2015 This is really cool, Roman! Thanks so much. Just for your info. It wasn´t immediatly obvious to me that to get a dielectric glass-like surface I needed to disable the diffuse component. You might want to add a small comment to the help. Thanks again. Quote Link to comment Share on other sites More sharing options...
rsd Posted March 18, 2015 Author Share Posted March 18, 2015 (edited) Javier, thanks for suggestion. I will extend pop-up help. Unfortunelly pop-ups don't work on my machine, so I don't pay attention to this. It wasn´t immediatly obvious to me that to get a dielectric glass-like surface I needed to disable the diffuse component. I explain this. I made such behavior of diffuse because I want to make PhyShader to comply with real world appearances more. Actually, I think in this case the combination of diffuse and refraction must give SSS, but separate diffuse and SSS are more flexible. So I made diffuse component to force opaque, but with transmission enabed it little changes. There is also built-in help page on PhySurface (click on question mark). (It is absolutely illeterate written, but it contains some useful info). Edited March 18, 2015 by rsd Quote Link to comment Share on other sites More sharing options...
Netvudu Posted March 18, 2015 Share Posted March 18, 2015 I know about the help page. That´s the one I was suggesting you should add the info to Thanks for the explanation. Quote Link to comment Share on other sites More sharing options...
rsd Posted March 18, 2015 Author Share Posted March 18, 2015 Strange, but the help page has note about it. Maybe it is too tongue-tied? Sorry for my English. Check out the last snapshot, I've edited some entries. Quote Link to comment Share on other sites More sharing options...
rsd Posted March 27, 2016 Author Share Posted March 27, 2016 Now I have more time to continue development and I finally switched on H15. There is a minor update - v1.1.0: various bugfixes improved PhySurface material minor UI change of PhySurface: separated IORinside IOR is now vector2 (n, k) outside IOR is now standalone float parameter PhyVolume is now a full part of PhyShader:per-light exports support (in "volume_direct" variable) fixed anisotropic volume BSDF sampling added scattering color coefficient added absorption color coefficient physhader.otl is renamed to physhader.hda (the most important improvement) to comply with new naming conventions Don't forget to remove old *.otl file to avoid possible conflicts of operator types Here is a test render of PhyVolume. There is also a lot of improvements are planned - link. Any help is appreciated. 3 Quote Link to comment Share on other sites More sharing options...
djiki Posted April 3, 2016 Share Posted April 3, 2016 Thanks for sharing your work. Quote Link to comment Share on other sites More sharing options...
Jason Posted April 3, 2016 Share Posted April 3, 2016 This entire shader is really impressive, please feel encouraged! Quote Link to comment Share on other sites More sharing options...
rsd Posted August 31, 2016 Author Share Posted August 31, 2016 I just drafted a new release - v1.2.0 download There are many useful changes in this release. The two old GGX CVEX BSDF's (reflect and refract) have rewritten to the one GTR BSDF with better sampling (distribution of visible normals by Eric Heitz). It's used in PhySurface and available as a separate VOP type operator. Multiple subsurface scattering has completely rewritten. I discarded the complicated dipole BSSRDF in the favor of approximated reflectance profile by Per Christensen. New SSS is also available as a separate VOP. PhyShader materials are really usable now. There are two new materials: PhySurface Layered material and PhySurface Nested material. PhySurface material has improved and fixed. The materials now have OpenGL parameters linked to corresponding PhySurface parameters, improving viewport experience. Several UI changes such as IOR presets menu and dispersion presets menu. Dispersion is brighter now. Faux metallic nk-based dispersion. If dispersion is enabled in Conductor mode, reflection color will be desaturated through complex Fresnel curve. Most bugs (I hope all) are fixed 3 Quote Link to comment Share on other sites More sharing options...
rsd Posted August 31, 2016 Author Share Posted August 31, 2016 (edited) An example of PhySurface Nested material usage. Note: it works only with Ray-Trace engine. Edited August 31, 2016 by rsd 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.