Maya Realtime PBR Eye Shader
Eye shader with physically-based refraction similar to the implementation in Unreal Engine 4 (works with UE4 mesh and textures). DirectX PBR / Maya`s Viewport 2.0.
Maya Viewport 2.0 PBR Skin Shader
Render your real-time characters skin directly in Maya`s viewport using a fullset of features commonly used in the Game Industry!
If your project uses a physically based material workflow (Substance Painter / Quixel Mixer) you will greatly benefit by using this shader to enhance Maya`s native rendering abilities.
Texture Maps & Mesh
Inputs and settings
- Linear space lighting (Switch) – Perform gamma correction.
- Tone Mapping Function (Dropbox) – Change tonemapping ( None, Uncharted, Aces, Filmic )
- Shadows (Switch) – Enable / Disable Shadows Map
- Shadow Strenght (Slider) – Control the shadow amount
- Shadow Bias (Slider) – Pushes the shadows into the surfaces
- Inverse Square lighting (Switch) – The light falloff function
- Double Sided Lighting (Switch) – Enable normals on both sides
- Iris Color (Texture2D)
- Sclera Color (Texture2D)
- Mid Plane Displacement (Texture2D)
- Eye Bulge Normal (Texture2D)
- Eye Sphere Normal (Texture2D)
- Sclera Normal (Texture2D)
- Iris Normal (Texture2D)
- Use Eye Bulge – This property is intended to adjust the refraction properties of the shader based on whether or not the eyeball geometry uses a physically modeled bulge for the cornea.
- Enable Caustics – Light caustics inside the cornea ( light refraction at angles )
- Enable SSS – Simulates a simple subsurface scattering.
- Eye Corner Darkness – The reddening of the sclera towards the edges.
- Flatten Normal – This value controls how much flattening of the eye’s normal map is taking place, focusing particularly on the sclera.
- Normal UV Scale – Controls the scale of the normal map texture used across the surface of the eye.
- Scale by Center – Adjusts the scale of the entire iris/pupil area from its center.
- Sclera Brightness – Controls the brightness of the sclera or white of the eye.
- Sclera Roughness – Controls the Material Roughness value of the sclera
- Shadow Radius – Controls the size of the blend between the inner and outer colors of the sclera. Used with Shadow Hardness.
- Shadow Hardness – Controls the sharpness of the blend between the sclera inner and outer color. Used with Shadow Radius to help drive shading across the surface of the sclera, approximating the effect of the eyelid casting subsurface scattered shadows across the surface of the eyeball.
- Specularity Sclera – Controls the specularity level across the sclera.
- Depth Scale – This controls the depth of the refraction of the iris underneath the cornea.
- Internal IoR – Index of refraction of the fluids underneath the cornea. Controls how much refraction takes place.
- Limbus Dark Scale – Controls the size of the darkening ring of the limbus.
- Limbus Power – Controls the overall darkening of the limbus area. Overdriven values will darken the entire corneal area.
- Limbus UV Width Color – Controls the sample size for the limbus, or how much of the eye surface will be alloted for showing the limbus. This is a fairly delicate setting and should be adjusted with care.
- Limbus UV Width Shading – Controls how much light will affect the shading of the limbus. Very delicate setting, adjust with care.
- Refraction On/Off – Switch the refraction on or off within the cornea
- Concavity Power (Caustics) – Used alongside Iris Concavity Scale to control the shape and amount of light caustics that are calculated on the surface of the iris as light passes through the cornea.
- Iris Concavity Scale (Caustics) – Used alongside Iris Concavity Power to control the shape and amount of light caustics that are calculated on the surface of the iris as light passes through the cornea.
- Caustics Intensity – How much the light gets refracted in the cornea and eye
- Caustics Normal – Controls how much the iris normal affects the caustics
- Iris UV Radius – Controls the overall size of the iris on the eyeball.
- Iris Normal Intensity – Controls the intensity of the iris normal
- Iris Brightness – Controls the brightness of the iris.
- Iris Roughness – This value drives how shininess of the cornea, the surface directly over the iris.
- Pupil Scale – Controls the size of the pupil. This is the setting you would use to dilate the eyes.
- Specularity iris – Controls specularity level across the cornea (iris and pupil).
- Iris Saturation – Controls the saturation of the iris texture.
- Specular/Diffuse/BRDF Textures – You can create these with IBLBaker
- Diffuse intensity
- Environment rotation
- Irradience Blur – Changes the mipmap
- SSS Width – Also affects the shadows
- Blended Normals Controls
It`s a “principled” BRDF
Based on Unreal`s shading model which in turn is based on Disney`s, it follows a set of simple principles:
- Intuitive rather than physical parameters should be used.
- There should be as few parameters as possible
- Parameters should be zero to one over their plausible range.
- Parameters should be allowed to be pushed beyond their plausible range where it makes sense.
- All combinations of parameters should be as robust and plausible as possible.
This shader uses the Cook-Torrance BRDF model ( Microfacet specular = D*G*F / (4*NoL*NoV) = D*Vis*F ). For these examples we used a gamma correction of 2.2. Note: Your results or comparisons might vary depending on gamma-correction / tone mapping or any other modifications that might occur.
Normal distribution function – GGX / Trowbridge-Reitz – “Walter et al. 2007, “Microfacet models for refraction through rough surfaces”
Geometric shadowing function – Appoximation of joint Smith term for GGX “Heitz 2014, “Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs”
Fresnel function – Schlick 1994, “An Inexpensive BRDF Model for Physically-Based Rendering”
To better match visually the shader in unreal we also added an extra rim/fresnel function:
Diffuse function Burley 2012, “Physically-Based Shading at Disney”
Pre-calculated environment maps for different roughness values, stored in the mip-map levels of a cubemap. This is the typical approach used by much of the game industry. You can bake your own environment maps in the compatible .dds format using a tool like IBLBaker (free).