- 1 Summary
- 2 Parameters - RGB Page
- 3 Parameters - Maps Page
- 4 Parameters - Alpha Page
- 5 Parameters - Multi-Texturing Page
- 6 Parameters - Rim Page
- 7 Parameters - Advanced Page
- 8 Parameters - Optimize Page
- 9 Parameters - Deform Page
- 10 Parameters - Common Page
- 11 Related Articles
- 12 Related Reference
- 13 Related Tutorials
- 14 Character Deformations
The PBR MAT creates a material using a Physically Based Rendering (PBR) model. It has support for textures, reflections, bumps, cone lights, rim lights, alpha maps and more.
This OP creates physically based materials from texture maps you assign to it and works with any content pipeline whether you use Maya, Houdini, Unreal, Photoshop etc
Parameters - RGB Page
basecolor - Base color of the texture, used to calculate diffuse and specular contributions.
specularlevel - The amount of contribution the Specular Level Map adds to the material.
metallic - The amount of contribution the Metallic Map adds to the material.
roughness - The amount of contribution the Roughness Map adds to the material. Used to calculate specular D, R, and F (blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf page 3).
ambientocclusion - The amount of contribution the Ambient Occlusion Map adds to the material.
Env Light Quality
emit - This is the color that the material will emit even if there is no light.
constant - Adds to the final color. Where there are point colors, finalcolor += Point Color * Constant Color. This behaves like there is ambient illumination of 1 1 1. It is not affected by textures or transparency.
Polygon Front Face's
frontfacelit - Controls how the polygon's normal is used to light the front face of the polygon. For more information refer to the Two-Sided Lighting article.
Polygon Back Face's
backfacelit - Controls how the polygon's normal is used to light the back face of the polygon. For more information refer to the Two-Sided Lighting article.
outputshader - This button will bring up a dialog that will create a GLSL MAT and Text DATs with shader code that this PBR MAT is currently using. Since shaders are dependent on the number and type of lights, it will list some possible different shader choices, based on what lighting configurations have been used in the current system. If no shaders are listed in the dialog, it means no shader has been rendered in the current session of TouchDesigner. Turn on the viewer for the Phong MAT, or setup a render in a Render TOP. That will create/compile some shaders and will cause the list to be populated. For example if you want to see a shader that does shadow mapping, setup a render that does shadow mapping and you will see that come up in the list.
Parameters - Maps Page
substance - Reference a Substance TOP containing an .sbsar file. Referencing the TOP will automatically unpack all enabled textures without having to manually fill in any of the below texture maps. Manually filling in any of the texture map parameters will override the texture automatically pulled from the .sbsar package.
Base Color Map
Clicking on the arrows to the right of the map field will open the Texture Sampling Parameters for Color Map. The other Map parameters below will have their own Texture Sampling Parameters as well.
Specular Level Map
specularlevelrmap - Specifies a specular level map.
metallicmap - Specifies a metallic texture map. This is equivalent to the Metallic map in Substance Designer.
roughnessmap - Specifies a roughness texture map. This is equivalent to the Roughness map in Substance Designer.
Ambient Occlusion Map
reflectancemap - Specifies a ambient occlusion texture map. This is equivalent to the Ambient Occlusion map in Substance Designer.
heightmap - Specifies a height texture map. This is equivalent to the Height map in Substance Designer.
Normal Map (Bump)
normalmap - Uses a Normal Map from TOPs to create a 'bump map' effect. Bump-mapping simulates bumps or wrinkles in a surface to give it a 3D depth effect. Your geometry must have tangent attributes created for this feature to work (T). Create these using the Attribute Create SOP.
bumpscale - A multiplier for the 'bump effect' created by the Normal Map parameter.
parallaxmapping - Enable parallax mapping. Must be used in conjunction with a normal map.
parallaxclamp - Clamp the parallax shift to a certain value. Parallax shift refers to the calculated offset of the mapped textures.
emitmap - Specifies a TOP texture that is multiplied with the Emit color parameter of the material. The object must have texture coordinates. The alpha of this map is ignored.
Parameters - Alpha Page
Note: Simply applying alpha to an object does not make it transparent. For more information refer to the Transparency article.
alphamap- This map multiplies the alpha of the object. It uses the red channel of the map, other channels are ignored.
alphamode - Turning this off will make the alpha change depending on orientation of each polygon's normal compared to the camera. Normals that are pointing at the camera will results in the polygon having an alpha of Alpha Front. Normals that are perpendicular to the camera (facing sideways/up/down) will have Alpha Side for their alpha.
alphafront - The opacity of the material. This parameter is multiplied by point alpha of the object (as will as any other alpha source).
alphaside - This is used for non-uniform alpha. It is the alpha value polygons that are facing away from the camera will get.
rolloff - Controls how the alpha changes from Alpha Front to Alpha Side.
Post-Mult Color by Alpha
postmultalpha - At the end of all of the calculations, the color (RGB) is multiplied by the calculated alpha. You can stop this from happening by turning off this checkbox.
Mult Alpha by Light Luminance
alphamultlight - When this is enabled, the luminance of the lighting will be multiplied by the alpha, to decreease/increase it.
Parameters - Multi-Texturing Page
On the Multi-texturing page of the Phong material, you can have up to 4 texture maps and choose any of the 8 possible texture coordinates for each map. By default the texture maps are multiplied together, but there is a field for a custom GLSL code that can be used. Here's how that works:
The 4 texture maps are referred to in the parameter by t0, t1, t2 and t3 respectively. So the default equation if all 4 texture maps are used is: t0 * t1 * t2 * t3. You can use and constants and other math operators, so for example t0 + (t1 * 0.5) is valid. If they refer to a map that doesn't exist, the shader won't compile correctly (e.g using t3 when it isn't set or the TOP doesn't exist).
They can also refer to specific components of the texture using .r .g .b and .a. So for example if you want to do t0 over t1, the expression would be:
t0 + (t1 * (1.0 - t0.a))
The output from your expression must be a vec4, so for example:
t0.rgb + t1.rgb // Error vec4(t0.rgb + t1.rgb, 1.0) // Works
The alpha from the result of these maps is used.
Multi-Texturing (Disables Color Map)
multitexturing - Enables multi-texturing. This disables the Color Map parameter.
/texture4 - You can specify up to 4 textures for multi-texturing.
/texture4coord - Specifies which texture coordinate to use for the map.
multiexpr - GLSL code that combines the texture images (look to the start of this section for more details). This parameter can be left blank (which means the maps will just be multiplied together).
Parameters - Rim Page
Other rim lights have the same parameters, internal parameter names just have a different number instead of 1.
Enable Rim Light 1
rim1enable - Enables this rim light.
rim1map - This map will multiple the calculated rim light color.
rim1color - The color of the rim light.
rim1center - The center of the rim lights location, situated somewhere on a 360 degree circle.
rim1width - How far from the center the rim light extends.
rim1strength - Controls the brightness of the rim light.
Rim Strength Ramp
rim1strengthramp - You can specify a horizontal ramp (it will sample the texture at v = 0.5), which controls the the rim lights strength.
Parameters - Advanced Page
shadowstrength - This parameter will control how much being in a shadow will change the color of the lighting. At 1 the object will take on the Shadow Color parameter, at 0 it will behave as if it's not in a shadow, even if it is.
shadowcolor - The color that will be used in shadowed areas.
darknessemit - The Phong MAT calculates the current brightness of color of the objects, after taking into account lights, rim lights, emission etc. It then uses this brightness (between 0-1) and fades in the Darkness Emit Color. The darker the area, the more of the darkness emit color that will be applied.
Darkness Emit Color
darknessemitcolor - The color that is used for areas that are in darkness.
Darkness Emit Map
darknessemitmap - This map multiplies the Darkness Emit Color. This maps alpha is not used.
Darkness Emit Map Coord
darknessemitmapcoord - The texture coordinate used to sample the darkness emit map.
spec2[rgb] - Adds a secondary specular highlight color.
shininess2 - Controls the secondary specular highlights (glossyness) of an object. Higher settings are more glossy, like plastic or shiny metal. Lower settings give more of a matte finish.
Write Camera Space Depth To Alpha
writecameradepthtoalpha - This cause the camera space depth of the pixel to be written to the alpha channel of the output TOP. This value can be useful for post-processing effects, but ofcourse you will not have the result of all the alpha calculations if you turn this on (although they'll get used to multiply the output color, assuming Post-Mult Color by Alpha is enabled.
Apply Point Color
applypointcolor - Normally the color attribute (Cd) coming from the SOP is used in the lighting calculation, you can turn off using the color attribute by un-checking this parameter.
instancetexture - When provider per-instance textures in the Geometry COMP, this parameter selects which map the instance texture will be applied as.
Color Buffer [1-7] RGB
colorbuffer[1-7]rgb - Allows sending things like normals or diffuse color to different Render TOP color buffers in a single pass.
Parameters - Optimize Page
Note: The features on this page are legacy and should not be needed on modern GPUs. The below parameters avoid doing extra work in the pixel shader for some vectors, resulting in faster rendering. However this can result in lighting artifacts. Try them out and see if they make a visual difference to your scene.
Each of the parameters below uses the following menu
- Use Global Settings - Uses the global settings found in the Preferences dialog under Edit > Preferences > MATs
- Yes - Turns the option on.
- No - Turns the option off.
Fast Normalize Half-Angle
Don't Re-normalize Normal
Don't Re-normalize Light Vector
Don't Re-normalize Spot Vector
Don't Re-normalize Eye Vector
Fast Deform Tangent
Parameters - Deform Page
Refer to the Deform Article for more information on doing deforms in Touch.
dodeform - Enables deforms on this material.
Get Bone Data:
deformdata - Specifies where the deform bone data will be obtained.
SOP with capture data
targetsop - Specifies the SOP that contains the deform capture attributes.
pcaptpath - Specifies the name of the pCaptPath attribute to use. When your geometry has been put through a Bone Group SOP, the attributes will be split into names like pCaptPath0, pCaptPath1. You can only render 1 bone group at a time, so this should match the group you are rendering with this material.
pcaptdata - Much like pCaptPath Attrib.
Skeleton Root Path
skelrootpath - Specifies the path to the COMP where the root of the skeleton is located.
mat - When obtaining deform data from a MAT or a Deform In MAT, this is where that MAT is specified.
Parameters - Common Page
The blending equation is:
Final Pixel Value = (Source Blend * Source Color) + (Dest Blend * Destination Color)
blending - This checkbox enables and disables blending. However see the wiki article Transparency.
srcblend - This value is multiplied by the color value of the pixel that is being written to the Color-Buffer (also know as the Source Color).
destblend - This value is multiplied by the color value of the pixel currently in the Color-Buffer (also known as the Destination Color).
Depth-Testing is comparing the depth value of the pixel being drawn with the pixel currently in the Frame-Buffer. A pixel that is determined to be in-front of the pixel currently in the Frame-Buffer will be drawn over it. Pixels that are determined to be behind the pixel currently in the Frame-Buffer will not be drawn. Depth-Testing allows geometry in a 3D scene to occlude geometry behind it, and be occluded by geometry in-front of it regardless of the order the geometry was drawn.
For a more detailed description of Depth-Testing, refer to the Depth-Test article.
depthtest - Enables and disables the Depth-Test. If the depth-test is disabled, depths values aren't written to the Depth-Buffer.
Depth Test Function
depthfunc - The depth value of the pixel being drawn is compared to the depth value currently in the depth-buffer using this function. If the test passes then the pixel is drawn to the Frame-Buffer. If the test fails the pixel is discarded and no changes are made to the Frame-Buffer.
Write Depth Values
depthwriting - If Write Depth Values is on, pixels that pass the depth-test will write their depth value to the Depth-Buffer. If this isn't on then no changes will be made to the Depth-Buffer, regardless of if the pixels drawn pass or fail the depth-test.
Alpha-testing allows you to choose to draw or not draw a pixel based on its alpha value.
Discard Pixels Based On Alpha
alphatest - This enables or disables the pixel alpha test.
Keep Pixels with Alpha
alphatest - This menu works in conjunction with the Alpha Threshold parameter below in determining which pixels to keep based on their alpha value.
alphathreshold - This value is what the pixel's alpha is compared to to determine if the pixel should be drawn. Pixels with alpha greater than the Alpha Threshold will be drawn. Pixels with alpha less than or equal to the Alpha Threshold will not be drawn.
The wire-frame feature will render the geometry as wire-frame, using the actual primitive type used in the render. What this means is surfaces like Metaballs, NURBs and Beziers will become a wire-frame of the triangles/triangle-strips used to render them (since these types of primitives can't be natively rendered in OpenGL).
wireframe - Enables and disables wire-frame rendering.
wirewidth - This value is the width that the wires will be. This value is in pixels.
The cull face parameter will cull faces from the render output. This can be used as an optimization or sometimes to remove artifacts. See Back-Face Culling for more infomation.
cullface - Selects which faces to render.
- Use Render Setting - use the render settings found in the Render or Render Pass TOP.
- Neither - do not cull any faces, render everything.
- Back Faces - cull back faces, render front faces.
- Front Faces - cull front faces, render back faces.
- Both Faces - cull both faces, render nothing.
Polygon Depth Offset
This feature pushes the polygons back into space a tiny fraction. This is useful when you are rendering two polygons directly on-top of each other and are experiencing Z-Fighting. Refer to Polygon Depth Offset for more information. This is also an important feature when doing shadows.
Polygon Depth Offset
polygonoffset - Turns on the polygon offset feature.